<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/dot_config/waybar/executable_mako-history.py, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/dot_config/waybar/executable_mako-history.py?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/dot_config/waybar/executable_mako-history.py?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-05-13T12:43:42Z</updated>
<entry>
<title>refactor(notifications): drop dismissed-state machinery; pending = visible</title>
<updated>2026-05-13T12:43:42Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:42Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=26ceab690dff09d5162443b14adccfbe0e9bcd5d'/>
<id>urn:sha1:26ceab690dff09d5162443b14adccfbe0e9bcd5d</id>
<content type='text'>
Set mako default-timeout=0 so notifications stay until acted upon. With
auto-timeout off, mako's list IS the pending set, so the
$XDG_RUNTIME_DIR/mako-dismissed bridge becomes dead weight.

- mako/config: default-timeout=0; drop redundant [urgency=critical]
  default-timeout=0 override.
- Delete dismiss-visible.sh and restore-pending.sh; sway calls makoctl
  directly (Mod+n=dismiss, Mod+Shift+n=dismiss --all,
  Mod+Ctrl+n=restore as undo).
- Shrink mako-status.sh to a 20-line counter of makoctl list.
- Rename mako-history.py -&gt; notification-picker.py; lists only
  visible, dismisses via makoctl dismiss -n &lt;id&gt;.
- Update waybar config.jsonc on-click path.
- Update KEYBINDS.md wording (no more 'marks seen' / 'pending set').
</content>
</entry>
<entry>
<title>feat(mako-history): reopen picker after each selection</title>
<updated>2026-05-13T12:43:33Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:33Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=d1891aad42ea4f633e7a731c2f140e592c3d9244'/>
<id>urn:sha1:d1891aad42ea4f633e7a731c2f140e592c3d9244</id>
<content type='text'>
After Enter copies+dismisses an entry, reopen the wofi window so the
remaining notifications can be processed without re-triggering the
keybind. Esc closes the loop.
</content>
</entry>
<entry>
<title>fix(mako-history): drop Alt-d; Enter copies+dismisses</title>
<updated>2026-05-13T12:43:32Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:32Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=cb9b3f4e017dd202a0ac284639efd78fc07fbb1e'/>
<id>urn:sha1:cb9b3f4e017dd202a0ac284639efd78fc07fbb1e</id>
<content type='text'>
wofi's key_custom_N only stages an exit code; it does not actually exit
on the keybind, so Alt-d alone did nothing visible. Drop the custom
keybind entirely and let Enter copy+dismiss in one stroke. Esc cancels.
Since dismissed entries are now hidden, walking the list with Enter is
a workable replacement for the dropped "dismiss without copy" path.
</content>
</entry>
<entry>
<title>feat(mako-history): hide dismissed entries; consolidate keybinds</title>
<updated>2026-05-13T12:43:32Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:32Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=5e8df71b02e7cd0d663556cfde60ab8dc8e26f4b'/>
<id>urn:sha1:5e8df71b02e7cd0d663556cfde60ab8dc8e26f4b</id>
<content type='text'>
Two behaviour changes:

- Hide entries that were previously dismissed via the picker (the
  state file now acts as a hide-list, not a marker). The list shrinks
  as you process it; no more grey ' ' rows clogging the view.
- Drop the secondary Alt-c custom key. wofi's '--define key_custom_N'
  appears unreliable past N=0, so Alt-c and Alt-d both silently
  failed. Reduce to a single custom slot (Alt-d) and remap actions:
    Enter -&gt; copy + dismiss  (was: re-emit + mark seen)
    Alt-d -&gt; dismiss without copy
  Re-emit was rarely useful given mako already shows the bubble on
  arrival; copying is the common need.

KEYBINDS.md updated to reflect the new action set.
</content>
</entry>
<entry>
<title>style: apply formatter drift across repo</title>
<updated>2026-05-13T12:43:32Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:32Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=0c15212f4f2389f743b17cb6ceff50f1f9267a1b'/>
<id>urn:sha1:0c15212f4f2389f743b17cb6ceff50f1f9267a1b</id>
<content type='text'>
Pre-existing whitespace/style drift caught by `just check`. Touch
nothing semantic — pure formatter output (shfmt -i 2 -ci -s, ruff,
prettier, taplo). Excludes dot_config/clangd/config.yaml whose manual
indentation is intentionally preserved.
</content>
</entry>
<entry>
<title>fix(waybar): parse real makoctl text format (no -f support)</title>
<updated>2026-05-13T12:43:29Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:29Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=5b8b959cd18e75b67f7b3cd0ea2b8b24b1f41952'/>
<id>urn:sha1:5b8b959cd18e75b67f7b3cd0ea2b8b24b1f41952</id>
<content type='text'>
This makoctl version doesn't accept -f. Drop that path and parse the
actual text dump:
  Notification N: &lt;summary&gt;      &lt;- summary on the same line
    App name: &lt;app&gt;
    [Category: &lt;cat&gt;]
    [Body: ...]                  &lt;- absent on this version, kept anyway
    Urgency: &lt;urgency&gt;

Verified against the user's pasted output.
</content>
</entry>
<entry>
<title>fix(waybar): use makoctl -f format for history picker</title>
<updated>2026-05-13T12:43:29Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:29Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=fb5d6a47b9cf038435585c8b57230d5f0b48cbc7'/>
<id>urn:sha1:fb5d6a47b9cf038435585c8b57230d5f0b48cbc7</id>
<content type='text'>
The text-mode parser was looking for 'Notification N:' on a line by
itself, but makoctl prints 'Notification N: &lt;summary&gt;' with the summary
inline — so every record was dropped and the picker came up empty.

Switch to makoctl list/history -f '%i\t%a\t%s\t%b' which emits one
clean tab-separated record per notification (mako &gt;= 1.4). Multi-line
bodies are folded back into the previous record.
</content>
</entry>
<entry>
<title>fix(waybar): notification picker also lists currently-visible bubbles</title>
<updated>2026-05-13T12:43:29Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:29Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=dff09010412af5dc3a15b20f20aa1801eda3db5f'/>
<id>urn:sha1:dff09010412af5dc3a15b20f20aa1801eda3db5f</id>
<content type='text'>
makoctl list and makoctl history are disjoint — visible notifications
aren't in history yet. The picker was only reading history, so it came
up empty whenever the bar showed pending bubbles that were still on
screen. Merge both lists, dedupe by id, visible first.
</content>
</entry>
<entry>
<title>feat(notifications): persistent-pending model + wofi history picker</title>
<updated>2026-05-13T12:43:29Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:29Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=e331fd63eaa51a51a6af06560bbe226a6d47fa16'/>
<id>urn:sha1:e331fd63eaa51a51a6af06560bbe226a6d47fa16</id>
<content type='text'>
Notifications now behave like a phone: pop briefly, auto-disappear, and
remain "pending" until the user explicitly acknowledges them. The waybar
count reflects pending only; idle uses a quieter glyph.

State model:
  pending = ids in mako history/list MINUS dismissed-set
  state file: $XDG_RUNTIME_DIR/mako-dismissed (per-session id list)

Glyph change:
  idle (0 pending)     bell_outline U+F009C
  has pending          bell_ring    U+F009E
  (the previous bell_check_outline U+F11E8 "history present but nothing
   pending" branch is gone — there is no separate history concept now)

Bindings (all now go through wrappers that maintain the dismissed-set):
  Super+n          dismiss top visible + mark seen
  Super+Shift+n    dismiss all visible + mark seen
  Super+Ctrl+n     restore most recent + pop it from dismissed-set
  XF86Favorites    history picker (rewritten on wofi)

History picker (dot_config/waybar/executable_mako-history.py):
  - wofi --hide-search: arrow-only navigation, no fuzzy input
  - lines tagged [pending] / [seen] with app + summary + body
  - Enter        re-emit via notify-send (re-shows the bubble) + mark seen
  - Alt-c        copy "summary\nbody" to clipboard via wl-copy
  - Alt-d        mark seen without re-showing
  - empty history shows a sentinel, no-op on Enter

New scripts:
  executable_dismiss-visible.sh   capture id(s) then makoctl dismiss
  executable_restore-pending.sh   capture top-of-history id, restore,
                                  then drop that id from dismissed-set
  executable_mako-history.py      Python rewrite (parses makoctl text
                                  output, drives wofi)

Other:
  meta/wayland.txt                add wofi (only used by this picker)
  dot_config/wofi/style.css       minimal gruvbox style; hides input row
                                  as belt-and-suspenders even though
                                  --hide-search already does it
</content>
</entry>
</feed>
