mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2025-04-20 10:12:27 +00:00
41 lines
941 B
Bash
Executable file
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 $!
|