makepad/apps/wm/KEYBINDINGS.md
Admin 3b8cd8a69a apps: WM, wm-all, phone apps, files, route, sheets, photos, image-tiles; the mp prefix rename
Squash of 59 work commits (Sep 1–12):
  b0380ba  image-tiles: the picture-wall engine as a library — tape atlases, a baker CLI, and the TileGrid widget
  83d8eac  mpsheets: demo feature and the SheetDocs seam
  daff390  finance: demo feature — generated ledger, SQLite target-gated, import hidden
  13b4c48  mpfiles: demo build — procedural fake filesystem, still-image thumbnails, chat feature
  58e1f72  mpsheets: review fixes for the demo seam
  3203e32  finance: review fixes — id remapping on persist, structural determinism tests, one cfg seam
  0537687  mpfiles: distinct repo-owned pictures for the demo thumbnail pool
  fe920c8  files: review fixes — demo scan exclusions, Zipf sizes, trash root guarded, depth bound, tests
  4144dc4  files: the spy test filesystem implements the clock
  1940f3d  fonts: leave apps/wm untouched — its font-set declaration waits for the aichat lane to land
  b0e34c2  wm: the AI pane and its bus — the aichat child seated in the slot, F10, the os service with the typed open
  de937ac  route: the web build is a one-to-one recompile — native UI, service seams behind it
  2f5a984  files: the file browser on the AI bus — four read-only tools through a correlated, cancellable runner
  2b035ff  route: the navigation session keeps time on the platform clock — the std clock traps on wasm
  1b70899  files: the space view is where a tab starts
  412b3c9  files: the space view rescans through the virtual filesystem — the web has no other disk
  0105fa5  files: the space view opens in 2.5D
  5d007e0  files: an unset projection preference means 2.5D
  6857d86  files: the projected treemap clips boxes at the near plane and keeps the camera above them
  d3cd233  wm: one desk for every target — the host seam, the assistant seated in-process, the web profile, and the assistant up at boot
  6d47c3f  wm: the omarchy themes moved to omacom/omarchy — the importer follows
  82def6b  wm: every app under the desk — the chat keeps the keyboard through an automatic refocus, a pool that gives up, polite closes for browser, sheets and aichat
  6105b61  sheets + files: the assistant reads and writes cells, makes folders, renames and trashes
  82ac768  photos: the picture wall as an app — the SMBC archive on the tile engine, a module from its first line; fabric in the launcher
  190062e  route: the maps app exposes its tool table to the desktop assistant
  3768653  image_tiles: the wall is box-packed — justified rows keep every picture's own shape and fill the width
  3691875  wm: launcher icons — a photo for Photos, a shirt for Fabric, a globe for Route, a play badge for Video, a pulse for the task manager
  8625076  aichat + photos + image_tiles: make me a picture and it lands on the wall; the wall filters as you type, tiles flying to their places
  1dcca41  wm: a theme with no wallpapers fetches them on its own
  ff6cfec  wm: minimise, maximise and close in the bar's top right on Windows and Linux
  62f38a5  route: --hour=N pins the theme hour for harness grabs
  362ac59  wm: the checkout is found from the working directory too, and a sibling binary is an .exe on Windows
  0fdfba7  files: the web's makepad home is a fixed virtual path — std's temp_dir panics there
  daf88e1  route demo: the tiles come from the repacked world archive at its own never-cached path
  15c3b11  ai-services: what the pubsub review found — modules get a subscription seam and a publish sink through both WM paths, lease end flushes unsubscribes to hosted services, the subscription cap counts closing rows, an endpoint's queue is dropped after Unregister, the prompt drops a subscription on final
  d852699  route: no tile-source dropdown — makepad.nl is the tile source through the local range cache; a world.mkmap in the saved maps folder is the only override; the stale preference file is removed on start
  aa271c3  map + route + geodata: the Terrain layer through the archive plane — TerrainSource (hosted .mkmap elevation shards fetched by range through the shared reader, a local MBTiles only as a dev override), the hillshade rendered on the pool's heavy lane with reused TerrainScratch buffers (web capped at 2048×1536 at DPR 1, native DPR-aware), one request in flight; the demo checkbox now renders terrain like native
  dbc7838  route: the maps-folder field and its save button are gone from the settings panel; the maps root is automatic
  a53d9b6  route: no clock-driven night theme — the theme is the user's toggle, remembered in cx.storage, default day (the hour rule fired on the web for the first time once wasm had a clock and darkened the map after 19:00)
  ca92ff9  route: the open sea on the web — the ocean-low/ocean-high overlays are an always-on group in the shared hosted overlay table, read through the archive plane (makepad.nl, cached); native keeps the local ocean files only as a dev override; the native-only OCEAN_MBTILES path is gone
  4cd24c4  route demo: the first location fix flies the map to the user at zoom 14, as native does; Amsterdam stays the default until a fix arrives
  2e869f8  route: the ocean-high overlay comes from the re-sharded archive (58 shards of at most 16 MB, one small leaf directory each) instead of two shards whose directories decoded to 407 MiB
  8021bb0  Add Clock and Weather with shared mobile tile views and persistent alarms
  77b8309  Make application layouts and custom widgets follow desktop and mobile themes
  b357164  Add desktop and mobile compositor shells with OS switching and dock transitions
  11dec2e  Keep hosted app output readers off the shared task pool
  c4002c5  Round complete desktop surfaces and add Windows snap layouts
  a5f8dd8  Frame home photo tiles and clip the picture wall below app controls
  678721d  Give mobile app libraries real search focus and hosted keyboard input
  4794cdf  Keep window title fills opaque at the application surface join
  2cc584e  Match Windows 2000 and NeXTSTEP window chrome to original screenshots
  4a876a8  Give Files navigation and storage tools a clearer hierarchy
  7821c90  Keep prewarmed browsers in the active desktop appearance
  5bfe694  Compact the Files toolbar and repair navigation and selection actions
  44fef36  Preserve Photos subjects and zoom across host view and aspect changes
  ae20efc  Draw larger macOS traffic lights with centered hover symbols
  2bc4d89  wm: the WM is a library plus a desktop binary, Linux controls, hosted tick pacing
  d643eb4  apps: the in-process app wave — mail, notes, calendar, reminders, calculator; clock, weather, finance, photos and route as modules; civil time, read-only sqlite, Linux CEF
  56c1dee  wm: a timer beat missed while the child renders is serviced on its acknowledgement

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-15 13:40:28 +02:00

7.6 KiB
Raw Permalink Blame History

wm keyboard shortcuts — how they work

wm is Omarchy's tiling window manager rebuilt in makepad, and it keeps Omarchy's keymap (read from omarchy/default/hypr/bindings/*.lua). Omarchy builds every shortcut from one modifier, SUPER — the Logo key: the Windows key on a PC keyboard, ⌘ Cmd on a Mac — plus optional Shift / Ctrl / Alt. wm accepts ⌘ as SUPER exactly like Linux, and also a second spelling, Ctrl+Alt, for the few chords macOS keeps for itself (⌘Tab, ⌘⇧3/4/5). If you still have Spotlight on ⌘Space, unbind it in System Settings → Keyboard → Shortcuts, or use Ctrl+Alt+Space.

Omarchy layer Press on macOS Fallback spelling
SUPER ⌘ Ctrl+Alt
SUPER+SHIFT ⌘+Shift Ctrl+Alt+Shift
SUPER+CTRL ⌘+Ctrl Ctrl+Alt+Cmd (legacy)
SUPER+ALT ⌘+Alt (⌥ Option) Ctrl+Alt+A, then key
SUPER+SHIFT+CTRL ⌘+Shift+Ctrl Ctrl+Alt+Shift+Cmd
SUPER+SHIFT+ALT ⌘+Shift+Alt —
ALT / ALT+SHIFT Alt / Alt+Shift (same on every OS)

Quitting wm itself is ⌘⇧Q (the app menu) — plain ⌘Q closes the focused window, as in Omarchy. Press ⌘K at any time for the in-app cheat sheet; it prints the exact chords for the OS you are on.

In the Windows style, SUPER+Z opens Snap Layouts for the focused window. You can also hover its maximize button, or drag its title bar to the top center to choose a slot. Drag to a side for half the desktop, or a corner for a quarter; the preview shows where the window will land. SUPER+Left and SUPER+Right select a half. Dragging a snapped or maximized title bar restores the window's previous floating size under the pointer. Layouts follow the available desktop area, excluding the bars; wide layouts offer thirds and portrait layouts offer top/bottom halves.

Starting things

Chord Does
⌘ Return New terminal, opened in the focused terminal's directory
⌘ Space The Omarchy menu (Apps, Learn, Trigger, Style, Setup, … System)
⌘⌥ Space Apps menu straight away (the launcher)
⌘ Esc System menu (lock, suspend, logout, reboot, shutdown)
⌘ K Keybindings cheat sheet
⌘⇧⌃ Space Theme menu
⌘⌃ Space Next wallpaper
⌘⇧ Space Show / hide the top bar

With the mouse: the Omarchy button at the far left of the bar opens the menu (right-click it for a new terminal); the focused window's title in the bar focuses it on left-click and closes it on middle- or right-click.

Inside a menu: type to filter, Enter or Right activates, Backspace or Left goes back a level (so does clicking the header), Esc clears the filter and then closes; hover selects, click activates, click outside closes.

Moving around the tiles

New windows split the focused tile (dwindle layout: the longer side splits).

Chord Does
⌘ Arrows Focus the window left / right / up / down
⌘⇧ Arrows Swap the window in that direction
Alt+Tab / Alt+Shift+Tab Next / previous window
⌘ J Toggle the split direction of the focused pair
⌘ W or Q Close the window
Ctrl+Alt+Delete Close all windows, back to workspace 1
⌘ L Toggle the workspace layout (dwindle / scrolling)

Mouse: ⌘ + left-drag moves a window (a tiled one swaps with the tile you drop it on), ⌘ + right-drag resizes it from the corner nearest your grab.

Sizing

Chord Does
⌘ - / = Move the nearest divider left / right by 100 px
⌘⇧ - / = …up / down by 100 px
⌘⌥ - / = …by 25 px
⌘⇧⌥ - / = …by 25 px vertically
⌘⌃ - / = …by 300 px
⌘⇧⌃ - / = …by 300 px vertically

Window modes

Chord Does
⌘ F Full screen (the window covers the desk, bar hidden)
⌘⌥ F Full width (maximized inside the gaps, bar stays)
⌘⌃ F Tiled full screen (the app is told it is fullscreen, tile stays)
⌘ T Toggle floating / tiled
⌘ O Pop the window out: float it at 1300×900, center, pin on top on every workspace; again to tile it back
⌘ P Pseudo-tile: keep the app's own size centered inside its tile

Workspaces and the scratchpad

Chord Does
⌘ 1…0 Go to workspace 1…10
⌘⇧ 1…0 Move the window there and follow it
⌘⇧⌥ 1…0 Move it there silently (stay where you are)
⌘ Tab / ⌘⇧ Tab Next / previous workspace
⌘⌃ Tab The workspace you came from
⌘ + mouse wheel Scroll through workspaces
⌘ S or ` Show / hide the scratchpad (a drop-down console over the top half)
⌘⌥ S, ⌘⇧ ` Send the window to the scratchpad

Groups (tabbed windows)

Chord Does
⌘ G Turn the window into a group (tabs) / dissolve it
⌘⌥ Arrows Move the window into the group next to it
⌘⌥ G Move the window out of its group
⌘⌥ Tab / ⌘⇧⌥ Tab Next / previous tab in the group
⌘⌃ Left/Right Same, Omarchy's other spelling
⌘⌥ 1…5 Jump to the nth tab

When a chord does nothing

macOS swallowed it. Use the Ctrl+Alt spelling, or for the SUPER+ALT layer press Ctrl+Alt+A, let go, then press the key. Everything above is generated from apps/wm/src/binds.rs; the cheat sheet (⌘K) is always the authoritative list.