feat(waybar): add autohide dock

This commit is contained in:
2026-03-28 19:50:28 +01:00
parent b58473de89
commit b76e27d466
4 changed files with 275 additions and 0 deletions

111
waybar/scripts/dock-toggle.sh Executable file
View File

@@ -0,0 +1,111 @@
#!/usr/bin/env bash
set -euo pipefail
CONFIG="$HOME/.config/waybar/config-dock.jsonc"
STYLE="$HOME/.config/waybar/style-dock.css"
PIDFILE="/tmp/waybar-dock.pid"
is_running() {
if [[ -f "$PIDFILE" ]]; then
local pid
pid="$(cat "$PIDFILE" 2>/dev/null || true)"
if [[ -n "${pid:-}" ]] && kill -0 "$pid" 2>/dev/null; then
return 0
fi
fi
return 1
}
cleanup_pidfile() {
if [[ -f "$PIDFILE" ]]; then
local pid
pid="$(cat "$PIDFILE" 2>/dev/null || true)"
if [[ -z "${pid:-}" ]] || ! kill -0 "$pid" 2>/dev/null; then
rm -f "$PIDFILE"
fi
fi
}
show() {
cleanup_pidfile
if is_running; then
exit 0
fi
waybar -c "$CONFIG" -s "$STYLE" >/dev/null 2>&1 &
local pid=$!
echo "$pid" >"$PIDFILE"
# kurz prüfen, ob der Prozess wirklich lebt
sleep 0.1
if ! kill -0 "$pid" 2>/dev/null; then
rm -f "$PIDFILE"
exit 1
fi
}
hide() {
cleanup_pidfile
if ! is_running; then
exit 0
fi
local pid
pid="$(cat "$PIDFILE")"
kill "$pid" 2>/dev/null || true
# kurz warten, dann ggf. härter beenden
for _ in {1..10}; do
if ! kill -0 "$pid" 2>/dev/null; then
rm -f "$PIDFILE"
exit 0
fi
sleep 0.05
done
kill -9 "$pid" 2>/dev/null || true
rm -f "$PIDFILE"
}
toggle() {
cleanup_pidfile
if is_running; then
hide
else
show
fi
}
status() {
cleanup_pidfile
if is_running; then
echo "visible"
else
echo "hidden"
fi
}
case "${1:-toggle}" in
show)
show
;;
hide)
hide
;;
toggle)
toggle
;;
status)
status
;;
*)
echo "Usage: $0 {show|hide|toggle|status}"
exit 1
;;
esac