A user-friendly TUI for linux-wallpaperengine that makes managing Wallpaper Engine content on Linux simple and accessible. Browse your Steam Workshop wallpapers with an interactive fuzzy finder, automatically apply them across multiple monitors, and generate matching color schemes with pywal integration.
- Interactive Selection: Browse your Wallpaper Engine collection with fzf
- Multi-Monitor Support: Automatic detection for Hyprland, X11, and Wayland
- Pywal Integration: Automatic color scheme generation from wallpaper images
- Audio Control: Choose whether to enable wallpaper audio
- Easy Installation: One-command setup with PATH configuration
- Startup Scripts: Auto-generated scripts for session persistence
- Smart Previews: Uses existing preview images or captures screenshots
jq- JSON processingfzf- Fuzzy finder for wallpaper selectionpywal(orwal) - Color scheme generationlinux-wallpaperengine- Wallpaper Engine runtime for Linux
kitty- For preview imageschafa- if you dont want kitty (may break)
- Steam installed (native or Flatpak)
- Wallpaper Engine purchased and installed
- At least one wallpaper subscribed in Steam Workshop
Arch Linux:
sudo pacman -S jq fzf python-pywal
yay -S linux-wallpaperengine-git # or your preferred AUR helperUbuntu/Debian:
sudo apt install jq fzf
pip install pywal
# Install linux-wallpaperengine from: https://github.com/Almamu/linux-wallpaperengineFedora:
sudo dnf install jq fzf
pip install pywal
# Install linux-wallpaperengine from: https://github.com/Almamu/linux-wallpaperengine-
Clone the repository:
git clone https://github.com/yourusername/wallset-engine.git cd wallset-engine -
Run the installer:
./install.sh
-
Run the script!!
./wallselect.sh
Simply run the script and follow the interactive prompts:
./wallselect- Scans your Steam Workshop directory for Wallpaper Engine content
- Displays an interactive list of available wallpapers with titles
- Prompts for audio preference
- Detects your monitors automatically
- Applies the wallpaper to all detected monitors
- Generates a color scheme using pywal
- Creates a startup script for session persistence
$ ./wallselect
Detected monitors: DP-3 HDMI-A-1
Select wallpaper:
> 123456789 Cyberpunk City Rain
987654321 Forest Animated
456789123 Neon Synthwave
Enable audio for this wallpaper? (y/N): y
Wallpaper '123456789' applied to monitors: DP-3 HDMI-A-1
Audio enabled.
Pywal theme applied from preview image.
Startup script saved to: /home/user/.config/wallset-engine/wallpaper_startup.sh
You're all set!
Feel free to close this terminal!
After installation, wallset-engine creates the following structure:
~/.config/wallset-engine/
├── wallpaperengine_ids.txt # Cached wallpaper list
├── wallpaper_startup.sh # Auto-generated startup script
└── screenshots/ # Screenshot cache for pywal
├── 123456789.png
└── 987654321.png
(thats where it stores things that arent in the actual git clone folder. Feel free to move everything into the .config folder after install)
The script automatically detects most settings, but you can customize by editing the variables at the top of wallselect.sh:
# Wallpaper frame rate (30, 60, etc.)
WALLPAPER_FPS=60
# Steam directories (auto-detected)
STANDARD_STEAM_DIR="$HOME/.local/share/Steam/steamapps/workshop/content/431960"
FLATPAK_STEAM_DIR="$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/workshop/content/431960"Wallset-engine automatically detects monitors using multiple methods:
- Hyprland (
hyprctl monitors) - X11 (
xrandr) - Wayland (
wlr-randr) - DRM fallback (
/sys/class/drm) - Default fallback (common monitor names)
To automatically restore your wallpaper on login, add the generated startup script to your session:
For most desktop environments:
# Add to your shell's RC file (.bashrc, .zshrc, etc.)
~/.config/wallset-engine/wallpaper_startup.shFor Hyprland:
# Add to hyprland.conf
exec-once = ~/.config/wallset-engine/wallpaper_startup.shFor i3/sway:
# Add to config
exec --no-startup-id ~/.config/wallset-engine/wallpaper_startup.sh- Ensure Steam is installed and you've subscribed to Wallpaper Engine wallpapers
- Check that the Steam Workshop directory exists:
ls ~/.local/share/Steam/steamapps/workshop/content/431960 # or for Flatpak: ls ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/workshop/content/431960
- The script will fall back to common monitor names
- You can manually edit the
MONITORSarray in the startup script if needed
- Ensure
linux-wallpaperengineis properly installed - Check if your wallpaper files are corrupted by testing manually:
linux-wallpaperengine --bg WALLPAPER_ID
(please note not all wallpapers will work properly. Check out linux-wallpaperengine and their github page to report issues.)
Contributions are welcome! Please feel free to:
- Report bugs
- Suggest features
- Submit pull requests
- Improve documentation
This project is licensed under the GNU GENERAL PUBLIC LICENSE - see the LICENSE file for details.
- linux-wallpaperengine - For making Wallpaper Engine work on Linux
- pywal - For dynamic color scheme generation
- fzf - For the fuzzy finder interface
If you encounter issues or have questions:
- Check the troubleshooting section
- Search existing GitHub issues
- Create a new issue with detailed information about your system and the problem
Thanks for reading!!