summaryrefslogtreecommitdiff
path: root/.local
diff options
context:
space:
mode:
authorDavid Luevano Alvarado <55825613+luevano@users.noreply.github.com>2020-12-19 17:59:51 -0700
committerDavid Luevano Alvarado <55825613+luevano@users.noreply.github.com>2020-12-19 17:59:51 -0700
commit1a2357773586ee8421379de4070f71da40d1c679 (patch)
tree0d56955ebb4d28120b9d04942dc59d2a7315bd80 /.local
parentffb920179648bd4fdde1eb8b2e8b8e068fb4eb4b (diff)
Almost fully using bspwm
Diffstat (limited to '.local')
-rwxr-xr-x.local/bin/statusbar/statusbar35
-rwxr-xr-x.local/bin/statusbar/statusbar_bar1116
-rw-r--r--.local/bin/statusbar/statusbar_colors24
3 files changed, 175 insertions, 0 deletions
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"