minfwm

An infinite 2D desktop canvas for macOS

Category
Window Manager
WM Type
hybrid
License
free
Open Source
Yes
Keybindings
Yes
Scripting
Yes
Last Update
2026-10-16

Features

  • Infinite 2D Window Canvas
  • Trackpad & Mouse Camera Panning
  • Zoom-Out Overview Mode
  • Camera Bookmarks (Super + 1..9)
  • Window Pinning
  • Temporary Fullscreen
  • Smart Window Snapping
  • Per-Display Isolated Canvases
  • CLI Daemon Control

Install

$brew install snusxd/minfwm/minfwm

About

minfwm is a native macOS window manager that places windows on an infinite 2D desktop canvas spanning connected displays. Pan and zoom the camera with mouse or trackpad gestures, center views on windows, save camera positions, and control the daemon from the command line. It requires Accessibility permission and a compatible Yabai Scripting Addition for window transforms; setup currently requires disabling SIP.

Who It's For

minfwm is for macOS users who find fixed monitors and Spaces limiting and would rather lay windows out on one endless surface, panning and zooming between them like a canvas app. It suits people already comfortable running yabai with SIP disabled, since minfwm depends on a patched Yabai Scripting Addition, and who are fine working with an early, fast-moving project. The README is upfront that the project is "completely vibecoded".

How It Works

minfwm runs as a background daemon that treats each display as a camera looking onto an infinite 2D canvas. Instead of resizing or tiling windows, it moves the camera: a three-finger trackpad swipe (with momentum) or Super + left-click drag pans across the canvas, and a four-finger pinch or Super + scroll zooms out to an aerial overview, where clicking any window zooms in and centers it. You can save up to nine camera positions with Super + 1..9 and jump back with Super + Shift + 1..9, pin windows with Super + P so they follow the camera, and center the camera on the focused window (Super + F) or pull the window to the screen center (Super + S). Holding Super + Ctrl lets you drag a window from anywhere inside it, and near-fullscreen windows snap into place along display edges after panning.

macOS normally keeps windows inside the visible screen area, and the Accessibility API alone can't smoothly move and scale them across a canvas. minfwm gets around this with a patched Yabai Scripting Addition that it builds itself, and the daemon checks the addition's capabilities at startup, exiting if they're incompatible. By default, each physical display gets its own isolated canvas, and you can leave specific monitors unmanaged. New windows are discovered as apps open, and every captured window goes back to its original position when the daemon exits. The minfwm CLI controls the daemon and can move the camera to exact coordinates.

Configuration

# ~/.config/minfwm/minfwm.toml
[window]
spawn-behavior = "center"

[camera]
center-on-cmd-tab = true
trackpad-movement-multiplier = 1.0

[snap]
enable = true
threshold = 32

[display]
multi-display-mode = "isolated"
ignored-displays = []

[pins]
always-on-top = true

Run minfwm reload after editing. Invalid changes are rejected, and the running config stays in place.

Compared to Alternatives

Compared to PaperWM.spoon and Paneru, which arrange windows in a scrollable horizontal strip, minfwm lets you place windows freely in two dimensions and adds a zoomed-out overview. Compared to yabai, minfwm doesn't tile at all. It reuses a patched version of yabai's Scripting Addition to move windows beyond screen bounds, so it has the same SIP requirement that yabai has for its advanced features.

Requirements

  • macOS 14 Sonoma or later
  • SIP must be disabled to load the patched Yabai Scripting Addition
  • Accessibility permission required; Screen Recording permission is needed for overview window previews
  • Early-stage project with frequent releases (v1.1 to v1.3 shipped in October 2026)

Getting Started

Install with brew install snusxd/minfwm/minfwm, then follow the Yabai Integration Guide to disable SIP and build and load the patched Scripting Addition with python3 tools/build_yabai_sa.py. Grant Accessibility permission in System Settings → Privacy & Security, then run minfwm enable and minfwm status to start the daemon and have it launch at login. Copy config/minfwm.toml.example to ~/.config/minfwm/minfwm.toml to customize behavior. See FEATURES.md and the project wiki for full documentation.

Discussion