summaryrefslogtreecommitdiff
path: root/completions/feh
blob: 71e597987324ecbdca0add6cfa59469de93e61ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# 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") )
        [[ $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: filetype=sh