Omahub
← All plugins
F

Daybook

by Fernando Menolli

Where your day actually went, by subject rather than by application, written from the window titles you were already looking at.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
4c05d22
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

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
4c05d22
Reviewed
1 month ago

The deterministic scan found nothing, and the reviewed source is consistent with that: no network calls, no obfuscation, no destructive commands, and no hidden persistence. The plugin records window titles and terminal working directories locally, which is its disclosed purpose, and the only real concern is that this plaintext local log is sensitive if the machine or state directory is compromised.

  • Window titles and terminal working directories are stored in plaintext JSON under ~/.local/state; they never leave the machine, but the file should be treated as sensitive if the machine is shared or the disk is not encrypted.
  • All external commands used by the plugin (hyprctl, jq, pgrep, readlink, wl-copy) are read-only or clipboard-related, and missing dependencies fail gracefully rather than causing damage.
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/fernandomenolli/omarchy-daybook --enable
Productivity #bar #quickshell

Daybook

Where your day actually went, by subject rather than by application, written from the window titles you were already looking at.

The day by subject, longest first, one click from the clipboard.

The day by subject, longest first, one click from the clipboard.

Why every other tracker is useless to us

They measure applications. For anyone who works in a desktop, that reads:

Alacritty   6h12
Chromium    3h48

Which is not an answer to any question anyone has ever asked. The subject lives in the title: the terminal names its directory, the editor names the file, the browser names the page. Daybook groups by that:

Tuesday 18 August
- beep (2h14)
- risecode (1h11)
- Pull Request #93 · risecode/beep (38m)
- analista (26m)

That is a standup, a timesheet line or an invoice, one click from the bar.

Install

omarchy plugin add https://github.com/fernandomenolli/omarchy-daybook.git --enable

Needs Omarchy 4, Hyprland 0.56+, and wl-clipboard for the copy action.

Remove

omarchy plugin remove io.github.fernandomenolli.daybook
rm -rf ~/.local/state/omarchy/plugins/io.github.fernandomenolli.daybook

Everything stays here

The record never leaves the machine. There is no account, no sync, no network call of any kind. It is one plain JSON file per day under ~/.local/state/, which you can read, edit or delete with anything.

Private browsing is excluded out of the box, by a pattern you control. A window whose title matches it is not recorded, and the clock on whatever you were doing before stops the moment it takes focus.

Forget empties today with one click. A log of every window title is the most sensitive thing on a machine, and getting rid of it should not require finding a file.

When the title says nothing

A terminal running a TUI writes whatever that program decided to put there. Claude Code, for instance, sets the title to the task it is working on, and two windows in two different projects then look identical: Alacritty and Alacritty.

When nothing in the title carries a subject, Daybook asks the window where it is working instead, the same way Omarchy's own omarchy-cmd-terminal-cwd does: it finds the shell running inside and reads its directory. The last part of that path is the project, and that is what gets filed.

The answer arrives a few milliseconds after the entry was opened, so the entry is renamed rather than duplicated. Only entries opened since the question was asked are touched, because a terminal that moved between projects earlier was filed correctly at the time.

The answer is cached for a minute per window, so this costs one short-lived process per window per minute at the very most, and usually far less.

How it decides you are away

Every event on the desktop is evidence someone is there: a window opening, a title changing, focus moving. A silence longer than the cutoff is the only honest evidence of absence, and it seals the entry where it stopped. Lunch does not become two hours of work on whatever was left on screen.

There is no polling and no timer driving this: the events were already arriving.

Using it

Today's total, in the bar.

Today's total, in the bar.

Action What happens
Left click today, ranked, with a bar per subject
Right click copy the summary
Enter, with the panel open copy the summary
omarchy-shell io.github.fernandomenolli.daybook summary   # prints it
omarchy-shell io.github.fernandomenolli.daybook copy      # to the clipboard
omarchy-shell io.github.fernandomenolli.daybook forget    # empties today

Settings

Setting Default What it does
Count you as away after 15 min of complete desktop silence
Lines in the copied summary 6
Leave out anything under 2 min keeps glances out of the record
Never record titles matching Incognito|InPrivate|Private Browsing|Anônima a regular expression
Show today's total in the bar on

What it costs

Measured on the machine this was built on, an AMD box with 24 cores running Omarchy 4.0.0.alpha and Hyprland 0.56.2. The method is to read utime + stime from /proc/<pid>/stat for the omarchy-shell process, with the plugin enabled and then disabled, and take the difference. You can repeat it in four lines of shell.

Shell alone With this plugin
Idle, 30 seconds 10 ms of CPU 10 ms, the 30-second tick does not register
300 focus switches 840 ms 880 ms, or 0.13 ms per switch
Memory ~500 MB no measurable change

The shell's own cost dominates everything here. 2.8 ms of that per focus switch is Omarchy itself: the bar redrawing, the active-window widget, the workspace indicators. All five of these plugins together add 0.17 ms on top.

It does not get heavier as it runs. Verified rather than assumed: a day holding 600 entries costs the same per focus switch as an empty one (2966 µs against 2933 µs, the same number twice, within measurement noise).

That was not free. The first version added the whole day up on every focus change, with the panel closed and nobody looking at the result: 1.3 ms per switch at breakfast and 13.2 ms by late afternoon. Finding that is why these numbers are here at all.

Tests

node tests/run.js

They cover model/: how a title becomes a subject, and the arithmetic of a day, which is switching, returning and being away.

Licence

MIT.