41 lines
1.7 KiB
Bash
Executable file
41 lines
1.7 KiB
Bash
Executable file
#!/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.
|
|
bgloc="${XDG_DATA_HOME:-$HOME/.local/share}/bg"
|
|
|
|
# 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))
|
|
|
|
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 "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1)" "$bgloc" && [ -z "$silent" ] && notify-send -i "$bgloc" "Random Wallpaper chosen." ;;
|
|
*) [ -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
|