diff --git a/dotfiles/config/hypr/hyprland.conf b/dotfiles/config/hypr/hyprland.conf index 4416a63e..6e2ba66a 100644 --- a/dotfiles/config/hypr/hyprland.conf +++ b/dotfiles/config/hypr/hyprland.conf @@ -548,10 +548,9 @@ bind = $mainMod, mouse_up, exec, ~/.config/hypr/scripts/workspace-scroll.sh -1 # Wire Hyprland into Home Manager's standard user-session targets. # `graphical-session.target` pulls in most tray/SNI applets (which in turn pull in `tray.target`). -exec-once = systemctl --user set-environment IMALISON_SESSION_TYPE=wayland -exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE -exec-once = systemctl --user start graphical-session.target -exec-once = systemctl --user start hyprland-session.target +# Keep the systemd user manager in sync with the current Hyprland session before +# starting any session-bound units. Separate `exec-once` commands race. +exec-once = sh -lc 'export IMALISON_SESSION_TYPE=wayland; dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY XAUTHORITY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP XDG_SESSION_TYPE IMALISON_SESSION_TYPE; systemctl --user start graphical-session.target hyprland-session.target' # Force a fresh daemon after compositor restarts so hyprscratch doesn't keep a stale socket. exec-once = systemctl --user restart hyprscratch.service exec-once = hypridle