From 4bd7b7547fda2e8cc075b0bd0f5d27a91b4c3a96 Mon Sep 17 00:00:00 2001 From: Timofey Date: Sat, 4 Jan 2014 09:35:58 +0200 Subject: [PATCH 1/2] add support for shutdown command --- src/_shutdown | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/_shutdown diff --git a/src/_shutdown b/src/_shutdown new file mode 100644 index 0000000..f695b9d --- /dev/null +++ b/src/_shutdown @@ -0,0 +1,71 @@ +#compdef shutdown +# ------------------------------------------------------------------------------ +# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the zsh-users nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for shutdown - Shut down the system +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Timofey Titovets +# +# ------------------------------------------------------------------------------ +_shutdown(){ + local -a _1st_arguments + _1st_arguments=( + "--help:Show help" + "-H:Halt the machine" "--halt:Halt the machine" + "-P:Power-off the machine" "--poweroff:Power-off the machine" + "-r:Reboot the machine" "--reboot:Reboot the machine" + "-h:Equivalent to --poweroff, overridden by --halt" + "-k:Dont halt/power-off/reboot, just send warnings" + "--no-wall:Dont send wall message before halt/power-off/reboot" + "-c:Cancel a pending shutdown" + ) + + local context state line expl + local -A opt_args + + _arguments '*:: :->subcmds' && return 0 + + if (( CURRENT == 1 )); then + _describe -t commands "shutdown commands" _1st_arguments -V1 + return + fi + + case "$words[1]" in + *) + _arguments \ + ':list option:(now +{0,5,10,15,30} hh:mm)' + ;; + esac +} + +_shutdown "$@" From 2b6e045b242a5e92c516835f3699952b35113704 Mon Sep 17 00:00:00 2001 From: Timofey Date: Sat, 4 Jan 2014 09:37:42 +0200 Subject: [PATCH 2/2] add base completion for xinput Completions for button and property --- src/_xinput | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 src/_xinput diff --git a/src/_xinput b/src/_xinput new file mode 100644 index 0000000..ae2b375 --- /dev/null +++ b/src/_xinput @@ -0,0 +1,196 @@ +#compdef xinput +# ------------------------------------------------------------------------------ +# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the zsh-users nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for xinput +# TODO: Add property handler +# TODO: Add buttons handler +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Timofey Titovets +# +# ------------------------------------------------------------------------------ +_xinput(){ + # list of xinput arguments + local -a _1st_arguments + _1st_arguments=( + 'version:show version' '--version:show version' + 'help:show help options' '--help:show help options' + get-feedbacks + set-ptr-feedback + set-integer-feedback + get-button-map + set-button-map + set-pointer + 'set-mode:change the mode of device' '--set-mode:change the mode of device' + 'list:show devices' '--list:show devices' + query-state + test --test + create-master + remove-master + reattach + float + set-cp + test-xi2 + map-to-output + list-props + set-int-prop + set-float-prop + set-atom-prop + watch-props + delete-prop + set-prop + 'disable:disable the device' '--disable:disable the device' + 'enable:enable the device' '--enable:enable the device' + --get-feedbacks + --set-ptr-feedback + --set-integer-feedback + --get-button-map + --set-button-map + --set-pointer + --query-state + --create-master + --remove-master + --reattach + --float + --set-cp + --test-xi2 + --map-to-output + --list-props + --set-int-prop + --set-float-prop + --set-atom-prop + --watch-props + --delete-prop + --set-prop + ) + + local context state line expl + local -A opt_args + + _arguments '*:: :->subcmds' && return 0 + + if (( CURRENT == 1 )); then + _describe -t commands "xinput commands" _1st_arguments -V1 + return + fi + + _xinput_devices_id=($(xinput list --id-only)) + for i in $(xinput list --id-only) + do + _xinput_devices_name[$i]="$(xinput list --name-only $i)" + done + _xinput_devices=( $_xinput_devices_id $_xinput_devices_name ) + + # xinput arguments handler + case "$words[1]" in + --get-feedbacks|--set-ptr-feedback|--get-button-map|--query-state|--list-props|--watch-props|get-feedbacks|set-ptr-feedback|get-button-map|query-state|list-props|watch-props|--enable|enable|--map-to-output|map-to-output|--disable|disable) + _arguments \ + ':list option:($_xinput_devices)' + ;; + --list|list) + _arguments \ + ':list option:($_xinput_devices --short --long --name-only --id-only)' \ + ':list option:(--short --long --name-only --id-only)' + ;; + --set-integer-feedback|set-integer-feedback) + _arguments \ + ':list option:($_xinput_devices)' \ + ':list option:( feedback )' \ + ':list option:( $_xinput_devices_id )' + ;; + --set-button-map|set-button-map) + _arguments \ + ':list option:($_xinput_devices)' #map button 1 [map button 2 [...]] + ;; + --set-pointer|set-pointer) + _arguments \ + ':list option:($_xinput_devices)' # [x index y index] + ;; + --set-mode|set-mode) + _arguments \ + ':list option:($_xinput_devices)' \ + ':list option:(ABSOLUTE RELATIVE)' + ;; + --test|test) + _arguments \ + ':list option:(-proximity $_xinput_devices )' \ + ':list option:($_xinput_devices)' + ;; + --reattach|reattach) + _arguments \ + ':list option:($_xinput_devices)' \ + ':list option:(master slave)' + ;; + --float|float) + _arguments \ + ':list option:($_xinput_devices_id)' + ;; + --test-xi2|test-xi2) + _arguments \ + ':list option:($_xinput_devices --root)' \ + ':list option:($_xinput_devices)' + ;; + --delete-prop|delete-prop) + _arguments \ + ':list option:($_xinput_devices)' #property + ;; + --create-master|create-master) + _arguments \ + ':list option:($_xinput_devices_id)' # [sendCore (dflt:1)] [enable (dflt:1)] + ;; + --remove-master|remove-master) + _arguments \ + ':list option:($_xinput_devices_id)' # [Floating|AttachToMaster (dflt:Floating)] [returnPointer] [returnKeyboard] + ;; + # --set-cp|set-cp); window device;; + --set-prop|set-prop) + _arguments \ + ':list option:($_xinput_devices)' \ + ':list option:(--type={atom,float,int} --format={8,16,32})' \ + ':list option:(--type={atom,float,int} --format={8,16,32})' # property val [val ...] + ;; + --set-int-prop|set-int-prop) + _arguments \ + ':list option:($_xinput_devices)' # property format (8, 16, 32) val [val ...] + ;; + --set-float-prop|set-float-prop) + _arguments \ + ':list option:($_xinput_devices)' # property val [val ...] + ;; + --set-atom-prop|set-atom-prop) + _arguments \ + ':list option:($_xinput_devices)' # property val [val ...] + ;; + esac +} + +_xinput "$@"