A intentionally small, dependency-light CLI (slideshow) that turns a directory (or optionally, separate light/dark directories) of photos into a proper GNOME wallpaper slideshow.
I was annoyed that this isnt a built in feature, and I didn't want to install a
whole third party package to handle something simple, so this CLI allows for
quick refresh/config of your wallpaper slideshow.
- Scans a flat directory of images (you choose on first run)
- Generates the classic two-XML definition (
~/.local/share/backgrounds/...+gnome-background-properties/...) - Applies via
gsettings(supportspicture-uri+picture-uri-dark) - Optional lock screen / screensaver synchronization
- Appears in Settings > Background with the clock icon
- Fully configurable (duration, transitions, shuffle, auto-apply, etc.)
- Interactive first-run wizard
No third-party wallpaper apps or GNOME extensions required.
curl -fsSL https://raw.githubusercontent.com/rafaelzasas/gnome-slideshow/main/install.sh | bashDownload the latest .tar.gz (or .deb) from the Releases page, then:
tar -xzf gnome-slideshow_Linux_*.tar.gz
sudo install -m 755 slideshow /usr/local/bin/slideshow
# Completions (bash example)
slideshow completion bash | sudo tee /usr/share/bash-completion/completions/slideshow >/dev/nullgit clone https://github.com/rafaelzasas/gnome-slideshow.git
cd gnome-slideshow
make build
sudo make install # installs binary + completionsOr simply:
go install github.com/rafaelzasas/gnome-slideshow/cmd/slideshow@latestslideshow # first run → interactive setup wizard
# Add / remove photos in your folder(s)
slideshow refresh # or just `slideshow` if you like the wizardThe tool will:
- Ask for your wallpaper directory(ies) on first run (or
slideshow setup) - Generate the required XML files
- Apply them (configurable)
slideshow refresh— scan, (re)generate XMLs, apply (default behavior)slideshow apply— just apply the current configuration via gsettingsslideshow reshuffle— shuffle the current images and refresh+applyslideshow list— show which photos will be usedslideshow config— interactive editor (or use subcommands likeconfig set light-dir ...)slideshow setup— re-run the first-run wizardslideshow completion ...— shell completion scripts (bash/zsh/fish)
Flags on refresh (and others) allow temporary overrides (--duration, --shuffle, --no-apply, --light-dir, etc.).
Stored at ~/.config/gnome-slideshow/config.json.
Key fields:
light_dir,dark_dir(dark falls back to light if empty)duration,transition(seconds)auto_apply_on_refreshregister_properties(makes it appear in Settings)shuffleenable_lock_screenname(the label shown in the background picker)
You can edit the JSON directly or use the slideshow config command.
For some reason gnome uses XML to allow for wallpaper slideshows. I dindt want to manually edit them each time I added photos to my wallpapers directory. This tool simply automates the editing of the XML files by auto appending the newly found photos.
- Timed slideshow definition (the actual cycling logic)
- Properties registration (so it shows up nicely in the UI with a clock emblem)
It writes user-local files only (~/.local/share/...), no root required.
Enable with:
slideshow config set enable-lock-screen true
# or during initial setupThe tool will then also set org.gnome.desktop.screensaver picture-uri (and -dark when possible).
[] watch / daemon mode (inotify / fsnotify) to auto-refresh when files change: would be nice but I dont feel like doing it yet.
[] More image formats / recursive scan (opt-in)
[] Better error recovery and validation
PRs and issues welcome. Please run make test and go build before submitting.
MIT
Built with: