diff options
Diffstat (limited to 'scripts/swall')
-rwxr-xr-x | scripts/swall | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/scripts/swall b/scripts/swall new file mode 100755 index 0000000..6d3b854 --- /dev/null +++ b/scripts/swall @@ -0,0 +1,58 @@ +#!/bin/sh + +# TODO add the option error checking with optind + +err() { + echo "${0}": "${1}" + exit 1 +} + + +help() { +cat << EOF +$0: Wrapper script to set wallpapers + +options: + -d [File] Select a wallpaper or a directory + -h Print this message and exit + -c Remove the current wallpaper + +NOTE: default wallpaper directory is ~/.config/wallpapers +EOF +} + +waldir="${XDG_CONFIG_HOME:-$HOME}/.config/wallpapers" + +while getopts "hcd:" option; do + case "${option}" in + h) + help + exit 0 + ;; + c) + xwallpaper --clear > /dev/null 2>&1 \ + || err "Couldn't clear wallpaper" + exit 0 + ;; + d) buf="${OPTARG}" ;; + *) err 'add -h for help' ;; + esac +done + + +if [ -n "${buf}" ]; then + case $(file -b --mime-type "${buf}") in + image/*) image="${buf}" ;; + inode/directory) waldir="${buf}" ;; + *) err "Couldn't read given file" ;; + esac +fi + +if [ -z "${image}" ]; then + image=$(find "${waldir}" -iregex '.*\.jpeg\|.*\.jpng\|.*\.png' 2>/dev/null \ + | shuf -n 1 2>/dev/null) +fi + +xwallpaper --zoom "${image}" > /dev/null 2>&1 || err "Couldn't set wallpaper" + +echo "${image}" |