summaryrefslogtreecommitdiffstats
path: root/completions/feh
diff options
context:
space:
mode:
Diffstat (limited to 'completions/feh')
-rw-r--r--completions/feh120
1 files changed, 120 insertions, 0 deletions
diff --git a/completions/feh b/completions/feh
new file mode 100644
index 0000000..f1d4b18
--- /dev/null
+++ b/completions/feh
@@ -0,0 +1,120 @@
+# bash completion for feh(1) -*- shell-script -*-
+
+_feh()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ case "$prev" in
+ --image-bg | -B)
+ COMPREPLY=($(compgen -W 'checks white black' -- "$cur"))
+ return
+ ;;
+ --filelist | --output | --output-only | --start-at | -!(-*)[foO\|])
+ _filedir
+ return
+ ;;
+ --caption-path | --fontpath | --output-dir | -!(-*)[KCj])
+ _filedir -d
+ return
+ ;;
+ --font | --menu-font | --title-font | -!(-*)[eM@])
+ # 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
+ ;;
+ --theme | -!(-*)T)
+ 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
+ ;;
+ --sort | -!(-*)S)
+ COMPREPLY=($(compgen -W 'name filename mtime width height
+ pixels size format' -- "$cur"))
+ return
+ ;;
+ --reload | --limit-height | --limit-width | --thumb-height | --thumb-width | \
+ --thumb-redraw | --magick-timeout | -!(-*)[RHWEyJ])
+ # 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
+ ;;
+ --alpha | -!(-*)a)
+ COMPREPLY=($(compgen -W '{0..255}' -- "$cur"))
+ return
+ ;;
+ --bg | -!(-*)b)
+ _filedir
+ COMPREPLY+=($(compgen -W 'trans' -- "$cur"))
+ return
+ ;;
+ --geometry | --max-dimension | --min-dimension | -!(-*)g)
+ # expect string like 640x480
+ if [[ $cur && $cur != *x* ]]; then
+ COMPREPLY=(x)
+ fi
+ COMPREPLY+=($(compgen -W "{0..9}"))
+ compopt -o nospace
+ return
+ ;;
+ --customlist | --index-info | --info | --slideshow-delay | --thumb-title | \
+ --title | -!(-*)[LD~^])
+ # argument required but no completions available
+ return
+ ;;
+ esac
+
+ $split && return
+
+ if [[ $cur == -* ]]; then
+ # Some versions of feh just output "See 'man feh'" for --help :(
+ COMPREPLY=($(compgen -W '$(_parse_help "$1" --help)' -- "$cur"))
+ if [[ ${COMPREPLY-} ]]; then
+ [[ $COMPREPLY == *= ]] && compopt -o nospace
+ return
+ fi
+ 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: filetype=sh