# bash completion for feh(1) -*- shell-script -*- proc _feh { local cur prev words cword split _init_completion -s || return match $prev { with -B|--image-bg setglobal COMPREPLY = ''( $( compgen -W 'checks white black' -- "$cur" ) ) return with -f|--filelist|-o|--output|-O|--output-only|-\||--start-at _filedir return with -K|--caption-path|-C|--fontpath|-j|--output-dir _filedir -d return with -e|--font|-M|--menu-font|-@|--title-font # expect string like "dejavu.ttf/12" if [[ "$cur" == */* ]] { # expect integer value setglobal COMPREPLY = ''( $( compgen -P "$cur" -W '{0..9}' ) ) compopt -o nospace return } local font_path # font_path="$( imlib2-config --prefix 2> /dev/null )/share/imlib2/data/fonts" # COMPREPLY=( $( cd "$font_path" 2> /dev/null; compgen -f \ # -X "!*.@([tT][tT][fF])" -S / -- "$cur" ) ) for (( i=${#words[@]}-1; i>0; i-- )); do if [[ ${words[i]} == -@(C|-fontpath) ]]; then font_path="${words[i+1]}" COMPREPLY+=( $( cd "$font_path" 2> /dev/null; compgen -f \ -X "!*.@([tT][tT][fF])" -S / -- "$cur" ) ) fi done compopt -o nospace return with -T|--theme local conf_path=~/.config/feh/themes local theme_name theme_opts [[ -r $conf_path ]] || return while read theme_name theme_opts { if [[ "$theme_name" == '#'* || "$theme_name" == "" ]] { continue } setglobal COMPREPLY = ''( $( compgen -W "$theme_name" -- "$cur" ) ) } < "$conf_path" return with -S|--sort setglobal COMPREPLY = ''( $( compgen -W 'name filename mtime width height pixels size format' -- "$cur" ) ) return with -R|--reload|-H|--limit-height|-W|--limit-width|-E|--thumb-height|\ -y|--thumb-width|-J|--thumb-redraw|--magick-timeout # expect integer value setglobal COMPREPLY = ''( $( compgen -W '{0..9}' ) ) compopt -o nospace return with --zoom # expect integer value or "max", "fill" setglobal COMPREPLY = ''( $( compgen -W 'max fill' -- "$cur" ) ) if [[ ! $cur || ! $COMPREPLY ]] { setglobal COMPREPLY = ''( $( compgen -W '{0..9}' ) ) compopt -o nospace } return with -a|--alpha setglobal COMPREPLY = ''( $( compgen -W '{0..255}' -- "$cur" ) ) return with -b|--bg _filedir setglobal COMPREPLY = ''( $( compgen -W 'trans' -- "$cur" ) ) return with -g|--geometry|--max-dimension|--min-dimension # expect string like 640x480 if [[ $cur && "$cur" != *x* ]] { setglobal COMPREPLY = ''( x ) } setglobal COMPREPLY = ''( $( compgen -W "{0..9}" ) ) compopt -o nospace return with -L|--customlist|--index-info|--info|-D|--slideshow-delay|-~|\ --thumb-title|-^|--title # argument required but no completions available return } $split && return if [[ "$cur" == -* ]] { setglobal COMPREPLY = ''( $( compgen -W '$( _parse_help "$1" --help )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace [[ $COMPREPLY ]] && return } # FIXME: It is hard to determine correct supported extensions. # feh can handle any format that imagemagick can plus some others _filedir 'xpm|tif?(f)|png|p[npgba]m|iff|?(i)lbm|jp?(e)g|jfi?(f)|gif|bmp|arg?(b)|tga|xcf|ani|ico|?(e)ps|pdf|dvi|txt|svg?(z)|cdr|[ot]tf' } && complete -F _feh feh # ex: ts=4 sw=4 et filetype=sh