2026
Lamp — Omarchy Plugin
An open-source widget for the Omarchy Linux desktop that gives a working session a beginning and an end, and leaves behind prose instead of a dashboard.

cat problem.md
The problem
The Omarchy plugin marketplace already has clocks, sports scores, AI usage meters, website blockers, pomodoros, workspace modes, and desktop pets. What it does not have is a session.
Every tool in that list measures time or restricts behavior. None of them ask what this stretch of time is for, and none of them record what actually came of it.
Lamp is deliberately the opposite of a streak tracker. It does not block sites, swap wallpaper, or start a timer you have to obey. It marks a beginning and an end, and asks one question at the end.
tree --architecture
Architecture
Omarchy bar
[ ◉ Finish the submission 47m 12s ]
|
| click / SUPER+SHIFT+L
v
Overlay.qml -- one sentence of intention
optional 25m / 50m / 90m
|
v
Service.qml --> scripts/lamp.py (stdlib only)
| |
| +--> ~/.local/state/omarchy/lamp/
| | session.json (current flame)
| |
| +--> ~/.local/share/omarchy-lamp/
| YYYY-MM-DD.md (journal)
v
extinguish -> "what moved?" -> append pageThree QML files and one Python helper. The helper touches exactly two paths and never opens a socket.
| layer | technology | responsibility |
|---|---|---|
| Bar widget | BarWidget.qml | Holds the flame and the elapsed clock, turns red past the limit |
| Overlay | Overlay.qml, Panel.qml | Intention input, time presets, and the closing prompt |
| State | Service.qml, Model.js | Session lifecycle and shell integration |
| Helper | scripts/lamp.py, Python stdlib | Reads and writes session state and the markdown journal |
| Storage | JSON + daily markdown | session.json for the live flame, one dated page per day |
git log --decisions
Key decisions
Going over time changes the color, nothing else
Past the limit the bar turns red and the clock keeps running. No alarm, no forced break, no interruption. The limit is information about the session, not authority over it.
The output is prose, not metrics
A session writes an intention, a planned duration, and one line about what moved. There is no streak, no score, and no chart, because the thing worth keeping is the sentence, not the count.
No network, no dependencies, no install hook
The helper uses only the Python standard library that ships with Omarchy. Nothing is fetched at install time and nothing phones home, which means the plugin can be audited by reading four files.
Uninstalling does not delete your pages
Removal leaves the journal and state directories in place. A tool that erases months of written notes because you disabled it is not one worth trusting with them.
The helper touches exactly two paths
It does not spawn a shell, change the theme, or read anything else on disk. Narrowing the blast radius to two documented paths is what makes 'read it before you enable it' a realistic ask.
cat outcome.md
Outcome
- Released as open source under MIT and installable directly from the Omarchy plugin command, publicly available to Omarchy users and actively maintained.
- Works from the bar, a keybind, or the shell, and can be removed cleanly with a single plugin command.
- Written as a deliberate counterweight to an agentic desktop: the machine can keep running, and the person still says what the time was for.