summaryrefslogtreecommitdiff
path: root/debian/.local/bin/setbg
diff options
context:
space:
mode:
Diffstat (limited to 'debian/.local/bin/setbg')
-rwxr-xr-xdebian/.local/bin/setbg71
1 files changed, 71 insertions, 0 deletions
diff --git a/debian/.local/bin/setbg b/debian/.local/bin/setbg
new file mode 100755
index 0000000..66f6819
--- /dev/null
+++ b/debian/.local/bin/setbg
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# This script does the following:
+# Run by itself, set the wallpaper (at X start).
+# If given a file, set that as the new wallpaper.
+# If given a directory, choose random file in it.
+# If wal is installed, also generates a colorscheme.
+
+# Location of link to wallpaper link.
+wallloc="${XDG_DATA_HOME:-${HOME}/.local/share}/wallpapers"
+bgloc="$wallloc/bg"
+vidloc="$wallloc/video/1/filename00001.jpg"
+
+# Configuration files of applications that have their themes changed by pywal.
+dunstconf="${XDG_CONFIG_HOME:-${HOME}/.config}/dunst/dunstrc"
+zathuraconf="${XDG_CONFIG_HOME:-${HOME}/.config}/zathura/zathurarc"
+
+# Give -s as parameter to make notifications silent.
+while getopts "s" o; do
+ case "${o}" in
+ s) silent='1' ;;
+ *) ;;
+ esac
+done
+
+shift $((OPTIND - 1))
+
+[ -d "$wallloc" ] || mkdir -p "$wallloc"
+
+[ "$(ls "$wallloc/video" 2>/dev/null)" ] && {
+ [ -n "$(pgrep -f "wallset")" ] && pgrep -f "wallset" | xargs kill
+ wallset -r 2>/dev/null
+ wallset -q 2>/dev/null
+ rm -rf "$wallloc/video"
+}
+
+[ -f ~/.fehbg ] && rm -f ~/.fehbg
+
+trueloc="$(readlink -f "$1")" &&
+ case "$(file --mime-type -b "$trueloc")" in
+ image/*) ln -sf "$trueloc" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Changing wallpaper..." ;;
+ inode/directory) ln -sf "$(find -L "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Random Wallpaper chosen." ;;
+ video/*)
+ mkdir -p "$wallloc/video" 2>/dev/null
+ if [ ! "${trueloc##*.}" = "mp4" ] || [ "$(($(mediainfo --Output="General;%Duration%" "$trueloc")))" -gt 10000 ]; then
+ notify-send "⌛ Converting video for wallpaper..." && ffmpeg -i "$trueloc" -t 3 "$wallloc/video/bg.mp4" 2>/dev/null
+ else
+ cp "$trueloc" "$wallloc/video/bg.mp4" 2>/dev/null
+ fi
+ trueloc="$wallloc/video/bg.mp4"
+ wallset --video "$trueloc" >/dev/null 2>&1 && [ -z "$silent" ] && notify-send -i "$vidloc" "Changing wallpaper..."
+ exit
+ ;;
+ *)
+ [ -z "$silent" ] && notify-send "🖼️ Error" "Not a valid image or directory."
+ exit 1
+ ;;
+ esac
+
+# If pywal is installed, use it.
+if command -v wal >/dev/null 2>&1; then
+ wal -n -i "$(readlink -f "$bgloc")" -o "${XDG_CONFIG_HOME:-${HOME}/.config}/wal/postrun" >/dev/null 2>&1
+# If pywal is removed, return config files to normal.
+else
+ [ -f "$dunstconf.bak" ] && unlink "$dunstconf" && mv "$dunstconf.bak" "$dunstconf"
+ [ -f "$zathuraconf.bak" ] && unlink "$zathuraconf" && mv "$zathuraconf.bak" "$zathuraconf"
+fi
+
+xwallpaper --zoom "$bgloc"
+# If running, dwm hit the key to refresh the color scheme.
+pidof dwm >/dev/null && xdotool key super+F5