r/software • u/Banano4Love • 6h ago
Release Tired of rearranging 10+ windows every time I switch from coding to gaming, (A)I made a lightweight workspace-switcher for Windows.
Hey everyone,
If you run two or three monitors on Windows, you probably know how tedious it is to switch contexts during the day. Going from a work setup to gaming, or from a meeting layout to writing, usually means manually dragging and resizing a dozen windows across different screens.
I was looking for a decent tool to automate this, but ran into walls with the existing options:
- Windows Virtual Desktops constantly dumps all my windows onto a single screen whenever the monitors wake up from sleep or after unplugging a display. Plus, it doesn't actually launch or close apps when switching contexts.
- PowerToys Workspaces seemed promising at first, but in practice it kept opening duplicate instances of apps (like launching a second browser or Discord instead of just moving the open window) and it leaves all the windows from the previous workspace cluttering the desktop.
- DisplayFusion is paid, fairly heavy on background resources, and felt like overkill for what should be a straightforward task.
So I ended up building Workspace Switcher. It is a lightweight, portable Windows utility written in .NET 8 / WPF that lets you capture your entire multi-monitor setup and snap between profiles using global hotkeys.
A few things it does:
- Instant snapshot and restore: Captures exact pixel coordinates, window states (normal, maximized, minimized), and target monitors into human-readable JSON files.
- Global hotkeys: Runs on a lightweight background Win32 message loop so you can switch between your top workspaces instantly (`Ctrl + Alt + 1..5`).
- Clean switching: There is a toggle to automatically close windows from your previous workspace when you switch layouts (e.g. closing work and IDE windows when jumping into your gaming setup).
- Auto-launch missing apps: If an application from a saved layout is not running, it can launch the executable for you during restore.
- Window inspector: You can click on any captured window in the UI to change its target monitor via dropdown or fine-tune its pixel coordinates without having to retake the snapshot.
- Smart process matching: Includes heuristics to properly handle tricky multi-process apps like Steam (where the window belongs to `steamwebhelper` but `steam.exe` needs to be launched), Electron apps, and browsers.
- Portable and bloat-free: Runs as a single `.exe`, requires no installer, has no telemetry, and is per-monitor DPI aware.
The project is completely free and open source. You can check out the source code or download the standalone executable on GitHub:
GitHub:
I would love to hear your thoughts, especially if you have unusual multi-monitor or mixed-scaling setups and run into any edge cases.