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.
The two fundamental constraints
Section titled “The two fundamental constraints”1. It runs on top of macOS’s windowing
Section titled “1. It runs on top of macOS’s windowing”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.
At a glance
Section titled “At a glance”| 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 |
Minimum sizes
Section titled “Minimum sizes”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:
- Splitting the focused tile, as usual.
- 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.
- Rearranging the workspace so everything fits.
- 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.
Windows macOS won’t put just anywhere
Section titled “Windows macOS won’t put just anywhere”- 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_docksetting 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.
Things JimiOS can’t do on macOS
Section titled “Things JimiOS can’t do on macOS”- 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.