diff options
Diffstat (limited to 'Completion/Linux')
-rw-r--r-- | Completion/Linux/Command/_acpitool | 69 | ||||
-rw-r--r-- | Completion/Linux/Type/_wakeup_capable_devices | 15 |
2 files changed, 84 insertions, 0 deletions
diff --git a/Completion/Linux/Command/_acpitool b/Completion/Linux/Command/_acpitool new file mode 100644 index 000000000..e7dcb4ea1 --- /dev/null +++ b/Completion/Linux/Command/_acpitool @@ -0,0 +1,69 @@ +#compdef acpitool + +local ret=1 selbrands disambig +typeset -a brands args + +if ! zstyle -a ":completion:${curcontext}:" acpi-extensions brands || \ + (( $brands[(I)detect] )); then + [[ -d /proc/acpi/toshiba ]] && brands+=toshiba + [[ -d /proc/acpi/asus ]] && brands+=asus + [[ -d /proc/acpi/ibm ]] && brands+=thinkpad +elif (( $brands[(I)all] )); then + brands=(toshiba asus thinkpad) +fi + +args=( + '(-a --ac_adapter)'{-a,--ac_adapter}'[show AC adapter presence]' + '-b[show battery status for available batteries]' + '(-B --battery)'{-B,--battery}'[show detailed battery status for all batteries found]' + '(-c --cpu)'{-c,--cpu}'[show CPU information]' + '(-a --ac_adapter -A -b -B --battery -c --cpu -e -f --fan -t --thermal -w)-e[show just about everything]' + '(-f --fan)'{-f,--fan}'[show fan status]' + '(-h --help)'{-h,--help}'[display help]' + '(-s --suspend)'{-s,--suspend}'[suspend machine to memory (sleep state S3)]' + '-S[suspend machine to disk (sleep state S4)]' + '(-t --thermal)'{-t,--thermal}'[show thermal zone(s) information and trip points]' + '-v[show more verbose output]' + '(-V --version)'{-V,--version}'[output version information and exit]' + '-w[show the wakeup capable devices]' + '-W+[toggle enable/disable wakeup capable device]: :_wakeup_capable_devices' +) + +if (( $brands[(I)asus] )); then + disambig= + (( $brands[(I)(toshiba|thinkpad)] )) && disambig='Asus ' + args+=( + '(-A --Asus)'{-A,--Asus}'[show supported Asus ACPI extensions]' + '-m+[set mail LED status]:mail LED status:((1\:on 0\:off))' + '-n+[set wireless LED status]:wireless LED status:((1\:on 0\:off))' + '-o+[set LCD panel status]:LCD panel status:((1\:on 0\:off))' + "-z+[set ${disambig}LCD brightness level]:${disambig}LCD brightness level:(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)" + ) +fi + +selbrands= +if (( $brands[(I)toshiba] )); then + selbrands=Toshiba + args+=( + '-F+[force fan on or switch back to auto mode]:fan status:((1\:on 0\:auto))' + '(-T --Toshiba)'{-T,--Toshiba}'[show supported Toshiba ACPI extensions]' + ) +fi + +if (( $brands[(I)thinkpad] )); then + [[ -n $selbrands ]] && selbrands+=/ + selbrands=${selbrands}Thinkpad + args+=('-j[eject ultrabay device]') +fi + +if [[ -n $selbrands ]]; then + disambig= + (( $brands[(I)asus] )) && disambig="$selbrands " + args+=( + "-l+[set ${disambig}LCD brightness level]:${disambig}LCD brightness level:(0 1 2 3 4 5 6 7)" + ) +fi + +_arguments -s $args && ret=0 + +return ret diff --git a/Completion/Linux/Type/_wakeup_capable_devices b/Completion/Linux/Type/_wakeup_capable_devices new file mode 100644 index 000000000..dd79d2d0d --- /dev/null +++ b/Completion/Linux/Type/_wakeup_capable_devices @@ -0,0 +1,15 @@ +#autoload + +local ret=1 item devline expl +typeset -a desc + +_call_program wakeup-capable-devices acpitool -w 2> /dev/null | +while read devline; do + [[ -n ${devline:#(#b)([0-9]#).[[:space:]]#([^[:space:]]#)[[:space:]]#[0-9]#[[:space:]]#(*)} ]] && continue + zformat -f item "${match[1]}:%8d (currently ${match[3]})" d:${match[2]} + desc+=$item +done + +_describe -t wakeup-capable-devices 'wakeup capable device' desc $@ && ret=0 + +return ret |