feat(waybar): add autohide dock
This commit is contained in:
111
waybar/scripts/dock-toggle.sh
Executable file
111
waybar/scripts/dock-toggle.sh
Executable 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
|
||||
Reference in New Issue
Block a user