blob: b3da6b46ff346a9c363e54f4f0cd6568548e335f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#!/bin/sh
# Toggle a special workspace from waybar click
# Tracks state to handle focus-loss auto-close issue
# Usage: toggle-scratchpad <name>
NAME="$1"
if [ -z "$NAME" ]; then
echo "Usage: toggle-scratchpad <name>"
exit 1
fi
# Auto-detect current Hyprland socket if env var is stale
if ! hyprctl version >/dev/null 2>&1; then
# Find the most recent Hyprland instance with a socket
for dir in /run/user/"$(id -u)"/hypr/*/; do
if [ -S "${dir}.socket.sock" ]; then
export HYPRLAND_INSTANCE_SIGNATURE="$(basename "$dir")"
break
fi
done
fi
STATEFILE="/tmp/scratchpad-$NAME-open"
NOW=$(date +%s)
# If state file exists and recent, scratchpad was open and just closed by focus loss
# Don't reopen it - user intended to close
if [ -f "$STATEFILE" ]; then
LAST=$(cat "$STATEFILE")
AGE=$((NOW - LAST))
rm -f "$STATEFILE"
if [ "$AGE" -lt 2 ]; then
# Was just open, user clicked to close - don't reopen
exit 0
fi
fi
# Opening the scratchpad - mark timestamp
echo "$NOW" > "$STATEFILE"
hyprctl dispatch togglespecialworkspace "$NAME"
|