diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 82fe4c9..4faa23f 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -75,6 +75,15 @@ Slices: | Signal | `Signal_status_icon_1` (generated, not a real theme name) | yes | **pixmap** — slice 3 | | ZapZap | *(empty)* | yes | **pixmap** — slice 3; check its own tray-style setting first | | EasyEffects 8 | `com.github.wwmm.easyeffects` (prior T14s finding) | — | **name-based**; NB `--gapplication-service` alone registers no SNI | + + **Bernardo's visual verdict (T14s, 2026-07-11):** Telegram and ZapZap + already read fine on the bar — out of scope. The offenders are + **EasyEffects** (slice 2: name-based override) and **Signal** + (slice 3: pixmap; check for an app-side tray option, else document). + Related fix shipped same day: easyeffects.service now *waits for a + registered tray host* before starting (the old After=waybar.service + ordering was inert — waybar is supervisor-run, not a unit), so the + icon no longer vanishes on unlucky boot order. 2. **Override layer:** an HM-managed shadow icon dir that wins the XDG lookup for the session icon theme (e.g. `xdg.dataFile "icons//…"` shadowing the store copy, or a diff --git a/modules/home/default.nix b/modules/home/default.nix index 33feddf..6197290 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -41,14 +41,29 @@ # Microphone noise cancellation (rnnoise) and audio EQ. # Tray icon is built into EasyEffects 8 (Qt StatusNotifierItem); the - # daemon must start after a tray host (Waybar) or the icon is missing - # for the whole session (wwmm/easyeffects#4636). + # daemon must start after a tray HOST is live or the icon is missing + # for the whole session (wwmm/easyeffects#4636). After=waybar.service + # was inert — Nomarchy's waybar runs from the nomarchy-waybar + # supervisor (Hyprland exec-once), not a systemd unit, so the race was + # a boot-order coin flip (lost on TuringMachine 2026-07-11). Gate on + # the watcher's IsStatusNotifierHostRegistered instead; the `-` prefix + # lets EasyEffects still start after the timeout on tray-less setups — + # audio processing must not hinge on an icon. services.easyeffects.enable = true; systemd.user.services.easyeffects = { Unit = { - After = [ "graphical-session.target" "tray.target" "waybar.service" ]; + After = [ "graphical-session.target" "tray.target" ]; Wants = [ "tray.target" ]; }; + Service.ExecStartPre = "-${pkgs.writeShellScript "wait-for-tray-host" '' + timeout 30 ${pkgs.bash}/bin/sh -c ' + until ${pkgs.systemd}/bin/busctl --user get-property \ + org.kde.StatusNotifierWatcher /StatusNotifierWatcher \ + org.kde.StatusNotifierWatcher IsStatusNotifierHostRegistered \ + 2>/dev/null | ${pkgs.gnugrep}/bin/grep -q true; do + sleep 0.5 + done' + ''}"; }; # Wifi from the bar: nm-applet lives in waybar's tray (SNI flag via