Omahub
← All plugins
T

Stopwatch

by Tom Lunt

Project stopwatch for the Omarchy bar: start, pause, and stop timing sessions, name them, and keep recent times with the date they started.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
b6b51e9
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
b6b51e9
Reviewed
1 month ago

This is a simple stopwatch widget for the Omarchy bar. It writes only to the user's state directory, reads settings, and performs no network or privileged operations. The code is transparent and matches the documented behavior.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/tlun0911/omarchy-stopwatch --enable
Productivity #bar #quickshell

Stopwatch

A project stopwatch for the Omarchy bar. Start, pause, and stop timing sessions from the status bar, give each one a project name, and keep the recent ones with the date and time they started.

The stopwatch panel, running

Features

  • Bar icon that reports state at a glance — an outline stopwatch when idle, a filled one in the theme's accent color while running, and a dimmed accent when paused. Hover for the elapsed time.
  • Start / pause / stop — pausing banks the time and resumes where it left off, so interruptions don't cost you a session. Stopping files it away.
  • Named sessions — stopping opens a field to name the session. Rename or delete anything in the list afterwards by clicking it.
  • Recent sessions — the last five (configurable) with duration and start time, kept across restarts.
  • Survives restarts — a running or paused timer comes back intact after omarchy restart shell, a logout, or a reboot. Elapsed time is derived from wall-clock timestamps, so it never drifts.
  • Follows your theme — every color is bound to the live Omarchy palette and repaints on omarchy theme set without a restart.
  • Multi-monitor aware — the bar runs one widget instance per screen; all of them share one stopwatch rather than counting separately.

Requirements

Omarchy with the Quickshell-based shell (omarchy-shell). No external dependencies, no network access, no privileged operations.

Install

omarchy plugin add https://github.com/tlun0911/omarchy-stopwatch.git
omarchy plugin enable io.github.tlun0911.stopwatch

Plugins land disabled so you can read the code first. enable places the widget in the bar's right section; move it with:

omarchy bar move io.github.tlun0911.stopwatch --section right --index 1

Usage

Bar icon

Action Result
Left click Open the panel
Middle or right click Start / pause / resume without opening the panel
Hover Tooltip with the current state and elapsed time

Panel

Start, then Pause or Stop. Stopping opens a Name this session field — type a project name and press Enter, or leave it blank. Closing the panel with a session still awaiting its name saves it rather than discarding it; the X button is the only way to throw a measured time away.

Click any row under Recent sessions to rename it, or the trash icon to delete it.

Keyboard

The panel is fully keyboard-driven when open:

Key Action
↑ ↓ ← → or h j k l Move the cursor
Space / Enter Activate the focused control
s Start / pause / resume
f Finish the session (stop and save)
d Discard the running session
x Delete the selected history row
Esc Close the panel

Optional keybindings

Add to ~/.config/hypr/bindings.lua:

o.bind("SUPER + SHIFT + T", "Stopwatch start/pause",
  "omarchy-shell -q io.github.tlun0911.stopwatch toggleTimer")
o.bind("SUPER + SHIFT + ALT + T", "Stopwatch panel",
  "omarchy-shell -q io.github.tlun0911.stopwatch toggle")

toggleTimer starts, pauses, or resumes — it never finalizes a session, so a stray keypress can't file one away. Stopping from a keybind or the bar saves the session unlabeled, since there is nowhere to type; rename it from the history list.

Configuration

Setting Default Description
historyLimit 5 Sessions kept in the list (1–20)
showHundredths false Show hundredths in the panel readout
omarchy bar set io.github.tlun0911.stopwatch historyLimit 10
omarchy bar set io.github.tlun0911.stopwatch showHundredths true

IPC

Every action is scriptable through the shell's IPC:

omarchy-shell io.github.tlun0911.stopwatch status       # "Running 0:12:34"
omarchy-shell io.github.tlun0911.stopwatch toggleTimer  # start / pause / resume
omarchy-shell io.github.tlun0911.stopwatch start
omarchy-shell io.github.tlun0911.stopwatch pause
omarchy-shell io.github.tlun0911.stopwatch stop         # save the session
omarchy-shell io.github.tlun0911.stopwatch discard      # drop it unsaved
omarchy-shell io.github.tlun0911.stopwatch toggle       # show/hide the panel

Files written

The plugin writes only these two files, both under your own state directory:

Path Contents
~/.local/state/omarchy/stopwatch-history.json Recent sessions
~/.local/state/omarchy/stopwatch-session.json The live timer, so it survives a restart

It does not modify your Omarchy or Hyprland configuration. Adding the widget to the bar and setting options go through omarchy plugin and omarchy bar, which edit ~/.config/omarchy/shell.json on your behalf. Keybindings are optional and added by you.

A note on long-running sessions

Elapsed time is wall-clock, which is what makes a session survive a reboot. The flip side: start a timer on Friday, leave it running, and on Monday it reads ~60 hours. Stop or discard a session when you finish for the day.

Removal

omarchy plugin disable io.github.tlun0911.stopwatch
omarchy plugin remove io.github.tlun0911.stopwatch

Remove the saved times too, if you want them gone, and delete any keybindings you added to ~/.config/hypr/bindings.lua:

rm -f ~/.local/state/omarchy/stopwatch-history.json \
      ~/.local/state/omarchy/stopwatch-session.json

License

MIT © Tom Lunt