Hacker News new | ask | show | jobs
by mrbabbage 1112 days ago
No, the joke is on us MacOS users who insist on its terrible Alt-Tab behavior instead of leaning into the gesture support.

But I do believe the gesture support has fundamental limitations:

1) you have to take your keys off the home row to render gestures. Not good!

2) gesture window switching / Exposé breaks down when you have too many windows open: the thumbnails become unrecognizably small.

3) to solve the above problem, perhaps you suggest using spaces. Well, MacOS's spaces support is also frustrating. It's impossible to turn off the animation and time lag switching between spaces! Sure, it's only a half-second, but a half-second repeated hundreds of times adds up. And spaces's interaction with alt-tab is totally broken: if you're using a given app (say Chrome), switch to another space where Chrome is also open, and then try to alt-tab back, it doesn't take you back to the last window you had open. Sad!

6 comments

I love the mac alt-tab behavior, you just move your finger up one key to switch between windows in the current app grouping them nicely unlike Windows where they're all a big mishmash.
My issue with this behaviour is that I often don't want my windows to be grouped by app. I want to be able to group windows by project, and I may want to have multiple projects in the same set of apps. Workspaces (virtual desktops) ought to be perfect for this, but there is no way to get alt-tab like switching between windows in a desktop on macOS.
It also breaks down when you have a full screen window and a normal window. It's so jarring.
One more reason to avoid the dead end of full screen windows.
We’ll that’s the thing. Windows is based around windows and macOS is based around applications. I get that you want to use macOS like you use windows but that is the historical usage of these UI.
Except when windows behave like apps and you close a window and it closes the app. Or it’s a single window app but closing the window does not close the app. Or when you full screen a window and now everything is inconsistent. Or when you use Mission Control and now the switching paradigm is based on Windows and not Apps.
Even Apple’s own applications break the “it’s an app and not a window” paradigm in many instances. Without trying, there’s no way to tell if clicking on the close button will quit the app or just close that window even for apps that only use a single window.
That made sense in days gone by when things like photoshop's tool palettes were in separate windows. It makes no sense in 2023 when windows are self contained units. Apple have changed all sorts of other things about their desktop environment. IMO they ought to change this too.
Soo use stage manager, it’ll do cross app switching without delay using cmd-~

Simply drag a number of related windows together

Stage manager should be nice, but it takes up a huge chunk of screen real estate for no reason.

EDIT: actually it seems possible to make it "autohide". But it won't let me have more than one window visible at once!

Just drag a window from the sidebar (stage manager) on the desktop. It will take the front most window of that app.

It’s kind of buggy at times though.

I have a stage with a few terminals, vscode, and a development browser

Hah, my perspective is the exact opposite!

On Windows, there is a nicely and predictably maintained Z-order, whereas MacOS insists that if I want to switch focus, surely I want all the windows that the other app has to offer, which feels like a big "mishmash" to me.

> MacOS insists that if I want to switch focus, surely I want all the windows that the other app has to offer, which feels like a but mishmash to me.

This had not been the case. Command tabbing would bring forward only the last active window. It was very handy to switch back and forth between text editor and browser that way. But then, they decided command tab should bring forward all windows, which ruined usability for me. Now I use BetterTouchTool [0] to directly switch to an app. Doing so brings forward only the last active window.

[0] https://folivora.ai

Pleas elaborate on how exactly you do this using BTT. I have used it a little bit, but haven’t gone beyond mapping one or two things.
My pleasure. Even though BTT is conceptually very simple (input method triggers trigger actions), implementation is very detailed.

First, add a new keyboard shortcut trigger for “All Apps”. Choose a key combo that you prefer. I'm using a programmable keyboard that has a dedicated key corresponding to key combo CTRL+SHIFT+OPTION+CMD (a.k.a. super), which doesn't collide with system key combos. You are free to choose anything that suits you. For instance, to switch to Safari, I hit SUPER+S.

For corresponding action, choose “Launch Application / Open File / ...” and choose Safari from the box below. When Safari is already running, this action will switch focus to Safari's most recently focused window and will not bring other windows of it to foreground.

That's all. Set up other key combos for other applications as well. I have many set up. SUPER+T is for Terminal, SUPER+E is for Emacs. Switching between most recent windows of these apps should now be very easy and fast.

I agree as well, which is why I've used HyperSwitch for many years. It restore most of the goodness of the Windows focus switching experience with a defined keybinding.
Came here to say the same thing! Whenever I'm using my work PC the alt-tab behavior of windows drives me nuts.
The space animation lag is mind boggling. Not only is it a half second, but it locks keypress until finished.

Any Apple devs (or anyone) here who can comment about why they removed the expose-animation-duration option?

If you install yabai (https://github.com/koekeishiya/yabai) it has a feature that can completely disable spaces switching animations - but it does require partially disabling SIP (worth it for yabai, IMO).
If you change spaces using the keyboard shortcuts like Ctrl+1,2 etc. (they might not be set to that by default.. it's 'Switch to Desktop 1' etc in the settings), then there is still a shorter animation, and there is no input delay when switching.
I'd love some insight, too. I was just trying to disable the delay this morning. Even with the "Reduce Motion" option checked, the delay is too long.
I went through the same and ended up disabling ProMotion on my 16 MBP because a bug makes this animation run twice as long on 120 FPS screens.
that does work but what other downstream impact will this have? Not familiar with ProMotion.
Re: 2), it's particularly painful if you need the "reduce motion" accessibility setting. Instead of shrinking down from their current positions where you might glimpse a window mid-animation and see where it's going, you get a fade effect from full size windows straight to unreadably small windows.
For 3, enable Reduce Motion under System Settings > Accessibility > Display.

This makes switching spaces and windows nearly instant with no animation. I don't notice whatever else lost animations...so I don't miss them. Worth a try!

That turns off the animation but leaves the time delay in place. E.g. if you have a text field selected in the target window, any typing you do won't register until the fade in—fade out animation completes (exact same behavior as with the option disabled, but with the fade animation instead of the slide animation).
This.

Apple hard-codes “while lies” to make the experience smoother for those with slower devices, but they end up getting in the way if you want the UI to run fast.

It’s like having triple-buffering and vsync enabled all the time. Less chance of it looking broken, but not worth the tradeoff for those that feed on responsiveness.

The delay is caused by the fact that there’s different behavior between cmd-tab short and longer press.

Sorry will not open the horizontal list of apps.

It’s similar to the delay you have with double tap detection

The solution (although somewhat rough around the edges, but much, much better than other options) is to use a tiling window manager like Yabai. It will completely change the way you work with windows and spaces in macOS. This definitely solves your (1), especially with the help of `skhd` to map your keyboard shortcuts. Another option is Amethyst but it's a bit less configurable (although it supports stack layout for windows).

(3) can also be solved. Go to system preferences -> accessibility, check the "Reduce motion" checkbox. Now the spaces can be switched almost instantly without the annoying animation by using keyboard shortcuts.

As far as those limitations go.

1) That would also be true if you are switching to nearly any GUI based app that you need the mouse except for maybe if you are switching to a text editor but I doubt every time you switch apps you are immediately typing something, so not really sure I see the problem there.

2) True, maybe I just don't tend to have a ton of windows open at the same time.

3) I can't really speak on how it behaves with alt-tab however with the track pad it is as fast as you swipe and tied to that swipe. I can slow it down or speed it up.