21 lines
667 B
Bash
Executable File
21 lines
667 B
Bash
Executable File
#!/usr/bin/env bash
|
|
PANEL="$1"
|
|
|
|
# Atomic lock: flock acquires exclusively or exits immediately.
|
|
# Released automatically when the process exits (no trap needed).
|
|
exec 9>"/tmp/eww_panel_toggle.lock"
|
|
flock -n 9 || exit 0
|
|
|
|
# Every eww call must run with fd 9 closed (9>&-): `eww open` daemonizes and
|
|
# would inherit the fd, holding the flock forever and wedging all later toggles.
|
|
CURRENT=$(eww get active-panel 2>/dev/null 9>&- | tr -d '"')
|
|
|
|
if [ "$CURRENT" = "$PANEL" ]; then
|
|
eww update active-panel="" 9>&-
|
|
eww close popup 2>/dev/null 9>&-
|
|
else
|
|
eww update active-panel="$PANEL" 9>&-
|
|
eww close popup 2>/dev/null 9>&-
|
|
eww-open-on-current-screen popup 9>&-
|
|
fi
|