| 1 |
# tarmac documentation |
| 2 |
|
| 3 |
tarmac is a keyboard-driven tiling window manager for macOS, written in Rust. It uses a binary space partition (BSP) layout engine to automatically arrange your windows, and exposes a Lua configuration API and IPC socket for full control. |
| 4 |
|
| 5 |
## What tarmac does |
| 6 |
|
| 7 |
- Tiles windows automatically using BSP splits |
| 8 |
- Provides 10 numbered workspaces per monitor plus named scratchpads |
| 9 |
- Draws window borders via [ers](/docs/ers/overview), a companion border renderer |
| 10 |
- Accepts commands over a Unix socket (IPC) via `tarmacctl` |
| 11 |
- Configures entirely through a Lua file at `~/.config/tarmac/init.lua` |
| 12 |
- Includes a [system tray](/docs/system-tray) with workspace switching and a [settings window](/docs/settings-window) for live configuration |
| 13 |
- Supports window rules to auto-float or assign apps to specific workspaces |
| 14 |
- Emits rich events for status bar integration (sketchybar, etc.) |
| 15 |
|
| 16 |
## What tarmac does not do |
| 17 |
|
| 18 |
- Run on Linux or Windows — it uses macOS-specific APIs (SkyLight, Accessibility, CoreGraphics) |
| 19 |
- Provide a built-in status bar — use an external bar like sketchybar and set `bar_height` |
| 20 |
- Offer multiple layout algorithms — it's BSP-only (no master-stack, columns, or spiral) |
| 21 |
- Include animations or smooth transitions |
| 22 |
|
| 23 |
## Where to start |
| 24 |
|
| 25 |
If you're new to tarmac, start with [Getting Started](/docs/getting-started) to install and run it for the first time. |
| 26 |
|
| 27 |
If you're already running tarmac and want to configure it, jump to [Configuration](/docs/configuration). |
| 28 |
|
| 29 |
For scripting and automation, see [IPC](/docs/ipc) and [Events & Hooks](/docs/events-hooks). |
| 30 |
|