Solidtime application for Linux
- Python 100%
| data | data/gschema: add exit-to-tray option | |
| screenshots | screenshots: add main window pic | |
| src/punch | tray: fix 'stop timer' menu item when no description was entered | |
| .gitignore | gitignore: add | |
| LICENSE | LICENSE: add | |
| pyproject.toml | pyproject: ruff: ignore E402 | |
| README.md | README: add | |
Punch icon
Punch
Punch is a native Linux desktop client for Solidtime time tracking. It supports starting and stopping (optionally) billable timers for projects and tasks, and features an adaptive user interface with a system tray. It handles offline/disconnected situations by queuing timer stops and syncing them when connectivity returns.
Features
- Start and stop timers with project and task selection
- Toggle billable status per timer
- System tray integration with quick controls
- Offline stop handling - queues stops when disconnected and syncs automatically when online
- Adaptive interface using libadwaita
- Keyboard shortcuts for common actions
- Desktop notifications for timer events
- Secure token storage via libsecret
- Multi-organization support with quick switching
Dependencies
Runtime dependencies (Alpine Linux package names):
python3gtk4.0py3-gobject3(GTK4 Python bindings)libadwaitalibsecret
Development
Build and run from source:
# Compile GSettings schema
glib-compile-schemas data/
# Run application
GSETTINGS_SCHEMA_DIR=data PYTHONPATH=src python3 -m punch.main
For development, you'll need the runtime dependencies plus build tools for compiling schemas.
Name
The name "punch" comes from timecard punch clocks, the mechanical devices workers used to clock in and out before time tracking apps existed.