From 3bf62747d92720f419abc6cd15f3f952f02de169 Mon Sep 17 00:00:00 2001 From: Benjamin Kyd Date: Fri, 17 Feb 2023 08:54:48 +0000 Subject: [PATCH] add battery back to laptop --- .../.config/i3blocks/battery/battery_info.sh | 44 +++++++++++++++++++ laptop/.config/i3blocks/config | 28 ++++++++++++ laptop/.config/i3blocks/cpu/cpu_info.sh | 4 ++ laptop/.config/i3blocks/sound/sound_burst.sh | 6 +++ laptop/.config/i3blocks/sound/sound_info.sh | 27 ++++++++++++ 5 files changed, 109 insertions(+) create mode 100755 laptop/.config/i3blocks/battery/battery_info.sh create mode 100644 laptop/.config/i3blocks/config create mode 100755 laptop/.config/i3blocks/cpu/cpu_info.sh create mode 100755 laptop/.config/i3blocks/sound/sound_burst.sh create mode 100755 laptop/.config/i3blocks/sound/sound_info.sh diff --git a/laptop/.config/i3blocks/battery/battery_info.sh b/laptop/.config/i3blocks/battery/battery_info.sh new file mode 100755 index 0000000..3ff37cc --- /dev/null +++ b/laptop/.config/i3blocks/battery/battery_info.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# If ACPI was not installed, this probably is a battery-less computer. +ACPI_RES=$(acpi -b) +ACPI_CODE=$? +if [ $ACPI_CODE -eq 0 ] +then + # Get essential information. Due to som bug with some versions of acpi it is + # worth filtering the ACPI result from all lines containing "unavailable". + BAT_LEVEL_ALL=$(echo "$ACPI_RES" | grep -E -o "[0-9][0-9]?[0-9]?%") + BAT_LEVEL=$(echo "$BAT_LEVEL_ALL" | awk -F"%" 'BEGIN{tot=0;i=0} {i++; tot+=$1} END{printf("%d%%\n", tot/i)}') + TIME_LEFT=$(echo "$ACPI_RES" | grep -E -o "[0-9]{2}:[0-9]{2}:[0-9]{2}") + IS_CHARGING=$(echo "$ACPI_RES" | awk '{ printf("%s\n", substr($3, 0, length($3)-1) ) }') + + # If there is no 'time left' information (when almost fully charged) we + # provide information ourselvs. + if [ -z "$TIME_LEFT" ] + then + TIME_LEFT="00:00:00" + fi + + # Print full text. The charging data. + TIME_LEFT=$(echo $TIME_LEFT | awk '{ printf("%s\n", substr($1, 0, 5)) }') + echo "🔋$BAT_LEVEL ⏳$TIME_LEFT " + + # Print the short text. + echo "BAT: $BAT_LEVEL" + + # Change the font color, depending on the situation. + if [ "$IS_CHARGING" = "Charging" ] + then + # Charging yellow color. + echo "#D0D000" + else + if [ "${BAT_LEVEL%?}" -le 15 ] + then + # Battery very low. Red color. + echo "#FA1E44" + else + # Battery not charging but at decent level. Green color. + echo "#007872" + fi + fi +fi diff --git a/laptop/.config/i3blocks/config b/laptop/.config/i3blocks/config new file mode 100644 index 0000000..1e7c853 --- /dev/null +++ b/laptop/.config/i3blocks/config @@ -0,0 +1,28 @@ +[NOW_PLAYING] +command=mpris-ctl info '🎶 %player_name: %track_name - %artist_name' +interval=1 +color=#1DB954 + +[DISK] +command=df -h / | awk '/\//{ printf(" 💾 %sB \n", $4) }' +interval=10 +color=#C9E3DB + +[CPU] +full_text= CPU: 0.00% @ +00.0°C +command=~/.config/i3blocks/cpu/cpu_info.sh +interval=2 +color=#0071C5 + +[BATTERY] +command=~/.config/i3blocks/battery/battery_info.sh +interval=2 + +[MEM] +command=free -h | awk '/Mem:/ { printf(" %5s/%s \n", $3, $2) }' +interval=5 +color=#FEC925 + +[TIME_DATE] +command=date +" %a, %d %b - %H:%M:%S" +interval=1 diff --git a/laptop/.config/i3blocks/cpu/cpu_info.sh b/laptop/.config/i3blocks/cpu/cpu_info.sh new file mode 100755 index 0000000..c276aec --- /dev/null +++ b/laptop/.config/i3blocks/cpu/cpu_info.sh @@ -0,0 +1,4 @@ +#!/bin/sh +TEMP=$(sensors | grep 'Package id 0:\|Tdie' | grep ':[ ]*+[0-9]*.[0-9]*°C' -o | grep '[0-9]*.[0-9]*°C' -o) +CPU_USAGE=$(mpstat 1 1 | awk '/Average:/ {printf("%i\n", $(NF-9))}') +echo "$CPU_USAGE $TEMP" | awk '{ printf(" CPU:%3s% @ %s \n"), $1, $2 }' diff --git a/laptop/.config/i3blocks/sound/sound_burst.sh b/laptop/.config/i3blocks/sound/sound_burst.sh new file mode 100755 index 0000000..330f395 --- /dev/null +++ b/laptop/.config/i3blocks/sound/sound_burst.sh @@ -0,0 +1,6 @@ +#!/bin/sh +for i in $(seq 1 5) +do + sleep 0.2 + pkill -RTMIN+1 i3blocks +done diff --git a/laptop/.config/i3blocks/sound/sound_info.sh b/laptop/.config/i3blocks/sound/sound_info.sh new file mode 100755 index 0000000..a5fd505 --- /dev/null +++ b/laptop/.config/i3blocks/sound/sound_info.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +VOLUME_MUTE="🔇" +VOLUME_LOW="🔈" +VOLUME_MID="🔉" +VOLUME_HIGH="🔊" +SOUND_LEVEL=$(amixer -M get Master | awk -F"[][]" '/%/ { print $2 }' | awk -F"%" 'BEGIN{tot=0; i=0} {i++; tot+=$1} END{printf("%s\n", tot/i) }') +MUTED=$(amixer get Master | awk ' /%/{print ($NF=="[off]" ? 1 : 0); exit;}') + +ICON=$VOLUME_MUTE +if [ "$MUTED" = "1" ] +then + ICON="$VOLUME_MUTE" +else + if [ "$SOUND_LEVEL" -lt 34 ] + then + ICON="$VOLUME_LOW" + elif [ "$SOUND_LEVEL" -lt 67 ] + then + ICON="$VOLUME_MID" + else + ICON="$VOLUME_HIGH" + fi +fi + +echo "$ICON" "$SOUND_LEVEL" | awk '{ printf(" %s:%3s%% \n", $1, $2) }' +