117 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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
 |