254 lines
7.6 KiB
Bash
Executable File
254 lines
7.6 KiB
Bash
Executable File
#!/bin/ksh
|
|
|
|
trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
|
|
|
|
FONT="-zevv-peep-medium-r-normal--14-130-75-75-c-70-iso8859-15"
|
|
DEFAULT_FG="#222222"
|
|
DEFAULT_BG="#CCCCCC"
|
|
MONITOR_FG="#8dbcdf"
|
|
MONITOR_BG="#333232"
|
|
FOCUSED_MONITOR_FG="#b1d0e8"
|
|
FOCUSED_MONITOR_BG="#144b6c"
|
|
FREE_FG="#737171"
|
|
FREE_BG="#333232"
|
|
FOCUSED_FREE_FG="#000000"
|
|
FOCUSED_FREE_BG="#504e4e"
|
|
OCCUPIED_FG="#a7a5a5"
|
|
OCCUPIED_BG="#333232"
|
|
FOCUSED_OCCUPIED_FG="#d6d3d2"
|
|
FOCUSED_OCCUPIED_BG="#504e4e"
|
|
URGENT_FG="#f15d66"
|
|
URGENT_BG="#333232"
|
|
FOCUSED_URGENT_FG="#501d1f"
|
|
FOCUSED_URGENT_BG="#d5443e"
|
|
STATE_FG="#89b09c"
|
|
STATE_BG="#333232"
|
|
TITLE_FG="#a8a2c0"
|
|
TITLE_BG="#333232"
|
|
SYS_FG="#b1a57d"
|
|
SYS_BG="#333232"
|
|
|
|
BG="%{F#CCCCCC}"
|
|
FG="%{F#222222}"
|
|
CLEAR="%{F-}%{B-}"
|
|
|
|
_battery() {
|
|
ADAPTER=$(apm -a)
|
|
if [ $ADAPTER = 0 ] ; then
|
|
printf ">"
|
|
elif [ $ADAPTER = 1 ] ; then
|
|
printf "="
|
|
else
|
|
printf "?"
|
|
fi
|
|
BATTERY=$(apm -l)
|
|
if [ $BATTERY -gt 66 ] ; then
|
|
printf "$BATTERY%%"
|
|
elif [ $BATTERY -gt 33 ] ; then
|
|
printf "$BATTERY%%"
|
|
else
|
|
printf "$BATTERY%%"
|
|
fi
|
|
BATTERY=$(apm -m)
|
|
[[ "$BATTERY" != "unknown" ]] && printf " ($BATTERY m)"
|
|
}
|
|
|
|
_cputemp() {
|
|
printf "$(sysctl -n hw.sensors.cpu0.temp0 | cut -d"." -f1)°C"
|
|
}
|
|
|
|
_netload() {
|
|
set -A if_load $(ifstat -n -i trunk0 -b 0.1 1 | sed '1,2d')
|
|
printf "In: ${if_load[0]} kb/s Out: ${if_load[1]} kb/s "
|
|
}
|
|
|
|
_backlight() {
|
|
LIGHT=$(xbacklight | cut -d"." -f1)
|
|
printf "$LIGHT%%"
|
|
}
|
|
|
|
_volume() {
|
|
MUTE=$(mixerctl outputs.master.mute | awk -F '=' '{ print $2 }')
|
|
#LSPK=$(($(mixerctl outputs.master | awk -F '(=|,)' '{ print $2 }')*100/255))
|
|
RSPK=$(($(mixerctl outputs.master | awk -F '(=|,)' '{ print $2 }')*100/255))
|
|
if [ "$MUTE" = "on" ] ; then
|
|
printf "muted"
|
|
else
|
|
printf "$RSPK%%"
|
|
fi
|
|
}
|
|
|
|
_wlan() {
|
|
WLANSTAT=$(ifconfig iwn0 | awk '/status:/ { print $2 }')
|
|
WLANID=$(ifconfig iwn0 | awk '/(nwid|join)/ { print $3 }')
|
|
if [ "$WLANSTAT" = "active" ] ; then
|
|
printf '%s' "$WLANID"
|
|
else
|
|
printf '%s' "no-wifi"
|
|
fi
|
|
}
|
|
_datetime() {
|
|
printf '%s' "$(date +"%Y-%m-%d %H:%M")"
|
|
}
|
|
|
|
num_mon=$(bspc query -M | wc -l)
|
|
|
|
# INITIAL SETUP
|
|
cputemp=$(_cputemp)
|
|
battery=$(_battery)
|
|
date=$(_datetime)
|
|
backlight=$(_backlight)
|
|
volume=$(_volume)
|
|
wlan=$(_wlan)
|
|
netload=$(_netload)
|
|
datetime=$(_datetime)
|
|
|
|
mkfifo /tmp/panel-fifo
|
|
bspc subscribe report > /tmp/panel-fifo &
|
|
|
|
# TICK COUNTER FOR AUTOMATIC UPDATES
|
|
while true;
|
|
do
|
|
TICK=$(($TICK + 1))
|
|
case $TICK in
|
|
1)
|
|
printf '%s\n' "UBAT" > "$PANEL_FIFO"
|
|
printf '%s\n' "UBL" > "$PANEL_FIFO"
|
|
printf '%s\n' "UNETLOAD" > "$PANEL_FIFO"
|
|
|
|
;;
|
|
2)
|
|
printf '%s\n' "UCPU" > "$PANEL_FIFO"
|
|
;;
|
|
5)
|
|
printf '%s\n' "UWLAN" > "$PANEL_FIFO"
|
|
;;
|
|
10)
|
|
printf '%s\n' "UDATE" > "$PANEL_FIFO"
|
|
TICK=0
|
|
;;
|
|
esac
|
|
sleep 5
|
|
done &
|
|
|
|
# READ FIFO EVENTS
|
|
while read -r line;
|
|
do
|
|
case $line in
|
|
UVOL)
|
|
volume=$(_volume) ;;
|
|
UDATE)
|
|
datetime=$(_datetime) ;;
|
|
UBAT)
|
|
battery=$(_battery) ;;
|
|
UBL)
|
|
backlight=$(_backlight) ;;
|
|
UCPU)
|
|
cputemp=$(_cputemp) ;;
|
|
UWLAN)
|
|
wlan=$(_wlan) ;;
|
|
UNETLOAD)
|
|
netload=$(_netload) ;;
|
|
S*)
|
|
sys=${line#?}
|
|
;;
|
|
W*)
|
|
# BSPWM STATE
|
|
wm=
|
|
IFS=':'
|
|
set -- ${line#?}
|
|
while [ $# -gt 0 ] ; do
|
|
item=$1
|
|
name=${item#?}
|
|
case $item in
|
|
[mM]*)
|
|
case $item in
|
|
m*)
|
|
# monitor
|
|
FG=$MONITOR_FG
|
|
BG=$MONITOR_BG
|
|
on_focused_monitor=
|
|
;;
|
|
M*)
|
|
# focused monitor
|
|
FG=$FOCUSED_MONITOR_FG
|
|
BG=$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=$FREE_FG
|
|
BG=$FREE_BG
|
|
UL=$BG
|
|
;;
|
|
F*)
|
|
if [ "$on_focused_monitor" ] ; then
|
|
# focused free desktop
|
|
FG=$FOCUSED_FREE_FG
|
|
BG=$FOCUSED_FREE_BG
|
|
UL=$BG
|
|
else
|
|
# active free desktop
|
|
FG=$FREE_FG
|
|
BG=$FREE_BG
|
|
UL=$FOCUSED_FREE_BG
|
|
fi
|
|
;;
|
|
o*)
|
|
# occupied desktop
|
|
FG=$OCCUPIED_FG
|
|
BG=$OCCUPIED_BG
|
|
UL=$BG
|
|
;;
|
|
O*)
|
|
if [ "$on_focused_monitor" ] ; then
|
|
# focused occupied desktop
|
|
FG=$FOCUSED_OCCUPIED_FG
|
|
BG=$FOCUSED_OCCUPIED_BG
|
|
UL=$BG
|
|
else
|
|
# active occupied desktop
|
|
FG=$OCCUPIED_FG
|
|
BG=$OCCUPIED_BG
|
|
UL=$FOCUSED_OCCUPIED_BG
|
|
fi
|
|
;;
|
|
u*)
|
|
# urgent desktop
|
|
FG=$URGENT_FG
|
|
BG=$URGENT_BG
|
|
UL=$BG
|
|
;;
|
|
U*)
|
|
if [ "$on_focused_monitor" ] ; then
|
|
# focused urgent desktop
|
|
FG=$FOCUSED_URGENT_FG
|
|
BG=$FOCUSED_URGENT_BG
|
|
UL=$BG
|
|
else
|
|
# active urgent desktop
|
|
FG=$URGENT_FG
|
|
BG=$URGENT_BG
|
|
UL=$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$STATE_FG}%{B$STATE_BG} ${name} %{B-}%{F-}"
|
|
esac
|
|
shift
|
|
done
|
|
;;
|
|
esac
|
|
printf "%s\n" "%{l}${wm}%{c}%{r}$cputemp $backlight $volume $wlan $netload $battery $datetime "
|
|
done < "$PANEL_FIFO" | lemonbar -f "$FONT" -B "$DEFAULT_FG" -F "$DEFAULT_BG" -u 8 | sh
|