#!/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