100 lines
2.2 KiB
Fish
Executable File
100 lines
2.2 KiB
Fish
Executable File
#!/usr/bin/env fish
|
|
|
|
|
|
function update
|
|
set -x text
|
|
# mpd
|
|
if which mpc
|
|
set music (mpc)
|
|
if string match -r playing "$music[2]"
|
|
set text $text "喇 $music[1]"
|
|
end
|
|
end
|
|
# volume
|
|
set vol (amixer get Master)
|
|
if string match -r '\[off\]' "$vol"
|
|
set text $text "ﱝ 0"
|
|
else
|
|
set v (string match -r '\[(\d+)%\]' $vol | tail -n 1)
|
|
set text $text " $v"
|
|
end
|
|
# network
|
|
for nic in (ls -d /sys/class/net/e*)
|
|
if grep up $nic/operstate > /dev/null
|
|
set speed (cat $nic/speed)M
|
|
set text $text " $speed"
|
|
end
|
|
end
|
|
set wifi (grep "^\s*w" /proc/net/wireless | awk '{ print int($3 * 100 / 70) "%" }')
|
|
if test -n "$wifi"
|
|
set text $text " $wifi"
|
|
end
|
|
# memory
|
|
set memory (free | awk '/^Mem:/ {print $3 "/" $2 "*" 100}' | math -s0)
|
|
set text $text " $memory%"
|
|
# cpu
|
|
set cpu (sensors | awk '/Core /{print $3}' | sort -r | head -n 1)
|
|
if test -n "$cpu"
|
|
set text $text " $cpu"
|
|
end
|
|
# battery
|
|
set battery (cat /sys/class/power_supply/BAT0/capacity 2>/dev/null || echo "-1")
|
|
if test "$battery" -gt -1
|
|
set plugged (cat /sys/class/power_supply/AC/online)
|
|
if test "$plugged" -eq 1
|
|
set battery " $battery%"
|
|
else
|
|
if test $battery -gt 90
|
|
set battery " $battery%"
|
|
else if test $battery -gt 75
|
|
set battery " $battery%"
|
|
else if test $battery -gt 50
|
|
set battery " $battery%"
|
|
else if test $battery -gt 25
|
|
set battery " $battery%"
|
|
else
|
|
set battery " $battery%"
|
|
end
|
|
end
|
|
set text $text "$battery"
|
|
end
|
|
# | sed 's/Mon/一/; s/Tue/二/; s/Wed/三/; s/Thu/四/; s/Fri/五/; s/Sat/六/; s/Sun/日/;'
|
|
set dt (date +"%m-%d %H:%M %a")
|
|
set text $text " $dt"
|
|
set text (string join ' ' $text)
|
|
xsetroot -name " $text "
|
|
|
|
# prevent screen-saver when there is ongoing zoom metting
|
|
if xdotool search --name '^Zoom Meeting ID:'
|
|
xset s reset
|
|
end
|
|
end
|
|
|
|
function loop
|
|
while true
|
|
update
|
|
sleep 1
|
|
end
|
|
end
|
|
|
|
function start
|
|
set script (status -f)
|
|
$script loop &
|
|
end
|
|
|
|
function restart
|
|
pkill -f 'dwmbar loop'
|
|
start
|
|
end
|
|
|
|
switch "$argv[1]"
|
|
case "update"
|
|
update
|
|
case "loop"
|
|
loop
|
|
case "start"
|
|
start
|
|
case "*"
|
|
restart
|
|
end
|