A comprehensive, cross-platform productivity timer application implementing the Pomodoro Technique with classical music integration, multiple interfaces, and detailed analytics. Built with pure Python for maximum compatibility and ease of use.
- GUI Mode: Beautiful visual interface with progress bars and real-time statistics
- Console Mode: Terminal-based interface perfect for developers and CLI enthusiasts
- Dashboard: Comprehensive analytics with charts, insights, and export capabilities
- Interactive Launcher: Smart menu system for easy mode selection
- Classical Music Playback: Automatic background music during work sessions
- Cross-Platform Audio: Powered by MPV media player for consistent experience
- Volume Control: Adjustable music levels with fade transitions
- Multiple Playlists: Curated classical, baroque, and piano collections
- Session Logging: Automatic tracking of all timer sessions
- Productivity Insights: Detailed analytics with scoring and trend analysis
- Export Capabilities: CSV export for external analysis
- Visual Charts: Beautiful graphs showing productivity patterns over time
- Cross-Platform Notifications: Native desktop notifications on all platforms
- Early Warnings: Configurable alerts before session completion
- Motivational Messages: Encouraging notifications to maintain momentum
- Multiple Notification Types: Visual, audio, and system tray integration
- Python 3.8+ (Python 3.10+ recommended)
- MPV Media Player (for music functionality)
-
Clone or download the project:
git clone https://github.com/ahmelkholy/ultimate-focus-timer.git cd ultimate-focus-timer -
Set up virtual environment (recommended):
python -m venv .venv # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Run automated setup:
python setup.py
-
Launch the application:
python main.py
# Interactive launcher menu (default)
python main.py
# Direct GUI launch
python main.py --gui
# Console mode
python main.py --console
# Analytics dashboard
python main.py --dashboard
# Quick 25-minute Pomodoro session
python main.py --pomodoro
# Custom work session (30 minutes)
python main.py --work 30
# Help and system information
python main.py --help
python main.py --info- Windows 10/11
- macOS 10.14+
- Linux (Ubuntu, Debian, Fedora, Arch)
- Python 3.8+ (3.10+ recommended)
- MPV Media Player (auto-installed by setup script)
- Python packages (automatically installed):
- PyYAML, matplotlib, pandas, seaborn
- plyer, psutil, rich, click
ultimate-focus-timer/
├── main.py # Ultimate launcher with all functionality
├── setup.py # Cross-platform setup and configuration
├── requirements.txt # Python dependencies
├── config.yml # User configuration file
├──
├── core/ # Core application modules
│ ├── config_manager.py # Configuration management
│ ├── session_manager.py # Timer session logic
│ ├── music_controller.py# Music playback control
│ └── notification_manager.py # Cross-platform notifications
├──
├── interfaces/ # User interfaces
│ ├── focus_gui.py # GUI application
│ ├── focus_console.py # Console interface
│ ├── dashboard.py # Analytics dashboard
│ └── cli.py # CLI utilities
├──
├── data/ # Application data
│ ├── focus.db # Session database
│ ├── log/ # Application logs
│ └── exports/ # Data exports
├──
├── music/ # Music files and playlists
├── static/ # Static assets (sounds, icons)
└── docs/ # Documentation
The application uses a YAML configuration file (config.yml) for customization:
work_mins: 25 # Work session duration
short_break_mins: 5 # Short break duration
long_break_mins: 15 # Long break duration
long_break_interval: 4 # Sessions before long breakclassical_music: true # Enable background music
classical_music_volume: 70 # Music volume (0-100)
fade_music_transitions: true # Smooth volume transitions
pause_music_on_break: true # Auto-pause during breaksdesktop_notifications: true # Enable desktop notifications
notify_early_warning: 2 # Minutes before session end
motivational_messages: true # Show encouraging messages
notification_priority: normal # Notification priority leveldark_theme: true # Use dark theme
accent_color: "#00ff00" # UI accent color
animated_transitions: true # Enable animations
show_progress_bar: true # Show progress indicatorsThe setup script will automatically install MPV and configure music:
python setup.pyWindows:
# Using Chocolatey
choco install mpv
# Using Winget
winget install mpvmacOS:
# Using Homebrew
brew install mpvLinux:
# Ubuntu/Debian
sudo apt install mpv
# Fedora
sudo dnf install mpv
# Arch Linux
sudo pacman -S mpvAdd your own music by:
- Creating
.m3uplaylist files in themusic/directory - Updating
config.ymlwith playlist paths - Supporting local files or online streams
Access comprehensive productivity analytics through the dashboard:
python main.py --dashboard- Session Statistics: Total sessions, duration, completion rates
- Productivity Trends: Daily, weekly, and monthly patterns
- Break Analysis: Break timing and effectiveness
- Goal Tracking: Progress towards productivity goals
- Performance Scoring: Productivity scoring algorithms
- CSV Export: Raw session data for external analysis
- Report Generation: Formatted productivity reports
- Chart Export: Save visualizations as images
MPV Not Found
# Check MPV installation
mpv --version
# Reinstall via setup script
python setup.py --reinstall-mpvPython Dependencies Missing
# Check dependencies
python main.py --check-deps
# Reinstall dependencies
pip install -r requirements.txt --force-reinstallVirtual Environment Issues
# Create new virtual environment
python -m venv .venv --clear
# Activate and reinstall
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS/Linux
pip install -r requirements.txtGUI Not Starting
# Try console mode
python main.py --console
# Check system information
python main.py --infoEnable detailed logging:
python main.py --debugThe application supports extensive CLI usage:
# System information
python main.py --info
# Dependency checking
python main.py --check-deps
# Configuration validation
python main.py --check-config
# Quick sessions
python main.py --work 45 --music classical
python main.py --break 10 --no-music
# Batch mode
python main.py --sessions 4 --work 25 --break 5For development and isolation:
# Create and activate virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS/Linux
# Install development dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt # If available
# Run application
python main.py
# Deactivate when done
deactivateCreate desktop shortcuts and system integration:
python setup.py --desktop-integrationWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
-
Fork the repository
-
Create a feature branch
-
Set up development environment:
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt -
Make your changes
-
Run tests and submit a pull request
- Follow PEP 8 guidelines
- Use type hints where applicable
- Include docstrings for public methods
- Maintain cross-platform compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
- Francesco Cirillo for the Pomodoro Technique
- MPV Media Player for excellent cross-platform audio support
- Python Community for the amazing ecosystem of libraries
- Classical Music Communities for curated playlists
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
Stay focused and productive! 🎯
Built with ❤️ for productivity enthusiasts worldwide
Stay focused and productive! 🎯