The macOS shortcuts seem like an easy thing to dismiss... but once you have bought into them, they are kind of thing that turn into a deal-breaker when trying to move away from macOS.
The dedicated Cmd key for most operations (which doesn't conflict with, say Ctrl+C in the terminal) is super-convenient. The consistency across apps is... something that you can't appreciate until you experience it. And the pervasive Emacs-like text navigation shortcuts throughout the system are productivity boosters. I like how someone else described the "right side of the keyboard" as "keyboard Siberia" -- I have not touched it for years and have not missed any of those special keys in minimalistic keyboards that don't have them.
Until I tried to actually move off of macOS last year. The different shortcuts on Windows were and still are super-painful. For months, I fought those and tried to use macOS-like shortcuts on Windows. You can see my AHK configuration here if you are interested in adopting something similar: https://jmmv.dev/2021/07/macos-ahk.html
Recently, though, and because that setup is problematic at times and because I decided to remove macOS altogether from my machine... I'm trying to retrain my hands and adapt to the non-macOS shortcuts. It's painful and I miss the macOS consistency a lot. On the plus side, however, after a few weeks of this on Windows, I booted into a FreeBSD desktop and could navigate the system pretty well :) Some more details here: https://jmmv.dev/2022/03/a-year-on-windows-shortcuts.html
Being able to map any menu item for any app in the Keyboard pref pane, Shortcuts tab by typing the exact label (case sensitive) is crazy.
You don't even have to have a third party app to snap left||right or maximise via the keyboard, as these are available (behind Option either in the menu or when hovering over the traffic lights, but once you bind them they're always there, example is my bindings):
Ctrl+Option+Return: Zoom
Ctrl+Option+Left: Move Window to Left of Screen
Ctrl+Option+Right: Move Window to Right of Screen
And for multihead users there's "Move to <display name>".
Again in Keyboard pref pane, Shortcuts tab, under Mission Control there's also Switch to Desktop 1-N keyboard shortcuts but you first have to create as many virtual desktops (a.k.a Spaces) as you want to have all the shortcuts show up. Make sure to disable "Automatically rearrange Spaces based on most recent use" under Mission Control pref pane to keep them predictable. Since the total count is spread across display heads, I create 5 on my left screen and 5 on my right one. I also disable "When switching to an application, switch to a Space with windows open for that application", otherwise clicking on a Dock icon jumps me to another Space when I just want to have the app activated. As a i3 user on Linux (which of course is in another league) this brings macOS kind of close enough in behaviour to not be too jarring for me when I jump from one to the other.
Another one of my favourites is Paste and Match Style, which is absolute genius.
Okay, I liked your idea of the window moving left and right and I tried to parse what you said and how to set it up as I haven't done shortcuts like this before.
In every app's menu bar (so like Safari or Chrome), there is the Window menu item. If you open that then press and hold the Option key on the keyboard, you'll see some alternative commands - two of them being:
Move Window to Left Side of Screen
Move Window to Right Side of Screen
You'll need those exact command names when you open Apple -> System Preferences -> Keyboard -> Shortcuts tab. Then under App Shortcuts you can add some new shortcuts, where you can assign the Ctrl+Option+Left to the command title "Move Window to Left Side of Screen"
Once added, as you've said - once they are bound they will appear in the Window menu now as well.
MacOS built-in shortcuts are cool I guess, but when it comes to positioning windows, no way should you limit yourself to left and right. My preferred tool is "Divvy", which isn't auto-tiling per se but has really granular and straightfwd "set it and forget it" config. I've got muscle memory for sizing and positioning windows across displays in horizontal and vertical halves and fullscreen. Piece o cake, no brainer.
Appreciate the option to do it without 3rd party tools, but if you do want more power in this space I find Magnet indispensable.
I have shortcuts for left/right-third and two-thirds, as well as left/right half, which I must use dozens of times a day. Oh and I use ASZX to push stuff to the 4 corners too.
> Appreciate the option to do it without 3rd party tools, but if you do want more power in this space I find Magnet indispensable.
Used Moom and Spectacle, and now using Magnet as well on personal machines (actually it was the first one I ever used back when it was called Window Magnet), but the work laptop has a policy about vetted apps you can install, and only Spectacle is allowed, which I don't like personally, so I use the macOS native stuff there.
I use Moom for this, totally customizable key combos for any size/location of window, and you can customize the global shortcut to activate it so it don’t conflict with other global key combos like for iTerm or Alfred. I sync the settings by copying around a plist checked into my dotfiles repo.
Haven’t tried magnet before, just wanted to throw another option out there.
Conversely, switching from Windows/Linux to MacOS is also very painful.
For instance, why is there no way to minimize to desktop? Having to use Command+Button to go to beginning/end of a line? A horror for coding.
My favorite pain point: @ in some regional keyboard layouts for Win/Linux is ALTGR+Q, whereas the keys with the same physical action in MacOS close the program. Fun when writing emails, or using passwords and logins.
Also, whether its due to capability or lack thereof, MacOS has the most custom UIX apps/addons/plugins of any OS. Heck, our corporate Macs come with some of those preinstalled.
Yes, of course migrating to macOS is equally painful.
But after doing that transition myself many years ago and then back to Windows now... I think that the macOS shortcuts are objectively better. The consistency across the whole system is hard to describe unless you have experienced it, and the distinction between Ctrl and Cmd is quite ergonomic.
I'm kind of sad that, in 1995, when Microsoft introduced the Win and Menu keys... these did not become _the_ keys to drive shortcuts. I think it's only until recently that extra shortcuts have been added to the Win key.
> Having to use Command+Button to go to beginning/end of a line? A horror for coding.
Cmd-arrow keys work fine for this, if you are willing to take your hands off the home row, which I am generally loathe to do.
The Mac inherited emacs keystrokes from the NeXT days, so control a (beginning of line) and control e (end of line) “just work” in any text widget. Likewise open a line, kill a line, previous or next line.. .with 40+ years of those wired into my fingertips I didn’t even notice that I was using them!
My old personal Debian derivative, Door Linux (because Windows are for bugs), used the Win key for all non-application shortcuts, save Alt-Tab because that is just too familiar though Win-Tab would also work. Some examples are Win-1 for English, Win-2 for your second language, etc. Win-[ for Volume Down and Win-] for volume up. Win-L for lock screen, Win-F2 and Win-F12 both would open Krunner.
I started configuring these shortcuts due to the powerful and plentiful shortcuts in Jetbrains IDE, which always seemed to be masked by some KDE default shortcut or another.
It actually works the other way around too - moving from Windows to Mac is a pain because of the shortcuts. It was a challenge to overcome in many aspects, but one of the most annoying things is that there is no keyboard shortcuts for navigating application menus. That still bugs me very often.
I tried to use Windows for some shitty corporate gig a few years ago, and after getting used to using things like ctrl+e ctrl+a etc for line ends and beginnings, I was also so frustrated. Hated that fucking piece of shit laptop.
Right? I _despised_ one of the laptops I got from work because it did not allow me to install AHK to leverage my macOS-like shortcuts, so I was extremely unproductive while using it. Kinda fixed now that I've been retraining myself to the PC-style shortcuts.
I used Mac and Windows alternately since 1997 until 2017 when I moved to Arch Linux with the i3wm Tiling Window Manager [0].
i3wm is easily one of the key things keeping me using Linux as my daily driver (personal + work). It's so simple yet deeply configurable. Sure, it takes a bit of time to tweak and get used to but IMO it has paid off massively. It has made using a computer just so much more of a joy. Whenever I use Mac and Windows I really miss i3wm. I spend barely any time moving Windows around - everything Just Works (with the caveat of some tweaking - but my config file is only about 100 lines of i3 declarations) and I've barely had to change it in 5 years.
I do go around shilling i3wm here and there on hn, purely just because it has provided me actual joy and I want others to know about it! I know the Apple crowd are fans of everything Just Working, and i3 comes with sensible defaults to enable that.
I used Mac since the 1980s, and been able to tile windows, stack windows, and overlap windows. The Mac would remember size and placement. IIRC, the Mac II could support windows spanning across up to nine monitors of various resolutions, shapes, and bit-depths. MPW had window splitting which was annoying. The Finder has/had Zoom which would resize the window to the smallest size with no scroll bars. I've wished there was an easy way to implement Zoom in other applications.
With small screen phones, the screen is usually filled with only one app/mode at a time. I see a lot of the same use on Windows where there is only one maximized app/mode at a time, even though one can tile, stack and overlap multiple windows. Window's Multiple Document Interface (MDI) has somewhat morphed into "Tabs" which still present only one tab/mode at a time. No modes please. I am looking at the screenshots and videos for i3 and see a lot of scrollbars and wasted screen space. I don't see the advantage of i3 over Mac or Windows, or XFCE that I use in Linux. What am I missing? Maybe I'm good with what I've got.
It's easy to come across lots of overly done up i3 setups, often using "i3-gaps" which is a modified (fork, I think) of i3 which introduces gaps between all windows and the screen edge in the name of prettiness. This is common in the /r/UnixPorn community and frankly, I would never use it. Perhaps you're seeing a small subset of potential i3 setups. On scrollbars, I don't feel like I see any more scrollbars than in Mac or Windows. Probably less?
The main benefit I see in i3wm compared to any other window managers in other OSes is actually the use of space, my windows are literally edge to edge. Apps don't have title bars unless you've got your windows stacked, and you can customise exactly how many pixels the title bars are. You can customise the colours of active, hovered and inactive window titles. You can add borders to windows, of any size and colour, you can have none.
I also love the multi desktop feature which I use prolifically. I have 10 desktops named 1-10 but you can call them anything you want (emojis work too, thanks unicode). Certain apps always open in certain windows so I always know where everything is. This is all declared in a config file so it's never a guessing game - it just works. Also, I have 2 monitors and multi-monitor support for window management works a dream.
It's not just the tiling - moving windows around is so easy, I can press $mod+Shift+5 to move a window to desktop 5, or $mod+Shift+Left to move it to the left, or even $mod+Shift+Alt+Left to move it to the left monitor. These are second nature to me now.
Finally... the speed. Wow, switching between desktops, windows, monitors just happens incredibly fast. When I use a Mac or Windows I just can't stand all the animation and slowness. M1 macs included. This is in part helped by the picom compositor, with animation time reduced to being nearly negligible whilst being enough to "look nice".
Those explanations make more sense. This feels like it is more about personal preference. I have three monitors, one of them is 4K.
Probably the same problem
Scroll bars are due to the layout of content within the windows. Unfortunately, I need to use very poorly laid out apps/windows that need to span across the monitors! The design where there is a tree on the left, but one can only select one node/mode at a time, and a usually minuscule amount of content on the right appears within an enormous pane of wasted space just grates on me. There are betters ways to layout content minimally, but like the Zoom feature it is a lot of effort.
Screen real estate
Window snapping edges down to the pixel (0 pixel gap.) Lovely. I can't stand window snapping and turn it off completely. I want title bars. I am not fussy down to the pixel where a window lands when I move or resize it. Since I depend on overlapping windows, I want to see that hidden window between my irregularly spaced gaps between windows.
Keyboard-driven workflow
My workflow is mouse-driven. I prefer only a few well-known short-cut keys as the author described in the article. My left hand hovers over the Command keys, and my right hand is on the mouse. In Terminal, I have Autokey remap all the legacy ctrl keys — I can Copy Ctrl+C and Paste Ctrl+V in the Terminal consistent with other apps I use.
setxkbmap -option "ctrl:swap_lalt_lctl"
Flexibility
config files! I would much prefer if, like decades ago, the system would automatically save and restore window placement.
Workspaces
By "the multi desktop feature" you mean Workspaces. I turn Workspaces off completely.
Speed is relative. I don't have an M1 mac. I still have some working PowerPC Macs and the speed is fine. On the i7 Dell, I turn off animations and compositors.
It is extremely hard to go back to anything else after i3wm, even when I do wish I could have some more things taken care of for me in a full fledged DE -- mostly stuff like touchpad configuration, polkit, theming. Longing for a central settings manager like KDE/Gnome, but still not worth it to give up the i3 world.
And yes, I know you can use KDE or Gnome as a DE to i3's WM, but the things you have to do to get it to work are very brittle and it feels very hacky, makes it not worth it.
Haven't had enough money for a Mac in the past decade, but this article makes a good case that I could at least tolerate it coming from i3!
I think I'll be getting a Macbook for work soon so did investigate TWMs for mac and Amethyst[0] comes up a fair amount. It will for sure be the first thing I try.
For what it’s worth, I’ve been using yabai on macOS for a while now and I’ve quite enjoyed it. It feels a lot more like configuring a Linux twm then amethyst. I did find amethyst to be more stable, Yabai still has some annoying bugs on apple silicon but the extra features make it worth it in my books.
This depends a lot on your workflow. I really like some of the features offered by yabai that depend on disabling SIP and installing the Scripting Addition. You can totally use Yabai without this though.
The biggest issue I have is that by disabling SIP, you can't use Apple Pay or use iOS apps on MacOS. The only 2 apps I wanted to use were Overcast and Apolo, so it's not a huge loss, but I'm still disappointed.
The second issue is that the Scripting Additions were written for x86 and need to be completely rewritten for ARM (not totally sure about this, I don't know much about low level OS programming). This also means that the scripting additions behave a little erratically. The additions also need to be manually updated for every version of MacOS, so if a new version of MacOS comes out with cool new features, you need to wait for a yabai update before you can update your OS otherwise you end up breaking your config.
Right now I also have a bug that means that I can't grant Yabai accessibility permissions so I just have it disabled while I wait for a fix.
All in all, you're running a window manager on top of a window manager, so you're obviously going to end up with some weird behavior. Personally, I've put in several months of effort to making these 2 window managers play nice together and also _feel_ more like my linux install with features like remapping keys with karabiner, launching terminal apps with alfred, having a UI that shows your window manager shortcuts, and a panel that queries info from yabai. Is it worth it? If my job depended on it I would probably just use macOS as default, but since this is all on my personal device and I enjoy tinkering, I think it's worth it.
I am a Sway (i3 wayland) user and was forced into a MacBook for work. You're going to find Amethyst (and MacOS in general) deeply disappointing. It tries its best but MacOS is a very toxic place for enabling power users.
I love i3, though I get a bit jealous when I see a shiny DE like GNOME, since I haven't added any beauty to it, other than making the highlighted window more obvious.
I'm definitely not good at using it effectively: I usual end up with a stack of about 10 windows in one frame, but turning them to a tab frame would prevent me moving sideways to other frames (I often have them side by side).
Probably I could make a command to do it, or use marks properly.
Also not being able to maximise a window but keep the i3bar showing is super annoying.
I'm using another tiling WM, "The Awesome WM", since forever. I'd really like to see a comparison of i3wm vs Awesome. My setup is working so great for me that I cannot see myself switching to i3wm, unless it's really that much better than Awesome.
But I'm curious: you're not the only one to shill i3wm: obviously people using it love it.
I like that the author points out a number of great default shortcuts in macOS, but I find it hard to beat the combination of yabai[1] and skhd[2] for the best keyboard-driven workflow. In the absence of these, I would be more inclined to try either Hammerspoon or Karabiner-Elements. I also find Phoenix[3] intriguing, but it's probably too much work to get it to where I'd want it for daily use.
If this seems like too much configuration overhead for anybody else, check out amethyst[0]. It's UI driven and configured similarly to xmonad- which is more opinionated than some other tiling WMs
I liked i3 when I was a linux user, but since I've switched to Mac I've tried to use tools with UIs and opinionated configuration
I did not mention Amethyst despite liking what it does because it is what I'd call "begrudgingly configurable." It will let you configure it, but it would rather you didn't.
The trade-off is that yabai is instead annoyingly configurable, and its set of sane defaults is just okay. The only way I've found to mitigate this is by browsing yabairc/skhdrc files on github. I steal whatever looks good, and I keep it if it works well for me.
that can be a pro or a con depending on the way you look at things!
For linux systems, I like fine grained configuration. For Mac though- I don't like it. I own so little of my system on a Mac that I don't want to maintain custom tooling, given that I have little control over the systems these tools interact with.
I found yabai to be a little buggy when I moved over to an M1 Mac from an Intel one. Haven't tried it for a few months now so maybe it's time to hop back in. It's an amazing piece of software if you're used to some of the TWMs available on Linux, it made the transition into MacOS much more manageable.
There was a recent major release that added in M1 (and Monterey) support. A few of us have been using it since the beta a few months back. It works at least as well as it did previously, and it feels much snappier now.
I can't disable SIP on my work laptop which means I'm forced to "sit through" the macOS animations as I switch between desktops. Feel like I've wasted hours of my life watching desktops fade-in/-out.
"Well, let's say you can shave 10 seconds off of the boot time. Multiply that by five million users and thats 50 million seconds, every single day. Over a year, that's probably dozens of lifetimes. So if you make it boot ten seconds faster, you've saved a dozen lives. That's really worth it, don't you think?"
What version of macOS are you running? From the instructions it seems you can re-enable it after with no negative effect on High Sierra, though I assume you’d still lose those features on newer versions.
I now run it with SIP enabled on my work machine, not by choice, and I didn't find it made a huge difference. I think the only major thing I lost is easy app movement across spaces, but that is mitigated somewhat by having pre-defined spaces for things I use a lot, such as browser, editor, mail, calendar.
Creating a Hyper Key (i.e., remapping capslock to become an additional modifier key) is a game changer! I use Capslock [1] with Karabiner Elements on macOS.
If you're not into installing third-party tools, you can create your own hyper key by using a combination of the Shift, Control, Option, and Command keys† (Shift, Control, Meta, Super).
Because macOS uses Control+Option to activate the on-screen magnifying glass, I use Shift+Option+Command, which works well for my hand size.
I haven't found any macOS or third-party programs that use Shift+Option+Command for shortcuts yet, so there haven't been any conflicts.
Once you get your personal shortcuts set up in Apple → System Preferences → Keyboard → Shortcuts, it's really a major productivity boost.
†I think you can use Function now, too, since Preview uses it, but haven't tried it yet.
I use Karabiner Elements to make CapsLock either Escape (when tapped) or Control (when held / pressed with another key) - works great with a Kinesis Advantage:
I get this horrible bug with Karabiner where it just slams one of my CPU cores... I was actually planning to replace it because of that.
My current issue is that I can't have my macbook's keyboard use the system control keys while my external uses F keys. Like if I don't have the 'use f keys' option on in prefs, my external F1 and F2 become brightness keys...
That makes some logical sense to me though. If your keyboard layout is set up for a Apple keyboard where the function keys are actually OS specific keys, then it shouldn't matter if your keyboard has a F[1-9]+ printed on them or Apple symbols. The key will just do what it's mapped to do.
It's like expecting a DVORAK keyboard to work when the computer is still in QWERTY mode. There's just more matching overlap between keyboards with function keys vs Apple symbols.
System preferences => Keyboard prefs => Modifier keys
You can just remap caps lock to escape without getting fancy. I used to do the hyperkey stuff but it messes with my muscle memory when I'm not using my computer.
There's something to be said for keeping things as simple and close to default as possible.
I use Karabiner to move my symbols to my home row and arrow keys just above. When I'm programming, that means I rarely need to move my fingers off the home row.
Yes, this is a fantastic feature of MacOS, and one that many people do not appreciate enough. It's so incredibly convenient to be able to use the same keys in every entry field.
Unfortunately, more and more apps try to do something "smart" when you click in a text field, like auto-selecting the entire text (WHY WOULD YOU EVER DO THAT?).
And some apps just don't respect the platform conventions and as a result feel incredibly clunky and annoying to use (Autodesk Fusion 360).
If you are on Windows, look into AutoHotkeys. There are various emacs scripts for this floating about. I've found that it gives me a better experience than I had on Mac.
They don't work everywhere though, making them basically useless. For example ctrl+a and ctrl+e don't work in the Safari address bar or the text box I'm typing this comment in, or TextEdit, and many other native text widgets.
First and foremost, they should work everywhere, especially the places you describe, almost every native widget (even in third party native apps) should support the readline bindings.
If, however, you desire more control, you can use Karabiner-Elements [0] and one of the many [1] community made emacs-like configurations to have this behaviour system wide, these also add many many more keybinds (such as C-w to delete last word) to further emacsify your workflow!
I use these bindings constantly every minute of every day. I know exactly which apps break it because it annoys the shit out of me, and those aren't the ones.
You must have broken a configuration or have some other problem. I'm writing this in safari and can use these bindings in this text box and the address bar right now.
They work for me too on latest Safari, FF, and Chrome, and pretty much everywhere else. I'd actually flip the critique upside down: ctrl+aedfb are so useful precisely because they are deeply embedded in the lower layers of the OSX text system and therefore work almost everywhere.
Hm you're right, I thought about it after these replies and it seems they don't work because I'm using a nonstandard keyboard layout which seems to break them somehow. I'll have to work out how to fix that. Thanks.
For the places it doesn't work well, you can usually guess the reason. TextEdit and Safari respond to Command as the primary modifier, the same as any other Cocoa application.
(FWIW, I just tried this in TextEdit's plaintext mode on Big Sur and it does indeed work - more than likely due to the UNIX heritage, the emacs bindings work here too)
It is well known that Command-L will focus the address bar and select any text that might be there, so overriding it is generally a bad idea if you can avoid it.
The same goes for 3rd parties - my Dad is a recent convert to macOS and is frequently stumped when Control-A doesn't select text in Microsoft Word - I explained this to him, but in the moment he sometimes forgets.
I am well aware of the shortcuts and just recreated the effect I described in TextEdit...
1. Type a sentence in TextEdit
2. Ctrl-A will go to the beginning of the line
3. Ctrl-E moves the cursor to the end
It's a native app, and will dutifully select all text with Command-A - but the other keys still do something. A paradox, to be sure.
I do blame Microsoft for the confusion I described, but I'm not sure there's a way they can solve it among their Mac customers without doing as you mentioned and making someone else's life difficult.
Ctrl+a / ctrl+e should be home/end everywhere on mac, and they generally are, which is to say they work everywhere.
If a mac app has mapped ctrl+a to select-all, this should not
be called "working." It is an abomination and should be purged from the universe hastily and with extreme prejudice before the cancer spreads.
I understand and sympathize with the difficulty of moving between ctrl/cmd as super keys, but there are a hundred shortcuts with the same problem and forcing mac to adopt the poor keyboard choices of windows is not the answer.
If you are willing to leave behind rich text/word processing entirely (as I mostly have), it's not really an issue. It's everyone else who is so married to this idea which is a much harder nut to crack.
The proliferation of many smaller writing apps (iAWriter, Byword, 1Writer, and on and on) on macOS means that many of these people probably could leave Word if they tried or switch to a plaintext app which can give you a styled preview (ahem, BBEdit) and they would be fine. Almost all of the features are there.
It's just the comfort of Word as a known thing and the idea of how people use computers to create text which prevents them from taking that leap of faith.
My favorite shortcut is to restore minimized windows by pressing Command-Tab to display the application switcher, selecting the minimized app's icon, holding down Option (⌥), and then letting go of the Command key. The minimized window will be restored to its previous position and dimensions.
When the "Minimize into the Application icon" feature appeared back in Snow Leopard, I was very much into this kind of thing. Yet over the years since, I've moved to mostly using Cmd-H to hide.
I tried the method you described and it seems to only bring back the frontmost window DragThing/Front and Center style.[1]
Cmd-H seems very underused to me, even by Mac power users. The reason might be that many recent Mac users are converts from Windows or Linux, where the concept of hiding an app doesn't exist. I love and extensively use this feature since I started using Macs about 25+ years ago. It's so much more convenient than minimizing an app's window(s) into the dock, and it's so nicely complemented by the app switcher.
Minimizing to the Dock felt similar to me, coming from XP, and didn't take up extra space in the Dock, which was visually pleasing. These days, my Dock is basically only key apps, 2 printer aliases and a few folders I access regularly.
A .weblocation might from time to time, but these are fairly infrequent.
In case you have multiple minimized windows, another seemingly little known trick is pressing 1 while in the application switcher which will show all of the windows for the highlighted application.
As someone who grew up with Windows XP, the first thing I do when I get a new Macbook is install Hyperswitch [1] which makes Cmd+Tab cycle through all windows of all applications of the current desktop.
The regular OSX workflow seems to be only good for a workflow that includes a single maximised Chrome window with a million tabs open.
It’s been quite the opposite for me. I find that the “windows” model of alt-tab quickly breaks down — the number of windows the switcher can comfortably handle is reached and exceeded quite quickly, which then drives me to try to do everything in a couple of maximized windows. The logical separation of applications and windows sidesteps this problem nicely.
I also grew up on WinXP, but I prefer how macOS separates application & window switching. I'd like to see per-tab support added in the mix somehow, but that could be tricky. Safari supports a gesture (pinch inwards) and a keyboard shortcut (Command-Shift-\) to get a zoomed-out view of all tabs in a window, but a window with a bunch of tabs is hard to scan like that.
MacOS is application-oriented, and it is great. I can't stand the precise behaviour you like when I am forced to use a Windows computer at work.
My windows currently open: ~50 iTerm2 (with loads of tabs and tmux sessions), 5 TextMate (quite a lot of tabs as well), 6 Safari (ditto), 1 Messages, 1 Mail, 1 Music. Cycling through the 50-odd windows to swap to mail would be insane.
The use case you mention is precisely where application orientation is useless, I am not sure why you bring that up.
I don't see it that way. As far as I'm aware there's no way to switch to one of your iTerm screens using the keyboard without raising all 50 up to the foreground.
In most cases I have several windows open but I want to cycle between 2 or 3. I find Windows-like window switching much better, but I guess your mileage may vary.
There's the application windows switcher for that (it used to be called application Exposé; not sure it has a name these days). Once you are in an application, just command-down to see its windows in a much better way than what you get with alt-tab on Windows.
Switching between 2 windows works fin with command-tab, because it brings only the window that was in the foreground, not all the application's window. So, for example, when switching repeatedly between the same windows in TextMate and iTerm, a single command-tab always brings the other window to the front. Another of my common use cases is looking for papers in Safari, reading them in a bibliography manager, and writing manuscripts in a TeX editor. Again, everything is as smooth as it could be.
It is actually a bit more cumbersome when you have to switch e.g. between 2 windows in one application and a window in another one. Overall, these drawbacks make much more sense to me than Windows' alt-tab's, and the system fits my workflows much better.
You can also switch between applications by using tab whilst in this mode (though it is not too convenient because there is little feedback about which application os selected).
It's just a matter of preference. I prefer to think in terms of document rather than application. I don't care whether my previous document is opened in Word, VSCode, Text Edit, Notes or whatever, but I want to go back to it.
I completely agree on keyboard nav, but when I'm using my laptop, even at my desk, I position it so I can reach and do gestures on the trackpad, sometimes it's just easier for me, and I find myself missing them on my desktop machine that doesn't have a trackpad.
I had a similar setup first in Karabiner, then in BetterTouchTool for easier configurability. But I needed the system to be smarter about this and allow me to assign keys on a whim, not have to change a config file.
rcmd automatically detects your most used apps from those already running and assigns keys to them.
It uses the Right Command key as the trigger, but it’s completely configurable to any other trigger like the mentioned Control+Shift in the post.
It also allows you to hide/show the app fast (I do that a lot with the kitty terminal) or cycle between apps with the same first letter.
> Command-Backtick: cycle current application’s windows
For the Brits among us, or perhaps anyone with a non-US keyboard layout, I recall when I still had my Mac, this wasn't mapped properly. It was the button on the right of the left shift. This was quite strenuous when I had to switch within the same application. I can't remember if I just re-mapped the shortcut or what it was, but I suggest you look into having that mapped to the button right above Tab (below ESC). It makes it a lot easier.
I find the split between Cmd-backtick (cycle windows of an application) and Cmd-tab (cycle front window of all applications...which isn't all windows) super annoying, there is an app for that:
Oh wow this is great! It's been years since I switched to Mac from Windows, but I really can't get used to this even now. The split seems so illogical and in almost all cases I need exactly what alt+tab is on Windows.
If anyone is just learning about cmd-backtick, you also need to add cmd-shift-backtick to your muscle memory.
Just like cmd-shift-tab, it’ll cycle “backwards”, but with windows I find it useful much more often than apps, since flipping between two windows out of N is pretty common for me.
Speaking of that annoying split, I have a base 2020 Intel MacBook Air and command-tab takes 200 ms to display, making it utterly unpleasant. Mind-blowing for a €1200 computer.
Are all Intel MacBook Airs affected by this? Only those with baseline processors?
Seems to me the intention is that if you quickly press command-tab to switch back to your previous window, you don't get the window popping up in front of that window you've brought to the front.
This is nice, as most of the time I'm command tabbing between two windows, so I quickly press it and no window pops up on my screen. If I need to press command-tab more than once, it appears and I'm able to select the window I'd like. Seems like decent UX to me
I don’t think that’s it, no one told me about that when I complained about that delay on the Mac Power Users forums, and I can’t find anything about it (such as removing that delay) online right now.
Which Mac(s) are you experiencing that on, and since which OS version?
I'm experience what you described with a 200ms lag, and didn't notice it until you bring it up. On a 2020 Intel mac. After reflection, for the way I'm using cmd-tab 90% of the tab I prefer this slight delay as it doesn't block the screen when i'm switching between my browser/code editor, and when I need to press cmd-tab more than once, it's been 200ms and I'm able to press tab until I reach my desired app and I don't really notice that there was a delay
GNOME does this too. Their reasoning was exactly what your parent commenter said. I can't find a link now. Not that it's helpful to you, but there is a GNOME extension that does away with the 200ms delay.
I use `option-left arrow` and `option-right arrow` all the time to travel to the next word, and `command-left arrow` and `command-right arrow` goes to the beginning and end of a line.
Combine any of these with the shift key and you can select everything in between.
It always bugged me that this didn't work in the terminal, and it's why I was so jazzed when I found out about Warp[1] (not affiliated). Aside from the other handy enhanced terminal features you'd expect from a replacement to the mac bundled one, the biggest win for me is it treats text input like a normal text input field, so all the normal shortcuts work.
control-left / control-right should get you the same behavior _inside_ of words in applications like Xcode, which often deal with CamelCaseCompoundSymbols.
The main feature I want from a window manager is the ability to save my OSX workspace (applications open and tiled per Desktop, per monitor) and reset it to that state instantly. I haven't found anything that does this yet. Does Karabiner, yabai, or any of the tools mentioned here do this?
I'll spend significant time setting up my window environment just how I want it (grouping chats on Desktop 1, localhost browsers on Desktop 2, terminals on Desktop 3, etc.) Then after unplugging my Macbook, my workspace gets all messed up and I have to re-organize everything! I'm surprised this isn't a more commonly discussed issue.
Every morning I hit Command+Option+W (W for work), which opens Slack, Teams, Email, Dashboards, VPN, and terminals with ssh connections, plus all windows open where I want them automatically. Then when I’m done for the day I hit Command+Option+Shift+W and all my work stuff magically disappears. It’s straightforward to set up with good documentation, but you must architect your own system for automating tasks like this. Hammerspoon can be pretty powerful for MacOS quality of life automation.
I'm sure this is possible with yabai, but I still haven't yet migrated from slate [1]. I have multiple custom layouts similar to what you've mentioned and can trigger them with hotkeys or when specific display combinations are detected.
I've been using Stay[0] for the past year and it works well. It can save and restore window and application configurations for different monitor layouts, and automatically repositions everything when you attach or detach displays.
I'm a big fan of Rectangle Pro. I just got a new MacBook and it only felt like it was really "my machine" after installing karabiner + rectangle. Thanks for making it!
Hi Ryan! I’ve been using Rectangle since Spectacle stopped being supported. I didn’t know about Pro. You should post demo videos of the various features to make it easier for prospective users to see why it’s so awesome.
Thanks for the feedback! This is definitely in the works, I just have to force myself to stop getting excited about coding new features and ideas and finally get back into video mode :)
One of my biggest pain points with macOS, which I still haven't adjusted to after over 15 years, is the inconsistent behavior of Home and End. This "just worked" in Windows, with the same behavior in every application. On macOS it's per application which makes it so unpredictable I hesitate to even try/use it.
Ha, my biggest minor gripe with windows is having to use Home/End rather than ctrl+a and ctrl+e. Not only are ctrl+ae universal on MacOS, they are right beneath your fingers, unlike Home/End, which are banished off to keyboard Siberia for some reason.
I wish my macOS running device had Home/End buttons.
I've tried on multiple occassions to remap keys to use as those are favorites in NLE workflows. My brain just has a harder time remapping the keys than the OS.
What was nice about Windows was Ctrl+Home/End to go to the beginning/end of the file. On Mac, different apps use different key combos for this. Sometimes Cmd+Up/Down works, other programs that is PageUp/Down.
(or maybe it is just pycharm that is goofy, it trips me up a lot).
I find native window switching extremely painful and cumbersome on Mac. Very highly recommend Alt Tab for fixing these issues https://alt-tab-macos.netlify.app
I basically can't use a Mac in any reasonable capacity without this now
Paletro works wonders in this space. It’s like Alfred, but inside your application. (So I use my Alfred shortcut, with a Shift modifier.)
What’s great is the discoverability this affords. And because it shows the native shortcut right there, you can learn that if you want. Or if it’s something you don’t use so often, don’t bother.
If you're using Karabiner, I HIGHLY recommend putting the time in to learn how to use Goku[1]. I initially found it when trying to find an easier way to express the extremely verbose Karabiner config json but was turned off by the unfamiliar clojure-like EDN data format and the somewhat lacking documentation. A couple years later I had the right combination of free time and frustration from managing my Karabiner config that I actually took the time to setup Goku. I've found it not only drastically simplified the setup I already had, but made it so much easier to extend it and really take advantage of Karabiner.
It mostly provides more convenient syntax for what you do in Karabiner, but it also provides new abstractions that it converts into the appropriate rules. "simlayers" for example are keyboard layers entered by pressing the trigger key and quickly pressing a layer key within a short timeout window. I've used this to set shortcuts like w+e to open IntelliJ, w+r to open chrome, s+d to open Alfred's clipboard history, etc.. Caveat being that there's a slight delay on your simlayer trigger keys entering their actual character since the layer timeout must be hit before the default keydown behavior of inserting a character is used. Also it's common to occasionally press a second key before releasing a first key while just typing naturally, so best to avoid using keys that you often roll into others while typing as trigger keys..
I've tried Karabiner Elements for quite some time. Because I came from Windows and wanted to swap some keys around (command/control and some shortcuts).
It seems to me that it made input lag sometimes worse and also just ate input more often that when I uninstalled it. I mean this piece of shit i9 2019 MBP does that sometimes anyway when under high load, but happens more often with Karabiner installed.
I have been using Karabiner Elements for nearly a decade and have never noticed this. To me, it's indispensable (I remap Caps Lock to both CTRL and ESC depending on whether I hold or tap) and it's the very first thing I install when I get a new Mac.
There were some hiccups around the time of 10.12, but the developer resolved all the ones that I saw.
I have control and command swapped in system preferences and the only other key combo I use is the CMD+Tab and Ctrl+Tab[1]. I have no issues this way. I will say system preferences is where I put all other key combos linked to AppleScripts.
Hold $KEY in text fields to get pop-up menu of given character with diacritic markings
No matter how long I've been using MacOS, it seems there's always something new to learn that will surprise me. Something like 13 years exclusively using Macs for my desktop OS and I've just learned this. Granted I don't speak or write any foreign languages so I wouldn't have much use for diacritics, but it's still cool.
Shortcuts I constantly use:
- Command-Backtick
- Command-Tab (seems obvious, but some people don't work this way...)
- Command+Shift+4 to take screenshots using the built in functionality, or the other similar shortcuts for screenshot-ing a screen, portion of a screen, or a window to the clipboard.
- Shortcuts for sending window to left half / right half of the screen, or switching screens, using Rectangle.
- Command-Opt-\ + TouchID for 1Password deserves a mention for sure.
Home/End issue is the most frustrating thing ever in MacOS for me (along with cmd+tab unreachable windows if they are minimized already).
The solution I recently started to use is this [1]. Seems ok so far (except iTerm ssh to a FreeBSD server, though I'm not sure maybe it is iTerm's "feature")
Not the solution you're looking for, but the consistent shortcut for end of line and beginning of line that works across macOS in every input field or text area or editor is the same as in Emacs and conveniently doesn't require you to lift your hand from where is:
- Control-A: Beginning of line
- Control-E: End of line
In addition, there's also Control-N, Next line, Control-P, Previous line. Control F, Next Character and Control B previous Character
I've almost entirely purged non-defaults from my workflow, but I still go for CapsLock->Ctrl.
On mac, it's a menu in preferences. On windows, I have to download a program. On linux, there are 30 different programs and config files to do it and the linux community seems to be perpetually at war with them, with 25 of them silently or loudly broken at any given moment. The only one that works reliably, setxkbmap, is temporary.
> On linux, there are 30 different programs and config files to do it and the linux community seems to be perpetually at war with them, with 25 of them silently or loudly broken at any given moment. The only one that works reliably, setxkbmap, is temporary.
I got used to this on Mac and was kinda shocked how difficult it was to make it work everywhere on Linux, when I last tried it about 18 months ago. I spent (well, wasted) a lot of time digging through suggestions for how to do it, half of which didn't work and the rest of which only worked some places. On a new Mac it takes maybe 20 seconds to configure, simply using the GUI, and that's it.
This is part of the "space cadet" layout which I also use. The shift keys only function as parentheses when you tap the key (i.e. press and release without tapping another key in the meantime). It means that the character is typed when you physically lift the key instead of pressing it but worth it.
> Hold $KEY in text fields to get pop-up menu of given character with diacritic markings
Well this explains the odd behaviour of vim keybindings on VSCode on a Mac. I hold `l` to move right and instead I just see a strange pipe-ish character pop up.
See, you're up on that pedastal looking down at all of us plebes that are becoming interested in what others do to make their day-to-day task more effecient. Maybe some of us weren't exactly thinking about that specific task until someone wrote about it, another found it and shared it, now here we are discussing.
That's why it's on the front page because enough other people thought it was interesting enough to promote. But I think you're smart enough to realize that, and are just grandstanding as a humble-brag "I already know this" kind of thing.
The real question is who are you to think that something not intresting to you shouldn't be interesting to others.
I did not see his comment as looking down on anyone. I too am surprised that so many people here do not manage their windows with Keyboard Maestro.
Anyone with a desktop Mac and some kind of programming skill needs Keyboard Maestro. It not only slings windows around but automates many chores. It also lets you get around most user interface annoyances that turn up in every program. My advice is to get it and learn it well if you spend much time on a Mac.
I have an ancient Genovation CP48 ControlPad attached to my keyboard. It has 48 function keys and every one is assigned. Most of the keys do double or triple duty. I positively hate it when I have to use anyone else's Mac for any prolonged period.
Please do write such a post. I am in the middle of revamping my keyboard setup(want to unify qmk, xremap, sway and the Mac) and I am looking for ideas.
If you're not signed into an iCloud account, do these get randomly reset half a dozen a day like the text shortcuts do?
I have to use a MacBook for work, but am forbidden from creating or logging into an iCloud account on it, and this is absolutely infuriating.
I found a way to copy all the shortcuts into a file so at least I don't have to retype them every time, but at least six times a day, I have to delete the stupid "omw: on my way!" shortcut and drag my own file back into the window.
Several hours searching for a solution hasn't solved it. This appears to be intentional on Apple's part to force iCloud sign-in.
That is infuriating. On my work Mac I’m only signed into the App Store (not iCloud) and have not had this problem. Maybe it’s the corporate malware your company installs that’s doing it?
I find the Mac version creates less strain. It does harm muscle memory, though, if you have to switch between the two often.
On my Mac layout I basically never touch lower-left ctrl, just cmd (which is faster and requires less movement and stretching to strike than ctrl does) and CAPS LOCK, which I've mapped to ctrl. Pressing bottom-left-ctrl makes me rotate my wrist and stretch my pinkie down—I don't have RSI in my left wrist, but I can feel the tension that motion creates. Cmd, I just shift my thumb over an inch or so, no wrist rotation, everything stays more relaxed. CAPS LOCK, pinkie just moves a few mm left, other fingers can stay where they are unless needed for something else.
I had a bunch of Karabiner shortcuts setup when I primarily drove a Mac. Since start of Covid I started on Windows fulltime when I upgraded my devices. At first the lack of emacs-like controls left me a little sad. (Have used emacs since 1998).
I soon discovered AutoHotkey and the Emacs configuration by John Cooper. It is pretty awesome. I have more consistency than I had on Mac. I also have emacs(like) bindings on Excel, Davinci Resolve, Chrome, and more.
Lest you think I'm weird for liking emacs, I also use an ErgoDox keyboard, so I probably am.
He mentions Copy 'Em [1] as a clipboard manager. Does anyone else use this? I've used Clipmenu for years, but it doesn't appear to have been updated in many years and is now a bit buggy.
Has anyone else used CE, or other clipboard managers?
I think the best macOS clipboard manager is the one that is built into Alfred. The one in Raycast is very similar and also good. I would recommend installing Alfred just for that. You don't even have to use the main Alfred window. It's very lightweight, so not a problem. The same goes for the Music controller, actually.
I also loved Copied because of it's sync and great iOS version but it's unsupported so wouldn't really recommend it.
I wrote about Mac clipboard managers[1] a while ago. My answer then: Copied. Since it seems to be dead, my answer now: bite the bullet and pay for Paste.
You bet! I don't remember why it wasn't on my radar at the time. Maybe I just didn't find it in my searches? I might have seen it, didn't perceive much active development (eg to support newer OSes), and moved on to the next option, but I don't specifically remember that.
Regardless, I'd review it if I were writing that post today. Note, though, that the mobile app is $9/yr. Cross-device sync was one of my personal requirements, so Copy 'Em would only be $1/yr cheaper than Paste.
If you're just looking for faster link navigation, check out the appropriate-named Link Hints [0], which is very lightweight and makes me feel like a superhero all day long.
Is there a macOS equivalent to Alt+Click/drag in X?
You might get more responses if you tell people what behavior you expect from Alt+Click/drag.
If you're trying to copy something (often a file, but many other things), you can Option+Click+drag. If you want to click on something, then drag it after releasing the click, that's available in the Accessibility settings.
Looks like my question was answered in a sibling thread.
The behavior of Alt+Click/drag is to allow you to click on any part of a window and move the window. It is extremely useful not just from time-savings (no need to click on the top bar to reposition a window), but also to be able to grab windows that are positioned off-screen or beneath another window and move it with a single operation.
I use a full size mac keyboard so I mapped the right-most function key (F19) to Mute/Unmute in Zoom. Global shortcut, regardless of what app is in the foreground and super convenient to locate by touch. Recently, I added the key right next to it (F18) to toggle video.
If you think this is good interface design I suggest you watch someone use a real system. Something like an old bloomberg terminal or those DOS stock keeping systems still kicking around some travel agents / department stores.
I'll take ugly and smart over the reverse any day.
Here's a training video (https://www.youtube.com/watch?v=enJBk8TKV9Q) for creating CICS Screens, which are the type of thing I think the poster was referencing. My first job was writing CICS CoBOL. There was a steep learning curve, like vim, but the users would remember the transaction/workflow codes, usually 4 character abbreviations, which would be keyed somewhere on the screen, the map/form would open and they user would tab and cursor until they press some form of submit, then then next screen in the workflow would open. The users would learn which codes took them to the screen they needed and became very fast. These were all text screens, normally 3270, with no mouse. And most often had excellent mechanical keyboards.
The dedicated Cmd key for most operations (which doesn't conflict with, say Ctrl+C in the terminal) is super-convenient. The consistency across apps is... something that you can't appreciate until you experience it. And the pervasive Emacs-like text navigation shortcuts throughout the system are productivity boosters. I like how someone else described the "right side of the keyboard" as "keyboard Siberia" -- I have not touched it for years and have not missed any of those special keys in minimalistic keyboards that don't have them.
Until I tried to actually move off of macOS last year. The different shortcuts on Windows were and still are super-painful. For months, I fought those and tried to use macOS-like shortcuts on Windows. You can see my AHK configuration here if you are interested in adopting something similar: https://jmmv.dev/2021/07/macos-ahk.html
Recently, though, and because that setup is problematic at times and because I decided to remove macOS altogether from my machine... I'm trying to retrain my hands and adapt to the non-macOS shortcuts. It's painful and I miss the macOS consistency a lot. On the plus side, however, after a few weeks of this on Windows, I booted into a FreeBSD desktop and could navigate the system pretty well :) Some more details here: https://jmmv.dev/2022/03/a-year-on-windows-shortcuts.html