WorkspaceForge
Works out where every window goes when today's screen isn't yesterday's.
Free right now — no account, no card
Preview
1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.
Free while we’re in preview
Get WorkspaceForge
Works out where every window goes when today's screen isn't yesterday's.
The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.
One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.
Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.
- One file — no installer
- Runs on your machine, offline
- Source code published below
Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. At launch, WorkspaceForge is included in every plan along with the rest of the range.
Saved on three 1440p screens, opened on a laptop
Describe your monitors in one JSON file and your workspace in another: nested rows and columns with weights, leaves named as zones, rules saying which app lands in which zone. workspaceforge plan solves that into exact rectangles. refit --from desk3.json --to laptop.json maps the same layout onto different hardware and reports which window moved, which was resized, and which got folded in from a monitor that no longer exists. Monitors on both sides are ranked by the same canonical order, rank pairs with rank, and screens with nowhere to go fold onto the primary as equal columns.
The pixels add up
Weighted splits hand out leftover pixels by the largest-remainder method, so five zones on a 1439 px screen sum to exactly 1439. The last zone in a row ends precisely on the parent’s right edge, and the error doesn’t compound down a nested tree. When a minimum size can’t be met, the shortfall is named in pixels instead of quietly fudged.
It is a calculator
No call to Xrandr, CoreGraphics or EnumDisplayMonitors. It doesn’t enumerate your displays, doesn’t list your open windows, doesn’t move anything, and integrates with no window manager. Take the JSON or the to-scale SVG to something that can. Keyboard shortcuts are WindowDeck’s job.
Reading on the job itself
- How to save and reopen your whole working setup Save the list — the folders, the applications, the pages — under a name, and open the name. Restoring exact...
Advanced & technical details Command-line builds, source code, checksums and a recorded session — for developers and IT teams
A working command-line build of the layout solver: weighted splits resolved to exact integer rectangles that tile the work area with no gap and no overlap, minimum sizes checked and named when they cannot be met, and a documented re-fit that maps a layout saved on one set of monitors onto a completely different one. It computes where a window would go and draws it to scale as an SVG; moving real windows is out of scope.
Recorded session
Naming status
Working name only — brand verdict **AVOID** (Very High). Collision: WorkspaceForge. Rename completely.
What it draws on
Existing paid software whose best ideas shaped this program: DisplayFusion Pro, Stardock Fences, Actual Window Manager, Stardock Start11.
Command line
There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.
workspaceforge - window layout solver and re-fitter (Techlosoft Workspace Line)
USAGE
workspaceforge plan <layout.json> --topology <topology.json> [--windows <f>] [--json]
workspaceforge check <layout.json> [--topology <topology.json>] [--windows <f>] [--json]
workspaceforge refit <layout.json> --from <topology.json> --to <topology.json> [--json]
workspaceforge render <layout.json> --topology <topology.json> --out <map.svg> [--json]
workspaceforge topo <topology.json> [--json]
workspaceforge help | -h | --help
COMMANDS
plan Solve the layout against the topology and print the exact integer
rectangle of every zone and every window.
check Validate a layout: structure, tiling, overlaps, out-of-bounds
rectangles, minimum-size violations, unmatched windows and
unreachable rules. With --topology it also solves the geometry.
refit Take a layout authored for one topology and map it onto another.
Monitors are paired by rank (primary, then descending area, then
position); zones are re-solved against the new work areas; monitors
that no longer exist are folded into the destination primary. Every
window that moves, resizes or is folded is reported.
render Draw the solved layout as a real, to-scale SVG diagram you can open
in any browser.
topo Validate and describe a topology file: bounds, work areas, scale,
canonical rank order and adjacency.
FLAGS
--topology <file> Display topology JSON (plan, check, render).
--from <file> Source topology the layout was authored on (refit).
--to <file> Destination topology to map it onto (refit).
--windows <file> Window list JSON, replacing the layout's own "windows".
--out <file> SVG file to write (render).
--json Machine-readable JSON output. Available on every command.
Short forms -t, -l, -w and -o are accepted for --topology, --layout, --windows
and --out. Flags may appear before or after positional arguments.
EXAMPLES
workspaceforge plan desk.layout.json --topology desk.topology.json
workspaceforge check desk.layout.json --topology desk.topology.json --json
...
Recorded from the shipped binary, not written by hand.
Source
Every file the program is built from:
console.go · console_test.go · geometry.go · guided.go · layout.go · main.go · main_test.go · refit.go · solve.go · svg.go · topology.go
SHA-256 checksums · build instructions & scope notes · full build plan