Skip to content

How JimiOS differs from Hyprland

JimiOS follows Hyprland’s rules wherever macOS allows: dwindle tiling, new windows splitting the focused tile, 50/50 splits, a master layout, gaps and a focus border. Two fundamental choices shape everything else.

Hyprland is a compositor: it draws every window on screen itself, so it decides exactly where each window goes and how big it is. On a Mac, macOS’s own window server does that job, and nothing replaces it. JimiOS is an app running on top of it. It asks each window to move and resize through the Accessibility interface, and each app decides whether to agree. JimiOS can ask, wait and check; it can’t force.

2. It never asks you to turn off System Integrity Protection

Section titled “2. It never asks you to turn off System Integrity Protection”

System Integrity Protection (SIP) is the macOS safeguard that stops software from changing the system’s own processes. Some Mac tilers unlock extra control, such as instant workspace switching or reaching into the window server, by asking you to partly turn SIP off. JimiOS never does. It uses only public macOS interfaces and one permission, Accessibility, so your Mac’s security stays exactly as Apple ships it.

And one choice: Rust, so it gets out of the way

Section titled “And one choice: Rust, so it gets out of the way”

A tiling tool runs all day, under every keystroke and window you open. If it stutters, you notice. JimiOS is written in Rust: a small native app with no runtime or garbage collector to pause it. On a MacBook today, its key handling takes about 8 microseconds per keystroke, and working out a new layout takes under a millisecond. What you wait on is macOS moving the windows.

Almost every difference below follows from these two.

Hyprland JimiOS on macOS
Window sizes Tiles get their share of the screen; apps’ minimum sizes are ignored by default Apps set their own minimum size and refuse anything smaller
A window that doesn’t fit Shrinks to fit its tile Goes to the overflow row below the screen, or the next workspace to the right
Fixed-size windows Float Float (the same rule)
Workspaces Real workspaces in the compositor JimiOS parks other workspaces’ windows just off the screen edge; macOS Spaces aren’t used
Moving windows Instant, animated by the compositor Each window move takes 8–30 ms; a layout change snaps rather than animates
Focus border Drawn by the compositor, part of the window Drawn as a separate overlay; hides while you drag or resize
Settings Reloaded live when you save the file Read at start; quit and reopen JimiOS to apply
Displays The compositor owns every display change macOS moves windows itself on unplug, sleep and wake; JimiOS waits for the change to finish, then puts everything back

Every Mac app sets a minimum window size, and macOS won’t make a window smaller than that. Spark Mail, for example, needs about 800 points wide. Hyprland can squeeze any tile; JimiOS can’t. So when a window doesn’t fit, JimiOS tries, in order:

  1. Splitting the focused tile, as usual.
  2. The overflow row: one row just below the screen. A strip of each window peeks up; show the row with ⌃⌥↓ at the bottom edge, ⌃⌥ + scroll, ⌘Tab or a click on the strip.
  3. Rearranging the workspace so everything fits.
  4. The next workspace to the right that has room.

No window ever covers another, and no other window moves out of the way. JimiOS learns each app’s real minimum size by watching what it accepts, and re-measures a size it suspects is wrong.

  • No window can go above the menu bar.
  • With the Dock showing, macOS keeps part of every window above the Dock. JimiOS learns where that limit is and ends the tiles above it while a workspace has an overflow row. The hide_dock setting removes the Dock from the picture.
  • An app can move or resize its own window at any time. JimiOS puts it back; if the app keeps doing it, only that window moves on.
  • Run without permission. It needs Accessibility, granted once in System Settings.
  • Open without a warning, for now. The beta isn’t notarised by Apple yet, so the first open needs Open Anyway.
  • Capture trackpad swipes. A two-finger swipe belongs to the app under the pointer; JimiOS uses ⌃⌥ + scroll instead.
  • Manage native full screen. A full-screen app moves to its own macOS Space; JimiOS keeps its tile and gives it back when the app leaves full screen.
  • Tile more than one macOS Space. It manages the desktop that’s showing when it starts.