Unlike when I use Windows, I just don't use command (alt) tab on Mac. I rely almost entirely on gestures on my trackpad (three fingers swipe up to see all my windows that are not minimized).
With the added benefit of that allowing me to drag those windows to other screens/desktops right from that UI.
Is there some power user advantage I am missing out on here or is this sort of making Mac work more like Windows? On Windows I use alt tab all the time just because... I find its windows management sucks compared to Mac.
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!
Any Apple devs (or anyone) here who can comment about why they removed the expose-animation-duration option?
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!
(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.
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.
Swiping alone is unnecessarily slow so I don't do it unless I need visual assistance. I do them all though, in this order of frequency:
- Cmd+Tab for switching apps (most frequent action)
- Option+Tab (remapped) for switching windows of active app
- Three-fingers down to see all windows of current app
- Three-fingers up to see all windows (rarely used because I have too many windows open for this to be useful)
In addition I use Ctrl+{1,4} to move between different workspaces (although I sometimes use three-finger swipe left/right for this but too often I want to skip one (like going from 1 to 3) in which case swiping is annoying.
Moving windows to a different desktop/workspace I do by clicking titlebar and pressing Ctrl+{1,4}.
Relying on the "overview" (or whatever it's called) sounds convenient, but slower than what I do.
There are of course keyboard shortcuts to access expose or spaces, but then what's the difference between alt-tab and that?
Now the only/big annoyance in macOS is that "closed" windows don't close the app, so you are back from a zoom meeting trying to get into the zone and you cmd+tab from code to terminal and back expecting that to work and suddenly you are greeted tabbing into Zoom, but it is closed, but it still gets in the way.
I could see some utility in a keystroke that only toggles between the two last used windows, but full-on alt-tab just doesn’t work for me.
I don't need anything more than that, and any app that offers more just becomes noise.
Even on my "desktop" Mac setup (which is really just my laptop in a dock) I have a full keyboard and the Magic Trackpad joined together with that tool from twelve south.
Thinking about it more I feel like I just use Windows and Mac differently. Most of the time I am in full screen mode (so any windows is just a quick swipe to the left or right) and when I am not I have multiple desktops or I have split full screen mode. Plus using 3 monitors I really just don't find myself switching all that often.
For me Windows feels like the worse management when I get used to what Mac has to offer.
First, ⌘+Tab & Alt+Tab do different things; the latter is far superior in doing The Right Thing.
But me too, but I use the gestures because I lack Alt+Tab, not because they're better.
I do like the gesture feature, and I think, even if I had Alt+Tab, gestures would have its own place.
I also wish the catchment for resize wasn't a single pixel in macOS. In Linux, with the shortcuts, it's 1/8th the entire window. Resizing in Linux is the entire window, which is nice now that applications feel the need to invade the title bar. (I'm looking at you, browsers.)
It feels like CMD+TAB was designed to be used for this purpose and not for the more general ersatz 'open an application I know is currently running' mode.
But, hey, if you _do_ use it for that, this Witch window switcher seems like a great idea. More power to you!
Now imagine u have 10 terminal windows and 3 chrome windows open. And you switch back and forth between two or three of these windows. In Mac Os you cant really do that, because u have to cycle through all the windows of the same software to get back to the other terminal window youre working on.
And thats why people use non keyboard methods for switching windows, which sux,
I hate Windows, but I also hate Mac Os for its dumb opiniated design choices that after 20 years theres still no option for fixing, so u need to pay 20$ for some tools that give you sane usability (also the the need for better touch tool to get proper tap to drag without a release delay).
And the worst is the fanboys that act like Mac Os’ wonky choices are a necessity because I’m holding wrong and they never had a problem with it.
Is a docked setup just not a thing for most Mac users?
I almost never want to use my laptop as a laptop—the keyboard is too small, looking down at the screen is bad for my neck, and multiple monitors is addictive. But as soon as I set the laptop aside and break out the external keyboard and mouse, Mac's window manager becomes completely unusable. I'm finding that the magic mouse doesn't help much because it's crippled compared to the trackpad and is horribly unergonomic. Hence the external tools to make the keyboard actually useful.
Can’t tell for others, but the trackpad is central on how I use my Mac. I can’t imagine using an external mouse/keyboard because it would completely break my workflow. Gestures are extremely convenient when you get used to them.
So yeah, no docking.
I also don’t agree that the keyboard is too small or that multiple monitors is addictive (it’s just convenient). The neck thing is true, which is why I try to keep my main windows on the second monitor, at eye level and bigger
I wouldn't mind if I could trigger the same gesture (as three finger swipe) with cmd or cmd+ctrl with the scroll wheel.
It was a little buggy when Ventura dropped, but it gets frequent updates and has stabilized in the past few months.
This let’s you have complete control over tiling.
Planning to switch to it now, because all the other options (like using no tiling manager at all, or Amethyst) seem to suck even more.
The problem with the built-in methods is that they use spaces and split them for windows. That locks you into that space just as full-screen view does.
For example, the CMD+Tab task switcher seems natural, but it has an issue where you can select an app and it does absolutely nothing, which is both infuriating and incomprehensible. Is it ignoring me because the app is minimized? Did it send it to another desktop? I have no idea! It must be deterministic, but I'll be damned if I can figure it out. I am sure "real mac users" get it, and I'm happy for them, but poor benighted souls like me just wonder why their $2500 computer isn't doing what they're telling it to. And whatever that perfectly good reason is, there is an even more perfectly good reason to make it work the way users expect.
The Dock has the same issue with letting you click on an app, and then not bringing that app on screen, or telling me why it's ignoring my command. Both of the above patterns work better in Windows, and have worked better for decades, and Apple designers should be a little ashamed of that.
Mission Control is probably the most useful method, because it actually brings selected applications on screen (the minimum functionality you would expect). However, it does not support keyboard shortcuts for navigating and selecting an application! How is this possible? It feels like a couple story point ticket to me, yet it remains a problem after a decade. Maybe Apple stubbornly assumes everyone will use a touchpad for everything, despite them selling products without touchpads in them. For money.
The other problem with Mission Control is that it should not require your entire screen to switch apps. It feels too form-over-function to me.
I tried the newest entry, Stage Manager, for several months. It's like a cross between Mission Control and the Dock. It works well (that is, it does what it's supposed to), except it's missing the ability to change the size of the window thumbnails. It takes up quite a lot of the screen for the value it gives you. Not that being able to select a window and switch to it isn't valuable, just that that's how the Dock should already work, and Dock doesn't take up 10-15% of the screen.
This is the essence of 99% of my frustration with computers (smartphones especially) anymore. I find myself literally shouting I DIDN'T ASK YOU TO DO THAT at my devices. I grew up hearing the platitude that computers only do what we tell them to do. I wish that was true!
That platitude is from the command line age. With GUIs we will never have that as long as there are no realtime deadlines.
The most frustrating thing is when you tap something milliseconds after the GUI element changes underneath your fingers, triggering the wrong action.
The OSs are visually similar these days but there are fundamental conceptual differences, still. Window management on macOS, in particular, is a merger from two very different paradigms: classic Mac OS and NeXT. I was a huge fan of the former, though I don’t know if it would have scaled to the terabytes of today.
In any case, my advice is trying to understand whatever underling reason some behavior might have instead of trying to shoehorn a previous habit. I know a lot of my frustration with Windows was that it was not the Mac I’ve been using all of my life.
I recently switched jobs, and with the change switched from Ubuntu to Mac for my work computer. I've started to develop severe repetitive stress in my right hand from too much magic mouse usage because there are so many things that just don't have keyboard shortcuts.
So, for the benefit of all of us ex-PC users, what is the underlying reason for this extreme dearth of keyboard shortcuts? How am I meant to be using these Mac OS tools in a way that doesn't kill my hand?
Normally my favourite method to switch apps is Spotlight, accessible with ctrl+space or cmd+space, I forget which. Anyway, Spotlight is a great app switcher, you can disable most everything else and just type a letter or two to switch. I use Powertoys on Windows to get a similar switcher there.
But again, Spotify breaks this, and switching using Spotlight does not recreate the Spotify window, if I remember correctly. Once again reaching for the dock…
This is the thing that is most frustrating to me about MacOS—keyboard support is clearly a second class citizen.
It seems like you're supposed to use the trackpad for everything, but when I'm docked I want to use an external keyboard and mouse. The only mouse that supports the trackpad controls that Mac assumes are available is the magic mouse, which my company helpfully provided, but the ergonomics on that mouse are terrible. It's this tiny little flat slab that offers nothing in the way of support.
If I could figure out how to control everything with the keyboard I'd swap that mouse out for an ergonomic one, but virtual workspace management with pure keyboard seems to be impossible even with Rectangle installed.
This has been true from the beginning of Mac OS X/OS X/macOS. Though the OS allows you to easily define keyboard shortcuts for any menu item in any application easily, there’s no way to use the system well if you don’t have a mouse (or even better, a trackpad).
And it gets even worse with Catalyst [1] apps, including Apple’s own apps like Reminders and others. It’s an exercise in futility to try to navigate those using the keyboard alone.
It helps a little, such as being able to tab through dialog prompt buttons. Windows is still 10x better at being controlled by a keyboard but at least bridges the gap a tiny bit.
Window management - Rectangle
Alt-Tab improvements: AltTab app
https://alt-tab-macos.netlify.app/
Searching - Alfred
Between these three, is there anything that Contexts or Witch can do that is worth paying for?
I have an equivalent installed on Windows (I forget its name) and it is likewise just as amazingly useful.
I configure it to be a minimal cmd-tab switcher that shows all windows for each app. I disable the sidebar and other unnecessary stuff.
I don't need to just see those other windows and their contents, I want to interact with them as well, which SM doesn't seem to do.
For the remaining 10%, SM makes it easy to combine windows into a set (this is so far the only instance where I use the new “recent applications” widget, I set it to auto-hide so it never distracts me otherwise). Then with cmd+` you can switch between windows in the same set (even if they are of different apps). You can also tile windows in your set with something like Rectangle, etc.—just make sure not to over-craft sets, they are ephemeral after all.
The ephemeral nature of window sets used to bother me initially—I wanted to persist them across restarts—but after I realized I really focus on one window 90% of the time, and creating ad-hoc window sets is very quick, I no longer find it an issue.
My mental model of window sets:
— A window always belongs to one set, with two exceptions: 1) global ephemeral windows like “About This Mac” (they appear in all sets on current desktop) and 2) windows assigned to all desktops via Dock (they appear in all sets and on all desktops).
— You are always “in” a set, even if it’s a 1-set with only this window alone, and you don’t see any windows not in the current set (other than the exceptions above). You can only glimpse other windows via Recent applications, Mission Control, and so on.
Managing window sets:
— Creating a window always drops you into a fresh set with that window alone. While jarring at first, it’s key to me—with a new window I start doing something different and don’t need the distracting baggage of whatever was on screen before that. Can always add windows later (see below).
— Any way that focuses a window now also drops you into its entire window set. This includes: Mission Control (which like before operates individual windows, not sets), ⌘+tab, clicking on app’s Dock icon, window switch from within the app, and so on.
— If you switch to another window set while dragging a window, that window becomes part of the set when you release the drag.
— To remove a window from a multi-window set (creating a new set with only that window alone), long-press the maximize window button and click “Remove Window from Set”.
Recent apps:
— “Recent applications” shows two kinds of things: 1) multi-window sets you created (last focused window on top), and 2) solo window sets grouped by application.
— Recent applications list is scoped to windows on current desktop and excludes the window set you are currently working in.
— You can interact with Recent apps in three ways: 1) click on a set to switch to it, focusing topmost window; 2) click on any app’s icon to show up to 18 recently used window sets with any of that app’s windows; 3) drag the topmost window from any visible set into current set.
— I set it to auto-hide, I only need it when I need to add another window to the current set.
By the way, ⌘+` now works in two ways: 1) if you are in a set of multiple windows, it will switch between windows in the set (regardless of the app); 2) if you are viewing a solo window, it switches between other solo windows of the app (close to old behavior).
This all might sound complex but a couple hours in it works quite intuitively, I find.
it also allows me to hide certain apps from the switcher. like if you have a terminal, you might wanna set up a keyboard shortcut for that and forget about it.
Just wish I could turn off the screen recorder feature, as I don't trust any app that does that without exceptional reasons. (In my case, I don't care about thumbnails)
local hammerspoonHotkeys = {
F = { name='Finder' },
P = { name='1Password', alt='1Password 7' },
S = { name='Slack' },
M = { name='Music' },
W = { name='Safari' }, -- 'W' for web
...
}
for key, obj in pairs(hammerspoonHotkeys) do
trigger:bind({}, key, function() openOrHideApp(obj) end)
end
where trigger is a global hs.hotkey.modal, and openOrHideApp is a function which uses 'name' and 'alt' to switch to the app if it's not active, hides it if it's currently active, or launches it if it's not already running. It also uses hs.alert.show to quickly (just a half-second) display an overlay in the middle of screen that says "Slack" or "Hiding Slack" or "Launching Slack".Because I'm already running Hammerspoon to do things like window management (hotkeys to move and resize windows), control my Streamdeck (without needing to run any other third-party software → https://www.hammerspoon.org/docs/hs.streamdeck.html) and to act as my default browser (so I can use URLDispatcher to do all kinds of "smart" things when URLs are "opened" on my Mac → https://www.hammerspoon.org/Spoons/URLDispatcher.html), etc. it makes sense for me to keep adding functionality with Hammerspoon instead of adding more and more "one off" utilities.
I use rofi on linux to surface a dialog that allows me to execute programs, surface an X window, or change to a different tmux session. Rofi natively supports the first two, the tmux pane/session switcher being a little 10 line extension I wrote in bash.
I love rofi and the ability to do this, but there is a 'white whale' in this workflow setup that I have not been able to crack: A rofi dialog that displays and surfaces browser tabs. I have fought with chromium dev mode/flags/options on several occasions trying to plumb together something like this, but cannot for the life of me figure it out; apparently chromium does not really want you to get a list of tabs from outside the browser.
Has anyone with a similar workflow found a solution for this? I'd be willing to switch browsers, or try anything really.
I agree that'd be great. I don't have that solution for you, but I can describe the workaround I've been using in my environment.
I use dmenu to switch between i3 workspaces by name [0]. Probably 80% of my workspaces contain a single browser window with multiple tabs (i.e. I'm currently on workspace "hn" which contains one Firefox window with 17 hackernews-or-hn-adjacent tabs).
My flow:
- With the browser window in my current workspace active
- I hit CTL+L (to focus the address bar)
- I type "%python typing" (in Firefox, the % prefix makes the query fuzzy match open tab titles across all browser windows)
- Select the tab title I want from the results and hit ENTER (surfaces the tab in its window and causes that tab's window to assign itself the X11 "urgent" flag)
- Read the 2-letter workspace name that is now highlighted in red at the bottom of my screen (i3 highlighted it because it contains a window with the "urgent" flag)
- Hit SUPER+C (to open dmenu with my workspace names)
- Type the 2-letter workspace name and hit ENTER (to switch to that workspace, where the tab is surfaced and waiting for me)
I do use rofi as my application launcher, though, and you're making me curious if it's possible to exfiltrate tab titles from Firefox. It'd be pretty slick to cut back from two chords+queries to one.
0: Reddit post I made a while back describing my setup, includes a video https://old.reddit.com/r/unixporn/comments/udd0zg/i3gaps_flu...
Windows/Linux on the other hand, is all about scrolling
https://i.imgur.com/LYytae6.png
Why does this Linux/GTK desktop program looks like an iOS setting menu?
Compare to this, all settings available without scrolling: https://manytricks.com/witch/images/4/multiswitch_big.png
https://support.apple.com/en-bn/guide/mac-help/mh15217/
Again, compare this with the Gnome/GTK screenshot I shared above..
UX for vertical vs horizontal screens (desktop/laptop vs smartphone), macOS did it right, Gnome did it wrong and Windows is following Gnome's mistake
Another example: https://i.imgur.com/atT4Xkg.png
XFCE's file manager vs Gnome's one
One optimized for trackpad and mouse/KB combo, the other is looking like a smartphone UX, you constantly need to scroll, and "tap" on huge controls, not optimized for a mouse pointer, and not optimized for keyboard navigation
"But our security team can only support Mac and Windows" is a sad joke I hear too often.
A couple years ago I turned down an employment package offer that was too good to turn down and said I could be available as a contractor. A big part was I didn't wanna be forced to use a f**ing Mac. Taxes made more sense too so yeah.
With it, I only get types for the tables and views etc., so any join will be untyped if done client-side. This is still a big win in my opinion, and I much prefer it to normal ORM's.
I discussed it with the Many tricks support, and apparently it's a problem with MacOS
One of my favorite things about Witch is the huge amount of customization you could do with it. Defining multiple switchers with different behaviors and different trigger keys is a nice feature too.
It’s definitely not as powerful as Witch for windows/tabs but rcmd’s one-key approach is instant for app switching.
Witch has some ingenious features indeed: searching browser/editor/terminal tabs, lingering on an app to show its windows etc.
I wish Apple would allow this kind of functionality in App Store apps.
Myself; I’ve been using the “Windows” feature in Raycast; I highly recommend it. Extremely intuitive. I assign it to a shortcut and then use it to automatically list all the open windows I have and I just search through them to open the one I want
That way I can have many apps open, but only care about a few at a time. And keep my focus.
Annoying that I have to install ae wizzbang addition to achieve such a simple thing.