~/Pictures/wallpapers/
βββ night.jpg
βββ morning.jpg
βββ noon.jpg
βββ evening.jpg
You can name them whatever you want β just update the script.
#!/usr/bin/env bash
# --- CONFIG ---
WALLPAPER_DIR="$HOME/Pictures/wallpapers"
NIGHT="$WALLPAPER_DIR/night.jpg"
MORNING="$WALLPAPER_DIR/morning.jpg"
NOON="$WALLPAPER_DIR/noon.jpg"
EVENING="$WALLPAPER_DIR/evening.jpg"
# --- GET CURRENT HOUR ---
HOUR=$(date +%H)
# --- PICK WALLPAPER ---
if (( HOUR < 6 )); then
WP="$NIGHT"
elif (( HOUR < 12 )); then
WP="$MORNING"
elif (( HOUR < 17 )); then
WP="$NOON"
elif (( HOUR < 20 )); then
WP="$EVENING"
else
WP="$NIGHT"
fi
# --- APPLY WALLPAPER TO ALL MONITORS ---
for path in $(xfconf-query -c xfce4-desktop -l | grep last-image); do
xfconf-query -c xfce4-desktop -p "$path" -s "$WP"
donechmod +x xfce-dynamic-wallpaper.sh./xfce-dynamic-wallpaper.shWallpaper should change immediately.
Run every 10 minutes:
crontab -eAdd:
*/10 * * * * DISPLAY=:0 $HOME/xfce-dynamic-wallpaper.sh- Settings β Session and Startup β Application Autostart
- Add:
/home/youruser/xfce-dynamic-wallpaper.sh
- Works on XFCE 4.14+
- Supports multi-monitor
- No
feh, no GNOME, no hacks - You can add more time ranges or wallpapers easily
To Do:
- π smooth transitions (fake fades)
- π per-monitor wallpapers
- π exact sunrise/sunset switching
- π GNOME XML β XFCE conversion