A modern, beautiful Linux desktop application for managing cron jobs with a graphical interface. Built with Python and GTK4.
โจ Modern GTK4 Interface - Beautiful, native Linux look with Adwaita styling
๐ Easy Job Management - View, add, edit, and delete cron jobs with a few clicks
๐ Search & Filter - Quickly find jobs with the built-in search
โฐ Cron Expression Builder - No need to remember cron syntax
โ
Real-time Validation - Instant feedback on cron expressions
๐ฎ Next Run Preview - See when your jobs will execute next
๐จ Quick Presets - Common schedules (hourly, daily, weekly, monthly)
๐ Enable/Disable Jobs - Toggle jobs on and off without deleting
๐ฌ Job Comments - Add descriptions to your cron jobs
Coming soon - run the app to see the beautiful interface!
-
OS: Linux (tested on Ubuntu/Debian-based distributions)
-
Python: 3.8 or higher
-
GTK: GTK4 and libadwaita
-
System packages:
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-4.0 gir1.2-adw-1
-
Clone the repository:
git clone https://github.com/yourusername/cron_gui.git cd cron_gui -
Create and activate virtual environment:
python3 -m venv venv source venv/bin/activate -
Install Python dependencies:
pip install -r requirements.txt
-
Run the application:
python3 main.py
Simply execute:
python3 main.pyOr if you want to add it to your application menu:
# Copy the desktop file to your local applications directory
cp cron-gui.desktop ~/.local/share/applications/
# Update the Exec path in the file to match your installation locationAdding a Job:
- Click the
+button in the header bar - Enter the command to execute
- Choose a preset or build a custom schedule
- Add an optional comment
- Click "Save"
Editing a Job:
- Click the edit button (pencil icon) on any job
- Modify the fields as needed
- Click "Save"
Deleting a Job:
- Click the delete button (trash icon) on any job
- Confirm the deletion
Enabling/Disabling a Job:
- Use the toggle switch on each job row
Searching:
- Click the search icon or press
Ctrl+F - Type to filter jobs by command, schedule, or comment
Cron expressions consist of 5 fields:
* * * * *
โ โ โ โ โ
โ โ โ โ โโโโ Day of week (0-6, 0=Sunday)
โ โ โ โโโโโโ Month (1-12)
โ โ โโโโโโโโ Day of month (1-31)
โ โโโโโโโโโโ Hour (0-23)
โโโโโโโโโโโโ Minute (0-59)
Examples:
* * * * *- Every minute0 * * * *- Every hour0 0 * * *- Daily at midnight0 0 * * 0- Weekly on Sunday at midnight0 0 1 * *- Monthly on the 1st at midnight*/5 * * * *- Every 5 minutes0 */2 * * *- Every 2 hours
Here are some powerful ways to use Cron GUI:
- Backups: Automatically zip and move files to a backup drive every night
0 3 * * * /scripts/backup.sh
- Cleanup: Delete temporary files older than 7 days
0 4 * * * find /tmp -mtime +7 -delete
- Log Rotation: Archive and clear log files to save space
- Status Checks: Ping your website every 5 minutes
*/5 * * * * curl -s https://mysite.com > /dev/null
- Data Fetching: Run a script to scrape a website or fetch API data every hour
- Certificate Renewal: Auto-renew SSL certificates
- Reminders: Send yourself a desktop notification
0 9 * * 1 notify-send "Weekly Meeting"
- Downloads: Schedule heavy downloads for off-peak hours (e.g., 2 AM)
- Wallpaper Switcher: Change your desktop wallpaper every hour
To build a distributable Python package (wheel and source distribution):
-
Install build tools:
pip install build
-
Build the package:
python3 -m build
Or using setup.py directly (legacy):
python3 setup.py sdist bdist_wheel
-
Artifacts: The built packages will be in the
dist/directory:cron_gui-0.1.0-py3-none-any.whl(Wheel)cron_gui-0.1.0.tar.gz(Source tarball)
You can install the built package using pip:
pip install dist/cron_gui-0.1.0-py3-none-any.whlThis will install the cron-gui command globally (or in your active environment).
To create a native Debian package for easy installation on Ubuntu/Debian/Kali:
-
Run the build script:
./build_deb.sh
-
Install the package:
sudo dpkg -i dist/cron-gui_0.1.0_all.deb sudo apt-get install -f # Install dependencies if needed -
Run: You can now launch "Cron GUI" from your system menu!
cron_gui/
โโโ cron_gui/
โ โโโ __init__.py # Package initialization
โ โโโ cron_manager.py # Backend cron management
โ โโโ cron_parser.py # Cron expression utilities
โ โโโ job_dialog.py # Add/Edit dialog
โ โโโ job_list.py # Job list view
โ โโโ window.py # Main application window
โโโ main.py # Application entry point
โโโ requirements.txt # Python dependencies
โโโ setup.py # Package setup
โโโ cron-gui.desktop # Desktop entry file
โโโ README.md # This file
Contributions are welcome! Please see CONTRIBUTING.md for details.
"Failed to initialize crontab"
- Make sure you have cron installed:
sudo apt install cron - Check if the cron service is running:
systemctl status cron
GTK/Adwaita import errors
- Install system packages:
sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1
Permission errors
- The app manages your user's crontab by default
- For system-wide cron jobs, you may need elevated privileges
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with GTK4 and libadwaita
- Uses python-crontab for cron management
- Uses croniter for cron expression parsing
If you encounter any issues or have questions, please open an issue on GitHub.