A modern wallpaper manager with system tray integration and visual gallery for Quickshell/illogical-impulse setup on Arch Linux.
- 🔄 Quick wallpaper changes from tray menu
- ⏭️ Next/Previous wallpaper navigation
- ⏱️ Real-time countdown to next auto-change
- 📜 Recent wallpapers history
- 🔔 Desktop notifications
- 🖼️ Grid view with thumbnails
- 🔍 Live preview of selected wallpapers
- 🔎 Search and filter wallpapers by name
- 📊 Sort by name, date, or random
- 💾 Cached thumbnails for fast loading
- 📏 Adjustable thumbnail sizes
- ⚡ Application runs in background (doesn't close with window)
- ⚙️ Quick settings dialog
- 🎯 Direct integration with Quickshell config
- 📸 Supports multiple image formats (jpg, jpeg, png, gif, bmp, webp)
- 🔀 Shuffle mode for random wallpapers
- 🚫 Exclude specific wallpapers
- Arch Linux
- Python 3.8+
- PyQt6
- Pillow (for image processing)
- jq (for JSON manipulation)
- Quickshell/illogical-impulse setup
- Install system dependencies:
sudo pacman -S python python-pyqt6 python-pillow jq- Or install via pip:
pip install --user -r requirements.txtStart the wallpaper changer:
python3 main.pyThe application will:
- Start minimized to system tray
- Show an icon in your system tray area
- Continue running even when windows are closed
Right-click the tray icon for quick actions:
- Change wallpaper immediately
- Navigate to next/previous wallpaper
- Open the visual gallery
- Access settings
- View recent wallpapers
Double-click the tray icon to open the gallery window.
The gallery provides:
- Visual grid of all wallpapers
- Click to preview in large format
- Double-click to apply wallpaper
- Search bar for filtering by name
- Sort options (name, date, random)
- Thumbnail size adjustment
Ctrl+G- Open gallery windowCtrl+R- Random wallpaperCtrl+Right- Next wallpaperCtrl+Left- Previous wallpaperCtrl+Space- Toggle auto-changeEscape- Close gallery windowEnter- Apply selected wallpaper (in gallery)
The application stores its configuration in:
~/.config/wallpaper-changer/config.json
~/.config/wallpaper-changer/history.json
~/.config/wallpaper-changer/cache/
{
"wallpaper_directory": "/home/username/Pictures/wallpapers",
"change_interval": 30,
"auto_change_enabled": false,
"shuffle": true,
"show_notifications": true,
"thumbnail_size": 150,
"gallery_columns": 4,
"cache_thumbnails": true,
"recent_wallpapers_limit": 20,
"excluded_files": []
}slideshow-qs/
├── main.py # Main application with system tray
├── gallery_window.py # Visual gallery window
├── wallpaper_manager.py # Wallpaper management logic
├── config_manager.py # Configuration handling
├── requirements.txt # Python dependencies
├── assets/
│ └── icon.png # Tray icon (optional)
└── README.md
The application modifies the Quickshell configuration file at ~/.config/illogical-impulse/config.json using the jq command to update the background.wallpaperPath property.
- Ensure your desktop environment supports system tray icons
- Check if you have a system tray/notification area enabled
- Verify the Quickshell config file exists at
~/.config/illogical-impulse/config.json - Check that
jqis installed:which jq - Ensure wallpaper directory contains valid image files
- Check if Pillow is properly installed
- Clear cache from the toolbar menu
- Verify image files are readable
MIT License
Created for the Quickshell/Hyprland community