diff --git a/bin/suspend b/bin/suspend new file mode 100755 index 0000000..575e3a4 --- /dev/null +++ b/bin/suspend @@ -0,0 +1,39 @@ +#!/bin/bash +BAT_PATH=/sys/class/power_supply +BAT=BAT0 +MODE=suspend-then-hibernate + +# 0: charging +# 1: discharging/unknown +function _state() { + f=$BAT_PATH/$BAT/status + s=1 + if [ -e $f ]; then + s=$(grep -c Discharging $f) + fi + echo $s +} + +function _suspend() { + state=$(_state) + force=${1:-0} + echo "INFO: state: $state, force: $force" + if [ $state -eq 1 -o $force -eq 1 ]; then + systemctl $MODE + else + echo "ERROR: state: $state, force: $force" + fi +} + +case $1 in + suspend) + _suspend 0 + ;; + force) + _suspend 1 + ;; + *) + echo "ERROR: invalid command: \"$1\"" + echo "possible options: [suspend|force]" + ;; +esac diff --git a/config b/config index 848eec1..cc7d1a6 100644 --- a/config +++ b/config @@ -18,6 +18,7 @@ set $term termite set $background $HOME/Cloud/xkonni/Pictures/wallpaper/5k_bavarian_forest_bw.jpg set $lock_cmd $HOME/.config/sway/bin/lock set $brightness_cmd "$HOME/.config/sway/bin/brightness +set $suspend_cmd "$HOME/.config/sway/bin/suspend set $volume_cmd "$HOME/.config/sway/bin/volume set $font "Cascadia Code PL Regular 10" @@ -33,11 +34,16 @@ output * bg $background fill # You can get the names of your outputs by running: swaymsg -t get_outputs ### Idle configuration +# 10 min screen off +# 15 min lock +# 30 min suspend on battery +# 120 min suspend exec swayidle -w \ timeout 600 '$lock_cmd off' \ resume '$lock_cmd on' \ timeout 900 '$lock_cmd lockonly' \ - timeout 1800 '$lock_cmd suspend' \ + timeout 1800 '$suspend_cmd suspend' \ + timeout 7200 '$suspend_cmd force' \ before-sleep '$lock_cmd lock' bindsym $mod+Ctrl+Escape exec '$lock_cmd lock'