From 562ccc7d9514d60bcbc13072da6ed50e478b94f1 Mon Sep 17 00:00:00 2001 From: David Luevano Alvarado <55825613+luevano@users.noreply.github.com> Date: Sun, 20 Dec 2020 12:16:15 -0700 Subject: Leave this bar for good, for now --- .local/bin/statusbar/statusbar | 54 +++++++++++------ .local/bin/statusbar/statusbar_bar1 | 116 ------------------------------------ .local/bin/statusbar/statusbar_main | 112 ++++++++++++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 135 deletions(-) delete mode 100755 .local/bin/statusbar/statusbar_bar1 create mode 100755 .local/bin/statusbar/statusbar_main (limited to '.local/bin') diff --git a/.local/bin/statusbar/statusbar b/.local/bin/statusbar/statusbar index 7c2b0be..1bebb31 100755 --- a/.local/bin/statusbar/statusbar +++ b/.local/bin/statusbar/statusbar @@ -1,38 +1,54 @@ #!/bin/sh -PANEL_FIFO=/tmp/panel-fifo -PANEL_HEIGHT=20 -PANEL_FONT="Noto Sans Mono:size=10" -PANEL_EMOJI_FONT0="Noto Color Emoji" -PANEL_EMOJI_FONT1="Font Awesome 5 Free" -PANEL_EMOJI_FONT2="Font Awesome 5 Brands" -PANEL_EMOJI_FONT3="Font Awesome 5 Free Solid" -PANEL_WM_NAME=bspwm_statusbar - -if xdo id -a "$PANEL_WM_NAME" > /dev/null ; then +# General script that manages the statusbar/panel. + +STATUSBAR_FIFO=/tmp/panel-fifo +STATUSBAR_HEIGHT=20 +STATUSBAR_FONT="Noto Sans Mono:size=10" +STATUSBAR_EMOJI_FONT0="Noto Color Emoji" +STATUSBAR_EMOJI_FONT1="Font Awesome 5 Free" +STATUSBAR_EMOJI_FONT2="Font Awesome 5 Brands" +STATUSBAR_EMOJI_FONT3="Font Awesome 5 Free Solid" +STATUSBAR_WM_NAME=bspwm_statusbar +. statusbar_colors + + +if xdo id -a "$STATUSBAR_WM_NAME" > /dev/null ; then printf "%s\n" "The status bar is already running. Try pkill -x statusbar." >&2 exit 1 fi trap 'trap - TERM; kill 0' INT TERM QUIT EXIT -[ -e "$PANEL_FIFO" ] && rm "$PANEL_FIFO" -mkfifo "$PANEL_FIFO" -xtitle -sf 'T%s\n' > "$PANEL_FIFO" & -# date +"S%d/%m%y %r" > "$PANEL_FIFO" & -bspc subscribe report > "$PANEL_FIFO" & +# Create a new FIFO. (Pipe) +[ -e "$STATUSBAR_FIFO" ] && rm "$STATUSBAR_FIFO" +mkfifo "$STATUSBAR_FIFO" -. statusbar_colors -statusbar_bar1 < "$PANEL_FIFO" | lemonbar -a 32 -u 2 -n "$PANEL_WM_NAME" -g x$PANEL_HEIGHT -f "$PANEL_FONT" -f "$PANEL_EMOJI_FONT0" -f "$PANEL_EMOJI_FONT1" -f "$PANEL_EMOJI_FONT2" -f "$PANEL_EMOJI_FONT3" -F "$COLOR_DEFAULT_FG" -B "$COLOR_DEFAULT_BG" | sh & +# Here is where all the 'plugins' or 'blocks' for the statusbar +# are run. They're piped into the FIFO for later reading. +# In general you want them to print a letter at the beginning and then +# the actual stuff to show on scren, so you can distinguish between them on the actual bars. +xtitle -sf 'T%s\n' > "$STATUSBAR_FIFO" & +# date +"C%d/%m%y %r" > "$STATUSBAR_FIFO" & +bspc subscribe report > "$STATUSBAR_FIFO" & + + +# Here you can start N amount of bars and each one would be +# different if required. Piping into 'sh' is required for interaction +# with the bar. +statusbar_main < "$STATUSBAR_FIFO" | lemonbar -a 32 -u 2 -n "$STATUSBAR_WM_NAME" -g x$STATUSBAR_HEIGHT -f "$STATUSBAR_FONT" -f "$STATUSBAR_EMOJI_FONT0" -f "$STATUSBAR_EMOJI_FONT1" -f "$STATUSBAR_EMOJI_FONT2" -f "$STATUSBAR_EMOJI_FONT3" -F "$COLOR_DEFAULT_FG" -B "$COLOR_DEFAULT_BG" | sh & + # This only really works for one monitor. -# wid=$(xdo id -m -a "$PANEL_WM_NAME") +# wid=$(xdo id -m -a "$STATUSBAR_WM_NAME") # xdo above -t "$(xdo id -N Bspwm -n root | sort | head -n 1)" "$wid" +# Set the bar only on top of the 'root' window, which is bspwm itself. +# This, so you can fullscreen a program and it stays on top. bspid="$(xdo id -N Bspwm -n root | sort | head -n 1)" # The first part of the pipe is the "wid" -xdo id -m -a "$PANEL_WM_NAME" | while read wid; do +xdo id -m -a "$STATUSBAR_WM_NAME" | while read wid; do xdo above -t "$bspid" "$wid" done diff --git a/.local/bin/statusbar/statusbar_bar1 b/.local/bin/statusbar/statusbar_bar1 deleted file mode 100755 index 16297ef..0000000 --- a/.local/bin/statusbar/statusbar_bar1 +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/sh - -. statusbar_colors - -num_mon=$(bspc query -M | wc -l) - -while read -r line ; do - case $line in - S*) - # clock output - sys="%{F$COLOR_SYS_FG}%{B$COLOR_SYS_BG} ${line#?} %{B-}%{F-}" - ;; - T*) - # xtitle output - title="%{F$COLOR_TITLE_FG}%{B$COLOR_TITLE_BG} ${line#?} %{B-}%{F-}" - ;; - W*) - # bspwm's state - wm= - IFS=':' - set -- ${line#?} - while [ $# -gt 0 ] ; do - item=$1 - name=${item#?} - case $item in - [mM]*) - case $item in - m*) - # monitor - FG=$COLOR_MONITOR_FG - BG=$COLOR_MONITOR_BG - on_focused_monitor=0 - ;; - M*) - # focused monitor - FG=$COLOR_FOCUSED_MONITOR_FG - BG=$COLOR_FOCUSED_MONITOR_BG - on_focused_monitor=1 - ;; - esac - [ $num_mon -lt 2 ] && shift && continue - wm="%{S${on_focused_monitor}}${wm}%{F${FG}}%{B${BG}}%{A:bspc monitor -f ${name}:} ${name} %{A}%{B-}%{F-}" - ;; - [fFoOuU]*) - case $item in - f*) - # free desktop - FG=$COLOR_FREE_FG - BG=$COLOR_FREE_BG - UL=$BG - ;; - F*) - if [ "$on_focused_monitor" ] ; then - # focused free desktop - FG=$COLOR_FOCUSED_FREE_FG - BG=$COLOR_FOCUSED_FREE_BG - UL=$BG - else - # active free desktop - FG=$COLOR_FREE_FG - BG=$COLOR_FREE_BG - UL=$COLOR_FOCUSED_FREE_BG - fi - ;; - o*) - # occupied desktop - FG=$COLOR_OCCUPIED_FG - BG=$COLOR_OCCUPIED_BG - UL=$BG - ;; - O*) - if [ "$on_focused_monitor" ] ; then - # focused occupied desktop - FG=$COLOR_FOCUSED_OCCUPIED_FG - BG=$COLOR_FOCUSED_OCCUPIED_BG - UL=$BG - else - # active occupied desktop - FG=$COLOR_OCCUPIED_FG - BG=$COLOR_OCCUPIED_BG - UL=$COLOR_FOCUSED_OCCUPIED_BG - fi - ;; - u*) - # urgent desktop - FG=$COLOR_URGENT_FG - BG=$COLOR_URGENT_BG - UL=$BG - ;; - U*) - if [ "$on_focused_monitor" ] ; then - # focused urgent desktop - FG=$COLOR_FOCUSED_URGENT_FG - BG=$COLOR_FOCUSED_URGENT_BG - UL=$BG - else - # active urgent desktop - FG=$COLOR_URGENT_FG - BG=$COLOR_URGENT_BG - UL=$COLOR_FOCUSED_URGENT_BG - fi - ;; - esac - wm="${wm}%{F${FG}}%{B${BG}}%{U${UL}}%{+u}%{A:bspc desktop -f ${name}:} ${name} %{A}%{B-}%{F-}%{-u}" - ;; - [LTG]*) - # layout, state and flags - wm="${wm}%{F$COLOR_STATE_FG}%{B$COLOR_STATE_BG} ${name} %{B-}%{F-}" - ;; - esac - shift - done - ;; - esac - printf "%s\n" "%{l}${wm}%{c}${title}%{r}${sys}" -done diff --git a/.local/bin/statusbar/statusbar_main b/.local/bin/statusbar/statusbar_main new file mode 100755 index 0000000..7cf27db --- /dev/null +++ b/.local/bin/statusbar/statusbar_main @@ -0,0 +1,112 @@ +#!/bin/sh + +. statusbar_colors + +while read -r line ; do + case $line in + C*) + clock="%{F$COLOR_SYS_FG}%{B$COLOR_SYS_BG} ${line#?} %{B-}%{F-}" + ;; + T*) + title="%{F$COLOR_TITLE_FG}%{B$COLOR_TITLE_BG} ${line#?} %{B-}%{F-}" + ;; + W*) + # bspwm's state + wm= + IFS=':' + set -- ${line#?} + while [ $# -gt 0 ] ; do + item=$1 + name=${item#?} + case $item in + [mM]*) + case $item in + m*) + # monitor + FG=$COLOR_MONITOR_FG + BG=$COLOR_MONITOR_BG + on_focused_monitor=0 + ;; + M*) + # focused monitor + FG=$COLOR_FOCUSED_MONITOR_FG + BG=$COLOR_FOCUSED_MONITOR_BG + on_focused_monitor=1 + ;; + esac + [ $num_mon -lt 2 ] && shift && continue + wm="%{S${on_focused_monitor}}${wm}%{F${FG}}%{B${BG}}%{A:bspc monitor -f ${name}:} ${name} %{A}%{B-}%{F-}" + ;; + [fFoOuU]*) + case $item in + f*) + # free desktop + FG=$COLOR_FREE_FG + BG=$COLOR_FREE_BG + UL=$BG + ;; + F*) + if [ "$on_focused_monitor" ] ; then + # focused free desktop + FG=$COLOR_FOCUSED_FREE_FG + BG=$COLOR_FOCUSED_FREE_BG + UL=$BG + else + # active free desktop + FG=$COLOR_FREE_FG + BG=$COLOR_FREE_BG + UL=$COLOR_FOCUSED_FREE_BG + fi + ;; + o*) + # occupied desktop + FG=$COLOR_OCCUPIED_FG + BG=$COLOR_OCCUPIED_BG + UL=$BG + ;; + O*) + if [ "$on_focused_monitor" ] ; then + # focused occupied desktop + FG=$COLOR_FOCUSED_OCCUPIED_FG + BG=$COLOR_FOCUSED_OCCUPIED_BG + UL=$BG + else + # active occupied desktop + FG=$COLOR_OCCUPIED_FG + BG=$COLOR_OCCUPIED_BG + UL=$COLOR_FOCUSED_OCCUPIED_BG + fi + ;; + u*) + # urgent desktop + FG=$COLOR_URGENT_FG + BG=$COLOR_URGENT_BG + UL=$BG + ;; + U*) + if [ "$on_focused_monitor" ] ; then + # focused urgent desktop + FG=$COLOR_FOCUSED_URGENT_FG + BG=$COLOR_FOCUSED_URGENT_BG + UL=$BG + else + # active urgent desktop + FG=$COLOR_URGENT_FG + BG=$COLOR_URGENT_BG + UL=$COLOR_FOCUSED_URGENT_BG + fi + ;; + esac + wm="${wm}%{F${FG}}%{B${BG}}%{U${UL}}%{+u}%{A:bspc desktop -f ${name}:} ${name} %{A}%{B-}%{F-}%{-u}" + ;; + [LTG]*) + # layout, state and flags + wm="${wm}%{F$COLOR_STATE_FG}%{B$COLOR_STATE_BG} ${name} %{B-}%{F-}" + ;; + esac + shift + done + ;; + esac + printf "%s\n" "%{l}${wm}%{c}${title}%{r}${clock}" +done -- cgit v1.2.3-54-g00ecf