QTimetrap
Desktop UI for Timetrap, built with Ruby + Qt.
QTimetrap follows an MVVM-style architecture with Zeitwerk autoloading and a Rails-like project structure.
Features
- Expandable entries tree:
week -> day -> project/task -> time entry. - Start/stop tracking from UI (single button based on running state).
- Edit entry
note,start, andenddirectly in the list. - Project/task sidebar with multi-select task filtering.
- Date-time interval filtering (
FROM/TO) with live apply. - Archive mode (soft-hide entries via local archive store, no destructive Timetrap delete).
- Theme switch (
light/dark) with persistent selection.
Requirements
- Ruby
>= 3.2 - Qt bridge gem:
qt >= 0.1.4 -
timetrapCLI available ast(or configured via env)
Install
RubyGems
gem install qtimetrap timetrap
qtimetrapNote: qtimetrap depends on the qt gem with native extensions.
Install required system libraries first:
https://github.com/CyJimmy264/qt?tab=readme-ov-file#system-requirements.
Fedora COPR
sudo dnf copr enable cyjimmy264/ruby-qt
sudo dnf copr enable cyjimmy264/ruby-qtimetrap
sudo dnf install ruby-qt ruby-qtimetrap
gem install timetrap
qtimetrapRun
bundle install
bundle exec bin/qtimetrapIf qt is already installed in your current rbenv shell, you can also run:
bin/qtimetrapConfiguration
-
QTIMETRAP_ENV: app environment (developmentby default) -
TIMETRAP_BIN: timetrap CLI command (tby default) -
QTIMETRAP_THEME: initial theme (lightby default) -
QTIMETRAP_RELOAD=1: enable Zeitwerk reloading in development
Persisted settings:
- Theme:
~/.config/qtimetrap/config.yml - Archived entry ids:
~/.local/share/qtimetrap/archived_entries.yml
($XDG_CONFIG_HOME / $XDG_DATA_HOME are respected.)
Development
rspec
gem build qtimetrap.gemspecMain directories:
-
app/models,app/services,app/view_models -
app/views,app/components app/styles/themes/{light,dark}/*.qss-
config/,lib/,spec/
Packaging
- Fedora/COPR assets:
packaging/rpm - Debian/Launchpad assets:
packaging/deb
