# autorandr/auto-disper completion by Maciej 'macieks' Sitarz # XDG additions and service dir filtering by Vladimir-csp _autorandr () { local cur prev opts lopts prfls AR_DIRS OIFS COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="-h -c -s -r -l -d" lopts="--help --change --save --remove --load --default --force --fingerprint --config --dry-run" # find system-level autorandr dirs OIFS="$IFS" IFS=':' for DIR in ${XDG_CONFIG_DIRS:-/etc/xdg} do IFS="$OIFS" [ -d "$DIR/autorandr" ] && AR_DIRS=( "${AR_DIRS[@]}" "$DIR/autorandr" ) done IFS="$OIFS" # find user-level autorandr dir if [ -d "$HOME/.autorandr" ]; then AR_DIRS=( "${AR_DIRS[@]}" "$HOME/.autorandr" ) elif [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/autorandr/" ]; then AR_DIRS=( "${AR_DIRS[@]}" "${XDG_CONFIG_HOME:-$HOME/.config}/autorandr/" ) fi if [ -n "${AR_DIRS}" ] then prfls="$(find "${AR_DIRS[@]}" -mindepth 1 -maxdepth 1 -type d ! -name "*.d" -printf '%f\n' | sort -u)" else prfls="" fi case "${cur}" in --*) COMPREPLY=( $( compgen -W "${lopts}" -- $cur ) ) return 0 ;; -*) COMPREPLY=( $( compgen -W "${opts} ${lopts}" -- $cur ) ) return 0 ;; *) if [ $COMP_CWORD -eq 1 ]; then COMPREPLY=( $( compgen -W "${opts} ${lopts}" -- $cur ) ) fi ;; esac case "${prev}" in -r|--remove|-l|--load|-d|--default) COMPREPLY=( $( compgen -W "${prfls}" -- $cur ) ) return 0 ;; *) ;; esac return 0 } complete -F _autorandr autorandr