Desktop Workspace Manager

WindowDeck

Settles whose Ctrl+Shift+P it is across everyone's keybinding files.

Free right now — no account, no card

Get WindowDeck free Windows & Mac · one file, nothing to install

Preview

1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.

Interface design WindowDeck, 1 of 1
Screenshot WindowDeck running on Windows today

Free while we’re in preview

Get WindowDeck

Settles whose Ctrl+Shift+P it is across everyone's keybinding files.

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, WindowDeck is included in every plan along with the rest of the range.

Whose Ctrl+Shift+P is it?

Hand WindowDeck everyone’s binding files. It normalises every chord to one canonical spelling, finds every conflict, then merges the lot into a single deck with a precedence you can actually read: an explicit "override": true beats the team standard, which beats an ordinary personal binding, and ties break alphabetically on set name. Arbitrary, yes, but stated and reproducible. Merge the same files in a different order and you get a byte-identical deck; a test tries every permutation to prove it.

The collisions a code review misses

One person typed ^⇧P, another typed ctrl-shift-p, a third wrote Ctrl+Shift+P. Three spellings, one chord, and nothing in the diff shows it. WindowDeck calls that an alias collision and treats it as an error. It also catches prefix clashes, where Ctrl+K can never resolve because Ctrl+K Ctrl+S exists, and chords the OS already owns. Anything it can’t resolve gets proposed replacements that are genuinely free.

It never touches your keyboard

No RegisterHotKey, no X11 or Wayland connection, no daemon, no editor config rewritten. It reads JSON and writes JSON. Its sibling WorkspaceForge handles geometry; bindings are all this one does. The reserved tables are curated, roughly 25 chords for Windows and 22 for macOS, so no warning means “not in our table”, not “safe”.

Reading on the job itself

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 binding analyser: a chord parser that normalises the notations people actually type (Ctrl+Shift+P, ^⇧P, Cmd+Opt+4), curated reserved-chord tables for Windows and macOS, conflict analysis across several sets including multi-chord prefix clashes, and an order-independent merge that explains every decision it makes. It reads and writes files; it never registers or intercepts a hotkey.

Naming status

Working name only — brand verdict **CAUTION** (Medium). Collision: WindowDeck. Potentially usable after formal clearance.

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.

windowdeck - keyboard binding conflict authority (Techlosoft Workspace Center)

USAGE
  windowdeck check   --set <file.json> [--set <file.json> ...] [--base <file.json>] [--strict] [--json]
  windowdeck merge   --set <file.json> [--set <file.json> ...] [--base <file.json>] --out <deck.json> [--force] [--json]
  windowdeck explain <chord> --set <file.json> [...] [--base <file.json>] [--json]
  windowdeck export  --set <file.json> [...] [--base <file.json>] --format json|csv|md [--out <file>]
  windowdeck help | -h | --help

COMMANDS
  check      Normalise every binding in every set and report every conflict:
             one chord claimed by two actions, the same action bound
             differently in different sets, multi-chord sequences where one is
             a strict prefix of another, collisions that only appear after
             normalisation, and collisions with the built-in Windows and macOS
             reserved-chord tables.
  merge      Resolve the conflicts with a documented precedence and write a
             single conflict-free deck to a NEW file. Every decision is
             explained. The result is order-independent: merging the same sets
             in a different order produces an identical deck.
  explain    Show who binds one chord, everywhere: which sets, which actions,
             how each file spells it, what the OS does with it, and any
             prefix relationships with multi-chord sequences.
  export     Render the merged deck as json, csv or md.

FLAGS
  --set <file>      A binding-set file (JSON). Repeat for each person. Bare
                    positional arguments are treated as sets too.
  --base <file>     The team standard. Its bindings win over personal sets
                    unless a personal binding is marked "override": true.
  --out <file>      Where to write. Required by merge, optional for export
                    (stdout when omitted). merge refuses to write over any
                    input file, and refuses an existing file unless --force.
  --format <fmt>    export only: json, csv or md.
  --ledger <file>   Append one JSON-lines audit record for this run.
  --suggest <n>     How many free replacement chords to propose per unresolved
                    conflict. Default 3, 0 disables.
  --strict          check only: exit non-zero on warnings as well as errors.
  --force           Allow --out to overwrite an existing (non-input) file.
  --json            Machine-readable JSON output.
...

Recorded from the shipped binary, not written by hand.

Source

Every file the program is built from:

analyze.go · chord.go · console.go · console_test.go · guided.go · main.go · main_test.go · report.go · reserved.go · sets.go

SHA-256 checksums · build instructions & scope notes · full build plan