I’ve been looking for a way to break my routine a bit when I’m working on my laptop. I figured that changing the wallpaper randomly and automatically was a good way to break the monotony.

I use awesomeWM (version 4)

[f00b@void ~]$ awesome --version
awesome v4.3 (Too long)
 • Compiled against Lua 5.3.5 (running with Lua 5.3)
 • D-Bus support: ✔
 • execinfo support: ✘
 • xcb-randr version: 1.6
 • LGI version: 0.9.2

So I needed three things:

  • A folder full of images
  • A little script that will choose one at random
  • A call to this script from awesome init

For the images, I use the excellent repo by Luck Smith.

As far as the script is concerned, nothing too hard:

#!/bin/bash
# author : Kaderovski
# descr : Make your wallpaper change on each start !
#
# I'm using Luck Smith wallpaper git repo for all images
# link : https://github.com/LukeSmithxyz/wallpapers

# current awesome theme
THEME="powerarrow-dark"
# Awesome conf path
AWPATH="$HOME/.config/awesome/themes/$THEME"
# image should have absolute path to image folder
IMAGE=$(find $HOME/Pictures/wallpapers/ -type f -name "*.png" -o -name "*.jpeg" -o -name "*.jpg"| shuf -n 1 | sed 's/\ /\\ /g')

cp -f $IMAGE $AWPATH/wall.png

# don't forget to add those lines at the end of your rc.lua (replace with your correct path and script name)
#
# -- Startup programs
# awful.util.spawn_with_shell("~/bin/wallpaper.sh")

As indicated in comment, just add these two lines (or just one without the comment) to call the script via awesomeWM init.

Put this at the end of ~/.config/awesome/rc.lua.

-- Startup programs
awful.util.spawn_with_shell("~/bin/wallpaper.sh")

On each awesomewm restart, you will have a new pretty (or not) wallpaper.

Script is on gist !