dotfiles/home/.config/lemonbar/applet-window

41 lines
941 B
Bash
Executable file

#!/usr/bin/env zsh
PANEL_FIFO="$1"
PREFIX="$2"
DELAY="$3"
MAX_LEN="$(("$4"-3))"
exec 5>"$PANEL_FIFO"
main() {
local win_id="$(bspc query -N -n focused)"
local win_name="$(xprop -id "$win_id" | grep "^WM_NAME" | cut -d' ' -f3- | tr -d '"')"
local trimmed_win_name="${win_name:0:$MAX_LEN}"
if [[ "$win_name" != "$trimmed_win_name" ]]; then
win_name="${trimmed_win_name}..."
fi
REPLY="$trimmed_win_name"
}
# Run 2 loops here, one for instant updates once other window is focused
# in bspwm, other for timed updates, in case the window changes it's title
# on it's own (such as when we switch a tab in firefox)
{print init; stdbuf -oL bspc subscribe node} | while read line; do
case ${line} in
node_focus* ) main ;;
init ) main ;;
* ) continue ;;
esac
echo "$PREFIX $REPLY" >&5
done &
while :; do
main
echo "$PREFIX $REPLY" >&5
sleep "$DELAY"
done
wait $!