47 lines
2.0 KiB
Bash
Executable File
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
|