A macOS workspace manager with yabai-style window tiling.
Tatami groups your apps into virtual workspaces you switch between with a keystroke or a trackpad swipe, and tiles their windows automatically with a yabai-style BSP engine — no SIP changes and no shell scripting required.
Status: In active development. Config format and shortcuts may still change.
- Automatic binary space partitioning with a dwindle (spiral) layout
- Directional focus, swap, and resize (vim-like
h/j/k/l) - Zoom a window to fill the workspace; toggle split orientation
- Rotate, mirror, and balance the layout tree
- Drag-to-swap, plus manual resize that syncs back into the layout
- Configurable inner / outer gaps
- Group apps into virtual workspaces with per-workspace app assignments
- Switch by hotkey, trackpad swipe, or "recent workspace"
- Optional loop-around, skip-empty, and follow-app-focus behaviors
- Auto-open assigned apps when a workspace activates
- Pin a workspace to a display or follow apps dynamically (multi-display)
- Floating apps that never tile
- focus-follows-mouse and mouse-follows-focus (yabai-style)
- Optionally hide the cursor on a workspace switch
- Menu bar item showing the active workspace (icon + name)
- On-screen HUD when switching workspaces
- Per-workspace SF Symbol icons
- Native SwiftUI settings
- skhd-style shortcut syntax (e.g.
ctrl + alt - h) - Plain-TOML config at
~/.config/tatami/config.toml(XDG-aware), hot-reloaded - CLI for scripting (
tatami activate <workspace>,tatami list-workspaces, …) - Sparkle auto-updates
- macOS 14.0 or later
- Accessibility permission (System Settings → Privacy & Security → Accessibility)
brew install --cask pangmo5/tap/tatamiOr download the signed & notarized .dmg from the
latest release.
brew install tuist # or: mise install
tuist install && tuist generate --no-open
open Tatami.xcworkspaceSettings live in ~/.config/tatami/config.toml, grouped into tables —
[settings.layout], [settings.focus], [settings.gestures],
[settings.shortcuts], and so on. Workspaces, their app assignments, and
floating apps are stored in the same file. Edits made in the app or by hand are
picked up live.
See docs/CONFIGURATION.md for the full reference — every key, its default, and the shortcut syntax.
- Tuist — project generation
- The Composable Architecture (TCA) — app architecture
- swift-sharing — cross-feature state sharing
- swift-toml — config persistence
- KeyboardShortcuts — global hotkey recording
- SFSafeSymbols — type-safe SF Symbol catalog
- Sparkle — app updates
Tatami is inspired by FlashSpace by Wojciech Kulik (the virtual workspace-switching concept) and yabai by koekeishiya (the window-tiling model). See NOTICE.md for attribution.