A lightweight system-tray app for the COSMIC Desktop Environment that automatically switches your wallpaper when the system theme toggles between Light and Dark mode.
- Linux with Wayland and the COSMIC Desktop Environment (pop-os/cosmic-epoch)
Once submitted to Flathub, install with:
flatpak install flathub io.github.nagyrenato.CosmicWallShiftPrerequisites:
- Rust toolchain (stable, 1.80+) — install via rustup
- Standard COSMIC DE build dependencies (
libwayland-dev,libxkbcommon-dev, etc.)
On Pop!_OS / Ubuntu:
sudo apt install git curl build-essential libwayland-dev libxkbcommon-devgit clone https://github.com/nagyrenato/cosmic-wallshift
cd cosmic-wallshift
cargo build --releaseInstall with just:
just build
sudo just install- Launch the app — the settings window opens automatically.
- Enter the full path to your light wallpaper (e.g.
/home/user/Pictures/Light.png). - Enter the full path to your dark wallpaper (e.g.
/home/user/Pictures/Dark.png). - Close the window — the app moves to the system tray and continues monitoring.
Supported formats: jpg, jpeg, png, webp
Note: Wallpapers are applied with
filter_by_theme: true, meaning COSMIC will apply a subtle tint to match the active theme. This is the default COSMIC behaviour and cannot currently be changed from the app.
Create a desktop entry in ~/.config/autostart/:
mkdir -p ~/.config/autostart
cat > ~/.config/autostart/cosmic-wallshift.desktop << EOF
[Desktop Entry]
Type=Application
Name=COSMIC WallShift
Exec=/usr/local/bin/cosmic-wallshift
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
EOFTest a local Flatpak build:
flatpak-builder --install --user --force-clean build-dir io.github.nagyrenato.CosmicWallShift.yml
flatpak run io.github.nagyrenato.CosmicWallShiftTo regenerate cargo-sources.json after updating Cargo.lock:
pip install aiohttp tomlkit
python3 flatpak-cargo-generator.py Cargo.lock -o cargo-sources.jsonIssues and pull requests are welcome. Please make sure the project compiles cleanly before submitting:
just checkGPL-3.0-or-later — see LICENSE for details.
