This commit adds a fullscreen rule for configuring whether the view should be drawn fullscreen on start up. The actions "fullscreen" and "no-fullscreen" map to the two possible state of a view and semantically operate on the same rule list. The behavior of adding, deleting and listing rules follows that of float and ssd.
		
			
				
	
	
		
			145 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| function __riverctl_completion ()
 | |
| {
 | |
| 	local rule_actions="float no-float ssd csd tag output position dimensions fullscreen no-fullscreen"
 | |
| 	if [ "${COMP_CWORD}" -eq 1 ]
 | |
| 	then
 | |
| 		OPTS=" \
 | |
| 			keyboard-group-create \
 | |
| 			keyboard-group-destroy \
 | |
| 			keyboard-group-add \
 | |
| 			keyboard-group-remove \
 | |
| 			keyboard-layout \
 | |
| 			exit \
 | |
| 			focus-output \
 | |
| 			focus-view \
 | |
| 			input \
 | |
| 			list-inputs \
 | |
| 			list-input-configs \
 | |
| 			move \
 | |
| 			resize \
 | |
| 			rule-add \
 | |
| 			rule-del \
 | |
| 			list-rules \
 | |
| 			snap \
 | |
| 			send-to-output \
 | |
| 			spawn \
 | |
| 			swap \
 | |
| 			toggle-float \
 | |
| 			toggle-fullscreen \
 | |
| 			zoom \
 | |
| 			default-layout \
 | |
| 			output-layout \
 | |
| 			send-layout-cmd \
 | |
| 			set-focused-tags \
 | |
| 			focus-previous-tags \
 | |
| 			send-to-previous-tags \
 | |
| 			set-view-tags \
 | |
| 			toggle-focused-tags \
 | |
| 			toggle-view-tags \
 | |
| 			spawn-tagmask \
 | |
| 			declare-mode \
 | |
| 			enter-mode \
 | |
| 			map \
 | |
| 			map-pointer \
 | |
| 			map-switch \
 | |
| 			unmap \
 | |
| 			unmap-pointer \
 | |
| 			unmap-switch \
 | |
| 			attach-mode \
 | |
| 			background-color \
 | |
| 			border-color-focused \
 | |
| 			border-color-unfocused \
 | |
| 			border-color-urgent \
 | |
| 			border-width \
 | |
| 			focus-follows-cursor \
 | |
| 			hide-cursor \
 | |
| 			set-repeat \
 | |
| 			set-cursor-warp \
 | |
| 			xcursor-theme"
 | |
| 		COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[1]}"))
 | |
| 	elif [ "${COMP_CWORD}" -eq 2 ]
 | |
| 	then
 | |
| 		case "${COMP_WORDS[1]}" in
 | |
| 			"focus-output"|"send-to-output") OPTS="next previous" ;;
 | |
| 			"focus-view"|"swap") OPTS="next previous up down left right" ;;
 | |
| 			"input") OPTS="$(riverctl list-inputs | sed '/configured:/d')" ;;
 | |
| 			"move"|"snap") OPTS="up down left right" ;;
 | |
| 			"resize") OPTS="horizontal vertical" ;;
 | |
| 			"rule-add"|"rule-del") OPTS="-app-id -title $rule_actions" ;;
 | |
| 			"list-rules") OPTS="float ssd tag output position dimensions fullscreen" ;;
 | |
| 			"map") OPTS="-release -repeat -layout" ;;
 | |
| 			"unmap") OPTS="-release" ;;
 | |
| 			"attach-mode") OPTS="top bottom" ;;
 | |
| 			"focus-follows-cursor") OPTS="disabled normal always" ;;
 | |
| 			"set-cursor-warp") OPTS="disabled on-output-change on-focus-change" ;;
 | |
| 			"hide-cursor") OPTS="timeout when-typing" ;;
 | |
| 			*) return ;;
 | |
| 		esac
 | |
| 		COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[2]}"))
 | |
| 	elif [ "${COMP_CWORD}" -eq 3 ]
 | |
| 	then
 | |
| 		if [ "${COMP_WORDS[1]}" == "input" ]
 | |
| 		then
 | |
| 			OPTS="events \
 | |
| 				accel-profile \
 | |
| 				pointer-accel \
 | |
| 				click-method \
 | |
| 				drag \
 | |
| 				drag-lock \
 | |
| 				disable-while-typing \
 | |
| 				middle-emulation \
 | |
| 				natural-scroll \
 | |
| 				left-handed \
 | |
| 				tap \
 | |
| 				tap-button-map \
 | |
| 				scroll-method \
 | |
| 				scroll-button"
 | |
| 			COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[3]}"))
 | |
| 		elif [ "${COMP_WORDS[1]}" == "hide-cursor" ]
 | |
| 		then
 | |
| 			case "${COMP_WORDS[2]}" in
 | |
| 				"when-typing") OPTS="enabled disabled" ;;
 | |
| 				*) return ;;
 | |
| 			esac
 | |
| 			COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[3]}"))
 | |
| 		fi
 | |
| 	elif [ "${COMP_CWORD}" -eq 4 ]
 | |
| 	then
 | |
| 		if [ "${COMP_WORDS[1]}" == "input" ]
 | |
| 		then
 | |
| 			case "${COMP_WORDS[3]}" in
 | |
| 				"events") OPTS="enabled disabled disabled-on-external-mouse" ;;
 | |
| 				"accel-profile") OPTS="none flat adaptive" ;;
 | |
| 				"click-method") OPTS="none button-areas clickfinger" ;;
 | |
| 				"drag"|"drag-lock"|"disable-while-typing"|"middle-emulation"|"left-handed"|"tap") OPTS="enabled disabled" ;;
 | |
| 				"tap-button-map") OPTS="left-right-middle left-middle-right" ;;
 | |
| 				"scroll-method") OPTS="none two-finger edge button" ;;
 | |
| 				*) return ;;
 | |
| 			esac
 | |
| 			COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[4]}"))
 | |
| 		elif [ "${COMP_WORDS[1]:0:5}" == "rule-" ]
 | |
| 		then
 | |
| 			case "${COMP_WORDS[2]}" in
 | |
| 				"-app-id") OPTS="-title $rule_actions" ;;
 | |
| 				"-title") OPTS="-app-id $rule_actions" ;;
 | |
| 				*) return ;;
 | |
| 			esac
 | |
| 			COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[4]}"))
 | |
| 		fi
 | |
| 	elif [ "${COMP_CWORD}" -eq 6 ]
 | |
| 	then
 | |
| 		if [ "${COMP_WORDS[1]:0:5}" == "rule-" ]
 | |
| 		then
 | |
| 			case "${COMP_WORDS[4]}" in
 | |
| 				"-app-id"|"-title") OPTS="$rule_actions" ;;
 | |
| 				*) return ;;
 | |
| 			esac
 | |
| 			COMPREPLY=($(compgen -W "${OPTS}" -- "${COMP_WORDS[6]}"))
 | |
| 		fi
 | |
| 	else
 | |
| 		return
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| complete -F __riverctl_completion riverctl
 |