From 44e603c1d7b365d2c75f96c375038da2155ec54a Mon Sep 17 00:00:00 2001 From: Just Midi Date: Mon, 29 Nov 2021 22:50:28 -0600 Subject: [PATCH] Initial commit --- panel | 35 ++++++++++++++ panel_bar | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ panel_colors | 24 ++++++++++ 3 files changed, 188 insertions(+) create mode 100755 panel create mode 100755 panel_bar create mode 100755 panel_colors diff --git a/panel b/panel new file mode 100755 index 0000000..4c2fd22 --- /dev/null +++ b/panel @@ -0,0 +1,35 @@ +#! /bin/sh + +PANEL_FIFO=/tmp/panel-fifo +PANEL_HEIGHT=24 +PANEL_FONT="-*-fixed-*-*-*-*-10-*-*-*-*-*-*-*" +PANEL_WM_NAME=bspwm_panel +export PANEL_FIFO PANEL_HEIGHT PANEL_FONT PANEL_WM_NAME + +if xdo id -a "$PANEL_WM_NAME" > /dev/null ; then + printf "%s\n" "The panel is already running." >&2 + exit 1 +fi + +trap 'trap - TERM; kill 0' INT TERM QUIT EXIT + +[ -e "$PANEL_FIFO" ] && rm "$PANEL_FIFO" +mkfifo "$PANEL_FIFO" + +bspc subscribe report > "$PANEL_FIFO" & + +while :; do + date '+%y-%m-%d %H:%M' | xargs -0 printf "D%s" + top -bn1 | grep 'Cpu(s)' | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}' | xargs -0 printf "C%s" + free -h | awk '/^Mem/ { print $3 " / " $2 }' | sed 's/i//g' | xargs -0 printf "R%s" + sleep 1 +done > "$PANEL_FIFO" & + +. .config/panel/panel_colors + +.config/panel/panel_bar < "$PANEL_FIFO" | lemonbar -a 32 -u 2 -n "$PANEL_WM_NAME" -g x$PANEL_HEIGHT -f "$PANEL_FONT" -F "$COLOR_DEFAULT_FG" -B "$COLOR_DEFAULT_BG" | sh & + +wid=$(xdo id -m -a "$PANEL_WM_NAME") +xdo above -t "$(xdo id -N Bspwm -n root | sort | head -n 1)" "$wid" + +wait diff --git a/panel_bar b/panel_bar new file mode 100755 index 0000000..9eb8c02 --- /dev/null +++ b/panel_bar @@ -0,0 +1,129 @@ +#! /bin/sh + +. .config/panel/panel_colors + +num_mon=$(bspc query -M | wc -l) + +while read -r line ; do + case $line in + C*) + # cpu output + cpu="%{F$COLOR_SYS_FG}%{B$COLOR_SYS_BG} ${line#?} %{B-}%{F-}" + ;; + D*) + # clock output + datetime="%{F$COLOR_SYS_FG}%{B$COLOR_SYS_BG} ${line#?} %{B-}%{F-}" + ;; + M*) + # mpv and such + media="%{F$COLOR_TITLE_FG}%{B$COLOR_TITLE_BG} ${line#?} %{B-}%{F-}" + ;; + R*) + # memory output + ram="%{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 of desktops + #refactor later + 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= + ;; + 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="${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}${title}%{c}${media}%{r}${cpu}${ram}${datetime}" +done diff --git a/panel_colors b/panel_colors new file mode 100755 index 0000000..4597036 --- /dev/null +++ b/panel_colors @@ -0,0 +1,24 @@ +COLOR_DEFAULT_FG="#a7a5a5" +COLOR_DEFAULT_BG="#333232" +COLOR_MONITOR_FG="#8dbcdf" +COLOR_MONITOR_BG="#333232" +COLOR_FOCUSED_MONITOR_FG="#b1d0e8" +COLOR_FOCUSED_MONITOR_BG="#144b6c" +COLOR_FREE_FG="#737171" +COLOR_FREE_BG="#333232" +COLOR_FOCUSED_FREE_FG="#000000" +COLOR_FOCUSED_FREE_BG="#504e4e" +COLOR_OCCUPIED_FG="#a7a5a5" +COLOR_OCCUPIED_BG="#333232" +COLOR_FOCUSED_OCCUPIED_FG="#d6d3d2" +COLOR_FOCUSED_OCCUPIED_BG="#504e4e" +COLOR_URGENT_FG="#f15d66" +COLOR_URGENT_BG="#333232" +COLOR_FOCUSED_URGENT_FG="#501d1f" +COLOR_FOCUSED_URGENT_BG="#d5443e" +COLOR_STATE_FG="#89b09c" +COLOR_STATE_BG="#333232" +COLOR_TITLE_FG="#a8a2c0" +COLOR_TITLE_BG="#333232" +COLOR_SYS_FG="#b1a57d" +COLOR_SYS_BG="#333232"