summaryrefslogtreecommitdiff
path: root/scripts/swall
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/swall')
-rwxr-xr-xscripts/swall58
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}"