Free window manager · beta 0.2.0
hyprmac.
Windows that tile themselves.
Open a window and it takes its share of the screen, sized and placed, never on top of
anything else. Hyprland's shape (dwindle, gaps, a hyprland.conf, vim keys,
workspaces), built natively for the Mac. Drive it from the keyboard, or don't.
hyprmac in use — tiling, swapping, and switching workspaces. Just under a minute, with sound.
Controls two ways in, well, three
The trackpad and the mouse are first-class citizens
A tiling window manager you can only drive from the keyboard is one most people bounce off in an afternoon. Everything here has a trackpad gesture and a pointer gesture as well as a bind.
- Change workspace — three fingers left or right.
- See all five at once — three fingers up or down opens the overview.
- Jump from the overview — press a number, or click any window to go straight to it.
- Rearrange or rename — drag a workspace to reorder it, or press R to name it.
- Swap two windows — drag one by its title bar onto the middle of another and let go.
- Split a window — drop onto the left, right, top or bottom of it instead, and it splits along that axis with yours taking the side you dropped on.
- See it first — the target lights up on the canvas while you drag: the whole tile for a swap, just the half for a split.
- Change your mind — drop anywhere else and the window snaps back where it came from.
- Move focus — ⌥ plus H J K L, or the arrow keys.
- Move the window — add ⇧.
- Resize — ⌃⌥ and a direction.
- The overview — ⌥`, if you would rather not swipe.
- Everything else — ⌥/ lists every binding you actually have, read from your live config.
Core what makes it a window manager
The parts that make it a window manager
The dwindle layout
Every new window splits the one you are focused on, along whichever axis has more room. Two windows sit side by side; a third takes half of one of them. The screen fills evenly without you deciding anything.
A config file, in plain text
~/.config/wisp/hyprmac.conf, in hyprland's own syntax. Get a line wrong and
it tells you which line and what it expected — including when a setting used to exist and
no longer does.
Five workspaces, in the menu bar
The number is fixed on purpose. macOS already has Spaces, and a workspace with no key bound to it reads as a broken hotkey rather than an unbound one.
Drag a window onto another
They swap. Drop it on a side and the target splits along that axis. The canvas lights the half you are over before you let go — for everyone who will not learn ⌥⇧ plus an arrow.
Layouts survive a restart
It remembers the shape of each workspace, not just which windows were on it. Reopen your apps after a reboot and they settle back into the same arrangement, in whatever order they happen to launch.
Apps that fight back are handled
Some apps — Electron and Catalyst ones especially — refuse to shrink past a size of their own. hyprmac notices, floats that window at its smallest size, and closes the tiling neatly around it instead of leaving it sprawled over its neighbours.
Config a text file
It is a text file, and it is yours
Written on first run and reloaded with ⌥⇧C. The palette above is the project's
own — col.active_border = accent follows System Settings, and the canvas
repaints your actual desktop picture rather than replacing it with a flat colour.
Why ⌥ and not ⌘? macOS has already claimed most of
Cmd — ⌘Q, ⌘W and ⌘1 all mean something to whatever app you
are in. A window manager bound to Cmd would fight your apps on every keystroke. Change
$mod if you disagree.
$mod = ALT
general {
gaps_in = 12 # breathing room between windows
gaps_out = 16 # and off the screen edge
rounding = 12 # matches the macOS window corner radius
col.active_border = accent # follows System Settings > Appearance
}
canvas {
wallpaper = system # your own desktop picture; or a colour, or an image path
dim = 0.15 # darken it so tiled windows read as the foreground
desktop_icons = true # sit below Finder's icons so they stay visible
menu_bar_indicator = true
workspace_hud = true
}
workspaces {
1 = wisp # names show in the menu bar and the switch overlay,
2 = notes # and can be bound: bind = $mod, M, workspace, notes
} # or press R in the overview to rename one
gestures {
enabled = true # three fingers sideways changes workspace
fingers = 3
overview = true # three fingers up or down opens the overview
threshold = 0.06 # how far the hand travels before it counts
inverted = false
}
animations {
enabled = true # crossfade through the desktop on a workspace switch
duration = 250 # milliseconds, the whole switch; Reduce Motion wins
} Keys all rebindable
Defaults, all rebindable
⌥/ opens a sheet listing everything currently bound, built from the live config.
| Action | Keys | Notes |
|---|---|---|
| Focus | ⌥ H J K L | across to the next display at an edge |
| Move window | ⌥⇧ H J K L | across to the next display at an edge |
| Resize | ⌃⌥ H J K L | |
| Workspace | ⌥ 1…5 | on the screen your keyboard is on; move a window there with ⌥⇧ 1…5 |
| Display | ⌥, ⌥. | previous / next display; add ⇧ to send the window there |
| Overview | ⌥` | all five workspaces; or three fingers up or down |
| Window | ⌥Q ⌥V ⌥F ⌥S | close · float · fullscreen · flip split |
| Session | ⌥/ ⌥⇧C ⌥⇧Q | keybindings · reload · quit |
Shortcuts work everywhere, which means the arrow bindings take over whatever macOS was using them for — ⌘+arrows normally jumps to the start or end of a line. Every binding is yours to change, and ⌘⌥+arrows is the usual alternative if you want your text editing back.
Native built for a Mac, not ported
What it does not ask of you
Your Mac's security stays on
Plenty of window managers ask you to disable System Integrity Protection, Apple's core defence against software tampering with the system. hyprmac never does. Everything it does works within what macOS already permits.
One permission, not five
It asks for Accessibility so it can move windows. Not Screen Recording, not Full Disk Access, not Input Monitoring. A version that recorded the screen was built, worked, and was deleted — a window manager should not need to watch your screen.
It looks like it belongs
Your wallpaper, your accent colour, your light or dark setting. Workspaces live in the menu bar because there is already a bar up there, and focus is a soft halo rather than a hard outline, because that is how macOS shows depth.
Rule one, and it does not bend
A new window lands on the workspace you are looking at.
That is where you opened it, and where you are is the only thing a window manager can know about what you meant. Not the app, not the title, not where a window like it once lived. The exceptions are windows that are not new — ones macOS dropped and re-reported, and ones found at startup that your saved layout places.
You organise the workspaces; hyprmac keeps them as you left them.
Limits honest ones
What it cannot do
macOS was not built to be driven this way, and some things genuinely cannot be done from outside it. Better you know them now than find them on day three.
| Windows snap rather than glide | macOS lets us set a window's position and size, but not animate the move. Workspace switches are smoothed over with a crossfade; individual windows jump. |
| Rounded corners on other apps' windows | Only macOS itself can round a window's corners. The gaps and the canvas are ours; the corners are Apple's. |
| Mission Control does not show workspaces | macOS sees one Space. hyprmac's workspaces are its own, so Mission Control shows every window at once. |
| Some apps will not tile | Apps with a minimum size of their own are floated at that size instead of being squashed. Most are Electron or Catalyst apps. |
| Two identical monitors need telling apart | Displays are matched by name, so a matched pair becomes "DELL U2720Q" and "DELL U2720Q 2", left to right. Swap them physically and their workspaces swap with them. |
What is coming
In rough order of how much people ask for them. No dates — they land when they work.
- More ways to arrange windows
- Today every window splits the one you are on. A master layout would keep one big window with the rest stacked down the side — good for a browser and three terminals. A scrolling layout would lay windows out in one long row you pan along, so nothing ever gets narrower as you open more.
- Rules for particular apps
- Always leave Messages floating. Always open your email on workspace 3. Never tile the calculator. Right now the only rule available is "never tile this app".
- Windows that glide instead of jumping
- macOS will not let one app animate another app's window, so the way around it is to animate a picture of the window and snap the real one into place at the end.
- Panes hyprmac draws itself
- A terminal or a web view rendered by hyprmac rather than borrowed from another app. It is the only route to the things the honest limits above rule out — rounded corners, real animation, transparency — because those need a window we own.