<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/dot_config/waybar/executable_mako-history.sh, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/dot_config/waybar/executable_mako-history.sh?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/dot_config/waybar/executable_mako-history.sh?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-05-13T12:43:29Z</updated>
<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>
<entry>
<title>fix(waybar): parse mako's plain-text list output directly</title>
<updated>2026-05-13T12:43:21Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:21Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=c4020395efc666b7bd005d4774154cdbebb01b84'/>
<id>urn:sha1:c4020395efc666b7bd005d4774154cdbebb01b84</id>
<content type='text'>
--format is not supported by this mako version. Parse the native text
output (Notification N: summary / App name: X) with awk for the picker
and grep '^Notification ' for the counter.
</content>
</entry>
<entry>
<title>fix(waybar): use makoctl --format for text output, not JSON grep</title>
<updated>2026-05-13T12:43:20Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=570a8973d8594db9a72cb93a1e2c2350368051d0'/>
<id>urn:sha1:570a8973d8594db9a72cb93a1e2c2350368051d0</id>
<content type='text'>
makoctl outputs plain text by default on this version. Use --format
strings for both the history picker (%a/%s/%b) and the counter script
(%i + wc), instead of trying to parse JSON that isn't there.
</content>
</entry>
<entry>
<title>fix(waybar): tolerant jq for mako history + bump max-history to 50</title>
<updated>2026-05-13T12:43:20Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=849bb43a7e6789867f5ca6ec68b76042051e532c'/>
<id>urn:sha1:849bb43a7e6789867f5ca6ec68b76042051e532c</id>
<content type='text'>
Previous jq path (.data[0][].summary.data) only works for one nesting
shape of mako's history JSON. Recurse to find notification objects and
unwrap dbus-typed {type,data} fields defensively. Also bump
max-history from the default of 5 so more entries are retained.
</content>
</entry>
<entry>
<title>fix(sway): use read-only fuzzel history viewer for Super+Alt+n</title>
<updated>2026-05-13T12:43:20Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-13T12:43:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=6cb90800c7fd94712f2dd7860863813de3f0ae30'/>
<id>urn:sha1:6cb90800c7fd94712f2dd7860863813de3f0ae30</id>
<content type='text'>
makoctl menu only acts on currently-visible notifications, not history
(mako has no API to re-invoke arbitrary history entries). Replace with
a small script that pipes 'makoctl history' through jq and fuzzel, then
copies the selected entry to the clipboard for reference.
</content>
</entry>
</feed>
