#compdef systemd-inhibit _systemd_inhibit_command(){ if (( CURRENT == 1 )); then compset -q _normal else local n=${words[(b:2:i)[^-]*]} if (( n <= CURRENT )); then compset -n $n _alternative \ 'files:file:_files' \ 'commands:command:_normal' && return 0 fi _default fi } _inhibit_what() { local _inhibit _inhibit=(shutdown sleep idle handle-power-key handle-suspend-key handle-hibernate-key handle-lid-switch) _values -s : "${_inhibit[@]}" } _arguments \ {-h,--help}'[Show this help]' \ '--version[Show package version]' \ '--what=[Operations to inhibit]:options:_inhibit_what' \ '--who=[A descriptive string who is inhibiting]:who is inhibiting:' \ '--why=[A descriptive string why is being inhibited]:reason for the lock:' \ '--mode=[One of block or delay]:lock mode:( block delay )' \ '--list[List active inhibitors]' \ '*:commands:_systemd_inhibit_command'