summaryrefslogtreecommitdiff
path: root/.local/bin
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin')
-rwxr-xr-x.local/bin/cwall67
1 files changed, 67 insertions, 0 deletions
diff --git a/.local/bin/cwall b/.local/bin/cwall
new file mode 100755
index 0000000..49c11de
--- /dev/null
+++ b/.local/bin/cwall
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+bgpid="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}}/swaybg.pid"
+bgroot="${XDG_DATA_HOME:-$HOME/.local/share}"
+bgimg="${bgroot}/wallpaper"
+
+die()
+{
+ printf "\033[31;1merr: %b\033[0m\n" "${1:-no args for die()}" 1>&2
+ exit "${2:-1}"
+}
+
+usage()
+{
+ cat <<- EOF
+ Usage: ${0##*/} [wallpaper.img]
+ A helper script for swaybg
+
+ EOF
+}
+
+dep_check()
+{
+ # usage: cmd_check cmd_1 ...
+ : "${1:?}"
+
+ for dep; do
+ command -v "$dep" 1>/dev/null ||
+ die "${dep}: command not found" 127
+ done
+
+ unset dep
+}
+
+updatewall()
+{
+ : "${1:?}"
+
+ rm -f "$bgimg"
+ cp "$1" "$bgimg"
+
+ [ -s "$bgpid" ] &&
+ kill "$(cat "$bgpid")"
+ swaybg --mode fill --image "$bgimg" > /dev/null 2>&1 &
+ echo $! > "$bgpid"
+}
+
+main()
+{
+ [ ! -r "$1" ] &&
+ usage && exit 1;
+ [ ! -d "$bgroot" ] &&
+ mkdir -p "$bgroot"
+
+ dep_check swaybg file
+
+ case "$(file --brief --dereference --mime-type "$1")" in
+ "image/"*)
+ updatewall "$1"
+ ;;
+ *)
+ die "invalid image file"
+ ;;
+ esac
+}
+
+main "$@"