#!/bin/zsh source $HOME/.config/sway/bin/sway_helpers CMD=$HOME/.config/sway/bin/sway_output # BAT_PATH=/sys/class/power_supply # BAT=BAT0 # MODE=suspend-then-hibernate ## helpers function _get() { _check_app jq data=() swaymsg -t get_outputs | jq -r ".[] | .$1" | while read line; do line=${line:gs/ /_} data+=($line) done echo $data } function _outputs() { make=( $(_get make) ) model=( $(_get model) ) serial=( $(_get serial) ) name=( $(_get name) ) active=( $(_get active) ) for i in $(seq ${#make[@]}); do ac=${active[$i]/true/active} ac=${ac/false/inactive} printf " - %2d %6s %10s %20s %15s %10s\n" $i ${name[$i]} "($ac)" ${make[$i]} ${model[$i]} ${serial[$i]} done } function _enable() { n=( $(_get name) ) swaymsg output ${n[$1]} enable } function _disable() { n=( $(_get name) ) swaymsg output ${n[$1]} disable } function _interactive() { echo "outputs (any key to abort)" _outputs num=$(_outputs | wc -l) read -k 1 "o?select output: " if [ $o -le $num ]; then echo "" echo "" else echo "error: invalid output selected: $o" return 1 fi echo "actions (any key to abort)" printf " - %2s %6s\n" "1" "enable" printf " - %2s %6s\n" "2" "disable" read -k 1 "a?select action: " if [ $a -le 2 ]; then echo "" echo "" case $a in 1) echo "enabling $o" _enable $o ;; 2) echo "disabling $o" _disable $o ;; esac else echo "error: invalid action selected $a" return 1 fi } # generate enab function _nag() { _check_app swaynag name=( $(_get name) ) z=() # for n in $name; do # z+=" -z \"enable $n\" \"$CMD enable $n\"" # z+=" -z \"disable $n\" \"$CMD disable $n\"" # done # swaynag -m "control outputs" $(echo ${z[@]}) # swaynag -m "control outputs" $(echo ${z}) } ## main # _log OUTPUTS INFO args: $* case $1 in o*) echo "outputs: " _outputs ;; e*) _enable $2 ;; d*) _disable $2 ;; n*) _nag ;; -h|--help|help) echo "invalid argument: \"$1\"" echo "arguments: [outputs|enable #|disable #]" ;; *) _interactive ;; esac