awesomewm/scripts/awsetbg

66 lines
1.3 KiB
Bash
Executable file

#!/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