mirror of
https://github.com/ItsDrike/nixdots
synced 2024-11-10 10:39:42 +00:00
ItsDrike
ac23da55c5
This configuration was simply copied from my old Arch Linux system. There are some issues that still need to be solved, namely with fonts and missing bitcoin price script, but it's mostly minor.
86 lines
2.6 KiB
Bash
Executable file
86 lines
2.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# shellcheck source=include
|
|
source "./scripts/include"
|
|
|
|
# $BATTERY and $ADAPTER env vars can be set manually, being the names of the
|
|
# devices (in /sys/class/power_supply/) i.e. BATTERY=BAT0 ADAPTER=ADP0
|
|
# or, if left unset, they will be automatically picked.
|
|
|
|
CAPACITY_ICONS=("" "" "" "" "" "" "" "" "" "")
|
|
CHARGING_ICON=""
|
|
DISCHARGING_ICON=""
|
|
FULL_ICON="" # Plugged in, but no longer charging (fully charged)
|
|
CRITICAL_ICON=""
|
|
CRITICAL_PERCENTAGE=15
|
|
|
|
if [ -z "$BATTERY" ]; then
|
|
# shellcheck disable=SC2010
|
|
BATTERY="$(\ls -t /sys/class/power_supply | grep "BAT" | head -n 1)"
|
|
fi
|
|
|
|
if [ -z "$ADAPTER" ]; then
|
|
# shellcheck disable=SC2010
|
|
ADAPTER="$(\ls -t /sys/class/power_supply | grep -E "ADP|AC" | head -n 1)"
|
|
fi
|
|
|
|
get_bat_info() {
|
|
cat /sys/class/power_supply/"$BATTERY"/"$1"
|
|
}
|
|
|
|
get_adp_info() {
|
|
cat /sys/class/power_supply/"$ADAPTER"/"$1"
|
|
}
|
|
|
|
manufacturer="$(get_bat_info manufacturer)"
|
|
model_name="$(get_bat_info model_name)"
|
|
technology="$(get_bat_info technology)"
|
|
energy_now="$(get_bat_info energy_now)"
|
|
energy_full="$(get_bat_info energy_full)"
|
|
energy_full_design="$(get_bat_info energy_full_design)"
|
|
cycle_count="$(get_bat_info cycle_count)"
|
|
|
|
capacity="$(get_bat_info capacity)"
|
|
status="$(get_bat_info status)"
|
|
[ "$(get_adp_info online)" -eq 1 ] && adp_connected="true" || adp_connected="false"
|
|
|
|
# Quick overrides to showcase how battery works
|
|
# capacity=100
|
|
# adp_connected="true"
|
|
# status="Charging"
|
|
# status="Not charging"
|
|
# status="Discharging"
|
|
|
|
full="false"
|
|
capacity_icon="$(pick_icon "$capacity" 0 100 "${CAPACITY_ICONS[@]}")"
|
|
|
|
if [ "$status" = "Not charging" ] || [ "$status" = "Full" ] && [ "$adp_connected" = "true" ]; then
|
|
extra_icon="$FULL_ICON"
|
|
full="true"
|
|
elif [ "$status" = "Discharging" ] && [ "$capacity" -le "$CRITICAL_PERCENTAGE" ]; then
|
|
extra_icon="$CRITICAL_ICON"
|
|
elif [ "$status" = "Discharging" ]; then
|
|
extra_icon="$DISCHARGING_ICON"
|
|
elif [ "$status" = "Charging" ]; then
|
|
extra_icon="$CHARGING_ICON"
|
|
fi
|
|
|
|
[ "$capacity" -le "$CRITICAL_PERCENTAGE" ] && critical="true" || critical="false"
|
|
|
|
jq -n -c --monochrome-output \
|
|
--arg percent "$capacity" \
|
|
--arg plugged "$adp_connected" \
|
|
--arg status "$status" \
|
|
--arg capacity_icon "$capacity_icon" \
|
|
--arg extra_icon "$extra_icon" \
|
|
--arg manufacturer "$manufacturer" \
|
|
--arg model_name "$model_name" \
|
|
--arg technology "$technology" \
|
|
--arg energy_now "$energy_now" \
|
|
--arg energy_full "$energy_full" \
|
|
--arg energy_full_design "$energy_full_design" \
|
|
--arg cycle_count "$cycle_count" \
|
|
--arg critical "$critical" \
|
|
--arg full "$full" \
|
|
'$ARGS.named'
|