#!/bin/bash source $HOME/.config/sway/bin/sway_helpers BAT_PATH=/sys/class/power_supply BAT=BAT0 MEDIA_APP=playerctl INHIBIT_FILE=$HOME/.inhibit_suspend ## helpers # 1: discharging # 0: charging/full function _state() { f=$BAT_PATH/$BAT/status # default to discharging when status file not found s=1 if [ -e $f ]; then s=$(grep -c Discharging $f) fi echo $s } function _suspend() { _check_inhibit $INHIBIT_FILE state=$(_state) force=${1:-0} mode=${2:-suspend-then-hibernate} if [ $state -eq 1 -o $force -eq 1 ]; then _log SUSPEND INFO starting. state: $state, force: $force, mode: $mode $MEDIA_APP stop systemctl $mode else _log SUSPEND INFO aborting. state: $state, force: $force, mode: $mode fi } ## main _log SUSPEND INFO args: $* case $1 in i*) _set_inhibit $INHIBIT_FILE $2 ;; suspend-battery) _suspend 0 suspend-then-hibernate ;; suspend) _suspend 1 suspend ;; suspend-hib) _suspend 1 suspend-then-hibernate ;; *) echo "invalid argument: \"$1\"" echo "arguments: [inhibit [on|off]|suspend-battery|suspend-only|suspend]" ;; esac