mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 23:49:56 +00:00
Minimal i3 setup
This commit is contained in:
94
dotfiles/desktop/.config/i3/scripts/i3status-wrapper.sh
Executable file
94
dotfiles/desktop/.config/i3/scripts/i3status-wrapper.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
battery_json() {
|
||||
local total_now=0
|
||||
local total_full=0
|
||||
local overall_status=""
|
||||
local now full status bat capacity icon color
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
for bat in /sys/class/power_supply/BAT*; do
|
||||
[[ -d "$bat" ]] || continue
|
||||
|
||||
if [[ -r "$bat/energy_now" && -r "$bat/energy_full" ]]; then
|
||||
now=$(<"$bat/energy_now")
|
||||
full=$(<"$bat/energy_full")
|
||||
elif [[ -r "$bat/charge_now" && -r "$bat/charge_full" ]]; then
|
||||
now=$(<"$bat/charge_now")
|
||||
full=$(<"$bat/charge_full")
|
||||
else
|
||||
continue
|
||||
fi
|
||||
|
||||
status=$(<"$bat/status")
|
||||
|
||||
(( total_now += now ))
|
||||
(( total_full += full ))
|
||||
|
||||
case "$status" in
|
||||
Charging)
|
||||
overall_status="Charging"
|
||||
;;
|
||||
Discharging)
|
||||
[[ "$overall_status" != "Charging" ]] && overall_status="Discharging"
|
||||
;;
|
||||
Full)
|
||||
[[ -z "$overall_status" ]] && overall_status="Full"
|
||||
;;
|
||||
*)
|
||||
[[ -z "$overall_status" ]] && overall_status="$status"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
(( total_full > 0 )) || return 1
|
||||
|
||||
capacity=$(( 100 * total_now / total_full ))
|
||||
|
||||
case "$overall_status" in
|
||||
Charging) icon="⚡" ;;
|
||||
Discharging) icon="🔋" ;;
|
||||
Full) icon="✔" ;;
|
||||
*) icon="?" ;;
|
||||
esac
|
||||
|
||||
if (( capacity <= 15 )); then
|
||||
color="#ff5555"
|
||||
elif (( capacity <= 30 )); then
|
||||
color="#f1fa8c"
|
||||
else
|
||||
color="#ffffff"
|
||||
fi
|
||||
|
||||
printf '{"full_text":"%s %s%%","name":"battery","color":"%s"}' \
|
||||
"$icon" "$capacity" "$color"
|
||||
}
|
||||
|
||||
i3status | while IFS= read -r line; do
|
||||
case "$line" in
|
||||
'{"version":'* | '[')
|
||||
printf '%s\n' "$line"
|
||||
;;
|
||||
,*)
|
||||
batt="$(battery_json)"
|
||||
if [[ -n "$batt" ]]; then
|
||||
line="${line#,}"
|
||||
printf ',[%s,%s\n' "$batt" "${line#\[}"
|
||||
else
|
||||
printf '%s\n' "$line"
|
||||
fi
|
||||
;;
|
||||
\[*)
|
||||
batt="$(battery_json)"
|
||||
if [[ -n "$batt" ]]; then
|
||||
printf '[%s,%s\n' "$batt" "${line#\[}"
|
||||
else
|
||||
printf '%s\n' "$line"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
printf '%s\n' "$line"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
Reference in New Issue
Block a user