dotfiles

My personal dotfiles
git clone https://codeberg.org/emmett1/dotfiles
Log | Files | Refs

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)"