#! /bin/sh source $(dirname $0)/config if xdo id -a "$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 $HEIGHT bspc subscribe |\ grep -oE "[Mm][^TM]*[TML]" --line-buffered |\ while read line; do echo W$line; done > "$PANEL_FIFO" & # Top left { getName() { local ic=$(pIconUnderline ${BLACK2} ${GREEN} ${GENTOO}) local cmd="$(uname -n)" local clr=$(pTextUnderline ${WHITE} ${GREEN} " ${cmd}") echo " ${ic}${clr}" } panelMusic() { local prev=$(pAction $FG $BG "mpc prev &>/dev/null" ${CPREV}) local pause=$(pAction $FG $BG "mpc pause &>/dev/null" ${CPAUS}) local play=$(pAction $FG $BG "mpc play &>/dev/null" ${CPLAY}) local next=$(pAction $FG $BG "mpc next &>/dev/null" ${CNEXT}) echo "${prev}${pause}${play}${next}" } music() { local icon=$(pIconUnderline ${RED2} ${BLUE} ${CSOUND}) 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:15}" else cmd="No Sound" fi echo "${icon}$(pTextUnderline ${WHITE} ${BLUE} "${cmd}")" } volume() { local icon=$(pIcon ${CYAN2} ${CVOLUME}) local volume="$(mpc volume | awk '{print $2}')" [[ -z ${volume%?} ]] && volume='100%' local clr=$(pText ${MAGENTA2} "${volume}") local plus=$(pAction $FG $BG "mpc volume +4 &>/dev/null" ${VPLUS}) local minus=$(pAction $FG $BG "mpc volume -3 &>/dev/null" ${VMINUS}) echo "${icon} ${clr} ${plus}${minus}" } while :; do echo "T$(getName) $(panelMusic) $(music) $(volume)" sleep 5 done } > "$PANEL_FIFO" & # Top Right { getDay() { local icon=$(pIconUnderline ${BLACK2} ${GREEN} ${CTIME}) local cmd=" $(date '+%A %d %b')" local clr=$(pTextUnderline ${WHITE} ${GREEN} "${cmd}") echo "${icon}${clr}" } clock() { local icon=$(pIcon ${GREEN2} ${CCLOCK}) local cmd=$(date +%H:%M) local clr=$(pText ${FG} "${cmd}") echo "${icon} ${clr}" } mail() { local gmaildir=/home/user/mails/Gmail-User/\[Gmail\].All\ Mail/new local prog=$(pAction $FG $BG "termite -e mutt" ${CMAIL}) local icon=$(pIcon ${CYAN} ${CMAIL}) local count=0 if [[ ! -n $(ls "${gmaildir}") ]]; then count=0 else count=$(ls -1 "${gmaildir}" | wc -l) fi echo "${prog} ${count}" } net() { local _GETIWL=$(/sbin/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}" local icon="$(pIconUnderline ${CYAN2} ${MAGENTA2} ${CNET})" local cmd=$(pTextUnderline ${WHITE} ${MAGENTA2} " ${_status2}") echo "${icon}${cmd}" } energy() { local ac=/sys/class/power_supply/AC/online local bat=/sys/class/power_supply/BAT0/present local icon="" local batCap="" if [[ -e $bat ]] && [[ $(cat $ac) -lt 1 ]]; then batCap="$(cat ${bat%/*}/capacity)" [ $batCap -gt 90 ] && icon=$BAT100 [ $batCap -gt 70 ] && [ $batCap -lt 90 ] && icon=$BAT70 [ $batCap -gt 50 ] && [ $batCap -lt 70 ] && icon=$BAT50 [ $batCap -gt 30 ] && [ $batCap -lt 50 ] && icon=$BAT30 [ $batCap -gt 15 ] && [ $batCap -lt 30 ] && icon=$BAT15 [ $batCap -lt 7 ] && icon=$BAT7 elif [[ -n $(cat $ac) ]]; then batCap="AC" icon=$CAC else batCap="wttf" fi echo "$(pIcon ${CYAN2} $icon) $(pText ${MAGENTA} ${batCap})" } ram() { local icon=$(pIcon ${CYAN} ${CRAM}) local cmd=$(free -m | grep Mem | awk '{print $3}') cmd+=" Mb" local clr=$(pText ${FG} "${cmd}") echo "${icon} ${clr}" } # Cpu List Load, number of Process and actual MHz frequency. cpu() { local icon=$(pIconUnderline ${GREEN} ${MAGENTA} ${CCPU}) local cmd=" $(cat /proc/loadavg | awk '{print $1}')" local cmd+=" $(cat /proc/loadavg | awk '{print $4}')" local cmd+=" $(cat /proc/cpuinfo| grep MHz | awk '{ORS=" "}{print $4}' | sed -e 's/.000//g' | cut -f 1)" local clr=$(pTextUnderline ${WHITE} ${MAGENTA} "${cmd}") echo "${icon}${clr}" } # On archlinux, change cmd=$(pacman -Ql | wc -l), or remove it complety. #package() { # local icon=$(pIcon ${GREEN} ${CPACK}) # local cmd=$(equery list "*" | wc -l) # local clr=$(pText ${MAGENTA} "${cmd}") # echo "${icon} ${clr}" #} while :; do #echo "S$(package) $(cpu) $(ram) $(energy) $(net) $(mail) $(clock) $(getDay)" echo "S$(cpu) $(ram) $(energy) $(net) $(mail) $(clock) $(getDay)" sleep 5 done } > "$PANEL_FIFO" & $(dirname $0)/panel_bar < "$PANEL_FIFO" | lemonbar \ -a 32 \ -n "$WM_NAME" \ -g x$HEIGHT \ -u 2 \ -f "$FONT" \ -f "$FONT_ICON" \ -F "$FG" \ -B "$BG" | sh | while read line; do eval "$line"; done & wid=$(xdo id -a "$WM_NAME") tries_left=20 while [ -z "$wid" -a "$tries_left" -gt 0 ] ; do sleep 0.05 wid=$(xdo id -a "$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