WallpaperFlow scores every region of your wallpaper for visual interest, then moves your desktop icons into quiet negative-space zones — around faces, subjects and focal points instead of on top of them.
Published by Stealth Keqing. Features true multi-monitor topology support, negative virtual coordinates, per-monitor DPI, automatic safety snapshots, and instant undo.
Every number here came from running the build on a 1920×1080 Windows 11 desktop with 14 icons. Saliency is on a 0–1 scale, so lower is quieter — that is the whole point of the tool.
Bright areas are what the engine considers visually important and avoids. The
numbered boxes are where your icons end up. These renders are produced by the
tool itself with --visualize, from Windows' own stock wallpapers.
chosen 0.0022 · screen 0.1770
chosen 0.0076 · screen 0.1124
chosen 0.0144 · screen 0.0887Sobel edge density, local contrast variance, and spectral residual saliency in the frequency domain, combined 0.35 / 0.25 / 0.40 into one score per grid cell.
Icons are matched to cells by Hungarian assignment, with a displacement penalty so icons stay near where they already were instead of being reshuffled on every wallpaper change.
It asks the shell for its real icon pitch — 76×100 px on the test machine, not the 96×96 you might assume — so placements land on distinct grid slots rather than snapping on top of each other.
Daemon mode fingerprints the wallpaper and acts when it actually changes, rather than rearranging your desktop on a timer.
Stated plainly, because the tool has no way to move icons on a desktop it cannot talk to.
| Platform | Analyse wallpaper | Move icons | Notes |
|---|---|---|---|
| Windows 10 / 11 | Yes | Yes | Verified on a live desktop. Turn off Auto arrange icons. |
| Linux | Yes | Not implemented | Reports it cannot place icons and exits non-zero. --visualize works. |
| macOS | Yes | Not implemented | Same as Linux. |
# launch interactive monitor picker and layout preview window WallpaperFlow.exe # align icons on Monitor 1 only, or all connected displays WallpaperFlow.exe --monitor 1 WallpaperFlow.exe --monitor all # lossless instant undo and layout safety snapshots WallpaperFlow.exe --undo WallpaperFlow.exe --backup # list connected displays, DPI scales, and work areas WallpaperFlow.exe --list-monitors # see what it would do without moving any icons WallpaperFlow.exe --dry-run --visualize desktop.png # stay running and realign whenever the wallpaper changes WallpaperFlow.exe --daemon --interval 15
Right-click the desktop → View → untick Auto arrange icons. With it on, Explorer discards every position and the tool will tell you so rather than pretending it worked.
Leaving Align icons to grid on is fine — the tool lays out on Explorer's real pitch. It does mean a target closer than one cell to where an icon already sits will not move it.
From download to a desktop that stays tidy on its own. Five minutes, and the first two steps change nothing.
One file, nothing to install. %LOCALAPPDATA%\Programs\WallpaperFlow\ is a
good home, which matters if you start it with Windows later.
SmartScreen will say Windows protected your PC because the exe is unsigned: click More info → Run anyway.
It is a command-line tool, and a double-click closes the window before you can read
it. Open the exe's folder, click the address bar, type cmd, and press Enter. Then run:
WallpaperFlow.exe --dry-run --visualize preview.png
Open preview.png. Bright areas are kept clear and the numbered boxes are where
icons would go. The terminal prints the saliency of the chosen cells against the whole
screen. The lower, the quieter.
Right-click the desktop → View → untick Auto arrange icons. Leave Align icons to grid as it is.
WallpaperFlow.exe
You'll see Repositioned 10 of 14 icons or similar. Icons that did not
move were already in their best cell.
Realign whenever the wallpaper changes, and only then:
WallpaperFlow.exe --daemon --interval 15
To start it with Windows: press Win+R, type shell:startup, and create a shortcut
to "…\WallpaperFlow.exe" --daemon --interval 15 --quiet. Set the shortcut to
Run: Minimized. Delete it to stop.
There is no undo command yet, so preview with --dry-run until you like the
result, and screenshot your desktop if its exact layout matters. For a plain tidy grid
back at any time, tick View → Auto arrange icons. To uninstall, delete the
exe and the startup shortcut. It keeps no settings and writes nothing to the registry.
It never prints success for work it did not do. Exit code 0 = applied,
2 = could not apply here, 3 = icon count unreadable.
| Message starts with | Fix |
|---|---|
| Explorer discarded the new positions… | Auto arrange is on. Untick it under right-click → View. |
| Explorer accepted the messages but no icon changed… | Every target snapped back to its current cell, so the icons are already well placed. Check with --dry-run --visualize. |
| Could not determine the desktop icon count… | Turn on View → Show desktop icons, or pass --icons N to preview. |
| Could not locate the desktop SysListView32 | A replacement shell owns the desktop. Only the standard Explorer desktop is supported. |
| …could not read positions back… | Run from a normal terminal, not as administrator. If it persists, restart Explorer from Task Manager. |
| No readable wallpaper… | Solid colour or uncached image. Pass --wallpaper C:\path\to\image.jpg. |
Only the primary monitor is considered in this version.
All flags: WallpaperFlow.exe --help.
PyInstaller does not cross-compile, so a Windows .exe has to be built
on Windows — building on Linux gives you a Linux binary. Needs Python 3.11 or newer.
git clone https://github.com/Arnav1771/wallpaper-flow
cd wallpaper-flow
python -m venv venv
venv\Scripts\python -m pip install -r requirements.txt pyinstaller
venv\Scripts\python -m PyInstaller --onefile --name WallpaperFlow --paths src --version-file version_info.txt src\cli.py
# dist\WallpaperFlow.exe — about 60 MB, OpenCV and NumPy are bundled
Or skip the exe and run it from source. The tests need no desktop and no network:
pip install -r requirements.txt
python src/cli.py --dry-run --visualize out.png
python -m unittest discover -s tests -v # 20 tests