1
0
Fork
You've already forked punch
0
Solidtime application for Linux
  • Python 100%
2025年11月06日 22:39:43 -08:00
data data/gschema: add exit-to-tray option 2025年11月04日 12:27:52 -08:00
screenshots screenshots: add main window pic 2025年11月06日 17:36:33 -08:00
src/punch tray: fix 'stop timer' menu item when no description was entered 2025年11月06日 22:39:43 -08:00
.gitignore gitignore: add 2025年11月01日 13:09:53 -07:00
LICENSE LICENSE: add 2025年11月01日 11:19:54 -07:00
pyproject.toml pyproject: ruff: ignore E402 2025年11月06日 21:37:41 -08:00
README.md README: add 2025年11月06日 17:36:33 -08:00

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.

Punch main window

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):

  • python3
  • gtk4.0
  • py3-gobject3 (GTK4 Python bindings)
  • libadwaita
  • libsecret

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.