diff options
-rw-r--r-- | pkgs/simple/q-power_supply.nix | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/pkgs/simple/q-power_supply.nix b/pkgs/simple/q-power_supply.nix index 5e7cd0d..b7e5aaa 100644 --- a/pkgs/simple/q-power_supply.nix +++ b/pkgs/simple/q-power_supply.nix @@ -7,11 +7,25 @@ writeDashBin "q-power_supply" '' eval "$(${gnused}/bin/sed -n ' s/^\([A-Z_]\+=[0-9A-Za-z_-]*\)$/export \1/p ' $uevent)" - case $POWER_SUPPLY_NAME in - AC|Mains) - exit # not battery + case $POWER_SUPPLY_TYPE in + Battery) + power_supply_battery "$uevent" + ;; + Mains) + power_supply_mains "$uevent" + ;; + UPS|USB|Wireless) + echo "$uevent: warning: unsuppoerted type: $POWER_SUPPLY_TYPE" >&2 + exit 1 + ;; + *) + echo "$uevent: warning: unknown type: $POWER_SUPPLY_TYPE" >&2 + exit 2 ;; esac + )} + + power_supply_battery() {( exec </dev/null exec ${gawk}/bin/awk ' function die(s) { @@ -146,6 +160,18 @@ writeDashBin "q-power_supply" '' ' )} + power_supply_mains() {( + set -efu + uevent=$1 + case $POWER_SUPPLY_ONLINE in + 0) printf '%s: [31moffline[m\n' "$POWER_SUPPLY_NAME";; + 1) printf '%s: [32monline[m\n' "$POWER_SUPPLY_NAME";; + 2) printf '%s: [33monline[m\n' "$POWER_SUPPLY_NAME";; + *) printf '%s: [35munknown VBUS state: %s[m\n' "$POWER_SUPPLY_NAME" "$POWER_SUPPLY_ONLINE";; + esac + )} + + for uevent in /sys/class/power_supply/*/uevent; do power_supply "$uevent" || : done |