--- /dev/null
+#compdef autorandr
+
+__autorandr_profile () {
+ declare -a virtual
+ virtual=("off":"disable all outputs"
+ "common":"clone at the largest common resolution"
+ "clone-largest":"clone with the largest resolution"
+ "horizontal":"stack all connected outputs horizontally"
+ "vertical":"stack all connected outputs vertically")
+ _describe -t virtual-profiles "virtual profiles" virtual
+ __autorandr_saved_profile
+}
+__autorandr_saved_profile () {
+ declare -a saved
+ saved=(${${(f)${:-$(autorandr)}}/ /:})
+ _describe -t profiles "saved profiles" saved
+}
+
+_autorandr () {
+ local curcontext="$curcontext" state line exclude="-s --save -l --load -r --remove -c --change"
+
+ _arguments -C \
+ "(: -)"{-h,--help}"[get help]" \
+ "($exclude)"{-c,--change}"[automatically load the first detected profile]" \
+ "($exclude)"{-d,--default}"[set default profile]:profile:__autorandr_profile" \
+ "($exclude)"{-l,--load}"[load profile]:profile:__autorandr_profile" \
+ "($exclude)"{-s,--save}"[save current setup to a profile]:profile: " \
+ "($exclude)"{-r,--remove}"[remove profile]:profile:__autorandr_saved_profile" \
+ --batch"[run autorandr for all users]" \
+ --current"[list current active configurations]" \
+ --config"[dump current xrandr setup]" \
+ --debug"[enable verbose output]" \
+ --dry-run"[don't change anything]" \
+ --fingerprint"[fingerprint current hardware]" \
+ --force"[force loading of a profile]" \
+ --skip-options"[skip xrandr options]:xrandr options:_values -s , options gamma brightness panning transform primary mode pos rate" \
+ --version"[show version]"
+}
+
+_autorandr "$@"