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:
@@ -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