A modern desktop overlay for time tracking with Excel integration and project management.
- ๐ฏ Desktop Overlay - Always visible time display without intrusive windows
- ๐ Excel Integration - Automatic saving to Excel files (.xlsx)
- ๐ Project Management - Multiple projects with session tracking
- โฑ๏ธ Session Management - Start/Stop/Pause with notes per session
- ๐จ Customizable Design - Transparency, size, font configurable
- ๐พ Secure Data Storage - Protection against data loss from multiple clicks
- โก Easy Operation - Direct clicks + right-click context menu
- ๐ Smart Project Switching - Recent combinations menu with auto-split sessions
- โฐ Auto-Split Sessions - Automatically creates separate sessions when switching projects after 5+ minutes
- Python 3.8 or higher
- pip (Python Package Manager)
git clone https://github.com/[username]/taskonaut.git
cd taskonaut
pip install -r requirements.txtpython src/main.py- ๐ Click Project Name โ Project selection menu
- ๐ Click Work Time โ Start/resume day
- โ Click Break Time โ Stop/pause session
- โน๏ธ Click Status โ Edit note or start new task
- Right Click Project Area โ Quick switch menu with recent project-task combinations
The right-click menu now shows your recent project-task combinations for faster switching:
- Recent Combinations โ Shows last 10 used project-task pairs (e.g., " Daily Work")
- Current Selection โ Marked with โ and disabled
- Smart Auto-Split โ Automatically creates separate sessions when switching after 5+ minutes
- Edit Options โ Access to project editor and session manager
When switching projects via right-click:
- If current session < 5 minutes โ Just updates project/task (no split)
- If current session โฅ 5 minutes โ Automatically:
- Stops and saves current session
- Creates new session with selected project/task
- Starts the new session immediately
Configure threshold: Edit "auto_split_minutes": 5 in config.json
- ๐ Open Excel
- โ๏ธ Overlay Settings
- ๐พ Save Data to Excel
- ๐ Switch Project
- โธ๏ธ Stop Session / ๐พ End Day & Save
- โ Exit Application
If you want to switch projects during an active session:
- Right-click project area โ Select from recent combinations (recommended)
- Left-click project name โ Full project editor dialog
- Auto-split handles session management automatically
- No manual session stopping needed
Important: The application handles breaks in two different ways:
Automatic Break Time Calculation:
- When you stop work โ Break timer starts automatically
- When you resume work โ Break time is calculated and added to daily totals
- This break time appears in the "Daily_Break_Time" column in Excel
- No separate break session records are created
Manual Break Sessions (Optional):
- Open Session Editor (right-click โ Open Excel)
- Click "โ Add Break" to manually log specific breaks
- These appear as separate rows with project = "BREAK"
- Useful for logging lunch breaks, meetings, etc.
Summary: Break time is automatically calculated, but break session records are only created when manually added through the Session Editor.
| Date | Start | End | Duration | Project | Note | Daily_Work_Time | Daily_Break_Time | Daily_Total_Time |
|---|---|---|---|---|---|---|---|---|
| 2025-08-27 | 09:00:00 | 10:30:00 | 1.50 | Project A | Meeting | 1.50 | 0.25 | 1.75 |
| Date | Weekday | Work_Time | Break_Time | Total_Time | Target_Work_Time | Difference | Status |
|---|---|---|---|---|---|---|---|
| 2025-08-27 | Tuesday | 7.50 | 0.50 | 8.00 | 8.00 | 0.00 | โ Target reached |
Configuration is automatically saved to config.json:
{
"overlay_settings": {
"position": {"x": 100, "y": 100},
"transparency": 0.9,
"font_size": 10,
"always_on_top": true
},
"work_settings": {
"target_hours": 8.0,
"auto_pause_after_minutes": 60
},
"projects_data": {
"active_project": "General",
"active_task": "Daily Work",
"projects": {
"General": ["Daily Work"],
"Project A": ["Development", "Testing"],
"Project B": ["Planning", "Meeting"]
},
"recent_combinations": [
"Project A - Development",
"General - Daily Work",
"Project B - Meeting"
]
},
"excel_file": "working_hours.xlsx",
"auto_split_minutes": 5
}auto_split_minutes- Threshold for automatic session splitting (default: 5 minutes)projects_data.recent_combinations- List of recent project-task pairs shown in right-click menuoverlay_settings.transparency- Overlay transparency (0.1 = very transparent, 1.0 = opaque)work_settings.target_hours- Daily work hour target for progress calculation
## ๐๏ธ Architecture
src/ โโโ main.py # Application entry point โโโ core/ # Core logic (JSON + Export) โ โโโ json_database.py # JSON-based primary datastore with projects_data โ โโโ excel_report_manager.py # Single Excel export (Sessions / Auswertung / Projekt_Analyse) โ โโโ config_manager.py # Configuration management โโโ gui/ # User interface โ โโโ beautiful_clean_overlay.py # Active overlay with smart right-click menu โ โโโ session_editor.py # Session management & editing โโโ utils/ โ โโโ time_utils.py # Time helpers & formatting โ โโโ translations.py # (Optional) i18n helpers โโโ config.json # Unified configuration (projects + settings)
### ๐ New Features Architecture
- **Unified Configuration**: Projects, tasks, and settings in single `config.json`
- **Smart Project Switching**: Recent combinations stored and displayed in right-click menu
- **Auto-Split Logic**: Intelligent session management based on configurable time threshold
- **Legacy Migration**: Automatic migration from old `projects.json` format
### ๐งน Legacy Removed
The old architecture with `excel_manager.py`, `enhanced_excel_manager.py`, multiple overlay variants, and separate evaluation services has been removed. All exports now run through `ExcelReportManager` โ less code, consistent calculations, less risk for divergences.
**Recent Improvements:**
- โ
Unified configuration in single `config.json` file
- โ
Smart right-click menu with recent project-task combinations
- โ
Auto-split sessions for better time tracking accuracy
- โ
Removed deprecated `excel_exporter.py` and `unified_excel_manager.py`
- โ
Streamlined architecture with direct `ExcelReportManager` integration
## ๐ ๏ธ Building Executable
To create a standalone .exe file:
```bash
python build.py
The executable will be created in the dist/ folder as taskonaut.exe.
- pandas>=1.5.0
- openpyxl>=3.1.0
- xlsxwriter>=3.0.0
- pyinstaller>=5.0.0 (for building executable)
-
"Excel file is locked"
- Close Excel before saving data
- File will auto-retry saving
-
Overlay not visible
- Check overlay settings in context menu
- Reset position: Right-click โ Settings
-
Data not saving
- Check file permissions
- Ensure Excel file is not open in another program
Run with debug output:
python src/main.py --debugThis project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For issues and questions:
- Create an issue on GitHub
- Check the troubleshooting section above
- Review the configuration options
Made with โค๏ธ for efficient time tracking