---
title: "Quadra - a tiling window manager for macOS"
url: "https://www.pardel.dev/2026/09/03/quadra-a-tiling-window-manager-for-macos"
date: 2026-09-03
author: "Paul Ardeleanu"
tags: ["Swift","macOS","Open-Source","Tiling","Window-Manager"]
description: "Most macOS tiling window managers ask you to disable System Integrity Protection first. Quadra is built on the stock Accessibility API, so it doesn't."
---

# Quadra - a tiling window manager for macOS

> TLDR; Quadra is a keyboard-driven tiling window manager for macOS, in the spirit of Hyprland as Omarchy uses it. It's built on the stock Accessibility API only, so it never asks you to turn off System Integrity Protection. Swift, MIT, `brew install pardel/tap/quadra`.

I wanted Hyprland's window handling on my Mac: hold one key, move windows around with the other hand, never touch the trackpad to arrange anything.

The catch with most of the macOS options is what they ask for first. The good ones want System Integrity Protection disabled, or they reach for private WindowServer calls that break on an OS update. That's a real price for nicer window layout, and I didn't want to pay it.

## What it does

Hold F1 and the keyboard becomes window management:

- **Three layouts** per workspace: Split (Hyprland's dwindle), Columns (the scrolling one), and Main plus stack. F1+L cycles them.
- **Five workspaces per display**, numbered like macOS Spaces, so F1+2 is always *this* screen's second workspace. There's a scratchpad shared across displays, and a three-finger swipe steps between them.
- **Focus, swap and resize** by direction. Floating, pseudo-tiling and fullscreen, with rules by bundle id or title.
- **A bar on every display**, showing each workspace as a small picture of its own layout.
- **A text config** at `~/.config/quadra/quadra.conf` in Hyprland's syntax, which reloads as you save it. A bad line gets reported by number and skipped rather than taking the whole file down. F1+? lists every binding.

## Built on the boring API

Everything above runs on the stock Accessibility API. No SIP change, no private calls, and a test fails the build if a private WindowServer symbol ever shows up in the binary. That last one matters more than it sounds: it's easy to reach for one of those at 11pm when a window won't behave, and the test is there to stop me.

The honest cost is that some things are then impossible, and I'd rather say so than let you find out:

- It can't animate, blur or fade other apps' windows. That needs a compositor, and macOS doesn't let a third party be one.
- Workspaces are emulated, not real Spaces. A hidden window gets parked with one corner still on screen, the trick AeroSpace has used for years. Those windows still turn up in Mission Control and Cmd+Tab.
- Groups are an accordion with a tab strip, not one real tabbed frame around several apps.

## It puts your windows back

Every frame Quadra moves is written to a journal first. Quit it and every window goes back where it was found, and if it crashes, the next launch rescues anything left off-screen.

I built that early, before any of the layout code. A window manager that loses your layout once is a window manager you stop trusting, and I wanted the recovery path to exist before there was anything to recover from.

## Try it

```sh
brew install pardel/tap/quadra
```

macOS 14 or later, Apple silicon or Intel. First launch asks for Accessibility permission. F1 needs "Use F1, F2, etc. keys as standard function keys" in Keyboard settings, or just hold Fn with it.

This is 0.1.0, so it's early and I'm still finding things. MIT licensed, at [github.com/pardel/quadra](https://github.com/pardel/quadra).
