Files
nixconfig/modules/home/wayland/apps/eww/bar/scripts/panel-toggle
soraefir aace131a0e Radio
2026-06-13 22:01:58 +02:00

31 lines
717 B
Bash
Executable File

#!/usr/bin/env bash
PANEL="$1"
# Drop concurrent invocations, but recover from stale locks (dead processes)
LOCK="/tmp/eww_panel_toggle.lock"
if [ -f "$LOCK" ] && kill -0 "$(cat "$LOCK" 2>/dev/null)" 2>/dev/null; then
exit 0
fi
echo $$ > "$LOCK"
trap 'rm -f "$LOCK"' EXIT
CURRENT=$(eww get active-panel 2>/dev/null | tr -d '"')
open_popup() {
local screen
screen=$(hyprctl monitors -j 2>/dev/null | jq -r '.[] | select(.focused == true) | .name' | head -n1)
if [ -n "$screen" ]; then
eww open popup --screen "$screen"
else
eww open popup
fi
}
if [ "$CURRENT" = "$PANEL" ]; then
eww update active-panel=""
eww close popup 2>/dev/null
else
eww update active-panel="$PANEL"
open_popup
fi