The Spacetile field guide

Commands

Every action, its default key and its spacetile-ctl form.

On this page

Every action has a text form. That’s what config.json binds keys to, and what app/scripts/spacetile-ctl sends:

app/scripts/spacetile-ctl place left

Keys are written modifier-modifier-key in config.json, for example "alt-shift-h": "swap west". Modifiers are ctrl, alt (or opt), shift and cmd. The default keys follow one pattern:

Modifier Family
⌥ Focus and layout
⌥⇧ Move windows
⌥⌃ Place and size
⌥⇧⌃ Preselect
⌃⇧ Join

Settings → Keys shows every action grouped by family. Click a shortcut to re-record it, or click a group’s prefix keycaps, hold new modifiers and release to move the whole group.

Other key binders

Raycast, skhd and Karabiner-Elements can run Spacetile’s commands too. To bind them only there, turn off Use Spacetile’s shortcuts at the top of Settings → Keys. Spacetile then registers no shortcuts and keeps yours for when you turn it back on.

From a shell, the app binary passes its arguments to the running Spacetile and exits straight away:

/Applications/Spacetile.app/Contents/MacOS/Spacetile focus west

Link it onto your PATH to call it spacetile:

ln -s /Applications/Spacetile.app/Contents/MacOS/Spacetile /usr/local/bin/spacetile

Raycast

The Spacetile extension has a command for every action in Settings → Keys, each with Raycast’s alias and hotkey fields. Run Command sends any other command, such as load Work.

skhd

In ~/.skhdrc:

alt - h : spacetile focus west
alt - 1 : spacetile space 1
alt + shift - 1 : spacetile send 1
alt + ctrl - h : spacetile place left

Karabiner-Elements

Add a rule under Complex Modifications. Karabiner runs commands without your shell’s PATH, so use the full path:

{
  "description": "Spacetile: ⌥H focuses the window on the left",
  "manipulators": [
    {
      "type": "basic",
      "from": { "key_code": "h", "modifiers": { "mandatory": ["option"] } },
      "to": [{ "shell_command": "/Applications/Spacetile.app/Contents/MacOS/Spacetile focus west" }]
    }
  ]
}

Spaces

Default key Command What it does
⌥1 … ⌥9, ⌥0 space 1 … space 10 Switch to that Space instantly, with no slide animation. Full-screen apps count, in their Mission Control place
⌥. / ⌥, space next / space prev Next or previous Desktop, wrapping round. From a full-screen app, the Desktop either side of it
⌥` space last The Space you were on before this one
⌥⇧1 … ⌥⇧0 send 1 … send 10 Send the focused window to that Space and follow it (see “Follow after sending”). A full-screen app’s Space can’t take it
⌥⇧. / ⌥⇧, send next / send prev Send the focused window to the next or previous Space
none display next / display prev Focus the display to the right or left; the pointer moves there, making it the active display
none send display next / send display prev Move the focused window to the Space showing on the display to the right or left

Focus

Default key Command What it does
⌥h / ⌥j / ⌥k / ⌥l focus west / south / north / east Focus the neighbouring tile; the pointer follows if “Mouse follows focus” is on
⌥n / ⌥p stack next / stack prev Cycle through the windows stacked in the focused tile, or the whole Space in stack layout

Move

Default key Command What it does
⌥⇧h / j / k / l swap west … Swap the focused window with its neighbour
⌃⇧h / j / k / l join west … Put the focused window and its neighbour in that direction together in one tile, split the other way: side by side become one above the other, and stacked become side by side. Their order stays

Layout

Default key Command What it does
⌥z, ⌥m zoom Toggle the focused window filling the whole Space; the tree underneath is kept
⌥f float Take the focused window out of the tiling, or put it back
⌥e split Flip the focused window’s split between side by side and stacked
⌥b, ⌥=, ⌥] balance Give every tile an equal share and remove holes
⌥d layout bsp Tile this Space
⌥s layout stack Stack this Space: every window fills it; cycle with ⌥n / ⌥p
none layout float Leave this Space’s windows where you put them
⌥x mirror vertical Swap top and bottom across the Space
⌥y mirror horizontal Swap left and right across the Space
⌥r rotate 270 Rotate the layout anticlockwise; rotate 90 and rotate 180 also exist
none retile Re-read windows and re-apply the current Space’s layout
none close Close the focused window through its close button

Place and size

These give the focused window a region of the Space. The other windows keep their own arrangement in what’s left. Where there aren’t enough windows to fill the shape, empty “holes” stand in (see Spaces and layouts). On a floating window they set its frame directly, as Raycast does. They do nothing on a stack-layout Space.

Default key Command What it does
⌥⌃h / j / k / l place left / bottom / top / right A full-height column or full-width row on that edge. Press again to cycle ½ → ⅔ → ⅓
none place left 3/4, place right 1/3, … A fixed fraction on an edge: 1/4, 1/3, 1/2, 2/3, 3/4 or a decimal
⌥⌃y / u / b / n place top-left / top-right / bottom-left / bottom-right A quarter; the window shares its column with the neighbour below or above it, or a hole
⌥⌃c place center The middle third; other windows split either side
⌥⌃↑ place column Maximize height: a full-height column where the window already is, at its width. At an edge the others keep their arrangement; in the middle they form a column either side. restore undoes it
none place top-left-sixth … place bottom-right-sixth One cell of a three-column, two-row grid; other windows fill the rest in order
⌥⌃= / ⌥⌃- grow / shrink Move the window’s inner borders outwards or inwards by a tenth of the Space
⌥⌃r restore Undo the last run of place, grow and shrink on this Space
none border horizontal -100, border vertical 100, … Nudge the nearest border by points (negative is left or up)

Full screen

Full-screen apps get a Space of their own, which Spacetile shows between the Desktops but doesn’t tile (see Spaces and layouts).

Default key Command What it does
⌥⇧f fullscreen Turn native full screen on or off for the focused window. A tiled window keeps its tile and goes back to it
none fullscreen pair The focused window and its neighbour in the tiling go full screen side by side (Split View), each on the side it’s on now. Spacetile starts it from the app’s Window ▸ Full-Screen Tile menu, then chooses the other window in the picker macOS shows
none space fullscreen next / space fullscreen prev Next or previous full-screen app on the active display, skipping Desktops

Preselect

Default key Command What it does
⌥⇧⌃h / j / k / l preselect west … The next new window opens on that side of the focused window. A teal hint shows where; the same key again cancels

Profiles

Default key Command What it does
none capture <name> Save every Space’s arrangement as a profile
none load <name> Apply a profile. Shortcuts set in the profile designer are stored as these

Spacetile

Default key Command What it does
none pause Pause or resume all tiling. While paused Spacetile moves no windows, ignores other commands and mouse gestures, and releases every shortcut except the ones bound to pause. Resuming lays out the current Space again. If you (or macOS Fill & Arrange) arranged its tiled windows into a clean tiling while paused, Spacetile keeps that arrangement; a window that overlaps another, or a gap, means the old tiling comes back
none settings Open Settings. Opening Spacetile again from Finder, Spotlight or Raycast does the same, so Settings stays reachable when macOS hides the menu-bar item

Unbound by default

Bind any of these in Settings → Keys, or in config.json:

  • display next|prev and send display next|prev

  • join west|south|north|east

  • fullscreen pair and space fullscreen next|prev

  • layout float

  • rotate 90|180

  • retile

  • close

  • the fixed-fraction and sixth place commands

  • the border nudges

Shortcuts from other tools

Settings → Keys → Use Shortcuts From swaps in another window manager’s default shortcuts, mapped onto Spacetile’s commands. Spacetile’s own shortcuts stay for everything the tool doesn’t bind. The few whose keys the tool uses move to new ones in the tool’s style. Edit → Undo takes it back. The maps live in KeyPresets.swift.

Tool What maps Not in Spacetile Spacetile commands moved to make room
Rectangle (Recommended; Raycast’s and Magnet’s sets match) Halves, quarters, thirds, two-thirds, maximize (zoom), maximize height, center, larger/smaller, restore, next/previous display Center two-thirds; Rectangle’s center keeps the window’s size, Spacetile’s takes the middle third place top, place bottom to ⌃⌥⌘↑ / ⌃⌥⌘↓
Spectacle (also Rectangle’s Spectacle set) Cycling halves, quarters, maximize, maximize height, center, larger/smaller, restore, displays Undo/redo none
AeroSpace Focus, move (swap), workspaces 1–9 (focus and send), back-and-forth, tiles and accordion (stack) layouts, resize Workspaces A–Z, moving a workspace to another monitor, service mode (join, float and balance have direct shortcuts instead) space prev to ⌥[
Amethyst Fullscreen layout (stack), shrink/expand, focus and throw to the next screen, throw to Space 1–10 and left/right, float, pause, re-evaluate (retile) Layout cycling and tall/wide/column layouts, main pane, focus and swap round the layout, screens by number, focus-follows-mouse toggle swap west, swap east to ⌥⇧← / ⌥⇧→; preselect west, preselect east to ⌃⌥⇧, / ⌃⌥⇧.
BetterStage (Standard) Stages 1–9 (focus and send), next/previous, retile, focus IJKL, halves, quarters, thirds, two-thirds, maximize, center Stages Bar, new and close stage, window mode cycling, center two-thirds place top, place bottom to ⌃⌥⌘↑ / ⌃⌥⌘↓; place column to ⌃⌥⇧↑
ShiftPlus Previous workspace, cycle workspaces Capturing a workspace by shortcut (Save Layout as Profile… is in the menu bar) none

No preset:

  • Raycast, Moom and yabai ship no default shortcuts. Raycast’s own presets copy Rectangle, Magnet and Spectacle, so choose Rectangle or Spectacle.
  • macOS’s built-in tiling uses fn⌃ chords, which global hotkeys can’t register. They work with Spacetile: see macOS tiling.

The other direction: none of these tools’ defaults cover preselect, stack cycling, mirror, rotate, balance, the split toggle, join (except AeroSpace’s service mode), sending across displays while keeping the Desktop, or applying profiles. Those keep Spacetile’s shortcuts.