A simple command-line Pomodoro timer in Python. Stay focused and productive with this minimalist timer that helps you implement the Pomodoro Technique right from your terminal.
- 🎯 Focused Sessions: Default 25-minute Pomodoro sessions with customizable duration
- 📊 Visual Progress: Real-time progress bar showing elapsed time and remaining duration
- ⏸️ Pause/Resume: Spacebar to pause and resume your sessions
- 🎮 Simple Controls: Intuitive keyboard controls (Space to pause, Ctrl+C to quit)
- 🎨 Fun UI: Clean, colorful progress display with emojis
- 🚀 Standalone: Install globally with
uvxfor system-wide access
- Python 3.13+
- uv package manager
Install and run Vibodoro anywhere on your system:
# Install uv (if you haven't already)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install Vibodoro globally from source
git clone <repository-url>
cd vibodoro
uv tool install --from . vibodoroOnce installed, you can run Vibodoro from anywhere:
# Run from anywhere in your system
vibodoro --help
vibodoro --minutes 15For development or local use:
git clone <repository-url>
cd vibodoro
uv sync
uv run vibodoro --minutes 25# Start a 25-minute Pomodoro (default)
vibodoro
# Start a custom duration session
vibodoro --minutes 30
# Show help
vibodoro --help# Start a 25-minute Pomodoro (default)
uv run vibodoro
# Start a custom duration session
uv run vibodoro --minutes 30
# Show help
uv run vibodoro --help- Press
SPACEto pause/resume the timer - Press
Ctrl+Cto quit the session - The progress bar shows:
- Current progress percentage
- Visual progress bar
- Elapsed time / Total time
- Remaining time in MM:SS format
🍅 Starting 25 minute Pomodoro session
Press SPACE to pause/resume • Press Ctrl+C to quit
🍅 Pomodoro (24:30): 2%|▎ | 0:00:30/0:25:00
When paused:
Paused -- press Space to resume.
On completion:
🎉 Pomodoro session completed! Time for a break!
- Python 3.13+
- uv package manager
# Clone the repository
git clone <repository-url>
cd vibodoro
# Install dependencies (including test dependencies)
uv sync --extra test
# Run the application in development
uv run vibodoro --minutes 1vibodoro/
├── src/
│ └── vibodoro/
│ ├── __init__.py # Package initialization
│ └── main.py # Main application code
├── test_main.py # Pytest test suite
├── pyproject.toml # Project configuration and dependencies
├── dist/ # Built packages (after uv build)
├── docs/
│ └── specs.md # Technical specifications
└── README.md # This file
# Build source distribution and wheel
uv build
# Install globally from built wheel
uvx --from ./dist/vibodoro-0.1.0-py3-none-any.whl vibodoro
# Test the standalone installation
vibodoro --helpWe use pytest for testing. All tests are located in test_main.py.
# Install test dependencies
uv sync --extra test
# Run all tests
uv run pytest test_main.py
# Run tests with verbose output
uv run pytest test_main.py -v
# Run specific test
uv run pytest test_main.py::TestPomodoroTimer::test_timer_initialization -vThe test suite includes:
- Timer initialization and configuration
- Pause/resume functionality
- CLI argument parsing
- Terminal setup and restoration
- Error handling
- Parametrized tests for various durations
- click (≥8.0.0) - Command-line interface
- tqdm (≥4.60.0) - Progress bar display
- pytest (≥7.0.0) - Testing framework
The Pomodoro Technique is a time management method:
- 🍅 Work: Focus on a task for 25 minutes
- ☕ Short Break: Take a 5-minute break
- 🔄 Repeat: After 4 pomodoros, take a longer break (15-30 minutes)
Vibodoro helps you track the work sessions - use your preferred timer or app for breaks!
Contributions are welcome! Please feel free to:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
uv run pytest test_main.py) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
- Inspired by the Pomodoro Technique by Francesco Cirillo
- Built with ❤️ using Python, Click, and tqdm
Happy focusing! 🍅✨