Files
dotfiles/local/share/sway/scripts/wob.sh
2025-09-27 01:01:01 +04:00

50 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env sh
# https://github.com/francma/wob/wiki/wob-wrapper-script
#$1 - accent color. $2 - background color. $3 - new value
# returns 0 (success) if $1 is running and is attached to this sway session; else 1
is_running_on_this_screen() {
pkill -U $USER -x -0 "wob" || return 1
for pid in $(pgrep "wob"); do
WOB_SWAYSOCK="$(tr '\0' '\n' </proc/"$pid"/environ | awk -F'=' '/^SWAYSOCK/ {print $2}')"
if [ "$WOB_SWAYSOCK" = "$SWAYSOCK" ]; then
return 0
fi
done
return 1
}
wob_pipe=~/.cache/$(basename "$SWAYSOCK").wob
[ -p "$wob_pipe" ] || mkfifo "$wob_pipe"
ini=~/.config/wob.ini
refresh() {
pkill -U $USER -x wob
rm $ini
{
echo "anchor = top center"
echo "margin = 20"
echo "border_color = $(echo "$1" | sed 's/#//')"
echo "bar_color = $(echo "$1" | sed 's/#//')"
echo "background_color = $(echo "$2" | sed 's/#//')"
} >>$ini
}
if [ ! -f "$ini" ] || [ "$3" = "--refresh" ]; then
refresh "$1" "$2"
fi
# wob does not appear in $(swaymsg -t get_msg), so:
is_running_on_this_screen || {
tail -f "$wob_pipe" | wob -c $ini &
}
if [ "$3" = "--refresh" ]; then
exit 0;
elif [ -n "$3" ]; then
echo "$3" >"$wob_pipe"
else
cat >"$wob_pipe"
fi