Skip to content

an-tc2912/multi-task-timer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⏱️ Multi-Task Timer

A focused, distraction-free desktop timer for managing up to 4 parallel tasks — built for makers, developers, and deep workers.

Python PySide6 Platform

FeaturesInstallationUsageConfigurationBuild


🎯 What is this?

Multi-Task Timer lets you track up to 4 countdown timers simultaneously — each named, independently controllable, and fully configurable. Ideal for time-boxing your coding sessions, meetings, study blocks, or any workflow where you juggle multiple tasks at once.

Unlike generic timer apps, each task has its own full UI card with start/pause/reset, manual time editing, and a "minutes already used" shortcut — keeping you accurate without friction.


✨ Features

  • 🔢 4 independent countdown timers — each with its own state machine (IDLE → RUNNING → PAUSED → FINISHED)
  • ✏️ Click-to-edit timer — tap the display to type in mm:ss directly
  • "Minutes Used" shortcut — enter minutes already elapsed to auto-calculate remaining time
  • 🔔 Sound alerts — plays a Windows system sound or your custom .wav / .mp3 / .ogg on finish
  • 🪟 Desktop notification popup — non-blocking card-style popup with auto-dismiss timeout
  • 🔦 Taskbar flash — Windows taskbar flashes until you re-focus the app (never miss a timer)
  • ⚙️ Settings dialog — rename tasks, change base duration, pick notification sound
  • 🔄 Auto-save config — settings persist in %APPDATA%\MultiTaskTimer\config.json with automatic .bak backup
  • 🖥️ HiDPI aware — proper scaling on high-resolution displays

🖼️ Screenshot

Multi-Task Timer Dashboard

4 task cards, each at 60:00 and IDLE. Click ▶ Start to begin any task.


🚀 Installation

Requirements

Dependency Version Notes
Python 3.10+ Required
PySide6 6.6+ UI framework
pygame latest Audio playback

Note: Full feature support on Windows 10/11. Linux/macOS: UI works, but system sounds and taskbar flash are unavailable.

From source

# 1. Clone the repo
git clone https://github.com/an-tc2912/multi-task-timer.git
cd multi-task-timer

# 2. Create and activate a virtual environment  
python -m venv venv
venv\Scripts\activate        # Windows
# source venv/bin/activate   # Linux / macOS

# 3. Install dependencies
pip install -r requirements.txt

# 4. Run
python main.py

🎮 Usage

Action How
Start a timer Click ▶ Start on any task card
Pause Click ⏸ Pause on a running card
Reset Click ↺ Reset
Edit time directly Click the mm:ss display → type a new value
Set by time already used Enter elapsed minutes in the "Minutes Used" field
Start all 4 timers at once Click ▶ Start All in the footer
Stop / reset all timers ⏸ Stop All or ↺ Reset All in the footer
Open settings Click the gear icon (top right)

⚙️ Configuration

Settings are saved automatically to:

%APPDATA%\MultiTaskTimer\config.json
Key Default Description
task_names ["Task 1"…"Task 4"] Labels shown on each card
base_minutes 60 Countdown duration in minutes
sound_path "" (system default) Path to a .wav/.mp3/.ogg audio file
sound_enabled true Toggle completion sound on/off
popup_timeout_seconds 10 Auto-dismiss timeout for notification popup

💡 A .bak backup is written before every config save. If the file is corrupted on startup, the app automatically falls back to defaults and shows a toast notification.


🏗️ Build Binary

Build a standalone .exe (no Python required on target machine):

pip install pyinstaller
pyinstaller App_Timer_Miner.spec

Output will be in dist/.


🗂️ Project Structure

multi-task-timer/
├── main.py                    # App entry point
├── requirements.txt           # Python dependencies
├── App_Timer_Miner.spec       # PyInstaller build config
└── src/
    ├── config.py              # Config read/write (%APPDATA%)
    ├── models.py              # TaskTimer state machine
    ├── audio.py               # Sound player (pygame.mixer)
    ├── styles.py              # Qt stylesheet tokens & constants
    ├── utils/
    │   └── logger.py          # File logger (%APPDATA%\app.log)
    └── widgets/
        ├── main_window.py     # Main dashboard window
        ├── task_card.py       # Individual timer card widget
        ├── settings_dialog.py # Settings popup
        ├── notif_popup.py     # Task completion notification
        └── toast.py           # In-app toast messages

🗺️ Roadmap

  • macOS system sound & dock bounce support
  • Global hotkeys (start/pause all without focusing window)
  • Task history log with export to CSV
  • Light mode / theme switcher
  • Pomodoro mode integration

🤝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages