A simple Pomodoro timer application built with Rust and egui.

- Customizable work and break durations
- Visual timer display with doughnut-shaped progress indicator
- Dynamic window icon that shows timer progress in dock/taskbar
- Sound notifications when phases complete
- Simple and intuitive interface
- Rust and Cargo: https://www.rust-lang.org/tools/install
- cargo-bundle:
cargo install cargo-bundle
To build a Windows executable bundle (.exe/.msi):
# On Windows
./build.bat
# On any platform with cross-compilation setup
./build.sh --windowsThe Windows bundle will be created in target/release/bundle/msi/.
To build a macOS application bundle (.app):
# On macOS
./build.sh --macos
# On any platform with cross-compilation setup
./build.sh --macosThe macOS bundle will be created in target/release/bundle/osx/.
To build for all supported platforms:
./build.sh --all- Navigate to
target/release/bundle/msi/ - Run the installer (.msi) file
- Launch the application from the Start Menu
- Verify that:
- The application launches correctly
- The timer functions properly
- Sound notifications work when a phase completes
- Settings can be adjusted
- Navigate to
target/release/bundle/osx/ - Open the .app bundle
- If prompted about an unidentified developer, right-click the app and select "Open"
- Verify that:
- The application launches correctly
- The timer functions properly
- Sound notifications work when a phase completes
- Settings can be adjusted
- The application uses the Windows subsystem flag to prevent console windows from appearing
- Icons are automatically converted to the appropriate format (.ico)
- The installer includes necessary metadata for proper installation
- The application is bundled as a standard .app package
- Icons are automatically converted to the appropriate format (.icns)
- The bundle includes proper metadata for macOS application requirements
- Minimum supported macOS version is 10.13 (High Sierra)
The application uses the rodio crate for cross-platform audio playback, ensuring sound notifications work consistently across different operating systems.
The application uses the log crate for logging. To view logs during development or troubleshooting, set the RUST_LOG environment variable:
# Show all logs (info, debug, trace)
RUST_LOG=debug cargo run
# Show only info and warning logs
RUST_LOG=info cargo run
# Show logs from specific modules
RUST_LOG=mypomodoro=debug cargo runThe application logs useful information including:
- Icon updates (every second when timer is running)
- Phase transitions (Pomodoro → Break, etc.)
- Timer state changes (start, pause, resume, reset)
For better performance during development:
cargo run --releaseThis application includes the following third-party resources:
- Sound effect: Bell sound from Springin' Sound Stock
- Font: DejaVu Sans Mono font
- Copyright: (c) 2003 by Bitstream, Inc. All Rights Reserved.
- Bitstream Vera is a trademark of Bitstream, Inc.
- License: Bitstream Vera License / Arev Fonts License
- The DejaVu fonts are free software and may be redistributed and modified under the terms of the license.
- Source: DejaVu Fonts Project