-
Notifications
You must be signed in to change notification settings - Fork 1
building from source
You only need this if you're modifying the bridge / plugin / wallpaper HTML / Configurator / Builder, or producing your own release artefacts. End users grab pre-built files from the Releases page.
- Windows 10/11
-
Python 3.11+ with
pipon PATH. Get it from python.org orwinget install Python.Python.3.13. -
PowerShell 7 (
pwsh) — the build script uses pipeline chain operators and&&. Windows-built-in 5.1 doesn't work.winget install Microsoft.PowerShell. -
Inno Setup 6 for the installer —
winget install JRSoftware.InnoSetup. -
Optional: the GitHub CLI
(
winget install GitHub.cli) if you plan to push releases.
git clone https://github.com/Delido/signalrgb-wallpaper.git
cd signalrgb-wallpaper
# Python deps for the bridge + build tooling
python -m pip install --user pystray Pillow psutil pyinstallertkinter is part of the Python Windows installer; no separate install
needed. Everything else (asyncio, json, threading, hashlib, struct,
mimetypes, webbrowser) is in the stdlib.
pwsh installer\build.ps1Stages:
- Generate
icon.ico,thumbnail.png,banner.png,workshop_preview.pngvia the fourinstaller/generate_*.pyscripts. - Rebuild
SignalRGBBridge.exewith PyInstaller. - Stage three per-screen Lively folders
(
wallpaper_bridge/lively_bundles/signalrgb-glow-screen-{1,2,3}/) and the matchingSignalRGB_Glow_Screen{1,2,3}.zipfiles. - Stage the single combined Wallpaper Engine bundle
(
we_bundles_single/signalrgb-glow/, with thescreenIndexuser property). - Stage three per-screen Wallpaper Engine bundles
(
we_bundles/SignalRGB_Glow_Screen{1,2,3}/). - Package the Lively pause-tester
(
SignalRGB_LivelyPauseTester.zip). - Compile
installer_out\SignalRGBWallpaperSetup-<version>.exevia Inno Setup.
Version is read from APP_VERSION in wallpaper_bridge/bridge.py. To
override: pwsh installer\build.ps1 -Version 0.7.2.
If you only need the bridge exe (no installer, no wallpaper bundles):
cd wallpaper_bridge
python -m PyInstaller `
--onefile `
--noconsole `
--name SignalRGBBridge `
--hidden-import pystray._win32 `
--collect-all pystray `
--collect-submodules PIL `
--collect-all psutil `
--add-data "builder.html;." `
--add-data "configurator.html;." `
--add-data "help.html;." `
--distpath dist_bridge `
--workpath build_bridge `
bridge.py
# Output: wallpaper_bridge\dist_bridge\SignalRGBBridge.exe (~20 MB)Flags explained:
-
--onefile— single self-contained exe; users don't need Python. -
--noconsole— no console window when launched (we're a tray app). To debug, temporarily drop this flag and rebuild — stdout will be visible in cmd. -
--hidden-import pystray._win32+--collect-all pystray— PyInstaller's static analyser misses pystray's Win32 backend. -
--collect-submodules PIL— Pillow's image loaders are lazy-loaded; this pulls them all in so the tray icon + About-dialog avatar work. -
--collect-all psutil— psutil ships native.pydextensions for the OS-specific syscalls behind the CPU / RAM / Network widgets. -
--add-data "builder.html;."+"configurator.html;."+"help.html;."— bundles the two in-browser UIs served at/builderand/configurator.
When iterating on bridge.py, save the full PyInstaller cycle by
running the Python source directly:
cd wallpaper_bridge
python bridge.pyYou get a real console with stdout — ideal for debugging. The tray icon, Configurator, legacy Settings dialog, WS server etc. all work identically.
wallpaper_bridge/smoke_test.py opens two WS subscribers (?screen=0
and ?screen=1) and verifies that a fake UDP datagram tagged for one
screen reaches only that screen's clients.
# Start the bridge first
.\wallpaper_bridge\dist_bridge\SignalRGBBridge.exe
# In another shell
python .\wallpaper_bridge\smoke_test.pyThe smoke test will misreport
FAILif SignalRGB is actively streaming frames through the bridge at the same time (its WS clients pick up real plugin traffic mixed with the test payload). Stop SignalRGB or unpair the plugin before running it.
-
Bump
APP_VERSIONinwallpaper_bridge/bridge.pyand theVersion()export inSignalRGB_Desktop_Wallpaper.js. Add an entry toCHANGELOG.md. -
pwsh installer\build.ps1— produces the installer + all release artefacts. -
Commit, tag, push:
git add -A git commit -m "vX.Y.Z: <one-line summary>" git tag vX.Y.Z git push origin main --tags
-
Create the release with artefacts:
gh release create vX.Y.Z ` --title "vX.Y.Z" ` --notes-file CHANGELOG.md ` installer_out\SignalRGBWallpaperSetup-X.Y.Z.exe ` wallpaper_bridge\dist_bridge\SignalRGBBridge.exe ` wallpaper_bridge\SignalRGB_Glow_Screen1.zip ` wallpaper_bridge\SignalRGB_Glow_Screen2.zip ` wallpaper_bridge\SignalRGB_Glow_Screen3.zip ` wallpaper_bridge\SignalRGB_Glow_WallpaperEngine.zip ` wallpaper_bridge\SignalRGB_Glow_WE_Single.zip ` SignalRGB_Desktop_Wallpaper.js ` SignalRGB_Desktop_Wallpaper.qml
Add
--prereleasefor beta tags (e.g.0.7.2-beta); the in-app update checker honours the Allow beta versions checkbox to decide whether to surface them. -
Verify on the Releases page.
-
If you also want the Wallpaper Engine Workshop items updated, see
workshop-publishing.md— that part is manual (no headless Steam API for it).
Getting started
Using the app
Reference
Project