Igor Murzov 63574c8f14 fbi, feh: Complete more supported file formats.
Since release 2.4 feh uses convert(1) from ImageMagick to load files in
unsupported formats just like fbi does, so add some more extensions to
the list of supported formats. Also add 'cdr' and 'otf', 'ttf' as these
formats are discovered to work fine.
2012-04-08 17:19:53 +04:00

114 lines
4.0 KiB
Bash

# 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 'default 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 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)
# 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