# bash completion for feh(1) -*- shell-script -*- _feh() { local cur prev words cword split _init_completion -s || return case "$prev" in -B|--image-bg) COMPREPLY=( $( compgen -W 'checks white black' -- "$cur" ) ) return ;; -f|--filelist|-o|--output|-O|--output-only|-\||--start-at) _filedir return ;; -K|--caption-path|-C|--fontpath|-j|--output-dir) _filedir -d return ;; -e|--font|-M|--menu-font|-@|--title-font) # expect string like "dejavu.ttf/12" if [[ "$cur" == */* ]]; then # expect integer value COMPREPLY=( $( compgen -P "$cur" -W '{0..9}' ) ) compopt -o nospace return fi 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 ;; -T|--theme) local conf_path=~/.config/feh/themes local theme_name theme_opts [[ -r $conf_path ]] || return while read theme_name theme_opts; do if [[ "$theme_name" == '#'* || "$theme_name" == "" ]]; then continue fi COMPREPLY+=( $( compgen -W "$theme_name" -- "$cur" ) ) done < "$conf_path" return ;; -S|--sort) COMPREPLY=( $( compgen -W 'name filename mtime width height pixels size format' -- "$cur" ) ) return ;; -R|--reload|-H|--limit-height|-W|--limit-width|-E|--thumb-height|\ -y|--thumb-width|-J|--thumb-redraw|--magick-timeout) # expect integer value COMPREPLY+=( $( compgen -W '{0..9}' ) ) compopt -o nospace return ;; --zoom) # expect integer value or "max", "fill" COMPREPLY=( $( compgen -W 'max fill' -- "$cur" ) ) if [[ ! $cur || ! $COMPREPLY ]]; then COMPREPLY+=( $( compgen -W '{0..9}' ) ) compopt -o nospace fi return ;; -a|--alpha) COMPREPLY=( $( compgen -W '{0..255}' -- "$cur" ) ) return ;; -b|--bg) _filedir COMPREPLY+=( $( compgen -W 'trans' -- "$cur" ) ) return ;; -g|--geometry|--max-dimension|--min-dimension) # expect string like 640x480 if [[ $cur && "$cur" != *x* ]]; then COMPREPLY=( x ) fi COMPREPLY+=( $( compgen -W "{0..9}" ) ) compopt -o nospace return ;; -L|--customlist|--index-info|--info|-D|--slideshow-delay|-~|\ --thumb-title|-^|--title) # argument required but no completions available return ;; esac $split && return if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W '$( _parse_help "$1" --help )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace [[ $COMPREPLY ]] && return fi # 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