aboutsummaryrefslogtreecommitdiffstats
path: root/src/_xdg-mime
blob: 2f28648b23aae4b830d83948052f7dc23e4b1aae (plain) (blame)
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
#compdef xdg-mime

# Description:
#   ZSH Completion for xdg-mime 1.2.1 from
#   xdg-utils (https://gitlab.freedesktop.org/xdg/xdg-utils)
#
# Authors:
#   ligelowbee@gmail.com

_xdg-mime_query() {
  _arguments \
      "1:Query Type:((
          filetype\:'Returns mime-type of a file'
          default\:'Returns default application for a mime-type'))" \
      "*::arg:->args"

  case $line[1] in
    filetype) _arguments '*: :_files' ;;
    default) _arguments '*: :_mime_types' ;;
  esac
}

_xdg-mime() {
  local line
  local -a appdirs=(
    /usr/share/applications
    "$HOME/.local/share/applications"
  )

  _arguments -C \
    "--help[Show help info]" \
    "--version[Show version info]" \
    "--manual[Show manual page]" \
    "1:xdg-mime command:(query default install uninstall)" \
    "*::arg:->args"

  case $line[1] in
    query) _xdg-mime_query ;;
    default)
      _arguments \
        "1:Application:_files -W appdirs -g '*.desktop'" \
        '2: :_mime_types'
        ;;
    install)
      _arguments \
        "--mode=[Install for user or system]: :((
            user\:'Install for this user only'
            system\:'Install for all users'))" \
        "--novendor[Don't check mimetype-file for vendor prefix]" \
        '*:XML mimetypes file:_files -g "*.xml"'
      ;;
    uninstall)
      _arguments \
        "--mode=[Uninstall for user or whole system]: :((
            user\:'Uninstall for this user only'
            system\:'Uninstall for all users'))" \
        '*:XML mimetypes file:_files -g "*.xml"'
      ;;
  esac
}

_xdg-mime "$@"

# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: filetype=zsh expandtab softtabstop=2 tabstop=2 shiftwidth=2