70 lines
1.9 KiB
Bash
Executable File
70 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Written by: fennek182
|
|
# Version: 4
|
|
# Last change: Sun 2026-06-14
|
|
# Git repo: https://git.fennek.xyz/fennek182/dotfiles
|
|
# Latest version: https://git.fennek.xyz/fennek182/dotfiles/src/branch/main/.local/bin/stats
|
|
# Description: This is a script for managing the wallpaper/background image
|
|
|
|
# TODO: add comments to better describe functionality
|
|
|
|
pick_random_wallpaper () {
|
|
image=$(/bin/ls "$HOME/pix/wallpaper/desktop" | grep -E '(jpg|jpeg|png)$' | sort -R | tail -1)
|
|
path="$HOME/pix/wallpaper/desktop/$image"
|
|
}
|
|
|
|
run_cmd () {
|
|
cmd_string="hyprctl 'dispatch hl.dsp.exec_cmd(\"$@\")'"
|
|
echo $cmd_string
|
|
eval $cmd_string
|
|
}
|
|
|
|
set_bg () {
|
|
echo "setting bg..."
|
|
swaybg_pid=$(pidof swaybg)
|
|
run_cmd "swaybg -i $(tail -n1 /tmp/wallpaper)" > /dev/null 2>&1
|
|
sleep 0.5
|
|
kill $swaybg_pid
|
|
sleep 2 && copy_wallpaper
|
|
}
|
|
|
|
copy_wallpaper() {
|
|
echo "running copy proccess..."
|
|
/bin/cp -f "$(tail -n1 /tmp/wallpaper)" ~/.config/wallpaper
|
|
/bin/cp -f "/tmp/wallpaper" "/tmp/wallpaper_set"
|
|
}
|
|
|
|
case $1 in
|
|
"--restore")
|
|
# restores previously set wallpaper (e.g. on startup):
|
|
echo "~/.config/wallpaper" > /tmp/wallpaper
|
|
echo "~/.config/wallpaper" > /tmp/wallpaper_set
|
|
set_bg
|
|
;;
|
|
|
|
"--copy")
|
|
copy_wallpaper
|
|
;;
|
|
|
|
"--file")
|
|
echo $2 > /tmp/wallpaper
|
|
set_bg
|
|
;;
|
|
|
|
"--pick")
|
|
# deprecated - wip, searching for new UIs to pick a wallpaper
|
|
;;
|
|
|
|
* | "--random")
|
|
# when no parameter is given, pick a random image from wallpaper folder
|
|
# choose random wallpaper again if current wallaper is the same
|
|
# overwrite symlink to ~/.config/wallpaper
|
|
pick_random_wallpaper
|
|
# while [ $(tail -n1 /tmp/wallpaper) -ef "$path" ]; do pick_random_wallpaper; done
|
|
echo $path > /tmp/wallpaper
|
|
echo "setting wallpaper $path"
|
|
set_bg
|
|
;;
|
|
esac
|