- probe once per app instead of per matched bus service
- skip unique :1.x names, which can be stale and never answer DBus
- give fresh apps a 6s probe budget so late-exporting menubars are caught
- fix app-age computed as inf when unregistered unique names poison the
first-seen min, disabling the fresh path entirely
- cache no-menu per app/service so re-focus returns instantly
- skip oversized action menus and truncate top-level menu to 32 items
- parse org.gtk.Actions state via explicit child walk (av unwrap was
fragile on apps like Inkscape)
Wrapped location reflow never reaches the layer-shell toplevel through
Gtk.Fixed, so the card stays at "Loading..." height and clips the second
line of a wrapped location on first init. Queue the toplevel after
updating labels so the taller allocation is applied.
Drop max_chars_width/ellipsization so location and condition wrap
instead of being cut off, and let the card auto-size vertically so the
big temperature no longer clips the bottom text.
Update timer used fixed ms-until-midnight computed at import. Once
midnight passed, the fixed interval re-armed an elapsed timeout, busy
looping update_calendar and destroying/recreating every label until
GTK3 stopped rendering them. Timer now recomputes the interval each
day and the grid mutates pre-built labels in place via set_label /
set_name instead of rebuild.
Also added missing year check for today highlight.
A Gtk.Fixed child resize only bubbles to the toplevel when the window
itself is queued, so move() kept the old allocation until a rebuild.
Queue the window after each reposition so the dragged widget follows
the cursor and lands at the drop position live.
Dropped remove()+put() which never repainted in the layer-shell window.
active shelled out to pidof on every read, blocking the main loop and
missing our own recorder handle. Track the spawned Gio.Subprocess for
an exact answer and cache the external pidof probe for 2s.
Resets the cache at ownership boundaries (start/stop).
Repeated set_label() on every tick destroys and recreates the button's
internal label; after enough redraws GTK3 drops its visibility. Capture
the label once and update via set_text() instead.