(评论)
(comments)

原始链接: https://news.ycombinator.com/item?id=40596689

用户更喜欢使用 Aerospace 而不是 Amethyst 来管理 Mac 上的窗口。 他发现,与 Aerospace 在工作区或显示器之间快速、无缝的窗口移动相比,Amethyst 的抛出窗口方法效果较差。 该用户提到了他对 MacOS 内置工作空间的不满,因此选择了 Aerospace 的虚拟工作空间解决方案。 然而,Aerospace 中存在某些限制,包括受限的窗口排列选项以及将其与其他工具(如 Raycast)或本机 MacOS 功能(如“下一个桌面”和“上一个桌面”)集成的困难。 尽管存在这些限制,用户仍然每天继续使用 Aerospace,并赞扬其相对于现有 MacOS 窗口管理的整体改进。 他们比较了在 Linux 上使用各种窗口管理器的经验以及他们对 MacOS 上 Aerospace 方法的偏好。 虽然 Amethyst 扩展了内置的 MacOS 窗口管理,但 Aerospace 取代了它。 最终,用户对 Aerospace 表示满意,尽管它有一些小缺陷。

相关文章

原文


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.



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


> 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



> 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?



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.



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



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).



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.



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.



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.



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.



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.



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



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.



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



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!!



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



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



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



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.



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?



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'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 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 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.



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.



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.



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 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


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



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.



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.



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.



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.



> 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



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



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



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.



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.



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.



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’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



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.



> 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?)



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

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



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.



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



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

联系我们 contact @ memedata.com