Hacker News new | past | comments | ask | show | jobs | submit login
AeroSpace is an i3-like tiling window manager for macOS (github.com/nikitabobko)
524 points by loughnane 3 months ago | hide | past | favorite | 168 comments



I daily drive this and my verdict is: it's the best way to manage windows on a Mac, but falls short of i3/sway. In particular, support for re-arranging windows by dragging them to positions relative to one another is extremely limited in that it's not able to create new vertical or horizontal splits the way you can in sway, which forces me to take awkward detours with keyboard commands to get to the window layout I want most of the time. Like, say I have two windows side-by-side, and I want to split one of them vertically. In sway I'd pop open the new window, then drag it to the top or bottom half of the window I want it to share horizontal space with, and bam, all done. With aerospace the best way I've found to do this is to open the new window, then switch all three windows into a vertical stack, then focus the window that was originally on the left and invoke the 'move left' command on it.


If you have normalizations enabled, you don't need to "switch into a vertical stack"

Given this layout:

    h_tiles
    ├── window1 (focused)
    ├── window2
    └── window3
`move left` will produce this layout:

    h_tiles
    ├── window1 (focused)
    └── v_tiles
        ├── window2
        └── window3


Ah, so it does. I suppose this is an instance of my mental model not having adjusted.


For what it's worth, this video from i3 really helped me visualize how i3 and related WMs deal with windows - https://www.youtube.com/watch?v=AWA8Pl57UBY


> In sway I'd pop open the new window, then drag it to the top or bottom half of the window I want it to share horizontal space with

I did not even know it was possible to drag windows. I do that by selecting the window I want to split, then setting a "vertical" split with "Command + v", then creating the new window (usually a terminal).

Or I move the window with "Command + Shift + [hjkl]".


Thanks, I will try it out to see if it can first solve my main problem - I'm looking for a way on Mac for it to reasonably remember the screen layouts.

Every time it wakes from boots, the desktop has complete amnesia with 3 screens.

Ideally I'd be able to drive my own workspaces, and it can use the laptop screen only, or 2 or 3 external monitors at different desks (work and home).


I've resorted to running a shell script every time I plug in.

displayplacer "id:... res:2048x1330 hz:120 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0" "id:... res:3840x2160 hz:30 color_depth:8 enabled:true scaling:off origin:(-918,-2160) degree:0"

displayplacer is very easy to set up and also gives you access to modes that you can't access with System Preferences.


Wanted this to exist for so long. I’ve started learning Swift to build an app to solve this. Then I discovered HammerSpoon[1] and since I use a HammerSpoon lua script to adjust the windows layout for my different setups: 1. Laptop only mode 2. At home my MacBook screen is closed and connected to 2 external monitors 3. At work my MacBook screen is open and connected to 1 external monitor

The script detects the connected screen UUID and applies the appropriate layout

[1] http://www.hammerspoon.org/


Thanks, I'll check it out. This looks great.

It's a little baffling how MacOS hasn't been able to get this to work. If a Matrox TripleHead2Go could hit a high enough resolution for multiple monitors it might be a possibility.

It did improve with a few tweaks but every so often it forgets.

First I thought it was a Macbook Pro thing. But a Mac Studio, with 3 separate monitors plugged into it, was just as confused.

I'm not sure how Windows and Ubuntu can handle it just fine from my experience.


I use Rectangle on macos for this exact use case. Used to use Yabai but now Rectangle is my daily driver for this sort of thing. I'm going to try this one out but global hotkeys for my windows snapping to the right spots when I plug my laptop in is hard to give up


The days of “it just works” is long gone.


but we have come a long way from “most applications crash if not the system hangs” (or macintosh as it’s known for short)


It does just work. On windows.


I use spectacle and it’s no longer supported


https://rectangleapp.com is the spiritual successor.


This is my first install on every new Mac


Another option is the ShiftIt plugin for Hammerspoon:

https://github.com/peterklijn/hammerspoon-shiftit



Switch to Rectangle


haven’t used this one but I use yabai and it works exactly as you describe


> Doesn't require disabling SIP

That's very interesting! I've been hesitant to use similar WMs as basically all required disabling SIP. Anyone knows what AeroSpace is doing differently that it can work alongside SIP?

Edit: found this in the README:

> AeroSpace will never require you to disable SIP (System Integrity Protection). For example, yabai requires you to disable SIP to use some of its features. AeroSpace will either find another way (such as emulation of workspaces) or will not implement this feature at all (window transparency and window shadowing are not practical features)


I tried yabai but found switching between macos spaces too slow. I moved to aerospace and I absolutely love the workspace implementation. But I really love yabai's focus-follows-mouse feature - so is it possible to use yabai just for that while using aerosoace for everything else i3-like?


Fwiw I have yabai configured for instant desktop switching


That's what I thought I did, but I can't, for example, just move to space 7 or something. I need to create a new space with a number I can't control and switch to that. That new workspace might not be next to the previous space I was working in, so I need to cycle through multiple spaces. Aerospace on the other hand just lets you choose a numbered workspace and work with that.

Would love to see your yabairc if you can share.


Not OP, but I also have instant space switching enabled with yabai. Here is my yabairc and skhdrc.

yabairc - https://github.com/SxC97/dotfiles/blob/main/.yabairc

skhdrc - https://github.com/SxC97/dotfiles/blob/5db5e13f894f767722758...

If it's still not working, make sure SIP is disabled and the Scripting Addition is installed and loaded. Here's a link to the instructions as it's a little complicated: https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(...


Here's my .yabairc https://github.com/kcrwfrd/dotfiles/blob/master/link/.yabair...

Looking through it I don't see a setting for instant space switching... I think maybe it's provided by default when you install the scripting addition? https://github.com/koekeishiya/yabai/issues/1527

I have keybindings in my skhd for focusing spaces: https://github.com/kcrwfrd/dotfiles/blob/master/skhd/space

I usually just keep 10 spaces at all times rather than creating new ones on demand.


I wonder if following the mouse for focus would be doable without disabling SIP. It's one of the features I didn't even see in other macOS WM.


It is, Yabai can do it. I am currently using autoraise. Both work great, barring UI weirdness of macOS.

Example. Mousing over another window on the way to the menubar.

https://github.com/sbmpost/AutoRaise


The problem with focus-follows-mouse on macOS is the top menu bar.

If you had it, and tried to mouse to the menu, the menu would switch out from under you.

I have some notes in a file somewhere about how a Mac-native focus-follows-mouse could even work, because I want it. It would end up being a rather different implementation than the X Windows style.


I have an Alfred workflow to search the menu, so not being able to move the mouse there isn’t a big issue.


I've been searching for a sloppy-mouse-focus implementation for OSX for _years_. Pretty sure there's something fundamentally incompatible in how app windows are managed.



Not seeing a way to get the window currently under the mouse pointer, but this is pretty interesting - thanks!


You can get the positions of every windows, the position of the mouse pointer, and you can focus windows.


This is really cool, I'm gonna try and implement it!


It's also a bummer because Terminal.app has the functionality out of the box: https://macos-defaults.com/mouse/focusfollowsmouse.html


It can be implemented within apps, but not across apps afaict.


Should be possible using AX APIs on mac, might not be all that performant, however.


Yup there's AutoFocus which I use daily with Aerospace

https://github.com/synappser/AutoFocus


This is great! I've been using Amethyst so far, but I immediately liked Aerospace more. The main gripe I have with Amethyst is that it throws windows in a very sluggish and unreliable fashion. With Aerospace, windows get moved to different workspaces/monitors in a flash and the move never fails. I also like how it completely ditches MacOS built-in workspaces, which, as the author argued, is rather unsatisfactory, in favor of its own virtual workspace solution, which finally makes handling a multi-monitor setup a bearable and even somewhat enjoyable experience.

(I couldn't use yabai on my work computer as it requires disabling SIP, which the author of Aerospace explicitly argues against, which I find reasonable.)

Actually, in my Linux days I moved from i3 (which Aerospace is based on) to xmonad (which Amethyst is based on), but on MacOS Aerospace just feels quite better. None of the 3 WMs on MacOS comes close to what a true WM on Linux can offer, but I guess Aerospace is as good as it can get.


yabai works fine without disabling SIP. I haven't tried Aerospace yet, so can't offer a feature comparison though.


Oh, I like the fake Spaces approach.

I have considered trying that by minimizing windows, but would never get around to it.

Tiling is doomed to sadness on macOS, because of lack of APIs. But this is probably the most performant approach.

Have used yabai, but only for moving windows and focus-follows-mouse. Not for tiling. Because flaky (not yabai’s fault).

Thanks nikitabobko.

Looking forward to trying it as soon as I figure out how to mod alt-tab to ignore all the windows (from every fake workspace) in the corner.

Also, linked in the docs, JankyBorders. Nice.

https://github.com/koekeishiya/yabai https://github.com/lwouis/alt-tab-macos https://github.com/FelixKratz/JankyBorders


I get around that by using the Stack and I flip between windows with alt+h/alt+j

Command+Tab is global window switch. The ones above are for "local" switching in the context of the workspace.


Oh, I know. I use sway — and greatly miss alt-tab (windows-style alt-tab), when I do.

Not linux-primary right now.

I can remember my linux-style stacking commands in order to try it.

But I would want to fix my alt-tab at some point.

Note: my sway (or mac) usage is basically two vertical windows or stacks of panes on a laptop screen. So a pretty simple setup.


you can get windows-style alt-tab with https://alt-tab-macos.netlify.app/


Right. Got it, love it.

But it won’t work with AeroSpace.

I mean, it will work, but it won’t work with all windows from _visible spaces_.

Because ever window from _every space_ will be in the current space (tucked in the lower right corner).


ah, right! Apparently I didn't read your first comment properly, sorry about that.


I have gotten somewhat used to Raycast's window management tools, and it is not really possible to use them with AeroSpace.

For example, with Raycast I can resize and float a window using "reasonable size" option, which also puts it in the middle. I can use left half and right half to create a split, or I can maximise a window or even use quarters or thirds. With AeroSpace, trrying to move the windows in the tiles using left half, right half, or left two thirds or using reasonable size to float the windows, it doesn't work.

Also, there are bugs associated with moving apps to "next desktop" and "previous desktop". AeroSpace seems to have its own implementation of Mac's multiple desktops called workspaces, so the video guide actually doesn't show transitioning between different desktops, but different workspaces. As a result, using "next desktop" and "previous desktop" completely breaks the tiling. I would've liked Workspaces to just be associated directly with the different Mac desktops so that the movement between workspaces just moves to the different desktops so there is some compatibility with Raycast and native MacOS.


Raycast is so good

I think it’s going to become a standard app on Macs for powerusers in the future

I really need to deepdive into it because it does so much useful stuff. I use the Linear.app integration the most.


I use yabai pretty heavily, for the past 5 macos versions without disabling SIP on a work computer. I really like it, the tiling is flaky only maybe once every few days (I am doing yabai commands probably once a minute at least) so I bound a keystroke to `yabai --restart-service` and it always comes back immediately

So I find it really pretty reliable and pretty great. Multimonitor is hard and I don't use it much, but having stacks and fast 'full-screen' to minimize is so great

On some version upgrades, work antivirus thinks it's a virus so disables it for 24 hours, and I hate using my computer those days, it feels so clunky and sad


I have been trying this for a few months now. I3 is quite perfect and Aerospace is a nice try, but it’s very far from i3; it’s quite flaky. I guess this is because Mac OS X doesn’t actually allow full control like Unix WMs do?

I have not found anything better though, but I will install Linux when it’s working well on Apple Silicon. Only i3 is at least for me enough reason to use Linux as Mac OS X, again imho, is terrible window manager wise.


Having dabbled in some of this for a hobby project (not a window manager, but adjacent), it’s because the official APIs to do these things with are limited. You end up relying a lot on undocumented private APIs and hacks, which are flaky both due to their undocumented internal-use nature and because the OS isn’t designed to play nice with significant meddling with window/process management, which results in the OS and third party app frequently stepping on each others’ toes.


Apple being Apple... gosh they just know how to build hardware but for software they just flop.


In fairness, I’ve encountered similar flakiness when using third party window/desktop manager utilities on Windows. Commercial OSes in general just aren’t designed with that kind of flexibility in mind.


Got the same issue. I am still to find a WM that can deal with native OSX fullscreen mode.

Aerospace goes bongers when i have native full screen. It will get confused on what to focus. My case:

Workspace 1: terminal Workspace 2: slack app Open chrome in native full screen

Now try to switch to workspace 1.

Will give it more time without native fullscreen apps for a while. Hopefully it works better.


What is the difference in user experience between this and Yabai? I don’t think the SIP issues for Yabai is a big one, no one I know who uses Yabai disables SIP, and they seem to enjoy it.

Is the i3 stuff the difference?

Personally I use a utility that allows resizing and moving windows with the mouse from anywhere on the window when holding a modifier combination, like Fluxbox. Not as automatic, but also never flaky - more like making floating much easier with less mouse movement than moving to a totally managed style.


I have used both extensively and I prefer AeroSpace.

Multi monitor support is the killer for me, but there are other small wins.

When you move a workspace in Yabai to a new monitor, it changes it's ID so you can't keep using keyboard shortcuts to access it (alt+2 breaks because it is no longer workspace 2, it becomes 11 or another number). I can move workspaces between monitors easily with alt+m and alt+shift+m.

The other feature is that windows snap instantly without any Mission Control animations. That is a big one that really irks me.

Those are the two features that I need most days and I find Yabai completely unusable because of the lack of workspace support


With Yabai you need to disable SIP if you want to interact with spaces in any way, change the stacking order of windows, and many other things [0]. If you don't use those features, you do you, but for many users those are core features.

[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...


I'd be curious to know how it is different than Amethyst. Amethyst has gotten much more stable recently and I really enjoy using it. The text based config seems pretty nice at a first glance, but I'm not sure if it's worth switching.


I've been using Amethyst so far, but I immediately liked Aerospace more. The main gripe I have with Amethyst is that it throws windows in a very sluggish and unreliable fashion. With Aerospace, windows get moved to different workspaces/monitors in a flash and the move never fails. I also like how it completely ditches MacOS built-in workspaces, which, as the author argued, is rather unsatisfactory, in favor of its own virtual workspace solution, which finally makes handling a multi-monitor setup a bearable and even somewhat enjoyable experience.

Actually, in my Linux days I moved from i3 (which Aerospace is based on) to xmonad (which Amethyst is based on), but on MacOS Aerospace just feels quite better. None of the 3 WMs on MacOS comes close to what a true WM on Linux can offer, but I guess Aerospace is as good as it can get.


in my experience aerospace is way better in most ways.

there are a few oddities, and I need to file a couple of bug reports, but it has made macos so much more tolerable than amethyst.


> in my experience aerospace is way better in most ways.

As an Amethyst user, I'm approaching this comparison from the other direction: is there one compelling reason to switch?

The improvement I'd most like to see in Amethyst is more stable window placement when I remove a monitor then add it again (I do that a lot with my laptop).

It would be fantastic to have integration between Amethyst-managed spaces, Firefox windows, and Proton Pass vaults. As in Space 1 knows that new windows should use the Google account in my Work vault, and Space 2 knows that new windows should log out from Google because there is no Google account in my Personal vault. I doubt that's an imminent prospect, though.

In general, I prefer the Amethyst approach of extending the builtin OSX window management to the Aerospace approach of replacing it. Clearly the Amethyst developers weren't convinced that it's impossible to move windows between spaces with hotkeys, because they went ahead and implemented that.

Overall, I'm really happy that these window managers are being written. I use a 42 inch monitor, which would be awkward without them.


You can do text based configuration in Amethyst too.

https://github.com/ianyh/Amethyst/blob/development/docs/conf...


I’ve been using this for the past few months, and for the most part, I like it. I appreciate that it’s all configured with a single file (no GUI).

One issue: If an app uses native Mac tabs, Aerospace treats each tab as a window, which completely breaks the full screen functionality. Alacritty is one example. It’s really odd.

Edit: there’s an open issue for this: https://github.com/nikitabobko/AeroSpace/issues/68


Yabai suffers from the same problem, so far the creator hasn't been able to fix it.


Nice to see another twm on macOS.

Somehow over the past few years Windows became the more vibrant platform for twms (vs macOS) with developers (including myself) trying to push the envelope and introduce many quality of life features you still won't find even in Linux twms today.

https://github.com/LGUG2Z/komorebi

https://github.com/glzr-io/glazewm

https://github.com/dalyIsaac/Whim

Hopefully this new entrant will drive even more innovation in this space on macOS.


Not to drop this kind hacker’s competitor, but I’ve been a happy user of https://rectangleapp.com/. Will definitely be checking this out instead tho, even though I’ve paid for rectangle — any demo that has SublimeText windows in it is a demo I trust!


I'm curious, what kind of features that are not found on Linux ?


For one, tools like Shortcat aren’t really possible on Linux afaict, since it relies on MacOS’s fantastic accessibility API.

https://shortcat.app/


> Search and summon windows > > Shortcat lets you search window titles for more precise multi-tasking.

StumpWM has this and it's a beautiful thing (default binding: prefix+"). I got in the habit of titling terminal and browser windows with the topic name of whatever I was working on. Made for very fast switching to find what I wanted among many windows/topics.

Sadly I've needed to switch to Wayland and StumpWM is X11 only but it has a successor called Mahogany[1] that's being worked on.

Oh, and both are written in Common Lisp if you like tweaking your WM from the REPL.

[1]: https://github.com/stumpwm/mahogany


Hmm -- interesting/fantastic tool. Feels something like avy in Emacs, but for everything on screen.

I think this should be possible in linux with a bit of work (erm, famous last words?) especially because the whole desktop environment is fundamentally open and you don't need to depend on this providing an API.

But I think an even better approach is to have build this functionality using screen parsers backed by recent AI advances. That way, you decouple the source / rendering of content from the sink / consumption of content, and can have more flexible behavior on behalf of the end user. I anticipate (hope) such tools to pop up over the next few years.


The biggest QOL improvements imo are found in the approach to the user-facing API design.

Compare basic multi-monitor commands in something like bspwm[1] or yabai[2][3] to twms on Windows where this is typically handled transparently by directional `move` and `focus` commands understanding monitor boundaries.

Besides this, Whim has implemented a very functional ctrl+p style command palette which provides a great interface for more advanced on-the-fly/one-time window manager interactions.

With komorebi I think that having different border colours to indicate different types of containers is very helpful (one colour for single window stacks, a different colour for monocle containers, a different colour for stacks with multiple windows), as well as custom window-based work area offsets[4] (so if you have an ultrawide monitor with only a single window on a workspace, you can add offsets to the sides so it doesn't stretch across the whole width and give poor usability).

It's not really any one "big thing" but rather a difference in approach which adds up over many small design decisions.

[1]: https://github.com/baskerville/bspwm/issues/563

[2]: https://github.com/koekeishiya/yabai/issues/505

[3]: from my own personal yabai config - imo this is not really acceptable for a user facing API, especially for basic commands like focusing and moving:

```

    # focus window
    alt - h : yabai -m window --focus west || yabai -m display --focus west
    alt - j : yabai -m window --focus south || yabai -m display --focus south
    alt - k : yabai -m window --focus north || yabai -m display --focus north
    alt - l : yabai -m window --focus east || yabai -m display --focus east

    # swap window
    alt + shift - h : yabai -m window --swap west  || yabai -m window --display west && yabai -m display --focus west
    alt + shift - j : yabai -m window --swap south || yabai -m window --display south && yabai -m display --focus south
    alt + shift - k : yabai -m window --swap north || yabai -m window --display north && yabai -m display --focus north
    alt + shift - l : yabai -m window --swap east  || yabai -m window --display east && yabai -m display --focus east
```

[4]: https://hachyderm.io/@LGUG2Z/112493589633823318


Clicklock is much nicer in Windows than the awkward methods I've found so far with Linux.


I'm reluctant to try this -- my experience with other attempts to try out tiling window managers on MacOS is that the just don't play nice. Windows get repositioned by normal interactions and the window manager is not able to wrangle them, and connecting external monitors is a disaster, and you end up with a situation where windows are overlapping in odd ways but you can't move them out of the way because the window manager is trying to manage them.

Does anyone have experience with this particular one and does it resolve these sorts of issues?


Hi, AeroSpace author speaking :)

> Windows get repositioned by normal interactions and the window manager is not able to wrangle them

I'm certainly biased, but no, I don't face issues like that

> and connecting external monitors is a disaster

Connecting and disconnecting external monitors is an important use case for me as well. I dedicated my time to support specifically this case, so hopefully it works correctly for other users as well


I'm a long time Amethyst user, but going to try AeroSpace out!

Based on the documentation the toml syntax is stretched quite a bit to implement some logic and callbacks. Have you considered some scripting language to make it easier to do, or is the need for this kind of advanced use so little that it's not really a problem?


When I started the project, I kept it simple, so I started with the static config

The complexity of the config has grown since then, with the bigest (and, actually, the only) problem being on-window-detected callback as you mentioned.

I've been thinking about using a scripting language like Lua, but I haven't made my mind yet whether it's worth it


I've never ever had that happen with Rectangle or Magnet.


This is great! I find the one thing I miss the most from i3 that none of the macOS tiling managers seem to have is i3bar, or a minimal bar that displays what space I'm on, how many spaces I have, cpu/ram usage, etc. I've tried to find configs that emulate this with Spacebar [0], but haven't been able to find anything

[0] https://github.com/cmacrae/spacebar



Yeah I've seen SketchyBar, what I'm more interested in is the look of base i3


You can likely do this with Hammerspoon. It should be pretty straightforward as long as you have somewhere you can get the name/id of the space that you're on.


Aerospace shows which space you on in menu bar


Sketchybar has this.


I have been using Yabai for almost 1 year now. I had learned to live with the transition between workspaces because I cant disable SIP.

I just tried this. I love it. No SPI and no transitions, just fast switching of apps. I will probably switch to this.

Thank you for your work!!


Can we stop pissing and moaning about notarization? macOS isn’t Linux and this isn’t 1994. Given the cybersecurity threats of the world today, signing by a central authority makes some amount of sense for apps on consumer OSes.


I agree that signing by a central authority makes sense. As the readme mentions, I don't have anything against notarization as a concept.

I specifically don't like how painfull Apple does it. (Google for "notarization hell macos")

This is my pet project that I do for fun and for free. Bowing my head to Apple every time I want to release a new version is not fun. Waking up in the middle of the night, because Apple revoked the app (https://github.com/nikitabobko/AeroSpace/issues/167) is not fun.

AeroSpace is a tool for developers by developers. Developers can audit the code and install the app from sources


As long as Apple's glorious code signing scheme can still easily tricked by a single xattr call [1], I'm fine with it. I've just got a feeling that that won't be forever.

[1] https://github.com/nikitabobko/homebrew-tap/blob/main/Casks/...


Signing by a central authority makes a lot of sense... if only that authority would sign off on the software being secure instead of the software fitting their current mood and business strategy.


is there any sign whatsoever that notarization is the latter instead of the former?


What do you think signing does to prevent against 'the cybersecurity threats of the world today'?


I'm not going to notarise anything as long as it costs $100 per year.


I hope I'm not too late to this thread, but I have a couple comments and a question.

The experience is better than Amethyst or Yabai, but there is a learning curve. I think it would help if the documentation was one single searchable page, instead of several subpages.

The default keybindings interfere with macOS's special characters, so I would recommend changing the modifier keys away from option+ and option+shift+.

One thing I couldn't figure out. My setup is as follows:

    h_tiles
    └── v_accordion
        ├── window1
        └── window2
    └── v_accordion
        ├── window1
        └── window2
I would like to limit the total number of horizontal tiles--more than two is too many--but I can't figure out how to make new windows automatically go into either accordion stack instead of a new horizontal tile. Is there a way to set mins and maxes per tree level? This is one of those features that Amethyst has that seems like a no-brainer.


I have used both aerospace and yabai, and aerospace was far more simpler to configure. I really like it. Thank you for the great work!

I had to unfortunately stop using aerospace due to some bugs. If I switch from workspace a to workspace b, sometimes aerospace keeps switching back to workspace a. It is annoying when you are trying to press the unmute button in the middle of a call but aerospace keeps taking you away from that workspace. The root cause could be that the apps that I use (internal tools) are misbehaving. I'll file a bug report if I can reproduce it on my personal mac.


Is it possible to display the current layout tree (of the current workspace)?

As I'm learning to use this, I'm having trouble conceptualizing how my windows are organized in the tree, and how I'm affecting it.


For folks that use the tiling window managers, what applications are you running? And what does a typical desktop look like?

In terms of desktop layout, mind I don't use one, the Oberon vision comes to mind. A single, large pane, with all(?) of the others stacked to one side.

My friend didn't use a tiling window manager, but had this desktop laid out as such, but all of those windows were terminal windows that he kept an eye on (he was our ops guy).

But are folks using these layouts with their web browsers, word processors, IDEs, etc.?


I use an ultra wide screen and do both coding and video operations so I'm always having side by side layouts mixed in with tabbed windows.

One typical case is navigating a file manager to grab files that I need to drag and drop on a web UI, or folder/URI slug names I need to keep copying back and forth to use on a workflow.

Another is watching stdout/stderr of a running script and a log tail at the same time.

Sometimes I have tabs of web, file manager and some other app on one side and a terminal on the other as terminal commands are the glue of a workflow.

Or I'll be screening a video on the left and doing edits on the right. Or keeping notes open on the side during a conference call.

Sometimes I'll only have one window in a virtual desktop and ultrawide is too much, so I just have an idle terminal window as padding.

Not having to hunt around for windows then hunting for their edges helps when I'm constantly opening, closing and sizing terminals, file managers and so on and so forth. It simply is faster with tiles.


This will sound silly, but doesn't that hurt your neck? You mention you use a ultra wide screen.

I have one of the "drive in theater" iMacs, and I prefer the windows in the center. It's big enough that if things were on either side, I'd have to crane my neck to focus on either side. I'd hate to have to do that all the time.

I guess if I were to do anything "tile" wize it would be two smaller columns, one on the left, and one on the right, and then the big center as the main focus.


I'm a developer so not as much an outlier. My usual workspace is usually laid like this:

1. Emacs. Coding and other stuff

2. Browser. Either the web application I'm working on and other searches

3. Terminal. For long standing actions and other system stuff.

4 . Documentation. Mostly another browser windows.

5. Utilities. Mostly GUI related to the current project I'm working on (Database, API Tests,...

I'm working inside a VM (macOS hosts) so I use the host software for other things. But if it bare-metal, I'd add a workspace for media, and another for communication.

As you may guess, it's almost one maximized application for each workspace. This way I can quickly switch to it with the keybindings. The only time I have a proper tiling structure is when I need the information from both windows at once (Taking notes and reading a document,...). Tiling is mostly about not thinking about where the windows will be, not to have everything there at once.

macOS has Spaces, but the ergonomics are bad. Especially the animations if you use them a lot.


I don’t work in programming, but in arts and academia. I usually have 1 “main” window in working in and at least 1-2 more I am continually referring to, so I like to be able to quickly switch between a single fullscreen window and a 2 column view. Typical workspaces for me are Zotero + Firefox + Word (for writing and research) and Photoshop/InDesign + Finder + Firefox (for design). When I do code, I like being able to have at least 1 terminal window side-by-side with a coding LLM. I usually also have a workspace with Spotify + MacPass + Telegram open that I refer to as needed.


Hyprland here. My primary screen (and workspaces on it) is nearly always a single app, while the secondary has tiles - much like your ops friend. I would actually love a window manager that embeds this assumption.


Tons of terminals for me. Tiling window managers are great for that. The alternative, I guess, would be one big terminal running tmux, but with my tiling window manager it works with GUIs when necessary.


I’ve just started using [1Piece](https://app1piece.com/). Before this, I had BetterTouchTools just to mimick the window snapping. And years prior to that, I’d run a full dwm setup on Linux. The thing to understand however… is that these sort of things are a losing battle on macOS. Stuff like yabai/skhd break in between OS updates. Window management and apple is a battle you can always expect to lsoe


This looks very interesting. However, how do I create a new container, to put a subset of windows in?

It's not clear to me from the example configs, either default or i3-inspired. I've never used i3, though I did use AwesomeWM extensively about a decade ago.

Edit: ah, the `join-with` command which is a superset of the `split` command. In the default config, alt-shift-semicolon to enter Service mode, then alt-shift-h/j/k/l for neighbor selection.


Cool, but I'd first have to be sold on tiling managers being a good idea in the first place. I like to imagine my desktop as well.. my physical desktop. It's got papers on it, books, it's all overlapping and I usually put the stuff I am working on in the center. That's the issue with tiling managers for me - it introduces a structure where you probably don't need it.


Is there any documentation for very beginners on how a regular workflow would be? Like, if I have 7 windows opened, how do I start organizing them with just shortkeys? I've found option+/ to put all of them horizontally or vertically (alternating when pressing twice), but not sure how to quickly make 1 of them bigger or select just 2.


Nice!! I'm going to have to play with this. Now what I really want to see, and I'm surprised doesn't exist, is an addon for or replacement to Spotlight that works like dmenu in that I can write scripts which use it for input like:

  printf 'one\ntwo\nthree' | dmenu -l 3 -p "Which one? "
I use that in so many scripts on my main machines and would love to share them with macOS folks. I'm really surprised its not in something like Alfred.

Maybe it exits and I don't know about it?? If not, maybe someone will add it to this open source Spotlight replacement I found: https://github.com/techrisdev/Snap


There's a clone of dmenu - https://github.com/oNaiPs/dmenu-mac, but it doesn't integrate with Spotlight or similar.


Yeah, Ive seen that, but it would be a hard sell getting macOS guys to run that and replace the spotlight keybind with that entirely. I tend to agree with them too.. I just would like to see Spotlight have the ability to do dmenu scripting stuff. There's no reason it couldn't except lack of vision.

I honestly think Apple would be half keen to do it themselves, they just probably haven't seen the idea to steal it yet


I implemented something like this as a Raycast extension[0]. Demo attached[1].

[0] https://github.com/irth/dmenu_raycast

[1] https://akko-cdn.hackrc.dev/media/e34cdc7683fece5260124ef47c...


Amazing!! I had never heard of Raycast! I'll be checking this out first thing in the morning! Thank you!


let me know if you have any suggestions. i’ll probably try to make it more self contained (e.g. make it possible to install the script into PATH from the extension itself) and eventually get it into Raycast extension store (haven’t read their guidelines yet though)


I use AutoFocus which gives focus-follows-mouse with AeroSpace and its a good enough replacement for i3wm.

Extremely thankful for both projects.

https://github.com/synappser/AutoFocus


There's also https://github.com/sbmpost/AutoRaise which is open source. AutoFocus seems like a proprietary clone in beta that will eventually become paid.


Oh awesome, thank you for suggesting this. Will swap out AutoFocus for AutoRaise.


I use yabai and my favorite feature is being able to switch between mostly recently used spaces with a shortcut. It allows me to quickly alter between editor and terminal spaces, or editor and browser, or two browser windows. This feature alone boosts my productivity so much and makes it fun to use my machine. But it required disabling SIP which I can't do on my work machine. Does anybody know if AeroSpace can do this?


Looks like it can using the `workspace-back-and-forth`[1] command. I'm gonna try it.

[1]: https://nikitabobko.github.io/AeroSpace/commands#workspace-b...


It's like someone was thinking of me! I've been missing such things on Mac. Toying with Yabai and others. Love seeing work in this space.


> Homebrew installation script is configured to automatically delete com.apple.quarantine attribute, that's why the app should work out of the box, without any warnings that "Apple cannot check AeroSpace for malicious software"

Can someone ELI5 what this does? Does it impact AeroSpace only, or something globally on my Mac? Thanks!


Without looking into the installation script to verify, based on that description, it is only deleting an 'extended attribute' of the AeroSpace app. MacOS adds this attribute automatically to programs downloaded from the web, and prevents a user from running the program while it has the attribute.

I frequently need to run a command like the following before running a downloaded program, which I'm guessing is exactly what the install script does:

xattr -d com.apple.quarantine some-program.app


It only affects AeroSpace.

The README links to the Homebrew install script, relevant lines highlighted here: https://github.com/nikitabobko/homebrew-tap/blob/main/Casks/...


It impacts only AeroSpace


I will be getting my first mac soon (I am still sad about it), which means I will need to figure out the WM. Currently I am considering yabai and amethyst. I guess now I should add AeroSpace to the list.

If you are actually using tiling WM on mac, could you share which one and why?


Out of all of these, I've only tried Yabai. It's fine. Things mostly work like I expect them to and I rarely encounter a situation that isn't fixed by restarting Yabai. That said, I'm hardly a power user. I have not disabled SIP and instead simulate features that would require it as best as possible through other means. E.g. workspaces can be switched by dispatching a key combination that is handled by macOS natively.

You can check out my configs here [0] if you are so inclined, but it's not super polished.

[0] https://github.com/Cu3PO42/gleaming-glacier/tree/next


For what it's worth, I don't think there's a lot of value in these. I hate the MacOS environment as much as anyone, but all the attempts to create tiling managers have resulted in strange unusable quirky behavior.

You're better off just sucking it up and using the native UI until you get sufficiently familiar with it that it rarely gets in your way too much. Meanwhile keep lobbying your employer (assuming that you are being forced into this by your job) to support Linux for development workstations.


Completely agree with this take.

No matter how sophisticated these Mac Window Managers get, MacOS will always mess with the windows because it knows better than you. That's why people buy Macs, and it's not going to change. If you don't like this, then you actually don't like Macs.

It's opinionated, and it's opinions do not match yours. I would have liked window snapping, but instead we have 1/2 baked split screen virtual desktops.

I simply don't understand why people use them for development environments, the "Unix underneath" doesn't help enough in enough scenarios when it's hostile in so many others.


> I would have liked window snapping, but instead we have 1/2 baked split screen virtual desktops.

There’s at least non-fullscreen tiling available now if you hold down Option/Alt when hovering over the green traffic light (which also changes the corresponding Window menu items to “Move Window to (Left|Right) Side of Screen). There should probably be a toggle somewhere that makes this the default.

> I simply don't understand why people use them for development environments, the "Unix underneath" doesn't help enough in enough scenarios when it's hostile in so many others.

A lot of it is that the hardware is well-rounded and not as riddled with gambles/compromises as most other laptops are. Usually non-Apple laptops have at least one or two things that suck about them, with the most frequent being battery life, fan noise, and poor thermal design but include mediocre screen, bad keyboard, bad trackpad, bad power management, bad unplugged performance, bad port placement, and chintzy build among other things.

Some percentage of users also just like macOS as it is, though.


I buy computers that run macOS for a couple reasons:

- it’s generally smooth and stable from a UI standpoint

- it has mostly sane defaults

- it has great font rendering

- the video and audio subsystems are rock solid

- it has access to every development tool I need daily via homebrew

It seems like there are generally two perspectives:

- “I shouldn’t have to change the way I want to do things”

- “I don’t mind changing to another way of doing things”

The first group I think has a harder time with macOS.

A while back I decided to experiment with only using the default first-party apps for macOS for everything, and it greatly changed the amount of OS customization I did from that point on. I still live in iTerm for most of the day, but I don’t really feel hindered by the OS in any way anymore.

From my experience Windows actively attempts to subvert my clear, authoritative commands, second guesses every admin instruction, interrupts me with focus changes and dialog boxes instead of giving the active window absolute priority (this happens sometimes with macOS, too), and comes with bloat right out of the box. When this developer thinks about a hostile OS, Windows 11 is rhe first thing that comes to mind.


The problems is that I will still use linux for all my spare-time computing, so obviously I would like the experience to be as same as possible.


> When this developer thinks about a hostile OS, Windows 11 is rhe first thing that comes to mind.

Why bring up whataboutism? I honestly don't care that Windows is also hostile. It also has the worst implementation of virtual desktops. What has that got to do with MacOS also being generally terrible.

The rest of your comment adds nothing, as it just repeats what I said.


Fully agree with this.

Used Yabai at first last time I was forced to use a Mac. Hated it with a passion. It was "close", but not close enough, and so I felt I was fighting it all the time.

Ended up running most applications full-screen instead, and relying on tiling in iTerm2 or the applications most of the time instead. It helped that I was connected to a second monitor most of the time.


Generally agree with this - have had lots of buggy experiences with Amethyst, Yabai, Hammerspoon, etc.

That said, Rectangle works - in my experience - flawlessly and is an essential addition to Mac window management. It’s not as ambitious as a full TWM, but what it does provide (snapping, hotkeys, etc) is essential.


I'm not an expert, but isn't Rectangle the simplest and easiest way to manage this? I love it


I've spent some time evaluating MacOS tiling apps. Rectangle is one of them. I've so far given up on all of them because they lack the ability to directionally reassign focus.

So like if I have windows in four corners, and focus is in the bottom left, I want something like ?-k ?-l to move focus up and then right. Now focus should be in the upper right window. Have I missed it? Does rectangle make this possible?

Amethyst (xmonad inspired) gets close, but I want directionality, not cycles within cycles.

So far my solution is to just use i3 on my desktop and have a bunch of ssh sessions into my macbook, which is fine until I do a clipboard-yank through the ssh session and wonder why I can't paste the contents into the browser on the linux side.


Hell, I’m still on Spectacle. I’ll look at switching to something else as soon as it gives me even a single problem. Zero in years and years, including several years of no longer being updated.


I wonder… this isn’t what you want, but maybe just tmux in a full screen, or half-screen terminal (if you need a web browser) would suffice? Plus their built in “spaces” (workspaces) feature.


It isn't i3-like, more window snapping than fractal tiling, but I really like Rectangle. I used Magnet previously and also liked it.


I've been there, being forced to use it for work..

I tried both Yabai and Amethyst and, frankly, neither provide a clean experience.

Yabai requires disabling some OS security feature iirc, which may or may not be an issue for you. I seem to recall having issues with it, and switching to Amethyst pretty soon after. It might also only support BSP layout, which I dislike - stacks all the way.

Amethyst feels a little half baked. It works well enough, but configuration is through a GUI and saved in some non text format, making it not difficult friendly. It also doesn't support things like moving windows between workspaces, meaning you need to have additional bindings for that through the MacOS command center or whatever it's called.

Overall, I managed with Amethyst for close to 2 years, so that's the one I'd recommend of the two. Luckily I'm back on a Linux machine and can use river now. :)

Good luck!


> It also doesn't support things like moving windows between workspaces

It's been a while since I used Amethyst as the Mac is now on complete corporate lockdown, but I remember that being the biggest feature I used on Amethyst. MacOS doesn't support it, but Amethyst did.


I lost my Amethyst due to corporate lockdown rebuild a few weeks ago. MacOS window management is obnoxious without it and I'm much less productive due to losing my tools.


I am likely misremembering, and mixing it was something else! There definitely was something vital I wasn't able to do through just Amethyst though.


Is there a way to limit using the Right side Option key and spare the Left Option Key for the OS?

The good thing about RCMD is I can specify which specific key, consuming only 1 OPT or CMD key while saving the other key for the OS shortcuts


I’m currently in using sway on fedora, I’m considering moving to macOS because of tighter integration of icloud (everything is on my iphone) and generally better polish of the OS. This is another reason to switch


I started using this at work about a week ago. Still getting used to it, but it feels nice for managing multiple displays. Sometimes it feels limiting, but I think I'm just getting used to it.


Yabai was not working for me, Aerospace worked out of the box. Great tool


Finally…the day has come…this look awesome!!! Loved the values.


I have yet to try a tiling windows manager...but Im this close. I can't stand always trying to find the effing window under a pile of shit.


Somewhat on subject: does anybody feel like the macos-style application menu that is disconnected from the application window has outlived its welcome? I feel like apple gets so much right from a UX perspective, but in a world of multi-monitor setups and common cross application workflows, I find it absolutely bizarre that I might have to scroll across 2+ monitors to get to a dropdown menu for an application that I'm using, and sometimes still get to a dropdown menu for the wrong application.


I like the detached menu, but mainly because it makes the application window smaller with less overall decoration. With multiple applications open, each window having menu bar decorations seems cluttered to me. I like the minimalist and consistent nature of it all.

However, it does get more complicated with multiple monitors and I don’t know of the solution here. You’re right that the UX falls when you’re trying to work with menus across multiple monitors.

Perhaps the right mix is doing something like the Chrome extras menu or if you’ve used VS Code on the web, where you have a small hamburger or (…) button that opens a context menu. Then you still have a menu for the application, but it’s hidden until you need it.


On Windows it's more minimalist - menu is hidden right until you need it instead of always taking precious space


> in a world of multi-monitor setups and common cross application workflows, I find it absolutely bizarre that I might have to scroll across 2+ monitors to get to a dropdown menu for an application that I'm using

These days the menubar is always on all displays, not just the main one?

(unless maybe you have "Displays use separate Spaces" unchecked?)


You may like the Menuwhere application, then. You can setup a hotkey on it, too.


if you configure your displays to have separate spaces you'll also have a menubar on every display


Yes! Windows got it right IMO.


Cool YouTube video, but: my kingdom for a screenshot!

Product looks amazing. I use Divvy but will definitely try out AeroSpace. Great name too.


How does this compare to tools like Yabai? I'm pretty happy with Yabai and SketchyBar, is this any easier to use?


I used i3 for a few years when my main dev machine was Linux. I too am frustrated by the macOS builtin WM's shortcomings. Initial feedback on AeroSpace though: it's utter shite.

I started it when I already had my usual number (many) of windows open across my usual number of spaces (lots) on my usual number of displays (3). First it spent 30 seconds trying to give me a seizure, and when it had finished I'm left with a total mess of a layout. Some windows 30px wide. Some windows not-quite-fullscreen. Some windows just randomly floating without any kind of recognisable pattern.

Now I can't navigate around because dragging a window sends it flying off to the corner of a different display. None of the default keybindings seem to do what they say they should. The focussed window disappeared entirely when I tried resize mode, and I can't find the way out of it because that was the window with the instructions.

I think I'll try something else.


Don't give up. I had the exact same issue when AeroSpace when I first used it, but I gave it another chance because of my constant frustrations with Amethyst. The commands do what they're supposed to, but unless you read the documentation carefully, your expectations will be different.


How does RCMD + Rectangle Pro compare to AeroSpace?


Just want to say a huge thanks to the dev(s) here, you've basically solved my major pain points with macOS window management (especially around apple's infuriatingly broken implementation of virtual desktops). This stuff has been gnawing away at my sanity for years


Apple needs to aquihire you immediately.


This looks so awesome I gonna dust off my mac mini.

As a tiling wm user (Hyprland now) I always wonder how OSX users claim they're that productive with all those alt+tabbin' I meant cmd+tabbin'. Welcome to the 2010s guys!


Can you share any resources on learning to be productive with tiling WMs? I have tried a few times and always bounce off of them. I also find window overlapping to often be more intuitive than forcing them to squeeze into a tile.

I internalized the swipe gestures (3 fingers left/right) early on with OS X 10.6 snow leopard and then with the Mission Control update (3 fingers up) I am basically always faster with a trackpad than any keyboard “workspace” navigation.


For tiling WM's I think it's rather critical that the hotkey for "move window left" resemble the hotkey for "move focus left". I haven't tried AeroSpace yet, but so far I haven't been able to pull this off with any of the tiling apps on MacOS (if I've overlooked one please let me know).

So my tip for being productive in a tiling window manager is to get a linux machine and use sway.


Man I hate the name. Has nothing to do with aerospace, but it does seem like a fad in software to take on some stolen valor from a far more interesting field.


1. The "AeroSpace" name means a space for your windows without friction

2. I myself consider the virtual emulation of workspaces to be the strongest feature of the AeroSpace. If I could disable the workspace switching animation in yabai or Amethyst (with SIP enabled, of course), I'd probably not bother myself creating AeroSpace. That's what the "space" part in the app name means. It resembles the strongest feature of AeroSpace - workspaces


re 2: an added benefit of not using actual macOS spaces is that it seems (at least from my limited usage) to be much more reliable than yabai (not blaming yabai here, of course).

I also tried implementing an i3 like workspace numbering/creating on top of yabai - it was an uphill battle due to how limited native macOS space management is and I never finished, so thank you for creating AeroSpace :)

I actually use it in tandem with yabai now - I added an "exec-on-window-hide"[0] option similar to "exec-on-workspace-change", and use it to make the hidden windows transparent (and to make them visible again)[1].

I wonder if hooks like that would be a good way to have a nice middle-ground to let people who don't care as much about SIP to extend upon AeroSpace's model?

I'll probably send over a pull request for your consideration soon.

[0] https://github.com/irth/AeroSpace/commit/54b48aa0edf9817031c...

[1] https://gist.github.com/irth/0bc96778c6073c756d3bb657f1bfe8b...


You know what really ruffles my feathers? When aerospace constantly steals names from the far more interesting field of ornithology.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: