live from GitHub · updated at each build
- latest release
- v1.0.1
- released
- 25 Oct 2026
- last commit
- 25 Oct 2026
projects / mullion
A free, open-source window manager for macOS: snap windows to halves, quarters, thirds and sixths from the keyboard, or drag them to a screen edge or corner.
rev 25 oct: v1.0.1 released
live from GitHub · updated at each build
01 / the problem
Window management on macOS is still mostly manual. Since Sequoia, macOS can tile windows to halves and quarters, but not to thirds or sixths, and it has no custom layouts, no saved workspaces and only limited multi-monitor control. Magnet covers the basics but has no custom zones or saved layouts. PowerToys solves this on Windows with FancyZones, Workspaces and Grab & Move, but nothing free and open source on the Mac offers custom zones and saved workspaces.
The goal for v1 was Magnet’s snapping features under a free, open-source licence. v2 is planned to add the PowerToys features Magnet lacks: zones, Grab & Move and workspaces.
02 / what i built
Version 1.0 is a native menu bar app:
03 / decisions
Swift with AppKit, and SwiftUI for Settings, gives direct access to the Accessibility APIs, event monitors and overlay panels a window manager needs, with a small memory footprint. I also considered Hammerspoon, Electron or Tauri, and .NET (my main stack) with MAUI or Avalonia, where every system call would go through P/Invoke. Learning Swift and AppKit was a deliberate goal.
Some features, such as always-on-top for other apps’ windows or moving windows between Spaces, need private frameworks or SIP turned off. Mullion uses only public, documented APIs, so it breaks less across macOS updates. The trade-off is that those features are out of scope.
Drag to snap watches mouse drags with a passive NSEvent monitor, which can never block or swallow a user’s click. While a window is dragged, its app does not answer Accessibility requests, so Mullion reads the window’s position from the window server and looks up the window only at the drop.
04 / outcome
I released a public beta with keyboard snapping on 19 October 2026, v1.0 with drag to snap and Settings on 21 October 2026, and v1.0.1 on 25 October 2026. v1.0.1 fixes a bug, seen with VS Code, where Top Half, Bottom Half or Maximize straight after Right Half left the window at half width. Next are signed releases that keep the Accessibility permission across updates, opt-in in-app updates, and then zones, Grab & Move and workspaces in v2. [Add users, stars or feedback once the launch post is out, and one thing you learned.]