#!/bin/zsh mode="-f" offset_x=(-x 0) offset_y=(-y 0) background=(-b "theme.bg_default") zparseopts -D -K h=help -help=help c=mode f=mode t=mode m=mode x:=offset_x y:=offset_y s:=screen i=ignore_aspect b:=background u=update wall="$1" if [ -n "$help" ] || [ -z "$wall" ]; then echo "usage: $0 [opts] file options: -s screen number -c centered -f fit -t tiled -m maximized -x, -y offset (for -t, -m) -i ignore_aspect (for -m) -b background color (for -c, -f) -u update ~/.wallpaper symlink" exit 1 fi if [[ "${background[2]}" != "theme.bg_default" ]]; then background[2]="'${background[2]}'" fi case "$mode" in -c) method=centered extra_args=", ${background[2]}" ;; -f) method=fit extra_args=", ${background[2]}" ;; -t) method=tiled extra_args=", {x = ${offset_x[2]}, y = ${offset_y[2]}}" ;; -m) method=maximized if [ -n "${ignore_aspect}" ]; then ignore_aspect=true else ignore_aspect=false fi extra_args=", ${ignore_aspect}, {x = ${offset_x[2]}, y = ${offset_y[2]}}" ;; *) exit ;; esac echo "require('gears').wallpaper.${method}(\"${wall}\",1${extra_args})" echo "for s = 1, screen.count() do require('gears').wallpaper.${method}(\"${wall}\",s${extra_args}) end" | awesome-client if [[ -n "$update" ]]; then rm ~/.wallpaper ln -s ${wall} ~/.wallpaper fi