mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-03-12 04:36:22 -07:00
121 lines
4.2 KiB
Bash
121 lines
4.2 KiB
Bash
# 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
|