A Bash-based implementation of the Pomodoro Technique, providing an efficient and configurable time management system within the terminal environment.
The Pomodoro Technique, pioneered by Francesco Cirillo in the late 1980s, is a structured time management methodology designed to enhance productivity by segmenting work into 25-minute focused intervals (Pomodoros), interspersed with 5-minute short breaks. After the completion of four consecutive Pomodoros, a longer break of 15–30 minutes is introduced to facilitate cognitive recovery.
Bashodoro automates this methodology through:
- Programmatically timed work and break intervals.
- Adaptive notification mechanisms to mitigate distractions.
- Comprehensive session tracking with statistical insights.
- Flexible configuration parameters to accommodate diverse workflows.
- A streamlined command-line interface optimized for minimal resource utilization.
- Define custom work, short break, and long break durations.
- Default settings: Work = 25 min, Short Break = 5 min, Long Break = 15 min.
- Logs completed work intervals.
- Automatically schedules long breaks after every four Pomodoros.
- Desktop notifications utilizing:
notify-send(Linux)osascript(macOS)-Command(Windows PowerShell)
- Acoustic alerts leveraging:
afplay(macOS)paplay(Linux)aplay(Linux)
- Terminal-integrated countdown timer and progress bar.
- Pause/Resume: Press p to pause, r to resume.
- Skip: Press s to advance to the next session.
- Quit: Press q to terminate the script.
- Comprehensive session logging and performance analysis.
- Automatically generated productivity reports (daily/weekly).
- Key Metrics Tracked:
- Aggregate Pomodoro count
- Total work duration (hours and minutes)
- Time allocation for short and long breaks
- Productivity streak analysis
- Average session length
- Frequency of skipped and paused sessions
- Trends in daily and weekly productivity
settings.confallows fine-tuning of:- Notification preferences
- Sound settings
- Break intervals
- Long break frequency
- Work session durations
- Lightweight, distraction-free interface.
- Use
-hor--helpfor contextual usage instructions.
Break sessions display random entries from:
~/.bashodoro/data/jokes.txt~/.bashodoro/data/quotes.txt
To customize:
- Edit the files (one entry per line)
- For quotes:
"Text" - Author - For jokes: Simple one-liners
Files are auto-created on first run if missing.
-
Clone the repository:
git clone https://github.com/a-sad-dan/bashodoro.git cd bashodoro -
Run the installation script (requires root privileges):
sudo ./install.sh
-
Start Bashodoro:
bashodoro
-
To uninstall, use:
sudo ./uninstall.sh
Once installed, you can run Bashodoro with:
bashodoro [OPTIONS]Command-Line Options:
| Option | Description |
|---|---|
-m, --manual |
Start without automatic session initiation. |
-s, --stats |
Show detailed session statistics. |
-c, --config |
Display current parameter settings. |
-h, --help |
Show help menu with usage instructions. |
-w [minutes] |
Set custom work session duration (in minutes). |
-sb [minutes] |
Set custom short break duration (in minutes). |
-lb [minutes] |
Set custom long break duration (in minutes). |
-ws [count] |
Set number of work sessions before a long break. |
Ctrl+C |
Quit the script (Linux/macOS). |
Bashodoro maintains session logs for tracking your productivity.
Log files are stored per user at:
$HOME/.bashodoro/logs/bashodoro.log
To view the logs, use:
cat $HOME/.bashodoro/logs/bashodoro.logTo clear logs:
> $HOME/.bashodoro/logs/bashodoro.lognotify-send(Linux),osascript(macOS),-Command(Windows PowerShell) for desktop notifications.afplay(macOS),paplay(Linux),aplay(Linux) for acoustic alerts.sleepordatefor interval timing execution.
.
|-- README.md
|-- audio
|-- bashodoro.sh
|-- bin
| |-- notify.sh
| |-- session.sh
| `-- timer.sh
|-- config
| `-- settings.conf
|-- logo.png
|-- logo_dark.png
|-- logs
| `-- bashodoro.log
|-- sounds
| |-- jokingly.ogg
| |-- jokingly.wav
| |-- joyous.ogg
| |-- joyous.wav
| |-- light-hearted.ogg
| |-- light-hearted.wav
| |-- slick.ogg
| `-- slick.wav
|-- tests
| |-- test_notify.sh
| `-- test_timer.sh
`-- uninstall.sh
Contributions are encouraged and appreciated. To contribute:
- Fork the repository.
- Create a feature branch for your implementation.
- Develop and test modifications locally.
- Submit a pull request with a concise summary of changes.
For significant modifications, please initiate an issue discussion beforehand.
Bashodoro is a robust, extensible, and lightweight productivity tool designed for efficiency-focused terminal users. Stay productive and optimize your workflow!