Wisp OS

Window manager · beta 0.1.0

hyprmac

Your windows lay themselves out and stay that way. Open one and it takes its share of the screen — sized and positioned, never on top of anything else. Nothing has to be nudged into position or resized by hand; when you want two windows to trade places, you drop one onto the other.

Underneath it is hyprland's shape — the dwindle layout, gaps, a hyprland.conf, vim-style keybinds and workspaces — plus a canvas that paints the desktop beneath your windows. You can drive all of it from the keyboard. You do not have to.

Two ways in

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.

With the trackpad
  • 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.
With the mouse
  • 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.
With the keyboard
  • 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.

What you get

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/wispos.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.

Configuration

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
}

Keybindings

Defaults, all rebindable

⌥/ opens a sheet listing everything currently bound, built from the live config.

ActionKeysNotes
Focus ⌥ H J K L or ⌘ ← ↓ ↑ →
Move window ⌥⇧ H J K L or ⌘⇧ ← ↓ ↑ →
Resize ⌃⌥ H J K L
Workspace ⌥ 1…5 move a window there with ⌥⇧ 1…5, or swipe three fingers sideways
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.

Built for a Mac, not ported to one

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.

One rule, 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.

Honest limits

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.
One display for now Plugging in a monitor relays everything out correctly, but a separate set of workspaces per screen is still on the roadmap.

What is coming

In rough order of how much people ask for them. No dates — they land when they work.

Multiple monitors
Each screen gets its own five workspaces, instead of one set shared across all of them. Plugging a monitor in already rearranges everything correctly; this is the next step.
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.