fix(home): easyeffects waits for a live tray host, not waybar.service
Some checks failed
Check / eval (push) Failing after 4m10s
Some checks failed
Check / eval (push) Failing after 4m10s
The tray-race guard (wwmm/easyeffects#4636) ordered the unit After=waybar.service — inert here: Nomarchy's waybar runs from the nomarchy-waybar supervisor (Hyprland exec-once), never as a systemd unit, so the icon vanished whenever easyeffects won the boot race (seen on TuringMachine 2026-07-11). Gate ExecStartPre on the SNI watcher's IsStatusNotifierHostRegistered with a 30s timeout, non-fatal so audio processing still starts on tray-less setups. Also: #89 inventory narrowed by Bernardo's visual verdict — Telegram/ ZapZap fine; offenders are EasyEffects (slice 2) and Signal (slice 3). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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/<theme-iconset>/…"` shadowing the store copy, or a
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user