summaryrefslogtreecommitdiff
path: root/dotfiles/hyprland/.local
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-02-11 11:39:41 -0600
committerCraig Jennings <c@cjennings.net>2026-02-11 11:39:41 -0600
commit3d24339d942446dee504c3d6f2323c1dd32bd89b (patch)
treea7e1bd9894cf0e4bd03e7bb35921563e50fea596 /dotfiles/hyprland/.local
parentb542f1e2cffead8547e0df29b6455ce916415873 (diff)
feat(hyprland): add pyprland config and toggle-scratchpad to stow
Scratchpads set to 50% width (music at 60%). Adds toggle-scratchpad utility for waybar click handling.
Diffstat (limited to 'dotfiles/hyprland/.local')
-rwxr-xr-xdotfiles/hyprland/.local/bin/toggle-scratchpad40
1 files changed, 40 insertions, 0 deletions
diff --git a/dotfiles/hyprland/.local/bin/toggle-scratchpad b/dotfiles/hyprland/.local/bin/toggle-scratchpad
new file mode 100755
index 0000000..b3da6b4
--- /dev/null
+++ b/dotfiles/hyprland/.local/bin/toggle-scratchpad
@@ -0,0 +1,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"