A minimalist Pomodoro timer built with C and ncurses, featuring audio notifications and intuitive keybindings for the terminal.
- 🍅 Classic Pomodoro intervals: 25 min work, 5 min break, 15 min long break
- 🔁 Full cycle: 4 work sessions with short breaks and a long break
- 🔊 Audio notifications when timer completes (using
aplay) - ⌨️ Intuitive keybindings for complete control
- 📦 Lightweight: runs entirely in your terminal
- Linux/Unix environment
ncurseslibraryaplay(usually part of alsa-utils)gccor any C compilermake(optional)
- Clone the repository:
git clone https://github.com/andrexm/pmd-cli.git
cd pmd-cli- Compile:
gcc -o pmd-cli pmd-cli.c -lncursesOr using make:
make- (Optional) Install system-wide:
sudo cp pmd-cli /usr/local/bin/For audio notifications to work:
- Create the configuration directory:
mkdir -p ~/.config/pmd-cli/sounds- Copy the sound file:
cp sounds/magiaz-campainha-331260.wav ~/.config/pmd-cli/sounds/Simply run from your terminal:
./pmd-cliOr if installed system-wide:
pmd-cliThe timer will start paused, waiting for your command.
| Key | Action |
|---|---|
q |
Quit the application |
s |
Start the timer / Resume from pause |
p |
Pause the current timer |
n |
Skip to next interval |
r |
Restart current interval |
t |
Test bell sound |
After starting the timer, you need to pause it first to do another action (including quit).
The app follows the standard Pomodoro Technique:
- Work - 25 minutes
- Short Break - 5 minutes
- Work - 25 minutes
- Short Break - 5 minutes
- Work - 25 minutes
- Short Break - 5 minutes
- Work - 25 minutes
- Long Break - 15 minutes
After the long break, the cycle repeats from the beginning.
- The display shows current interval type (WORK/BREAK/LONG BREAK) and remaining time
- When a timer reaches zero, it automatically:
- Plays the bell sound (if sound file exists)
- Advances to the next interval
- Pauses until you press
sto start
No sound when timer ends:
- Ensure
aplayis installed:which aplay - Check if sound file exists:
ls ~/.config/pmd-cli/sounds/ - Test sound manually:
aplay ~/.config/pmd-cli/sounds/magiaz-campainha-331260.wav - Try the test key
twhile the app is running
Timer not displaying correctly:
- Make sure your terminal supports ncurses
- Try resizing your terminal window (resize it and reopen the app)
- ncurses: Terminal handling library
- aplay: ALSA sound player (usually pre-installed on most Linux distributions)
On Debian/Ubuntu, install missing dependencies with:
sudo apt-get install libncurses5-dev alsa-utilsOn Arch Linux:
sudo pacman -S ncurses alsa-utilsContributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
The MIT License (MIT). Please see License File for more information.
Created by andrexm
