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 |
|
| 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 |
|
| 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 |
|
| 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
|
2. **Override layer:** an HM-managed shadow icon dir that wins the XDG
|
||||||
lookup for the session icon theme (e.g. `xdg.dataFile
|
lookup for the session icon theme (e.g. `xdg.dataFile
|
||||||
"icons/<theme-iconset>/…"` shadowing the store copy, or a
|
"icons/<theme-iconset>/…"` shadowing the store copy, or a
|
||||||
|
|||||||
@@ -41,14 +41,29 @@
|
|||||||
|
|
||||||
# Microphone noise cancellation (rnnoise) and audio EQ.
|
# Microphone noise cancellation (rnnoise) and audio EQ.
|
||||||
# Tray icon is built into EasyEffects 8 (Qt StatusNotifierItem); the
|
# Tray icon is built into EasyEffects 8 (Qt StatusNotifierItem); the
|
||||||
# daemon must start after a tray host (Waybar) or the icon is missing
|
# daemon must start after a tray HOST is live or the icon is missing
|
||||||
# for the whole session (wwmm/easyeffects#4636).
|
# 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;
|
services.easyeffects.enable = true;
|
||||||
systemd.user.services.easyeffects = {
|
systemd.user.services.easyeffects = {
|
||||||
Unit = {
|
Unit = {
|
||||||
After = [ "graphical-session.target" "tray.target" "waybar.service" ];
|
After = [ "graphical-session.target" "tray.target" ];
|
||||||
Wants = [ "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
|
# Wifi from the bar: nm-applet lives in waybar's tray (SNI flag via
|
||||||
|
|||||||
Reference in New Issue
Block a user