#! /bin/sh FONT="-xos4-terminesspowerline-medium-r-normal--12-120-72-72-c-60-iso10646-1" FONT2="-*-fontawesome-medium-r-normal-*-12-*-*-*-*-0-*-*" #FONT="-*-tamsyn-medium-r-normal-*-12-*-*-*-*-*-*-1" ICONS="-xos4-terminusicons2mono-medium-r-normal--12-120-72-72-m-60-iso8859-1" ICONS2="-wuncon-siji-medium-r-normal--10-100-75-75-c-80-iso10646-1" BG="#1F201D" BARHEIGHT=25 EDGEWIDTH=1 UNDERLINE_WIDTH=2 # Don't touch. Edit width/height above instead. SCREENHEIGHT=$(xrandr -q | grep Screen | awk '{print $10}' | sed s/,//) SCREENWIDTH=$(xrandr -q | grep Screen | awk '{print $8}') BARWIDTH=$(($SCREENWIDTH - $(($EDGEWIDTH * 2)))) source $(dirname $0)/panel_icons source $(dirname $0)/panel_colors source $(dirname $0)/panel_conf 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 config top_padding $PANEL_HEIGHT bspc subscribe |\ grep -oE "[Mm][^TM]*[TML]" --line-buffered |\ while read line; do echo W$line; done > "$PANEL_FIFO" & { function GETIME { case $1 in HOUR) timed=$(date | grep -o "[0-9]*:[0-9]*") hour=$(date "+%H") min=$(date "+%M") mdhr=$((10#$hour % 12)) mdhr=11 part="AM" if [[ "$hour" > 11 ]]; then part="PM" fi if [[ "$mdhr" == 0 ]]; then mdhr=12 fi ICON=$(pIcon "#b0a9ab" ${CCLOCK}) OUTPUT=$(echo "${ICON} $hour:$min $part") local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_CLOCK_FG} "${OUTPUT}") echo -e "${clr}" ;; DATE) ICON=$(pIcon "#b0a9ab" ${CDATE}) OUT=$(date +'%Y-%m-%d') OUTPUT=$(echo $ICON $OUT) local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_SYS_FG} "${OUTPUT}") echo -e "${clr}" esac } function FOCUS () { wnd_focus=$(xdotool getwindowfocus) wnd_title=$(xprop -id $wnd_focus WM_CLASS | grep -Po "\".*?\"" | head -1 | grep -Po "[^\"]*" ) if [[ "$wnd_title" == '' ]]; then wnd_title='Desktop' elif [[ "$wnd_title" == 'google-chrome' ]]; then wnd_title='Google Chrome' elif [[ "$wnd_title" == "telegram-desktop" ]]; then wnd_title='Telegram' fi get_icon=$(ICONFOCUS "$wnd_title") ICON=$(pIcon "#b0a9ab" ${get_icon}) OUTPUT=$(echo -e $ICON $wnd_title) local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_SYS_FG} "${OUTPUT}") echo -e "${clr}" } function BATERY () { stat=$(acpi -b | awk '{print $3}' | cut -d ',' -f1) batery=$(acpi -b | grep -P -o '[0-9]+(?=%)') if [ $stat == "Charging" ]; then ICON=$(pIcon "#b0a9ab" $CAC) batery="AC" por="" else por="% " if [ $batery -gt 90 ]; then ICON=$(pIcon "#b0a9ab" $BAT100) elif [ $batery -gt 70 ] && [ $batery -lt 90 ]; then ICON=$(pIcon "#b0a9ab" $BAT70) elif [ $batery -gt 50 ] && [ $batery -lt 70 ]; then ICON=$(pIcon "#b0a9ab" $BAT50) elif [ $batery -gt 30 ] && [ $batery -lt 50 ]; then ICON=$(pIcon "#b0a9ab" $BAT30) elif [ $batery -gt 15 ] && [ $batery -lt 30 ]; then ICON=$(pIcon "#b0a9ab" $BAT15) elif [ $batery -lt 7 ]; then ICON=$(pIcon "#b0a9ab" $BAT7) fi fi OUTPUT=$(echo -e "${ICON} ${batery}${por}") local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_BATERY_FG} "${OUTPUT}") echo -e "${clr}" } function CPUINFO () { case $1 in FREE) ICON=$(pIcon "#b0a9ab" $CCPU) mem=$(free -m | grep Mem: | awk '{printf $3 "/" $2 "Mb"}') output=$(echo -e "${ICON} ${mem}") cmd=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_FREE_FG} "${output}") local clr=$(pActionSimple "xterm -e vtop --theme wizard &>/dev/null" "${cmd}" ) echo -e "${clr}" ;; TEMP) temp=$(echo "scale=1; " `cat /sys/class/hwmon/hwmon0/temp1_input` "/1000" | bc) OUTPUT=$(echo -e "${CTEMP} ${temp}°C") local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_TEMP_FG} "${OUTPUT}") echo -e "${clr}" ;; LOAD) ICON=$(pIcon "#b0a9ab" $CRAM) cpu=$(grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage}') c_lvl=`printf "%.0f" $cpu` cmd=$(echo "$c_lvl%") OUTPUT=$(echo "${ICON} ${cmd} ") local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_TEMP_FG} "${OUTPUT}") echo -e "${clr}" ;; esac } function DISK () { ICON=$(pIcon "#b0a9ab" $CDRIVE) DISK=$( df -h /home | tail -1 | grep 'Filesystem\|/home*' | awk '{printf $4 "/" $2}') OUTPUT=$(echo "${ICON} ${DISK}") local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_DRIVES_FG} "${OUTPUT}") echo -e "${clr}" } function NET () { local _GETIWL=$(iwgetid -r) local _GETETH=$(ip a | grep "state UP" | awk '{ORS=""}{print $2}' | cut -d ':' -f 1) local _status=${_GETIWL:-$_GETETH} local _status2="${_status:-Down}" echo -e "${CWIFI} ${_status2}" } function VOL () { VOLUME=$(pulseaudio-ctl full-status | awk '{split($0, array, " ")} END{print array[1]}') MUTE=$(pulseaudio-ctl full-status | awk '{split($0, array, " ")} END{print array[2]}') if [ "$MUTE" == "yes" ]; then echo "Mute" else echo -e "${CVOLUME} $VOLUME%" fi } CMusic() { prev=$(echo "%{F#7c7c7e}%{B${COLOR_DEFAULT_BG}}%{A:mpc prev &>/dev/null:}$(printf '%b' ${CPREV})%{A}%{B-}%{F-}") pause=$(echo "%{F#7c7c7e}%{B${COLOR_DEFAULT_BG}}%{A:mpc pause &>/dev/null:}$(printf '%b' ${CPAUS})%{A}%{B-}%{F-}") play=$(echo "%{F#7c7c7e}%{B${COLOR_DEFAULT_BG}}%{A:mpc play &>/dev/null:}$(printf '%b' ${CPLAY})%{A}%{B-}%{F-}") next=$(echo "%{F#7c7c7e}%{B${COLOR_DEFAULT_BG}}%{A:mpc next &>/dev/null:}$(printf '%b' ${CNEXT})%{A}%{B-}%{F-}") echo "${prev}${pause}${play}${next}" } function MUSIC (){ OS=$(uname -n) ICONARCH=$(echo -e "%{F#1793D1}$(printf '%b' ${ARCH})%{F-}") ICONMUSIC=$(echo -e "%{F#782e43}$(printf '%b' ${CSOUND})%{F-}") local stat="$(mpc status | grep \# | awk '{print $1}')" local artist=$(mpc -f %artist% current) local musicname=$(mpc -f %title% current) local cmd="" if [ "${stat}" ] && [ "${stat}" = "[playing]" ] ; then cmd="Playing >> ${artist:0:10} - ${musicname:0:15}" elif [ "${stat}" ] && [ "${stat}" = "[paused]" ] ; then cmd="Paused >> ${artist:0:10} - ${musicname:0:20}" else cmd="No Sound" fi OUT=$(echo "${ICONMUSIC} ${cmd}") local clr=$(pText ${COLOR_DEFAULT_FG} "${OUT}") OUTPUT=$(echo "%{A:xterm -e ncmpcpp &>/dev/null:}${clr}%{A}") local clr=$(pTextUnderline ${COLOR_DEFAULT_FG} ${COLOR_TEMP_FG} "${OUTPUT}") echo -e ${clr} } while :; do echo "S %{F$COLOR_DEFAULT_FG} \ %{l} $(FOCUS) $(CMusic) $(MUSIC)\ %{r}$(CPUINFO FREE) $(CPUINFO LOAD) $(DISK) $(BATERY) $(GETIME DATE) $(GETIME HOUR)" sleep .5 done } > "$PANEL_FIFO" & $(dirname $0)/panel_bar < "$PANEL_FIFO" | lemonbar \ -a 32 \ -n "$PANEL_WM_NAME" \ -g ${BARWIDTH}x${BARHEIGHT}+${EDGEWIDTH} \ -u 2 \ -f ${FONT} \ -f ${FONT2} \ -f ${ICONS} \ -f ${ICONS2} \ -F "$COLOR_DEFAULT_FG" \ -B "$COLOR_DEFAULT_BG" | sh | while read line; do eval "$line"; done & wid=$(xdo id -a "$PANEL_WM_NAME") tries_left=20 while [ -z "$wid" -a "$tries_left" -gt 0 ] ; do sleep 0.05 wid=$(xdo id -a "$PANEL_WM_NAME") tries_left=$((tries_left - 1)) done [ -n "$wid" ] && xdo above -t "$(xdo id -N Bspwm -n root | sort | head -n 1)" "$wid" wait