TrimWM

Niri-style scrolling columns with i3-style automatic tiling

Category
Window Manager
WM Type
tiling
License
free
Open Source
Yes
Keybindings
Yes
Scripting
No
Last Update
2026-07-27

Features

  • BSP Autotiling Layout
  • Niri-Style Scrolling Columns
  • Animation-Free Operation
  • No Network Access
  • Deterministic Test Suite
  • Developer ID Signed & Notarized
  • Independent Logical Workspaces

Install

$brew tap cornz/tap && brew install --cask trimwm

About

TrimWM combines Niri-style scrolling columns with i3-style BSP autotiling in a single Apple Silicon-only tiling window manager. It ships with no external dependencies or background network access, is Developer ID signed and notarized, and validates changes with a deterministic test suite. The project positions itself as deliberately smaller than Hiro (formerly OmniWM) and more layout-focused than AeroSpace.

Who It's For

TrimWM is aimed at Apple Silicon Mac users who already think in i3 or niri terms and want both layout models available in a single, minimal tool rather than committing to one paradigm. It suits developers wary of tiling window managers that pull in third-party dependencies or phone home — TrimWM's core pitch is no external dependencies and no background network access. If you've compared Hiro (formerly OmniWM) and AeroSpace and found the former too broad and the latter locked into a single tiling model, TrimWM sits between them.

How It Works

TrimWM ships two switchable layout engines: an i3-style BSP autotiler and a Niri-style scrolling column layout, toggled with Option+W (Niri) and Option+Shift+E (BSP). Focus and window movement use vim-style bindings (Option+J/K/L/; to navigate, Option+Shift+J/K/L/; to move), workspaces switch with Option+1-9/0, and a dedicated resize mode is bound to Option+R. TrimWM manages logical workspaces that are independent of native macOS Spaces — conceptually similar to AeroSpace's own virtual-workspace approach — though as of this writing it manages normal windows on the main display only and doesn't move windows across inactive Spaces.

Configuration uses a small i3/Sway-style command language rather than TOML or KDL, covering variables, gaps, split ratios, border styling, mouse-follows-focus, login-launch behavior, keybindings, modes, and per-app floating rules. Config reloads are transactional: an invalid file leaves the previous configuration in place and surfaces the error instead of crashing the reload. Under the hood, TrimWM is Developer ID signed and notarized and uses the private SkyLight API alongside the Accessibility API to manage windows, and the project ships with a deterministic test suite — 140 tests passing as of the 0.2.30 release — to guard against regressions.

Compared to Alternatives

Compared to Hiro (formerly OmniWM), which TrimWM's own docs cite as an architectural influence, TrimWM is deliberately smaller in scope — a focused binary built around the two layout models rather than Hiro's broader feature set of quake terminal, command palette, and IPC/CLI automation. Compared to AeroSpace, which offers only i3-style tree tiling, TrimWM adds the Niri-style scrolling column model that AeroSpace lacks, while both tools implement their own virtual workspace layer independent of native Spaces.

Requirements

  • Apple Silicon Mac required — no Intel support
  • macOS 26 (Tahoe) or later
  • Accessibility permission must be granted to TrimWM.app

Getting Started

Install via Homebrew:

brew tap cornz/tap
brew install --cask trimwm

Or download the latest release from GitHub, move TrimWM.app to /Applications, and install the shipped example config from the repo's Examples/config to ~/.config/trimwm/config. Launch TrimWM, grant Accessibility permission via System Settings → Privacy & Security → Accessibility, then edit ~/.config/trimwm/config to set keybindings and layout defaults. Full source and release notes are at github.com/cornz/TrimWM.

Discussion