# Countdown Timer Application A cross-platform fullscreen countdown timer application built with Python and PyQt6. ## Features - **Multiple Timers**: Create, edit, and manage multiple countdown timers - **All-in-One Interface**: View and control all running timers in a single window - **Fullscreen Display**: Show all timers on a separate monitor in fullscreen mode - **Multi-Monitor Support**: Choose which monitor to display timers on - **Individual Controls**: Each timer has pause/resume, stop, and restart buttons - **Global Controls**: Pause, resume, or stop all timers at once - **Timer Library**: Save and reuse your favorite timer configurations - **Customizable Appearance**: Configure font size, background color, and text color for each timer - **HH:MM:SS Input**: Set timer duration using hours, minutes, and seconds - **Timer Titles**: Each timer displays its name above the countdown - **Persistent Settings**: All timers and settings are saved automatically - **Cross-Platform**: Works on both Windows and Linux ## Requirements - Python 3.8 or higher - PyQt6 ## Installation ### Windows 1. Run the setup script: ``` setup.bat ``` 2. Start the application: ``` run.bat ``` ### Linux 1. Make the scripts executable: ```bash chmod +x setup.sh run.sh ``` 2. Run the setup script: ```bash ./setup.sh ``` 3. Start the application: ```bash ./run.sh ``` ## Usage ### Creating a Timer 1. Click **"Add Timer"** in the Timer Library panel 2. Enter a name for your timer 3. Set the duration using HH:MM:SS format (hours:minutes:seconds) 4. Customize the appearance (font size, colors) 5. Click **"Save"** ### Starting Timers 1. Select a timer from the Timer Library list 2. Click **"Start Selected Timer"** 3. The timer appears in the Active Timers panel on the right 4. Start as many timers as you need - they all display in the same window ### Individual Timer Controls Each running timer has its own controls: - **Pause/Resume**: Pause the countdown or resume it - **Restart**: Reset the timer back to its original duration - **Stop**: Stop the timer and remove it from the display ### Global Controls Control all running timers at once: - **Pause All Timers**: Pause all running timers simultaneously - **Resume All Timers**: Resume all paused timers - **Stop All Timers**: Stop and remove all running timers ### Fullscreen Display Mode Show all active timers on a separate monitor: 1. Start one or more timers 2. Click **"Show Fullscreen on Monitor"** in the Display Mode section 3. All active timers appear in fullscreen on your selected monitor 4. **Timers split the screen evenly**: - 1 timer = 100% of screen height - 2 timers = 50% each - 3 timers = 33% each - And so on... 5. Timers sync automatically between main window and fullscreen display 6. Control timers from the main window (pause, restart, stop) 7. Press **ESC** on the fullscreen display to exit fullscreen mode ### Configuring Monitor 1. Click **"Settings"** in the main window 2. Select the monitor where you want the fullscreen display 3. Click **"Save"** ### Editing/Deleting Timers - Select a timer from the library and click **"Edit Timer"** to modify it - Select a timer and click **"Delete Timer"** to remove it from your library ## Interface Layout The application has two main panels: **Left Panel - Timer Library & Controls:** - List of saved timer configurations - Add, Edit, Delete, and Start buttons - Global control buttons (Pause All, Resume All, Stop All) - Display mode button (Show Fullscreen on Monitor) - Settings button **Right Panel - Active Timers:** - Displays all currently running timers - Each timer shows its name, countdown, and individual controls - Scrollable area to accommodate multiple timers **Fullscreen Display (Optional):** - Shows all active timers on a separate monitor - Timers split the screen height evenly (2 timers = 50% each, etc.) - Font sizes automatically adjust based on number of timers - Fullscreen mode for maximum visibility - Automatically syncs with main window - Press ESC to exit ## Tips - **Duration**: Use HH:MM:SS format (e.g., 00:05:00 for 5 minutes) - **Multiple Timers**: Run as many timers as you need - all visible in one window - **Fullscreen Mode**: Perfect for presentations or displaying timers on a TV/projector - **Even Split**: Timers automatically divide the screen height evenly - **Auto-Scaling**: Font sizes adjust automatically based on number of timers - **Multi-Monitor**: Configure which monitor shows the fullscreen display - **Individual Controls**: Each timer has its own Pause, Restart, and Stop buttons - **Global Controls**: Use Pause All/Resume All/Stop All for quick management - **Pause Anytime**: Need a break? Pause individual timers or all at once - **Colors**: Use contrasting colors for better visibility - **Timer Library**: Save frequently used timers for quick access - **Reusable Configs**: Start the same timer multiple times simultaneously - **Sync Display**: Fullscreen display automatically syncs with main window controls ## Keyboard Shortcuts - **ESC** (in fullscreen display): Exit fullscreen mode and return to main window ## Project Structure ``` countdown-timer/ ├── main.py # Application entry point ├── models/ │ ├── __init__.py │ └── timer_model.py # Timer data model ├── ui/ │ ├── __init__.py │ ├── main_window.py # Main application window │ ├── settings_dialog.py # Settings dialog │ ├── timer_dialog.py # Timer configuration dialog │ └── timer_window.py # Fullscreen timer display ├── requirements.txt # Python dependencies ├── setup.bat # Windows setup script ├── setup.sh # Linux setup script ├── run.bat # Windows run script ├── run.sh # Linux run script └── README.md # This file ``` ## License This project is open source and available for personal and commercial use.