TimeWarrior for Omarchy
An Omarchy bar widget for TimeWarrior. It shows whether time is being tracked, keeps a live stopwatch for the open interval, and opens a keyboard-accessible panel with stop, start and resume controls plus a daily report.
Features
- Bar icon lights up while an interval is being tracked.
- Panel shows the open interval's tags, start time and live elapsed time.
- Stop exactly the open interval with
timew stop. - Start tracking with an optional tag name (
timew start <tag>), or resume the most recent tags withtimew continue. - Rename the open interval's tags in place (
timew retag). - Click a completed interval in the TODAY list to rename its tags inline.
- Lists completed intervals and total tracked time for the current day, matching
timew summary :day(intervals crossing midnight are clipped to the day). - Switch the report between today, this week, and this month; week and month group intervals by day with per-day subtotals.
- Polls local commands only; it makes no network requests.
Requirements
- Omarchy with the Quattro shell plugin system
- TimeWarrior with
timewavailable onPATH jq- GNU coreutils
- An Omarchy-compatible Nerd Font for the stopwatch icon
Install TimeWarrior following its installation instructions, then confirm the executable is visible:
command -v timew
Omarchy includes ~/.local/bin on the shell process PATH; a binary elsewhere may not be visible to the bar. Point the widget at a specific executable with the TIMEW_BIN environment variable if needed.
Install
Review the source before installing. Omarchy plugins run as unsandboxed code inside the long-running shell process.
omarchy plugin add https://github.com/micdahl/omarchy-timewarrior.git --enable
The widget uses the right bar section by default. If it was installed without --enable, enable it later:
omarchy plugin enable io.github.micdahl.timewarrior --section right
Use
- Left-click the widget to open or close the panel.
- Middle- or right-click the widget to refresh immediately.
- Press
Ror Enter in the panel to refresh, and Escape to close. - Press
Sto start or stop tracking, andCto resume the most recent tags. - Press
/to focus the tag field — name a tag before START, or rename the open interval's tags with RENAME. - Click a completed interval in the report to open an inline SAVE/CANCEL rename editor for that interval.
- Switch the report range with the DAY / WEEK / MONTH chips, or with the
D,W, andMkeys. - Press STOP beside the open interval to stop only that interval; press START or CONTINUE when nothing is tracking.
A bar click never stops time; stopping always requires the explicit panel button.
Data and commands
The bundled timewarrior-status helper runs timew export :day, timew export :week, or timew export :month (based on the selected range) and normalises the JSON for the widget. The only mutating commands are the targeted stop, start, resume and retag actions invoked from explicit panel buttons.
Set TIMEW_BIN to an executable path if timew is not available on the shell process PATH.
Security and permissions
Like all Omarchy shell plugins, this widget runs unsandboxed with the current user's permissions. It requires no elevated privileges, starts no service, does not modify shell configuration, and makes no network requests. It reads TimeWarrior's local data through timew export, and runs timew stop, timew start or timew continue only after the user presses the corresponding panel button.
Update
omarchy plugin update io.github.micdahl.timewarrior
Remove
omarchy plugin remove io.github.micdahl.timewarrior
Removal deletes only the plugin checkout and its bar entry. It does not remove TimeWarrior or any tracking data.
Develop
./tests/status_test.sh
shellcheck timewarrior-status tests/status_test.sh
omarchy plugin validate .
qmllint -I "$OMARCHY_PATH/shell" BarWidget.qml Panel.qml
For local use, link this checkout into the user plugin directory, rescan plugins, and enable it:
ln -s "$PWD" ~/.config/omarchy/plugins/io.github.micdahl.timewarrior
omarchy-shell shell rescanPlugins
omarchy plugin enable io.github.micdahl.timewarrior --section right
Plugin files hot-reload after installation.