Files
SwayConfig/status.sh
2024-11-07 14:30:20 +01:00

47 lines
2.0 KiB
Bash
Executable File

# The Sway configuration file in ~/.config/sway/config calls this script.
# You should see changes to the status bar after saving this script.
# If not, do "killall swaybar" and $mod+Shift+c to reload the configuration.
# The abbreviated weekday (e.g., "Sat"), followed by the ISO-formatted date
# like 2018-10-06 and the time (e.g., 14:01). Check `man date` on how to format
# time and date.
date_formatted=$(date "+%a %F %H:%M")
# "upower --enumerate | grep 'BAT'" gets the battery name (e.g.,
# "/org/freedesktop/UPower/devices/battery_BAT0") from all power devices.
# "upower --show-info" prints battery information from which we get
# the state (such as "charging" or "fully-charged") and the battery's
# charge percentage. With awk, we cut away the column containing
# identifiers. i3 and sway convert the newline between battery state and
# the charge percentage automatically to a space, producing a result like
# "charging 59%" or "fully-charged 100%".
battery_info=$(upower --show-info $(upower --enumerate |\
grep 'BAT') |\
egrep "state|percentage" |\
awk -v ORS=" " '{print $2}' |\
awk '{printf "%s (%s)", $2, $1}')
# "amixer -M" gets the mapped volume for evaluating the percentage which
# is more natural to the human ear according to "man amixer".
# Column number 4 contains the current volume percentage in brackets, e.g.,
# "[36%]". Column number 6 is "[off]" or "[on]" depending on whether sound
# is muted or not.
# "tr -d []" removes brackets around the volume.
# Adapted from https://bbs.archlinux.org/viewtopic.php?id=89648
audio_volume=$(amixer -M get Master |\
awk '/Mono.+/ {print $6=="[off]" ?\
$4" muted!": \
$4}' |\
tr -d [])
# Wifi
ip_address=$(nmcli -g GENERAL.STATE device show wlx0010603707fd | sed 's/.*(\(.*\))/\1/')
# Temperature
temp=$(cat /sys/class/thermal/thermal_zone*/temp | sed 's/...$/°C/')
# Mem info
mem=$(free -m | grep Mem | awk '{printf "%d%%", ($3/$2)*100}')
echo "V:"$audio_volume" | M:"$mem" | B:"$battery_info" | T:"$temp" | N:"$ip_address" | "$date_formatted