From 1a2357773586ee8421379de4070f71da40d1c679 Mon Sep 17 00:00:00 2001 From: David Luevano Alvarado <55825613+luevano@users.noreply.github.com> Date: Sat, 19 Dec 2020 17:59:51 -0700 Subject: Almost fully using bspwm --- .local/bin/statusbar/statusbar | 35 ++++++++++ .local/bin/statusbar/statusbar_bar1 | 116 ++++++++++++++++++++++++++++++++++ .local/bin/statusbar/statusbar_colors | 24 +++++++ 3 files changed, 175 insertions(+) create mode 100755 .local/bin/statusbar/statusbar create mode 100755 .local/bin/statusbar/statusbar_bar1 create mode 100644 .local/bin/statusbar/statusbar_colors (limited to '.local/bin') diff --git a/.local/bin/statusbar/statusbar b/.local/bin/statusbar/statusbar new file mode 100755 index 0000000..c5ee748 --- /dev/null +++ b/.local/bin/statusbar/statusbar @@ -0,0 +1,35 @@ +#!/bin/sh +PANEL_FIFO=/tmp/panel-fifo +PANEL_HEIGHT=24 +# PANEL_FONT="-*-fixed-*-*-*-*-10-*-*-*-*-*-*-*" +PANEL_WM_NAME=bspwm_statusbar + +if xdo id -a "$PANEL_WM_NAME" > /dev/null ; then + printf "%s\n" "The status bar 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" + +xtitle -sf 'T%s\n' > "$PANEL_FIFO" & +# date +"S%d/%m%y %r" > "$PANEL_FIFO" & +bspc subscribe report > "$PANEL_FIFO" & + +. statusbar_colors + +statusbar_bar1 < "$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" & + +# This only really works for one monitor. +# wid=$(xdo id -m -a "$PANEL_WM_NAME") +# xdo above -t "$(xdo id -N Bspwm -n root | sort | head -n 1)" "$wid" + +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 above -t "$bspid" "$wid" +done + +wait diff --git a/.local/bin/statusbar/statusbar_bar1 b/.local/bin/statusbar/statusbar_bar1 new file mode 100755 index 0000000..1aff3a9 --- /dev/null +++ b/.local/bin/statusbar/statusbar_bar1 @@ -0,0 +1,116 @@ +#!/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= + ;; + 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}%{c}${title}%{r}${sys}" +done diff --git a/.local/bin/statusbar/statusbar_colors b/.local/bin/statusbar/statusbar_colors new file mode 100644 index 0000000..4597036 --- /dev/null +++ b/.local/bin/statusbar/statusbar_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" -- cgit v1.2.3-70-g09d2