diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-12-24 13:54:03 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-12-24 13:54:03 +0900 |
| commit | 28e8bdf7f8286bd431b7f3b709e79f3827b31469 (patch) | |
| tree | 85b44eff6da4d8443198fb6e04dfb6ee55244588 /debian/.local/bin/setbg | |
| parent | 8470ff001befcfd0f626dea69a9e76d43aee0511 (diff) | |
updates
Diffstat (limited to 'debian/.local/bin/setbg')
| -rwxr-xr-x | debian/.local/bin/setbg | 71 |
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 |
