mirror of
https://codeberg.org/frosty/dotfiles.git
synced 2024-09-19 11:47:09 -04:00
(xmobar): update most monitors
This commit is contained in:
parent
3ca5787208
commit
0bf62a3e9e
|
@ -16,6 +16,8 @@ DISK_ICON_COLOR="#48a3e8"
|
||||||
NOW_PLAYING_COLOR="#e647a1"
|
NOW_PLAYING_COLOR="#e647a1"
|
||||||
NOW_PLAYING_STATE_COLOR="#ccca4e"
|
NOW_PLAYING_STATE_COLOR="#ccca4e"
|
||||||
|
|
||||||
|
SSID_HIDE_FILE="/tmp/monitors_no-ssid"
|
||||||
|
|
||||||
readable_kib() {
|
readable_kib() {
|
||||||
data="${1:-}"
|
data="${1:-}"
|
||||||
decimals="${2:-}"
|
decimals="${2:-}"
|
||||||
|
@ -35,27 +37,6 @@ readable_kib() {
|
||||||
printf "%.*f%s\n" "$decimals" "$amt" "$letter"
|
printf "%.*f%s\n" "$decimals" "$amt" "$letter"
|
||||||
}
|
}
|
||||||
|
|
||||||
replace_substring() {
|
|
||||||
original="${1:-}"
|
|
||||||
pattern="${2:-}"
|
|
||||||
replacement="${3:-}"
|
|
||||||
[ -z "$original" ] || [ -z "$pattern" ] && exit
|
|
||||||
|
|
||||||
new="$original"
|
|
||||||
while :; do
|
|
||||||
case "$original" in
|
|
||||||
*"$pattern"*)
|
|
||||||
before_pattern="${original%%"$pattern"*}"
|
|
||||||
after_pattern="${original#*"$pattern"}"
|
|
||||||
new="$before_pattern$replacement$after_pattern"
|
|
||||||
;;
|
|
||||||
*) break ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
printf '%s\n' "$new"
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor_battery() {
|
monitor_battery() {
|
||||||
read -r capacity </sys/class/power_supply/$BATTERY_NAME/capacity
|
read -r capacity </sys/class/power_supply/$BATTERY_NAME/capacity
|
||||||
read -r status </sys/class/power_supply/$BATTERY_NAME/status
|
read -r status </sys/class/power_supply/$BATTERY_NAME/status
|
||||||
|
@ -88,19 +69,21 @@ monitor_battery() {
|
||||||
}
|
}
|
||||||
|
|
||||||
monitor_cpu() {
|
monitor_cpu() {
|
||||||
|
sleep_time="${2:-1}"
|
||||||
|
|
||||||
while read -r _ user _ system idle _; do
|
while read -r _ user _ system idle _; do
|
||||||
initial_user_sys="$((user + system))"
|
initial_user_sys="$((user + system))"
|
||||||
initial_total="$((user + system + idle))"
|
initial_total="$((user + system + idle))"
|
||||||
break
|
break
|
||||||
done </proc/stat
|
done </proc/stat
|
||||||
# TODO(frosty): Allow the user to specify how long to wait via an argument.
|
sleep "$sleep_time"
|
||||||
sleep 1
|
|
||||||
while read -r _ user _ system idle _; do
|
while read -r _ user _ system idle _; do
|
||||||
current_user_sys="$((user + system))"
|
current_user_sys="$((user + system))"
|
||||||
current_total="$((user + system + idle))"
|
current_total="$((user + system + idle))"
|
||||||
break
|
break
|
||||||
done </proc/stat
|
done </proc/stat
|
||||||
|
|
||||||
|
if command -v sensors >/dev/null 2>&1; then
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
case "$line" in
|
case "$line" in
|
||||||
*"Package id 0:"*) temp="$line" ;;
|
*"Package id 0:"*) temp="$line" ;;
|
||||||
|
@ -108,14 +91,9 @@ monitor_cpu() {
|
||||||
done <<EOF
|
done <<EOF
|
||||||
$(sensors)
|
$(sensors)
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ -n "$temp" ]; then
|
|
||||||
temp="${temp#Package id 0:*+}"
|
|
||||||
temp="${temp%%°*}"
|
|
||||||
temp="${temp%.*}"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
usage_percent="$(printf '%i\n' $(((current_user_sys - initial_user_sys) * 100 / (current_total - initial_total))))"
|
usage_percent="$(((current_user_sys - initial_user_sys) * 100 / (current_total - initial_total)))"
|
||||||
case "$usage_percent" in
|
case "$usage_percent" in
|
||||||
[0-9] | [0-3][0-9]) color="$DEFAULT_COLOR" ;;
|
[0-9] | [0-3][0-9]) color="$DEFAULT_COLOR" ;;
|
||||||
[4-5][0-9]) color="$STATUS_OK_COLOR" ;;
|
[4-5][0-9]) color="$STATUS_OK_COLOR" ;;
|
||||||
|
@ -123,6 +101,10 @@ EOF
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -n "$temp" ]; then
|
if [ -n "$temp" ]; then
|
||||||
|
temp="${temp#Package id 0:*+}"
|
||||||
|
temp="${temp%%°*}"
|
||||||
|
temp="${temp%.*}"
|
||||||
|
|
||||||
printf '%s°C (<fc=%s>%i%%</fc>)\n' "$temp" "$color" "$usage_percent"
|
printf '%s°C (<fc=%s>%i%%</fc>)\n' "$temp" "$color" "$usage_percent"
|
||||||
else
|
else
|
||||||
printf '<fc=%s>%i%%</fc>\n' "$color" "$usage_percent"
|
printf '<fc=%s>%i%%</fc>\n' "$color" "$usage_percent"
|
||||||
|
@ -136,13 +118,12 @@ monitor_load() {
|
||||||
load_fifteen="$fifteen"
|
load_fifteen="$fifteen"
|
||||||
done </proc/loadavg
|
done </proc/loadavg
|
||||||
|
|
||||||
# TODO(frosty): Find a less cursed way to achieve this.
|
|
||||||
load_one_color=
|
load_one_color=
|
||||||
load_five_color=
|
load_five_color=
|
||||||
load_fifteen_color=
|
load_fifteen_color=
|
||||||
for load in load_one load_five load_fifteen; do
|
for load in load_one load_five load_fifteen; do
|
||||||
case "$(eval 'printf "%i\n" "\$$load"')" in
|
case "$(eval "printf '%.0f\n' \$$load")" in
|
||||||
[0-3]) eval "${load}_color=#cccccc" ;;
|
[0-3]) eval "${load}_color=$DEFAULT_COLOR" ;;
|
||||||
[4-7]) eval "${load}_color=$STATUS_OK_COLOR" ;;
|
[4-7]) eval "${load}_color=$STATUS_OK_COLOR" ;;
|
||||||
*) eval "${load}_color=$STATUS_UNWELL_COLOR" ;;
|
*) eval "${load}_color=$STATUS_UNWELL_COLOR" ;;
|
||||||
esac
|
esac
|
||||||
|
@ -171,28 +152,39 @@ monitor_memory() {
|
||||||
}
|
}
|
||||||
|
|
||||||
monitor_ssid() {
|
monitor_ssid() {
|
||||||
while read -r line; do
|
if [ -f "$SSID_HIDE_FILE" ]; then
|
||||||
case $line in
|
while IFS= read -r line; do
|
||||||
*"Connected network"*) ssid="$line" ;;
|
hidden_ssid="$line"
|
||||||
|
done <"$SSID_HIDE_FILE"
|
||||||
|
fi
|
||||||
|
while IFS= read -r line; do
|
||||||
|
case "$line" in
|
||||||
|
*"Connected network"*) [ ! -f "$SSID_HIDE_FILE" ] && ssid="$line" || ssid="$hidden_ssid" ;;
|
||||||
esac
|
esac
|
||||||
done <<EOF
|
done <<EOF
|
||||||
$(iwctl station "$WIFI_ADAPTER" show)
|
$(iwctl station "$WIFI_ADAPTER" show)
|
||||||
EOF
|
EOF
|
||||||
[ -z "$ssid" ] && exit
|
|
||||||
|
if [ -n "$ssid" ]; then
|
||||||
ssid="${ssid##*Connected network}"
|
ssid="${ssid##*Connected network}"
|
||||||
ssid="${ssid#"${ssid%%[![:space:]]*}"}"
|
ssid="${ssid#"${ssid%%[![:space:]]*}"}"
|
||||||
|
ssid="${ssid%"${ssid##*[![:space:]]}"}"
|
||||||
# TODO(frosty): Add other icons based on the connection status.
|
|
||||||
icon=""
|
icon=""
|
||||||
|
else
|
||||||
|
ssid="Offline"
|
||||||
|
icon=""
|
||||||
|
fi
|
||||||
|
|
||||||
printf '%s %s\n' "$icon" "$ssid"
|
printf '%s %s\n' "$icon" "$ssid"
|
||||||
}
|
}
|
||||||
|
|
||||||
monitor_local_ip() {
|
monitor_local_ip() {
|
||||||
# TODO(frosty): Add a fallback value when offline.
|
if address="$(ip route get 1 2>/dev/null)"; then
|
||||||
address="$(ip route get 1)"
|
|
||||||
address="${address#* via * dev * src }"
|
address="${address#* via * dev * src }"
|
||||||
address="${address% uid *}"
|
address="${address% uid *}"
|
||||||
|
else
|
||||||
|
address="0.0.0.0"
|
||||||
|
fi
|
||||||
|
|
||||||
printf '%s\n' "$address"
|
printf '%s\n' "$address"
|
||||||
}
|
}
|
||||||
|
@ -211,16 +203,25 @@ monitor_volume() {
|
||||||
}
|
}
|
||||||
|
|
||||||
monitor_uptime() {
|
monitor_uptime() {
|
||||||
# TODO(frosty): Find the uptime without calling another command.
|
|
||||||
up="$(uptime -p)"
|
up="$(uptime -p)"
|
||||||
up="$(replace_substring "$up" 'up ' '')"
|
up="${up#up }"
|
||||||
up="$(replace_substring "$up" ',' '')"
|
while :; do
|
||||||
up="$(replace_substring "$up" ' days' 'd')"
|
case "$up" in
|
||||||
up="$(replace_substring "$up" ' day' 'd')"
|
*","*) up="${up%%,*}${up#*,}" ;;
|
||||||
up="$(replace_substring "$up" ' hours' 'h')"
|
*) break ;;
|
||||||
up="$(replace_substring "$up" ' hour' 'h')"
|
esac
|
||||||
up="$(replace_substring "$up" ' minutes' 'm')"
|
done
|
||||||
up="$(replace_substring "$up" ' minute' 'm')"
|
while :; do
|
||||||
|
case "$up" in
|
||||||
|
*" days"*) up="${up%% days*}d${up#* days}" ;;
|
||||||
|
*" day"*) up="${up%% day*}d${up#* day}" ;;
|
||||||
|
*" hours"*) up="${up%% hours*}h${up#* hours}" ;;
|
||||||
|
*" hour"*) up="${up%% hour*}h${up#* hour}" ;;
|
||||||
|
*" minutes"*) up="${up%% minutes*}m${up#* minutes}" ;;
|
||||||
|
*" minute"*) up="${up%% minute*}h${up#* minute}" ;;
|
||||||
|
*) break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
printf '%s\n' "$up"
|
printf '%s\n' "$up"
|
||||||
}
|
}
|
||||||
|
@ -234,7 +235,6 @@ monitor_disk() {
|
||||||
use_icon="${3:-0}"
|
use_icon="${3:-0}"
|
||||||
[ -z "$disk" ] || [ ! -d "$disk" ] && exit 1
|
[ -z "$disk" ] || [ ! -d "$disk" ] && exit 1
|
||||||
|
|
||||||
# TODO(frosty): Allow more icons to be added using an rc file.
|
|
||||||
if [ "$use_icon" -eq 1 ]; then
|
if [ "$use_icon" -eq 1 ]; then
|
||||||
case "$disk" in
|
case "$disk" in
|
||||||
"/") icon="" ;;
|
"/") icon="" ;;
|
||||||
|
@ -309,7 +309,7 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
if command -v monitor_"$1" >/dev/null 2>&1; then
|
if command -v monitor_"$1" >/dev/null 2>&1; then
|
||||||
"monitor_$1" "$@"
|
monitor_"$1" "$@"
|
||||||
else
|
else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue