Fully automated, blazing fast wallpaper rotation for GNOME Desktop with GDM login screen support – written entirely in pure Bash.
- give a star🌟 to the GitHub Repo if you really like this.
- 🧠 Overview
- ✨ Features
- 📸 Preview
- 🛠 Tech Stack
- 📁 Project Structure
- 💻 Installation
- 🧪 Usage
- 🧹 Uninstallation
- 📄 License
- 🙌 Contributing
WCS – Wallpaper Changer Script is a clean, lightweight Bash solution for automatically rotating desktop wallpapers every minute on GNOME-based Linux systems.
🎯 It also updates the GDM login screen wallpaper and includes a systemd service with autostart support for persistent operation.
✅ 100% Bash – no Python or Node.js dependencies
✅ Supports .jpg
, .jpeg
, .png
image formats
✅ Updates both desktop and GDM login background
✅ Integrated with systemd
for background rotation
✅ Full GNOME support (tested on Kali, Ubuntu, Fedora)
✅ .desktop autostart for session startup
✅ Auto-pause when fullscreen apps or games are running
✅ Minimal resource usage
✅ Easy to install/uninstall
╔══════════════════════════════════════════════════════════════════════════╗
║ ▄█ █▄ ▄████████ ▄███████▄ ║
║ ███ ███ ███ ███ ███ ║
║ ███ ███ ███ █▀ ███ ║
║ ███ ███ ███ ██████████ ║
║ ███ ███ ███ ███ ║
║ ███ █ ███ ███ █▄ ███ ███ ║
║ ███ ███ ███ ███ ███ ███ ███ ║
║ ▀███▀███▀ ████████▀ ▀██████▀ ║
║ WCS — WallpaperChanger Script ║
║ ⚙️ A clean GNOME wallpaper automation tool ║
║ 🛠️ Bash | Systemd | .desktop | Cross-Distro Support ║
╚══════════════════════════════════════════════════════════════════════════╝
Tool | Purpose |
---|---|
Bash |
Core scripting language |
systemd |
Background service |
xdotool |
Fullscreen detection |
gsettings |
GNOME wallpaper control |
libglib2.0-dev-bin |
GDM wallpaper configuration |
ImageMagick |
Image handling (optional) |
📁 wallpaper-changer/
├── 🛠️ install.sh # 🔧 Auto-installer script (dependencies, integration)
├── 🧹 uninstall.sh # 🚫 Uninstaller script (clean removal)
├── 📘 README.md # 📄 Project overview, features & usage
├── 📄 LICENSE # 📜 MIT License
├── 🖼️ preview.png # 📸 Screenshot or demo image (optional)
│
├── 📂 scripts/ # 🧠 Core functional logic
│ └── 🎯 wallpaper-changer.sh # 🎨 GNOME & GDM wallpaper changer logic
│
├── 📂 system/ # 🧩 System integration (autostart & services)
│ ├── ⚙️ wallpaper-changer.service # 💡 systemd service for boot-time execution
│ └── 🖥️ wallpaper-changer.desktop # 🖱️ Desktop launcher (Applications menu)
Ensure you are running:
- GNOME Desktop Environment
- Linux distro with
apt
ordnf
support
sudo apt update
sudo apt install xdotool x11-utils imagemagick libglib2.0-dev-bin gsettings-desktop-schemas gnome-shell -y
git clone https://github.com/your-username/wallpaper-changer.git
cd wallpaper-changer
chmod +x install.sh
sudo ./install.sh
- 🖼️ Place your wallpapers inside:
~/Pictures/wallpapers
- 🔁 The wallpaper will automatically rotate every 60 seconds
- 🚫 It pauses while fullscreen apps or games are running
- 🖥️ Login screen wallpaper will also update to match
# Enable at boot
systemctl --user enable wallpaper.service
# Start manually
systemctl --user start wallpaper.service
# Check status
systemctl --user status wallpaper.service
Run the following to cleanly remove all files:
chmod +x uninstall.sh
sudo ./uninstall.sh
This will:
- ❌ Stop and disable systemd service
- ❌ Remove
.desktop
file - ❌ Delete all related configs
- 🧹 Leave your wallpapers untouched
This project is licensed under the MIT License
See the LICENSE file for details.
- give wallpaper credits to JaKooLit/Wallpaper-Bank GitHub Repo
Contributions are welcome! If you can:
- Improve GDM detection or compatibility
- Add new desktop environment support
- Reduce dependencies
- Refactor Bash to POSIX or ZSH-compatible logic
git checkout -b fix/your-fix
git commit -am "fix: description of your fix"
git push origin fix/your-fix
Made with 🖤 by @dhruvpatel16120
💬 For suggestions, ideas, or bugs — open an issue or drop a pull request!