{"id":37074623,"url":"https://github.com/zaytiri/program-scheduler","last_synced_at":"2026-01-14T08:47:21.090Z","repository":{"id":63521020,"uuid":"568082584","full_name":"zaytiri/program-scheduler","owner":"zaytiri","description":"A simple way of scheduling programs at startup at specific days of the week and more. Includes GUI version.","archived":false,"fork":false,"pushed_at":"2024-02-04T13:13:16.000Z","size":329,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-20T18:20:36.932Z","etag":null,"topics":["at-startup","cron","files","folders","gui","open","program","schedule","scheduler","start","task","time","week-days"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/progscheduler","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zaytiri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-11-19T11:54:32.000Z","updated_at":"2024-06-04T11:25:31.000Z","dependencies_parsed_at":"2024-02-04T14:25:45.938Z","dependency_job_id":"ed4caa9d-bf2c-4f13-90cf-995b917b35ff","html_url":"https://github.com/zaytiri/program-scheduler","commit_stats":{"total_commits":53,"total_committers":1,"mean_commits":53.0,"dds":0.0,"last_synced_commit":"f70cab513b81a917f8cd1d65d454a2dddd9e78c4"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/zaytiri/program-scheduler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaytiri%2Fprogram-scheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaytiri%2Fprogram-scheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaytiri%2Fprogram-scheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaytiri%2Fprogram-scheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zaytiri","download_url":"https://codeload.github.com/zaytiri/program-scheduler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaytiri%2Fprogram-scheduler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414693,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["at-startup","cron","files","folders","gui","open","program","schedule","scheduler","start","task","time","week-days"],"created_at":"2026-01-14T08:47:19.682Z","updated_at":"2026-01-14T08:47:21.065Z","avatar_url":"https://github.com/zaytiri.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Downloads](https://pepy.tech/badge/progscheduler)](https://pepy.tech/project/progscheduler)\n\n# Program Scheduler GUI + CLI\n\nA simple way of scheduling files at startup or at specific time of the day. The file can also be scheduled to start at specific days of the week or every day. \n\n## Table of Contents\n\n- [Description](#description)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Support](#support)\n- [License](#license)\n- [Status](#status)\n\n\u003ca name=\"description\"\u003e\u003c/a\u003e\n\n## Description\n\nThe current project provides a simple automated task to schedule files to open in specific days of the week or every day at startup or at specific time of the day. Multiple files can be scheduled.\n\nFor the progscheduler to work as intended, the startup feature includes having to add a file containing the command for starting the progscheduler in a specific startup folder for Windows users. If that's not done, then the progscheduler continues to work fine but to have the scheduled files to open, the user must run the progscheduler manually every time. If the 'program-scheduler.bat' exists, double-click this file to start running the program. This is explained in [here](#installation).\n\nA scheduled file can also be any type of file including folders. See [Notes](#notes).\n\n\u003ca name=\"gui\"\u003e\u003c/a\u003e\n\n## GUI\n\n### First time\n\n1. When using the GUI for the first time, you need to have the CLI installed. You can do this by:\n- On the GUI:\n  - Go to 'Options' \u003e Click on 'INSTALL CLI'. The CLI should be installed and any information will be displayed in the 'Run' tab.\n- On the Command Propmt:\n  - Follow [Instalation](#installation) section in this README file.\n\n2. After everything's installed, you will have no configurations defined so you need to add some. You can do this by going to the 'Add' tab.\n\n### _Run_\n\nHere you can see what the program is doing when running the defined schedules.\n\nIf necessary, you can also manually run the shedules, in any given time, by clicking the 'RUN' button.\n\n![1](https://github.com/zaytiri/program-scheduler/blob/main/readme-imgs/1.png)\n\n### _Groups_\n\nThs feature will be coming in the future.\n\n### _View/Edit_\n\nHere you can view all your defined schedules and their respective configurations by selecting any entry in the left list. You can edit any configuration in this window, always taking in consideration the limits and options the program offers, displayed in the [Usage](#usage) section.\n\nYou can also delete any configuration when selected.\n\nFor more information, some input fields have tooltips that can be viewed by hovering the mouse over them.\n\n![4](https://github.com/zaytiri/program-scheduler/blob/main/readme-imgs/4.png)\n\nWhen selecting 'browser' entry:\u003cbr\u003e\n![4.1](https://github.com/zaytiri/program-scheduler/blob/main/readme-imgs/4.1.png)\n\n### _Add_\n\nIn the following tab, you can add a new schedule by providing:\n- 'alias': a unique name to identify this schedule;\n- 'path': the path of the executable to be scheduled. The following sections are important to know: [Important](#important) and [Notes](#notes). You can 'Browse' through your files and/or you can also modify the input field as needed.\n\n![2](https://github.com/zaytiri/program-scheduler/blob/main/readme-imgs/2.png)\n\n### _Options_\n\nYou can also set multiple options such as the GUI theme. \n\n- 'Set exit when scheduler is done': If enabled, means that the window where the schedules are running will exit when they are all finished. This does not happen when schedules are run manually through the 'Run' tab.\n- Theme: This option is not saved, meaning it will not persist through different instances.\n- 'INSTALL CLI': It will install the progscheduler program through the command line in the background. This is needed because it contains all the features used by the GUI.\n- 'ENABLE STARTUP OPTION': Two folders will be opened which mean that you will need to copy the file called \"program-scheduler.bat\" to the other opened folder. You can also either copy this executable to this \"Startup\" folder (to start this GUI automatically) or add this executable as a schedule.\n  - This needs to be done if you want the main feature of the program, which is automatically start any file when the computer boots up.\n- 'OPEN CONFIGURATIONS FOLDER': It will open the folder where all schedules configurations are saved. This file should not be modified unless you kow how to modify it.\n\n![3](https://github.com/zaytiri/program-scheduler/blob/main/readme-imgs/3.png)\n\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n\n## Features\n\n| Status | Features                                                               |\n|:-------|:-----------------------------------------------------------------------|\n| ✅      | schedule a file to start/open at specific days of the week or everyday |\n| ✅      | schedule a file to start/open at specific time of the day              |\n| ✅      | schedule a file to start/open when the computer boots up               |\n| ✅      | configuration of multiple files to schedule                            |\n| ✅      | see current configurations                                             |\n\nAny new features are **_very_** welcomed.\n\n### Future features\n\n- Currently, the progscheduler only starts/opens a file, but in the future, a file can also be configured to do other types of jobs.\n\n#### Done ✅\n- ~~Currently, the progscheduler never stops running the scheduler, but it can be implemented that if all scheduled jobs are at startup, and they already finished then the progscheduler could stop automatically until manually started or computer rebooted.~~\n\nAny unimplemented features will be developed by user request, so if you want any of these or new ones, open an issue.\n\n\u003ca name=\"prerequisites\"\u003e\u003c/a\u003e\n\n## Prerequisites\n\n[Python 3](https://www.python.org/downloads/) must be installed.\n\nMust be used the latest version of [margument](https://pypi.org/project/margument/) library.\n\n\u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n## Installation\n\n```\npip --no-cache-dir install progscheduler\n```\n\nor,\n\n```\npip3 --no-cache-dir install progscheduler\n```\n\n### Windows users\nTo enable the startup feature, the file 'program-scheduler.bat' is provided. This file can be found in this [project's github repository](https://github.com/zaytiri/program-scheduler/blob/main/program-scheduler.bat). \n\nThe 'program-scheduler.bat' needs to be put into \n```\nC:\\Users\\\u003cusername\u003e\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup \n```\nfolder to start running when the computer boots up.\n\nThis will open a command prompt window automatically when the computer boots up. This window should only be closed if all desired jobs are already finished.\n\n### Linux Users\nOpen an issue if you need to know how to enable this feature in Linux.\n\n\u003ca name=\"usage\"\u003e\u003c/a\u003e\n## Usage\n\n| Command (shortcut)                   | Command (full)                       | Type                                     | Description                                                                                                                                                                                           |\n|:-------------------------------------|:-------------------------------------|------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| --run                                | --run                                | **REQUIRED** for the scheduler to run    | if specified, the scheduler will start running using user-defined configurations.                                                                                                                     |\n| -a                                   | --alias                              | **REQUIRED** to create new scheduled job | file alias. this name is UNIQUE within all scheduled files. to create or update any configuration regarding a specific file, this is required.                                                        |\n| -p                                   | --path                               | **REQUIRED** to create new scheduled job | absolute path of file to schedule (including the extension name except for folders).                                                                                                                  |\n| -d                                   | --days                               | **REQUIRED** to create new scheduled job | days to schedule a file within the following options: 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'everyday', 'weekdays' and 'weekends'.                            |\n| -t                                   | --time                               | **OPTIONAL**                             | specific time to start/open a file. default is '' (empty). if time is empty then the file will start when the progscheduler command is run (at startup if program-scheduler.bat file was configured). |\n| -ts                                  | --time-to-stop                       | **OPTIONAL**                             | define a time for a specific scheduled job to stop running if progscheduler runs.                                                                                                                     |\n| -del                                 | --delete                             | **OPTIONAL**                             | delete a existing configuration with the file alias.                                                                                                                                                  |\n| -ls                                  | --schedules                          | **OPTIONAL**                             | list all global settings.                                                                                                                                                                             |\n| -lsch                                | --settings                           | **OPTIONAL**                             | list all scheduled jobs.                                                                                                                                                                              |\n| -st                                  | --status                             | **OPTIONAL**                             | sets the status of a specific scheduled job. choices are: 'on' and 'off'. this indicates if a job will run(active-on) or not(inactive-off). default value is 'on'.                                    |\n| -ex                                  | --exclude                            | **OPTIONAL**                             | any dates given will be excluded from the job, meaning a specific scheduled job will not run in any date specified in excluded days.                                                                  |\n| -in                                  | --include                            | **OPTIONAL**                             | any dates given will be included in a job, meaning a specific scheduled job will run in any date specified in included days.                                                                          |\n| --exit-when-done/--no-exit-when-done | --exit-when-done/--no-exit-when-done | **OPTIONAL**                             | boolean value. if specified, the program window will exit automatically when all scheduled jobs finished that particular day. default value: false                                                    |\n\n\u003ca name=\"important\"\u003e\u003c/a\u003e\n\n### Important\n1. -a command is always required when configuring.\n2. -p, -d command is required only the first time to configure a file to schedule.\n3. If the file is an executable file, **it's recommended to input the absolute path to a shortcut** instead of the original file location because if so, the executable file **may not start at all**. If a shortcut is used, the extension '.lnk' is needed. For instance: 'C:\\Users\\\u003c!username\u003e\\Desktop\\ExecutableShortcutWithEXEExtension.lnk'\n\n\u003ca name=\"notes\"\u003e\u003c/a\u003e\n\n### Notes\n\n- **By 'file', it means that the progscheduler can schedule executable files, text files, folders, or any type of file to start/open.**\n- If a specific time is set, the file will only start/open from the moment the progscheduler starts running. Meaning if a file is scheduled to start at 08:00 and the progscheduler only starts running at 08:30, then the next time the file will start is at 08:00 the next day (if the progscheduler is running).\n- If a file needs to be scheduled using mixed configurations, for instance, a folder needs to be opened at startup on monday but on 08:15 on friday, then the same file can be configured but always using different file alias.\n- Any old dates included in 'exclude' and 'include' lists in configurations will be removed whenever these arguments are updated for a specific scheduled job.\n\n---\n\nAny additional help can be provided if the following command is run:\n\n```\nprogscheduler --help\n```\nor,\n```\nprogscheduler -h\n```\n\nBefore running the scheduler, at least one program needs to be configured. The following command will configure the 'program.exe' to start when the computer boots up every monday, friday and saturday\n```\nprogscheduler -a ProgramOrFolderToScheduleUniqueName -p \"C:\\Users\\\u003cusername\u003e\\Desktop\\program.exe\" -d monday friday saturday\n```\n\nTo configure an existing program to change time to schedule. The following command would schedule a program to start every day and at 08:00:\n```\nprogscheduler -a ProgramOrFolderToScheduleUniqueName -t \"08:00\"\n```\n\nTo add excluded days to 'ProgramOrFolderToScheduleUniqueName' configuration:\n```\nprogscheduler -a ProgramOrFolderToScheduleUniqueName -ex 29/03/2023 1/5/2023\n```\n\nThe following is an example of the previous configuration of the 'ProgramOrFolderToScheduleUniqueName' scheduled job:\n```yaml\nProgramOrFolderToScheduleUniqueName:\n  alias: ProgramOrFolderToScheduleUniqueName\n  days:\n  - monday\n  - friday\n  - saturday\n  exclude: \n  - 29/03/2023\n  - 1/5/2023\n  include: []\n  path: C:\\Users\\\u003cusername\u003e\\Desktop\\program.exe\n  status: 'on'\n  time: 08:00\n  time_to_stop: 'off'\n```\n\nTo configure an existing program to change days to schedule:\n```\nprogscheduler -a ProgramOrFolderToScheduleUniqueName -d everyday\n```\n\nTo empty out the 'exclude' and/or include arguments, just add the desired argument without anything after it:\n```\nprogscheduler -a ProgramOrFolderToScheduleUniqueName -ex -in\n```\n\nTo configure any global configuration just use the argument to change:\n```\n\u003e progscheduler --exit-when-done        # will close terminal/command prompt window automatically.\n\u003e progscheduler --no-exit-when-done     # will do nothing.\n```\n\nTo delete an existing configuration:\n```\nprogscheduler -del ProgramOrFolderToScheduleUniqueName\n```\n\nWhen all desired files are scheduled in the configurations, the following command will run the scheduler considering every configuration made:\n```\nprogscheduler --run\n```\n\nOnce the progscheduler starts running it will not stop alone, to cancel just run CTRL + C or close the terminal window. The exception to this is if the '--exit-when-done' is enabled.\n\n\u003ca name=\"support\"\u003e\u003c/a\u003e\n\n## Support\n If any problems occurs, feel free to open an issue.\n\n\u003ca name=\"license\"\u003e\u003c/a\u003e\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n\u003ca name=\"status\"\u003e\u003c/a\u003e\n\n## Status\n\nThis project was developed for both need and educational purposes, so I'm available to maintain this project, so any bugs, suggestions, new features, improvements, etc, don't hesitate to ask, open an issue or a pull request.\n\nThis program was first created because the current Windows' Task Scheduler is very complex and I could not find a way to open/start any file/executable at computer startup on specific days of the week with exceptions, if needed. I was looking to also have more control over how I want to schedule different files on different circumstances and what features I could add.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaytiri%2Fprogram-scheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzaytiri%2Fprogram-scheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaytiri%2Fprogram-scheduler/lists"}