diff options
Diffstat (limited to 'dotfiles/hyprland/.local/bin')
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad b/dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad new file mode 100755 index 0000000..7a4bb38 --- /dev/null +++ b/dotfiles/hyprland/.local/bin/hypr-refocus-scratchpad @@ -0,0 +1,24 @@ +#!/bin/bash +# Refocus visible scratchpad after a window closes. +# Without this, closing a regular window while a scratchpad is visible +# leaves focus on the regular workspace instead of the scratchpad. + +SOCKET="$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" + +socat -U - "UNIX-CONNECT:$SOCKET" | while read -r line; do + if [[ "$line" == closewindow* ]]; then + # Check if a special workspace is active on the current monitor + special=$(hyprctl monitors -j | python3 -c " +import json, sys +for m in json.load(sys.stdin): + sw = m.get('specialWorkspace', {}) + if sw.get('id', 0) != 0: + print(sw['name']) + break +" 2>/dev/null) + if [[ -n "$special" ]]; then + # Focus the top window on the special workspace + hyprctl dispatch focuswindow "workspace:$special" &>/dev/null + fi + fi +done |
