statusbar.sh (1376B)
1 #!/bin/sh 2 3 _print() { 4 title=$1; shift 5 echo -n "$title ${@}${sep}" 6 } 7 8 _need() { 9 case $1 in 10 */*) [ -e $1 ] || return 1;; 11 *) command -v $1 >/dev/null 2>&1 || return 1;; 12 esac 13 } 14 15 _playerctl() { 16 _need playerctl || return 0 17 msg=$(playerctl metadata --format '{{ artist }} - {{ title }}' 2>/dev/null) || \ 18 msg=Stopped 19 _print MUSIC $msg 20 } 21 22 _net() { 23 _need ping || return 0 24 ping -c 1 8.8.8.8 >/dev/null 2>&1 && msg=Online || msg=Offline 25 _print NET $msg 26 } 27 28 _vol() { 29 _need amixer || return 0 30 msg=$(amixer get Master | sed -n 's/^.*\[\([0-9]\+\)%.*$/\1/p'| uniq) 31 [ "$(amixer get Master | grep Mono: | awk '{print $6}')" = '[off]' ] && msg=X 32 _print VOL $msg 33 } 34 35 _bat() { 36 [ -d /sys/class/power_supply/BAT0 ] && _bat=0 37 [ -d /sys/class/power_supply/BAT1 ] && _bat=1 38 [ "$_bat" ] || return 0 39 capacity=$(cat /sys/class/power_supply/BAT${_bat}/capacity) 40 status=$(cat /sys/class/power_supply/BAT${_bat}/status) 41 msg="$([ "$status" = Charging ] && echo +)$capacity" 42 _print BAT $msg 43 } 44 45 _ram() { 46 used=$(free -m | awk '/Mem:/ { print $3"M" }') 47 total=$(free -m | awk '/Mem:/ { print $2"M" }') 48 msg="$used/$total" 49 _print RAM $msg 50 } 51 52 _temp() { 53 _need sensors || return 0 54 msg=$(sensors | grep "Package id" | awk '{print $4}' | sed 's/+//') 55 _print TEMP $msg 56 } 57 58 _clock() { 59 date "+%a %d %b %I:%M:%S" 60 } 61 62 sep=' | ' 63 64 echo "$(_playerctl)$(_net)$(_temp)$(_ram)$(_bat)$(_vol)$(_clock)"