Skip to main content

A fast, native GUI over linux-wallpaperengine with per-screen assignment and playlist rotation

Project description

Wallpaper Engine Manager

Une GUI native (PySide6/Qt) au-dessus de linux-wallpaperengine. Elle fait ce que les frontends existants faisaient mal : gérer correctement une bibliothèque Steam sur un autre disque, transmettre le bon --assets-dir, et proposer des playlists tournantes par écran — le tout en restant fluide.

L'interface reprend les codes visuels de Wallpaper Engine (thème sombre, sidebar de filtres à gauche, panneau de propriétés à droite, bande playlist en bas, sélecteur d'écran visuel) pour une prise en main immédiate.

Testé sur KDE Plasma 6 / Wayland (CachyOS), mais ne dépend d'aucune API KDE.

Fonctionnalités

  • Détection auto de la bibliothèque (workshop/content/431960) même sur un autre disque — lit libraryfolders.vdf et résout les symlinks pour retrouver le dossier des assets.
  • Grille de vignettes, chargées en tâche de fond (fluide même à 500+ fonds).
  • Recherche par titre.
  • Filtres combinés : genre, type, évaluation d'âge (tout en local depuis project.json), résolution, et un filtre « Compatible écran » qui ne montre que les fonds au bon ratio pour l'écran sélectionné (idéal multi-écran / ultrawide). Tri par titre ou par taille.
  • Résolution via Steam : la résolution est un tag Workshop absent des fichiers locaux ; l'app la récupère depuis l'API publique Steam (sans clé), la met en cache (metadata.json) — instantané et hors-ligne ensuite. Bouton « Sync Steam » et sync auto au premier lancement.
  • Un process par écran : changer un écran ne redémarre pas les autres.
  • Sélecteur d'écran visuel (popup Écrans…) : les moniteurs sont dessinés selon leur disposition réelle ; on clique un écran puis on lui assigne un fond fixe ou la playlist courante. Sélectionner un écran recharge ce qu'il affiche.
  • Fond étalé sur plusieurs écrans (Écrans… → Étaler…) : étire un seul fond sur plusieurs moniteurs (façon panorama ultrawide) avec un seul rendu partagé (--screen-span). Ré-assigner ou vider un écran du groupe défait proprement l'étalement.
  • Playlists créées par cases à cocher dans la grille, avec une bande de vignettes en bas (clic = aperçu, × au survol = retirer). Intervalle et ordre (séquentiel / aléatoire) en ligne ; bouton Configurer… pour les options avancées par playlist : intervalle en h + min, démarrage sur le premier fond, et transition propre à la playlist. Une playlist aléatoire démarre sur un fond au hasard.
  • Panneau de propriétés (à droite) : personnalise le fond sélectionné (couleurs, curseurs, cases, listes). Enregistré par fond et réappliqué à chaque lancement via --set-property ; si le fond est affiché, il se recharge aussitôt.
  • Réglages de rendu par fond (section Rendu du panneau) : choisis le cadrage (remplir / ajuster / étirer / défaut — utile en multi-écran ou ratio non standard) et, sur les fonds scène, désactive individuellement le parallaxe, les particules ou l'interaction souris — quand un effet passe mal sur un fond précis ou pour alléger le GPU. Enregistré par fond (--scaling, --disable-parallax/particles/mouse) et appliqué à chaud.
  • Import depuis Wallpaper Engine : récupère les playlists du config.json de WPE (extrait les IDs, ignore les chemins/moniteurs Windows non portables).
  • Transition sans coupure : le nouveau fond est affiché par-dessus l'ancien avant que celui-ci soit tué (pas de fondu alpha — le backend ne le permet pas — mais plus de flash du fond de bureau entre deux).
  • Barre système (systray) : fermer la fenêtre la réduit dans le tray ; la rotation continue en arrière-plan. Le menu de l'icône permet de changer la playlist de chaque écran, de vider un écran, de tout arrêter, et de rouvrir.
  • Démarrage avec la session : une case (dans ⚙ Réglages ou le menu tray) installe un lanceur autostart qui relance l'app dans le tray et restaure les fonds (rotation comprise) à l'ouverture de session.
  • Pause automatique : les fonds étant des rendus GPU continus, ils volent des FPS à un jeu — surtout en multi-écran (les autres moniteurs continuent de rendre) ou en fenêtré sans bordure. Deux déclencheurs, dans ⚙ Réglages :
    • liste d'apps — tant qu'une app de la liste tourne, tous les fonds sont coupés (GPU libéré), puis relancés à sa fermeture ; ajout en un clic depuis les apps en cours. Marche quel que soit le GPU et même en borderless.
    • charge GPU (option, filet de secours pour les apps hors liste) — coupe les fonds quand l'utilisation GPU reste au-dessus d'un seuil, avec hystérésis pour éviter les allers-retours. Lecture via sysfs amdgpu ou nvidia-smi (grisé sur les GPU non supportés). Sur un portable hybride, la dGPU NVIDIA est privilégiée : le fond tourne sur l'iGPU et les jeux s'offloadent sur la dGPU, donc sa charge est un signal propre sans la charge du fond lui-même.
  • ⚙ Réglages : volume (0-100, 0 = muet), FPS, durée de transition globale, pause automatique, chemins de la bibliothèque, autostart, entrée du menu applications.

Prérequis

  • linux-wallpaperengine installé et dans le PATH.
  • Wallpaper Engine (l'app Steam, app id 431960) installé, pour disposer des assets et des wallpapers du workshop.
  • Python ≥ 3.10 et PySide6 (installé automatiquement via pip).

Installation

Toute distribution (PyPI)

pipx install wpe-manager     # recommandé (environnement isolé)
# ou
pip install --user wpe-manager

Arch / CachyOS / dérivés (AUR)

paru -S wpe-manager          # ou : yay -S wpe-manager

Le paquet AUR tire le backend linux-wallpaperengine-git automatiquement.

Depuis les sources

pipx install .               # ou : pip install --user .
# ou sans installer :
python -m wpe_manager

Puis lance la commande :

wpe-manager

Utilisation

  1. Fond fixe : clique un fond dans la grille → 🖥 Écrans…, clique un écran → Fond sélectionné → cet écran.
  2. Playlist tournante : coche des fonds dans la grille (ils apparaissent dans la bande du bas) → Nouvelle, nomme la playlist, règle l'intervalle et l'ordre (ou Configurer… pour les options avancées) → 🖥 Écrans…, clique un écran → Playlist courante → cet écran.
  3. Pour éditer une playlist existante : choisis-la dans le menu déroulant du bas (ça la charge), modifie les cases cochées, puis MàJ items.
  4. Vider cet écran / Tout arrêter depuis le popup Écrans / ⚙ Réglages.

Si la bibliothèque n'est pas trouvée automatiquement, ouvre ⚙ Réglages → Chemins de la bibliothèque… pour la pointer à la main.

Fermer la fenêtre la réduit dans la barre système : la rotation continue. Clic sur l'icône pour rouvrir, clic droit → Quitter pour fermer réellement.

Fichiers de config

  • ~/.config/wpe-manager/config.json — chemins, muet, FPS, transition.
  • ~/.config/wpe-manager/state.json — assignations par écran (fond / playlist).
  • ~/.config/wpe-manager/playlists.json — playlists.
  • ~/.config/wpe-manager/engine.json — process backend en cours (par écran).
  • ~/.config/wpe-manager/metadata.json — cache des résolutions (Steam Workshop).
  • ~/.config/wpe-manager/properties.json — propriétés personnalisées par fond.

Autostart (restaurer les fonds à l'ouverture de session)

Le plus simple : coche Démarrer avec la session (barre du haut ou menu du tray). L'app écrit ~/.config/autostart/wpe-manager.desktop pour toi.

Sous le capot, l'entrée lance wpe-manager --daemon (alias historique : --autostart) : l'app démarre cachée dans la barre système, restaure les fonds sauvegardés et reprend la rotation.

Entrée dans le menu des applications

Coche Menu applications (barre du haut ou menu du tray) pour ajouter un lanceur dans le menu de ton bureau (~/.local/share/applications/) et ouvrir l'app comme n'importe quel programme. Fonctionne aussi bien depuis une installation pip/pipx que depuis les sources.

Compatibilité & limites connues

Cette app n'est qu'un frontend ; ce qui fonctionne dépend surtout du backend.

  • Backend requis : linux-wallpaperengine doit être installé et dans le PATH. Il est packagé sur l'AUR ; sur Debian/Fedora/etc. il faut le compiler depuis les sources.
  • Bureau : testé sur KDE Plasma / Wayland. Fonctionne sur les compositeurs qui supportent wlr-layer-shell (KWin, wlroots) et sous X11. GNOME Wayland (Mutter) n'implémente pas layer-shell → le backend ne peut pas y dessiner le fond ; c'est une limite du compositeur, pas de cette app.
  • Wayland : le fond est dessiné par-dessus le bureau → pas d'icônes ni de clic droit sur le bureau tant qu'un fond animé est actif (limite du backend).

Remerciements

Ce projet n'est qu'un frontend ; tout le rendu est assuré par Almamu/linux-wallpaperengine.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wpe_manager-0.8.0.tar.gz (56.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wpe_manager-0.8.0-py3-none-any.whl (56.1 kB view details)

Uploaded Python 3

File details

Details for the file wpe_manager-0.8.0.tar.gz.

File metadata

  • Download URL: wpe_manager-0.8.0.tar.gz
  • Upload date:
  • Size: 56.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for wpe_manager-0.8.0.tar.gz
Algorithm Hash digest
SHA256 219ad551e103119e8efdbf2cddb00649ae9e224f960c493b1f985303032cf15c
MD5 7e9f26e9670c7c935fa8486bc59f5615
BLAKE2b-256 fb27cfd59e602b6583bfbf70a5cd61f1a9f42929465c35da556162cfb093cfa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for wpe_manager-0.8.0.tar.gz:

Publisher: release.yml on Dragonir44/wpe-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wpe_manager-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: wpe_manager-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 56.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for wpe_manager-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0900225fc9e6a0fda955385558cfec6c172f7fc23888e2fe926ec04b41bda1ac
MD5 5ff1793c7eb1e23e3d6295bd0d36e0e8
BLAKE2b-256 217a2697ce5daa51993020677de33ee4635000fa3acdb3047ce210bc30bc1152

See more details on using hashes here.

Provenance

The following attestation bundles were made for wpe_manager-0.8.0-py3-none-any.whl:

Publisher: release.yml on Dragonir44/wpe-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page