diff --git a/settings/hyprland.nix b/settings/hyprland.nix index 122324d..b133977 100644 --- a/settings/hyprland.nix +++ b/settings/hyprland.nix @@ -82,7 +82,27 @@ "$mod" = "SUPER"; "$term" = "ghostty"; - "$menu" = "killall fuzzel || fuzzel"; + "$menu" = let + launchFuzzel = pkgs.writeShellScript "fuzzel-launcher" '' + fuzzel & + FUZZEL_PID=$! + + (${pkgs.socat}/bin/socat -U - \ + "UNIX-CONNECT:/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" 2>/dev/null | \ + while IFS= read -r ev; do + case "$ev" in + activewindow*) + kill "$FUZZEL_PID" 2>/dev/null + break + ;; + esac + done) & + LISTENER_PID=$! + + wait "$FUZZEL_PID" 2>/dev/null + kill "$LISTENER_PID" 2>/dev/null + ''; + in "killall fuzzel || ${launchFuzzel}"; exec-once = [ "mako"