Tatami
Developer ProductivityA macOS workspace manager that groups apps into virtual workspaces and tiles windows using a yabai‑style BSP engine, without needing SIP changes or shell scripting.
Features
- Creates virtual workspaces with per‑workspace app assignments
- Automatic binary space partitioning window tiling (yabai‑style) with directional focus and resize commands
- Supports floating windows via ScreenCaptureKit without disabling SIP
Recent releases
View all 15 releases →
v1.4.0
Breaking risk
⚠ Upgrade required
- Homebrew users should run `brew upgrade --cask tatami`.
- Direct download: Tatami-1.4.0.dmg from the release page.
- Sparkle will detect and apply the update automatically on next check.
Breaking changes
- Per-app `floating` boolean replaced by `layout` field with values "tiled", "floating", or "unmanaged"; downgrading to pre‑1.4 versions reads all apps as tiled.
Notable features
- Added 'ignore' (unmanaged) layout mode where windows remain full workspace members without tiling.
- Workspaces now restore the last‑used window when activated without a pinned focus app.
- Cycle shortcuts traverse all visible windows (tiled, floating, unmanaged) individually.
Full changelog
⚠️ Breaking Changes
- Per-app layout is now a mode, not a boolean — assigned apps and shared apps carry a
layoutoftiled/floating/unmanagedinstead offloating = true/false. Existing configs (including a pre-1.4floatingbool and legacy[[floatingApps]]) migrate automatically on load. Once saved, the config uses the newlayoutkey, so downgrading to an older Tatami reads every app as tiled; hand-edited configs should switch tolayout = "…".
Improvements
- Ignore-tiling layout mode. A third per-app mode beside tiled and floating: an unmanaged app stays a full workspace member — auto-open, show/hide, focus, focus-follows-mouse, and window cycling all apply — but its window is never tiled into the BSP tree nor mirrored onto an on-top panel, and it needs no Screen Recording. Set it per workspace and per shared app with the Tiled / Float / Ignore picker.
- Workspaces restore your last-used window. Activating a workspace with no pinned focus app now returns focus to the exact window you last used there, instead of a fixed app.
- Cycle through every window. The next/previous-window shortcuts walk all visible windows in the active workspace — tiled, floating, and unmanaged — cycling multiple windows of the same app individually.
- Add apps by search or from disk. The app picker searches running apps, and you can add one straight from a file.
- Shortcut recording reworked. The recorder shows layout-independent glyphs (⌘S regardless of your keyboard layout), records on a single click, flags conflicts with another binding by name, and suspends global hotkeys while you're recording — so the combo you press lands in the field instead of firing its action. Global hotkeys now run on Magnet (Carbon) under the hood.
Fixes
- Switching to a workspace no longer bounces back when a native-tab app changes its window id. Apps with macOS native tabs (e.g. ghostty) swap window ids as you switch tabs, which could leave the BSP tree momentarily empty — and "switch to recent" would bounce you to the previous workspace. The active workspace now re-checks its own on-screen windows before switching.
- Focus-follows-mouse only follows into windows Tatami manages, so notification and HUD panels can't steal focus.
- Hide-on-close windows are reclaimed even when they fire no Accessibility destroy event.
Install / Update
- Homebrew:
brew upgrade --cask tatami - Direct: Tatami-1.4.0.dmg
- In-app: Sparkle will pick this up on its next check.
Config change
v1.3.2
Breaking risk
Auth
Screen‑recording perm + config rename + snappier switch
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Install & Platforms
Install via
brew
Platforms
macos