#!/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="${HOME}"/.config/wallpapers # FIXME add xdg home variable 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}"