Defi
A native scrolling window manager for macOS, inspired by Niri
Features
- Automatic Tiling
- Scrolling Columns
- Dynamic Workspaces
- Independent Monitors
- Overview Mode
- Window Borders
- Mouse Reordering
- Floating Windows & App Rules
- Live TOML Configuration
Install
$brew install --cask qeude/tap/defiAbout
Defi arranges windows in columns on a horizontal strip that scrolls to bring off-screen windows into view, rather than forcing every window onto the visible screen at once. It manages native macOS windows through the Accessibility API, so clicking a window, using the Dock, and Command-Tab keep working as normal, while dynamic and named workspaces, independent per-monitor layouts, and an Overview mode round out the layout model.
Who It's For
Defi is for macOS users who like the Niri or PaperWM approach to tiling — an infinite horizontal strip of columns you scroll between — over fixed-grid tilers that force every window to fit on screen at once. It suits developers comfortable editing TOML and using a CLI, who want automatic tiling without giving up native macOS window interactions like the Dock and Command-Tab.
How It Works
Defi places each new window into a column on a horizontal strip; open another window and the strip grows, close one and the remaining windows reflow automatically. Columns can be stacked vertically, and column widths are adjustable, so the layout sits somewhere between a traditional tiler and a scrollable canvas. Rather than reimplementing macOS window handling, Defi hooks into the Accessibility API to manage regular windows, so clicking a window, selecting it in the Dock, or using Command-Tab all continue to work as usual. Workspaces are dynamic — an empty one is always kept ready — and can also be named for recurring tasks, with each display maintaining independent workspaces and layout. An Overview mode lets you browse workspaces and drag windows between them, with optional previews. Interaction is keyboard-first, built around holding a modifier (Option by default) to reveal a shortcut cheatsheet, and everything from gaps to animations to app rules is configured through a TOML file that reloads live on save. A bundled CLI and SketchyBar integration expose the same controls and workspace state to scripts and status bars.
Configuration
Defi runs with no config file at all, but overrides live in TOML:
# ~/.config/defi/config.toml
default_key_modifier = "hyper"
[input]
focus_follows_mouse = true
mouse_follows_focus = true
[layout]
gaps = 4
[overview]
zoom = 0.5
window_previews = true
[workspaces]
names = ["dev", "web", "tools"]
default = "dev"
[[rules]]
app_id = "com.apple.dt.Xcode"
workspace = "dev"
follow_focus = true
Compared to Alternatives
Compared to AeroSpace, which tiles into a more traditional grid-like tree of workspaces, Defi's scrolling-strip model is closer to Linux's Niri, favoring horizontal panning between columns over fitting everything on one screen. Compared to yabai, Defi never touches System Integrity Protection — it relies solely on the Accessibility API — while yabai's full feature set requires a partial SIP disable.
Requirements
- Apple Silicon Mac running macOS 26 or later
- Accessibility permission required; Screen Recording is optional, only used for Overview window previews
- Currently in alpha — behavior and configuration may change before a stable release
- Actively maintained: v0.2.4 released 2026-09-09
Getting Started
Install via Homebrew:
brew install --cask qeude/tap/defi
open /Applications/Defi.app
The app is signed with a self-signed certificate and isn't notarized, so only install it if you trust the source. On first launch, grant Accessibility access when prompted — Defi starts managing windows immediately, no restart needed. From there, add overrides at ~/.config/defi/config.toml for gaps, shortcuts, named workspaces, and app rules; changes reload automatically. Full configuration and command reference is at github.com/qeude/Defi/blob/main/CONFIGURATION.md.