I use shortcuts heavily, but Win+number is something I never get used to despite knowing them. They way they work when you have multiple X programs opened (say, editors, explorers..) is kinda weird and I ended up just using alt+tab, which is much easier to press anyway.
Microsoft's PowerToys has a shortcut guide that might help get you over that last hurdle towards using win+number effectively. Might want to give it a look.
It's superb for toggling pinned programs moment-to-moment, without needing to pay attention to UIs.
On smaller-than-regular keyboards, such as 60% size, function keys already require one extra key held to activate (Fn+<number>, an upside is being closer to reach while on the home row), so they're already both equivalent in keypresses for such users.
It's ok, but unfortunately it doesn't seem to register with "multiples of the same application" open, i.e. if I have Firefox at Win-2 then it's always the first window that was opened (which is fine most of the time) but if I need the other Firefox window then it's alt-tabbing again. No, tabs don't help here, I don't have 50 Firefox windows open, but often a second.
Ha, thanks. Was on Linux when I wrote that so couldn't try it. Also Win+Alt+Number opens a new window of that type. Weird hand twisting aside, this could be useful :)
I think most Linux systems have this too. GNOME definitely, for the applications pinned in the overview, and I would be very surprised if KDE didn't do this too.
Another way of doing this is assign Hyper key to Caps Lock with Karabiner and then use that to set up hyper+X shortcuts to different or macros using Hammerspoon.
So e.g. I have hyper+a for Alacritty, hyper+b for Browser etc.
Yep, this was the way I use it too. I had 'qmk' shortcuts but later moved to hammerspoon approach.
Right now trying this set up . Andweeb's 'Ki Spoon' [1] for much efficient workflow. It is still under development
I do the same (though I use spacehammer which is built on top of hammerspoon). It's been the biggest game changing in my keyboard-driven productivity. I don't like how it feels non-deterministic to command-tab since the order of the apps change. With a hotkey for each I know exactly what will show up when I hit the key, and better than using function keys, I don't have to move my hand from home row, plus it works when I use an external keyboard (which is most of the time).
This is what I did in stumpwm. And I had a nice macro so I could define an app's command, what key to map to, what desktop it lives on, and whether jumping to the window or pulling it to me was the default.
You can also make your Spacebar (with a tiny delay not to interfere with typing) an app-launcher key, and then you don't even need to move your poor pinky for such frequent
space+r for browser
space+f for file manager, etc.
# emacsclient
set $em_daemon ~/.local/bin/em
# make a quick launcher for specific things I do all the time
bindsym $mod+o mode "spotlight"
mode "spotlight" {
## specific files in a new emacs buffer
# dired in home
bindsym d exec $em_daemon ~/; mode "default"
# ibuffer
bindsym e exec $em_daemon --eval "(ibuffer)"; mode "default" #
# guaranteed new scratch buffer
bindsym s exec $em_daemon --eval '(switch-to-buffer (format-time-string "%d %b %Y %H:%M:%S"))'; mode "default"
## common binaries
bindsym f exec firefox ; mode "default"
bindsym h exec --no-startup-id zeal ; mode "default"
bindsym j exec --no-startup-id ~/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox ; mode "default"
bindsym m exec --no-startup-id mendeley ; mode "default"
bindsym k exec --no-startup-id keepassxc ; mode "default"
## special launchers
# ipython
bindsym i exec zsh -c '$alacritty -e ~/.local/pipx/venvs/ipython/bin/ipython'; mode "default"
# app switcher
bindsym a exec "rofi -show window -show-icons -theme gruvbox-dark-hard.rasi"; mode "default"
## just in case we did this by mistake
bindsym Escape mode "default"
}
You can also get most of this configuration-free in Gnome. [Super] key switches to a spotlight context; one alphabetic letter focuses the most frequently used app with that prefix; and [Enter] key launches it without prompt.
Not if you suffer from RSI and you want to use as few key strokes as possible. I really don't understand this trend towards minimalist keyboards. I want more keys, not fewer.
I mean, a pianist also doesn't put everything on their home row.
Funny, RSI of a different kind is what pushed me to a minimalist keyboard. I pay the cost of increased complexity to avoid the strain of reaching distant keys.
I meant for example, if I hit Meta+o then I could press any single key after that.. i.e. 't' for terminal, 'f' for file manager, 'b' for browser. KDE doesn't support that, as far as I know.. nothing built in, anyways.
Can people hit their function keys without looking at the keyboard? Sure, hitting F5 to go to your terminal is less keystrokes than e.g. Cmd+tab+tab, but I can't hit anything in the function row without glancing down at my keyboard. And I put a lot of value in looking at my keyboard as little as possible
Why though? I can't consistently hit it without looking, but I can hit it with barely a glance. The cost of looking at the keyboard isn't that high is it?
You need a keyboard with extra space between groups of 4 function keys. Apple keyboards are horrible in this regard. I hotglued a spacer between groups to help with that.
It's possible to learn to use the function row without looking just like you can learn to use the number row without looking. It just takes getting used to your particular keyboard.
Yeah I use F2 constantly for rename, not just in explorer but very useful in lots of apps. In Unity (the game engine) it's invaluable. Also F3 is generally "Find next" when you have a search box open. F12 and Shift-F12 do code navigation in VS and F10 and F11 are useful in the debugger. There are lots of nice things you can do with the F keys which this tip spoils.
No. My function keys are used for things I do more often, like change color profiles, toggle a single app into dark mode, etc.
My favorite trick is not the function keys but other "useless" keys: like Caps is remapped to be Esc (when released before another key is pressed) or Control (when used in conjunction with another key: act as a modifier), my 2 shifts and 2 alt do their normal modifier function (when used in conjunction with another key) but when used by themselves act as PageUp/PageDown Home/End
Going up 2 pages up in the browser? Shift Shift. Top of the page? Alt. Bottom? The other Alt.
For the Control keys, as I don't need that many I've experimented with a few remapping, but BackSpace/Delete are very handy.
Going to the previous page in the browser? Alt+Control.
I’ve tried _so_ many different desktop workflows (including writing two custom window managers!), and I’ve finally settled for the exact same workflow - F
-keys bound to my most common apps, all fullscreened. It becomes muscle memory within two weeks, and it’s faster than anything else I’ve tried by a mile. I use Thor for MacOS if anyone wants to replicate it, it’s a no-fuss version of the author’s setup.
If I ever do need to see two things side-by-side, I’ve also got Rectangle for window positioning. A single cmd+caps lock+H/J/K/L for left-half/restore/maximise/right-half is all I’ve found is necessary.
Would be nice to have a usb keypad and perhaps a little oled screen in each keycap to implement this… my function keys are pretty overloaded with stuff now.
You know, the CTRL-Fn combinations are usually mapped to virtual workspaces on Linux, what is much more powerful than applications and give you the same kind of speedup.
Who organizes things around application anyway, instead of windows?
Anyway, no, it's bad to remap the Fn keys. They have been used to fast intra-application navigation since they appeared, and they are still in wide use. (Does the author not use application shortcuts?) Combining them with another key is just obvious.
I only mention this because it reminded me of one of my old laptops where Ctrl+Alt+F{1,3,5,7,9} worked, but Ctrl+Alt+F{2,4,6,8,0} didn’t, or the other way round, due to a bad keyboard matrix. That was inconvenient, because I was deliberately using three distinct X sessions at that time (personal, work, and I forget what the third was). For some reason that quite escapes me now, instead of just using every second virtual terminal, I instead added Ctrl+Alt+{1–9} mappings inside i3 to chvt {1–9}. I still occasionally have cause to pull out a second one, though mostly I use workspaces within the one session.
> Who organizes things around application anyway, instead of windows?
macOS. There's no Alt+Tab, for example: no way to switch between two arbitrary windows on the Z-stack¹. The not-equivalent that exists is ⌘+Tab, and it switches apps; the usability of it, vs. Alt+Tab, is horrendous. (It fronts stuff you don't want, covering up stuff you do want.)
There are workspaces … but I have found them hard to get productive with: macOS will reorder keystrokes around workspace changes. That is, the keyboard input "abc ^→ (workspace change) def" is a race condition: typed quickly (within the animation delay), it becomes as if you typed "abcdef ^→".
How many windows do you have opened? How many things are you doing at the same time?
Is this because you lose configuration if you close them, or because they take too long to open? Because you can't really use so many of them to make switching not viable on a single virtual desktop.
I tend to have a ton of apps/windows open at any given time due to a combination of tasks often requiring a fairly wide array of apps, but also to reduce the friction of context switching to a minimum (even with a lightning fast SSD, closing one set of apps/documents and opening another takes time). So at any given time I probably have apps/windows open for a few different tasks open.
Virtual desktops get heavy usage from me, but (Cmd|Alt)-Tab switching being caged off per-desktop would actually pose a problem, because when I reach for an app with that shortcut I'm not actively thinking about which desktop it's on — I just want to go to it, wherever it happens to be, even if it's been intentionally placed on a particular virtual desktop.
So app-scoped Cmd-Tab works well for me, because the number of entries it has is always reasonable to tap through and it includes entries from all desktops on both screens.
I have 14 windows open, currently. That's not hugely unreasonable to display in a window switcher … not to mention that every other OS manages it? I've had more, but I mean, how many more are we even talking?
(And if you have a huge number more open, well, how does exposé function?)
And the window switcher on other OSes usually orders the choices by Z-order, which is essentially in recently-used order. The window you want is often only one or two hits away.
(And, if not, the one in MATE in Linux is also navigable by arrow keys or by mouse, so nothing's too far away.)
I have a Stream Deck that I set up to change the LCD's based on what the current in focus application is. I also have a button on each of the custom screens that gets me to the "Main Macro" pad.
No, you're using the computer wrong. See, you should use a tiling window manager with several workspaces and shortcuts without having to look at your keyboard, e.g. Meta+4 to go to workspace 4 where you have your chat apps.
Ha, this was my first thought, though I've got a built-in damper on being that annoying guy who brings up tiling WMs in every workspace conversation.
It is a little amusing to see such a dramatic headline supported by the extremely elementary thesis that you should have kbd shortcuts for your favorite applications.
On top of that, numbered shortcuts for arbitrary apps is way worse than using Super+[arbitrary key].
Yep. Came to say this. Having say, meta+4 for "chat" is far better than having f4 for "a chat app".
You arrive to your chat workspace, your works slack side by side with your favorite irc and matrix clients, all positioned and scaled perfectly every time. Adding more / fewer / swapping apps in is just a matter of invocation, and there the new configuration sits waiting.
The concept is expanded greatly. Shoutout to i3 and xmonad, for my personal setups.
I've been doing this for >10 years with https://manytricks.com/butler/. Works great! You can also bind snippets of text, scripts, etc.
I can't overstate how important it is to have a keyboard that groups function keys into "islands" of (generally) 4 so you can touch-type them. An ergonomics consultant once observed that the source of my neck pain was that I looked at the keyboard while typing. As a touch-typist, I found this puzzling—until we realized it was just the function keys. :-)
Is your tiling-manager also automatically focusing a window on that workspace? And are workspaces limited to a single screen, or do all screen simultaneously change state? Because those are the main reasons why I switch to specific apps instead of desktops/workspaces/tags/whatever you call it. Apps are reliable, but desktops seem too heavy and pointless for me.
Or, use tiling window manager, but also have symbolic mnemonics for the apps (not have to remember on which desktop it's on, nor change your muscle memory if you change what desktop it's on).
For example mnemonic "M" for mail/email, so my xmonad.hs has something like:
Anytime I hid modifier+M, it will either go to the desktop and window with the mail program, or start the mail program if it's not yet running.
Personally, my mail program is usually on desktop 1, but some of the other program, like Web browser, I move between desktops as needed for tasks. Hitting modifier+W always gets to it.
> See, you should use a tiling window manager with several workspaces and shortcuts without having to look at your keyboard, e.g. Meta+4 to go to workspace 4 where you have your chat apps.
That's basically what I do. A tiling WM and then one modifier key (Super in my case but whatever) and then keys to go to any workspace/virtual desktop I want.
And most of my workspaces are always organized in exactly the same manner, so I know exactly where is what.
I've tried tiling WMs several times and they inevitably drive me nuts because on normal computer screen sizes, windows frequently end up awkwardly-sized adding scrolling requirements that wouldn't be present with overlapping windows that are sized to fit the content…
If I were to commit to a tiling WM I think I'd have to replace my main monitor with a 4k TV large enough to run at 1x UI scale without the UI elements being tiny so each window gets the virtual real estate required without effectively making the "tiling" part of the tiling WM moot by maximizing every window.
This probably boils down to the type of programs one uses though… someone living in chromeless text editors and terminals all day will probably fare better with tiling than someone who spends all their time in IDEs, graphics editors, and web browsers.
> each window gets the virtual real estate required without effectively making the "tiling" part of the tiling WM moot by maximizing every window.
The tiling part is just there to making your windows manageable without the mouse and in a predictable way. Out of my 5 preassigned workspaces, 3 are fullscreen windows, 1 is split in 2, and 1 is split in 3 usually.
When I want a new program running big, then I either 1) close and make space in some workspace I'm not using right now, 2) send it to one of the empty "non-preassigned" spaces, or 3) change the current space layout into "all windows fullscreen" temporarily (with the new window on front, obviously).
My mind works differently. I need to put together a set of apps I'm using for a task, say, editor + browser + terminal for software development, or DAW + bunch of instruments + browser + player to work with music, or, say, GIMP + Krita + Inkscape for graphics.
Tiling helps, but I just have a bunch of shortcuts that tile a particular window just so under xfwm4.
Apple is the only one that lacks this. Windows and most linux WM have this for at least 20 years!
windows you just use WIN+[1,2,3,4...] to alternate between your quick launch apps.
Linux obviously you have a myriad of options. Including the top comment here now about using virtual desktops which is even better than application (but you can mix them too!)
And all that while still keeping your Fkeys functionality on each application!
The time I was forced to use a Mac for development was the time my productivity was lowest and frustration highest.
I'm fully convinced that Macs exist only because managers (and wanna be managers) make those decisions. Not to mention i've worked on employeer provided apple, dell, hp, lenovos... macs were the only ones i had to send to IT with failing keyboards, dead screens, etc.
I'm always puzzled by the stubbornness with which Apple refuses to make window management on macOS ergonomic. They think about so many subtler points, they can't fail to notice the elephant in their room. It bothers me every time I have to use macOS.
I wonder who should leave the macOS team to have this finally addressed, like Jony Ive had to leave to make the Macbook hardware reasonable again.
I've mentioned in a previous discussion here that I believe that macOS has the worst UX of all the major OSes. And that belief is mostly because of how horrendous window management is (and Finder but that's a different discussion altogether). The lack of hotkeys for switching workspaces was one of my biggest gripes.
And the culture that has formed around macOS users is to just accept it and buy numerous third apps to fix things that should be a standard feature of the OS.
I like my hands resting near the bottom of the keyboard, so Cmd-tab is very quick as it is within reach and does not require using my eyes. To use those function keys I’d have to look at the keyboard, which feels like a waste of time.
Though I’d rather have function keys back instead of the touchbar, as changing volume/brightness now requires looking at the keyboard as well as a certain precision/dexterity.
If macOS didn't added a very annoying fade-out/fade-in delay when switching Spaces, you could simply use them with maximized apps and hotkeys for switching them. Another design mistake from Apple.
Sounds a bit pedantic, but this was the reason I could just not use macOS as a daily driver. IIRC, there was a brief period of time where this anti-feature could be disabled by some obscure command, and the switch was instantly. But this was later gone in an update, which ultimately taught me the lesson that one should not be at the complete mercy of some OS updates.
Is there any way to change the delay for that? I would think that tucked away somewhere under the hood there’s a setting that controls the animation duration.
Being able to turn that down or off would be a boon to my productivity.
"Nearly instant" is a massive loss of usability compared to "instant". The quicker the transition the less disruption there is to your short term memory. If it's instant then switching between virtual desktops is almost as good as having multiple monitors. If I have to wait for even a brief animation (and MacOS's animation is painfully slow) I'm likely to forget details, which means I'll have to switch again, and risk forgetting even more.
You can change the default slide-in/over animation to a faster fade-out/fade-in one by enabling "Apple menu -> System Settings -> Accessibility -> Display -> Reduce Motion", but you cannot disable the animation completely.
The function keys are too far away for such frequent operations, so it's much better to map apps to regular alpha keys (some can also have a mnemonic benefit like 'f' for File manager) with a modifier, e.g., CapsLock or even Space (though these would need to be behind a tiny delay not to interfere with typing), with a proper keyboard remapping app like Karabiner
I think this workflow is interesting and the title unfortunately clickbait-ish. We can read about things we find interesting without claiming X is better.
In this kind of discussion people often focus solely on frequent actions, but there is one class of action that should have priority for the limited keys: the infrequent urgent. That is, tasks that don't happen that often, but when they do they are very urgent. For me the best example is the sound volume controls, I don't change sound volume nearly as often as I alternate between apps, but when I need to change the sound volume I need it right now, so that is what I'm using my F-keys for.
Some keyboard come with dedicated volume +/-/mute keys which is great and frees up function keys.
I have "screenshotting" as a frequent need -- which in some occassions is an urgent one too :)
I use 3 different types of screen capture (current window, select a region, repeat last region) mapped to F6 F7 F8 on all my machines now which gets a lot of use.
I use sharex and screenshot and region snip a lot. I have it override the screenshot key and then just ctrl and shift for region. Screen. And current windows modifications.
F keys are in my opinion better used elsewhere when you can override screenshot key for screenshots.
I know lots of apps that use those F keys you've overriden.
That is a fine use, but multimedia keys use 3-7ish (depending on how crazy you go) of the 48-ish function keys readily available. By which I mean, unmodified, SHIFT, CTRL, and ALT, and that's without counting multiple modifiers. I've got volume, mute, pause, fast forward and reverse in there but it's far from the only things I've got. (Well... technically FF, reverse, and pause are WIN-right, WIN-left, and WIN-up respectively, but same principle.) I'm not even close to using up all the function keys.
I've mapped these in something like the last four window managers I use, and they've survived across probably a dozen physical keyboards now. Physical buttons for these things come and go but "WIN-Up" (or Super-Up if you prefer) has always been there.
(I did use a mac with a touch bar for a bit. Was that ever a train wreck for me, as you might expect. Fortunately, people don't seem to be copying them and dumping the function keys. I'm actually perfectly happy with them being a reduced-height bar across the top, as most laptops seem to have now. They don't need to be full height.)
In general, I say to anyone who makes a living on a computer... take control of your keyboard! I don't obsess on not using the mouse at all, but the keyboard can do a lot. There's a lot of keys on there, even ignoring the letter keys (which are densely enough "taken" by a lot of other things I don't tend to override them much).
My greatest annoyance with keyboards is that Fn keys (as found to one side of the left Ctrl/Control key; ubiquitous on laptops and common on other keyboards) are always implemented in firmware, and simply don’t do anything with most of the keys, but implement them in such a way that I can’t either.
My laptop’s keyboard has one Fn key, and 82 others.¹ I can only use Fn with 20 of them—one is legitimately handled in firmware², one does nothing³, two emit combos⁴, and 16 emit distinct key codes. The remaining 62 keys? They just get passed through as though I weren’t holding down the Fn key.
I really wish I could use that Fn key just as a regular additional modifier. I use Super+[hjkl] in my tiling window manager, why can’t I use Fn+[hjkl] instead if I want to?
Yes, I know that shifting it all from firmware to driver would cause inconvenience in some situations. Look, perhaps we could at least begin by adding a key code for Fn when it’s tapped by itself or with any of the 62 keys. I dunno, Hyper or something (is Hyper a thing at that level? or is there some other extra modifier available?). That’s sufficiently pragmatic, right?
—⁂—
¹ Asus Zephyrus G15 (2021), GA503QM. I included the power button as one of the 82 keys, as I use it that way: I have XF86PowerOff switch to a Sway/i3 mode where pressing it again shuts down, r reboots, h hibernates, &c. It’s fun being like most projectors with their “press the power button again to show you actually meant it”. But you know my favourite key on the keyboard? XF86AudioMicMute. Really not looking forward to the inevitable day when I get a laptop without one again.
² Fn+Super disables/enables the Super key. Windows things. Wish I could disable this feature, because just occasionally I accidentally trigger it, and I will never want it.
³ As far as I can tell, Fn+Space just gets swallowed. evtest on the appropriate /dev/input/event* file doesn’t show anything being emitted.
⁴ Fn+F6 = Super+Shift+S, and Fn+F9 = Super+P, because those are standard Windows shortcuts. I don’t get why they did it this way, though they’re both very common, given how much more interesting stuff they’ve done than most others. Mostly I’m just grumbling about duplicates because I already want Super+P to do something else, so now Fn+F9 is a dead weight, though I would otherwise have used it.
If you haven't already gone down the custom keyboard rabbit hole, I suspect you might like it. There's a pretty large enthusiast community out in the world, and there's a lot of ways to go custom - build your own from scratch, use a kit, use a pre-built with flashable firmware, etc.
The firmwares used (e.g. QMK) allow you to build the sort of thing you're talking about into your keyboard and more.
In addition to custom firmware, the other benefit is some custom keyboards have designs which are more coherent than typical keyboards. (e.g. replacing the gigantic spacebar, with more keys so that the thumbs can be more useful).
I haven't ever noticed a productivity hit from alt-tabbing.
Many of the devs I work with use Spaces and the three-finger slide to move between apps. However this doesn't work if you're not using the trackpad or Magic Mouse.
Additionally, since I'm usually just moving between a few apps (VSCode, terminal, browser, Teams) it's usually pretty easy to just alt-tab or alt-tab-tab with no loss of context.
This kind of use case should have been what the Touch Bar supported.
I was actually excited when the Touch Bar came out because I though I would finally be able to just have named buttons, even click-through menus, instead of having to memorize what f1-f12 did on a given app.
Imagine if instead of “ok, f1 opens my [some application], I just need to memorize that” you could just add a button that says [some application]”.
Sadly the support for the Touch Bar was pretty middling to poor.
220 comments
[ 2.5 ms ] story [ 280 ms ] threadLinux Mint, as with many other windows shortcuts, has this also
On smaller-than-regular keyboards, such as 60% size, function keys already require one extra key held to activate (Fn+<number>, an upside is being closer to reach while on the home row), so they're already both equivalent in keypresses for such users.
You're welcome!
So e.g. I have hyper+a for Alacritty, hyper+b for Browser etc.
meta+1-9 to switch workspaces, meta+various keys to launch applications (and can configure i3 to launch them into preferred workspaces if desired)
1. https://github.com/andweeb/Ki
I mean, a pianist also doesn't put everything on their home row.
#generate password "pwgen -sy 32" and send to clipboard (uses s to generate more symbols) Also, the NEWLINE is stripped from the end. [tr -d '\n']
ps: I think I need to write an i3-whichkey that displays the current set of bindings because I often forget my own config :)
(Edit: I mean no groupings at all, not about the size of groupings.)
(Not having to "home" on F and J helps.)
Or am I missing something obvious?
My favorite trick is not the function keys but other "useless" keys: like Caps is remapped to be Esc (when released before another key is pressed) or Control (when used in conjunction with another key: act as a modifier), my 2 shifts and 2 alt do their normal modifier function (when used in conjunction with another key) but when used by themselves act as PageUp/PageDown Home/End
Going up 2 pages up in the browser? Shift Shift. Top of the page? Alt. Bottom? The other Alt.
For the Control keys, as I don't need that many I've experimented with a few remapping, but BackSpace/Delete are very handy.
Going to the previous page in the browser? Alt+Control.
If I ever do need to see two things side-by-side, I’ve also got Rectangle for window positioning. A single cmd+caps lock+H/J/K/L for left-half/restore/maximise/right-half is all I’ve found is necessary.
A related comment above: https://news.ycombinator.com/item?id=34246255
https://stream-pi.com/
https://hackaday.com/tag/stream-deck/
Who organizes things around application anyway, instead of windows?
Anyway, no, it's bad to remap the Fn keys. They have been used to fast intra-application navigation since they appeared, and they are still in wide use. (Does the author not use application shortcuts?) Combining them with another key is just obvious.
I only mention this because it reminded me of one of my old laptops where Ctrl+Alt+F{1,3,5,7,9} worked, but Ctrl+Alt+F{2,4,6,8,0} didn’t, or the other way round, due to a bad keyboard matrix. That was inconvenient, because I was deliberately using three distinct X sessions at that time (personal, work, and I forget what the third was). For some reason that quite escapes me now, instead of just using every second virtual terminal, I instead added Ctrl+Alt+{1–9} mappings inside i3 to chvt {1–9}. I still occasionally have cause to pull out a second one, though mostly I use workspaces within the one session.
macOS. There's no Alt+Tab, for example: no way to switch between two arbitrary windows on the Z-stack¹. The not-equivalent that exists is ⌘+Tab, and it switches apps; the usability of it, vs. Alt+Tab, is horrendous. (It fronts stuff you don't want, covering up stuff you do want.)
There are workspaces … but I have found them hard to get productive with: macOS will reorder keystrokes around workspace changes. That is, the keyboard input "abc ^→ (workspace change) def" is a race condition: typed quickly (within the animation delay), it becomes as if you typed "abcdef ^→".
¹no, ⌘+` does not count.
There is https://github.com/lwouis/alt-tab-macos
Is this because you lose configuration if you close them, or because they take too long to open? Because you can't really use so many of them to make switching not viable on a single virtual desktop.
Virtual desktops get heavy usage from me, but (Cmd|Alt)-Tab switching being caged off per-desktop would actually pose a problem, because when I reach for an app with that shortcut I'm not actively thinking about which desktop it's on — I just want to go to it, wherever it happens to be, even if it's been intentionally placed on a particular virtual desktop.
So app-scoped Cmd-Tab works well for me, because the number of entries it has is always reasonable to tap through and it includes entries from all desktops on both screens.
(And if you have a huge number more open, well, how does exposé function?)
And the window switcher on other OSes usually orders the choices by Z-order, which is essentially in recently-used order. The window you want is often only one or two hits away.
(And, if not, the one in MATE in Linux is also navigable by arrow keys or by mouse, so nothing's too far away.)
You can rebind it in settings, though at that point you may as well get the bonus features of 3rd party implementations.
My guess is Apple users, as window switching in macOS is terribly fiddly when compared to application switching.
I strongly recommend them for programming.
They save me so much time.
It is a little amusing to see such a dramatic headline supported by the extremely elementary thesis that you should have kbd shortcuts for your favorite applications.
On top of that, numbered shortcuts for arbitrary apps is way worse than using Super+[arbitrary key].
You arrive to your chat workspace, your works slack side by side with your favorite irc and matrix clients, all positioned and scaled perfectly every time. Adding more / fewer / swapping apps in is just a matter of invocation, and there the new configuration sits waiting.
The concept is expanded greatly. Shoutout to i3 and xmonad, for my personal setups.
Yabai is my daily driver and I really like it.
I can't overstate how important it is to have a keyboard that groups function keys into "islands" of (generally) 4 so you can touch-type them. An ergonomics consultant once observed that the source of my neck pain was that I looked at the keyboard while typing. As a touch-typist, I found this puzzling—until we realized it was just the function keys. :-)
Btw, LaunchBar (https://obdev.at/products/launchbar/index.html) makes an excellent 2nd-level util for things not common enough to merit a single keychord.
You can assign workspaces to different monitors, if I understand the question correctly
For example mnemonic "M" for mail/email, so my xmonad.hs has something like:
Anytime I hid modifier+M, it will either go to the desktop and window with the mail program, or start the mail program if it's not yet running.Personally, my mail program is usually on desktop 1, but some of the other program, like Web browser, I move between desktops as needed for tasks. Hitting modifier+W always gets to it.
That's basically what I do. A tiling WM and then one modifier key (Super in my case but whatever) and then keys to go to any workspace/virtual desktop I want.
And most of my workspaces are always organized in exactly the same manner, so I know exactly where is what.
Function keys are faster / more direct for people that do 100% touch typing, right?
Same keybindings.
win+a = app launcher
win+s = search windows
win+m = rename window
win+1-4 = wspace 1-4
shift+win+1-4 move to wspace 1-4
win + q = close window
win + r = reload cwm
Also, if you are a programmer and use non-ASCII punctuation (Spanish, French, German, Nordic):
The US layout it's the best for programming, and with that setkbmap trick you can compose á-ú/ñ letters with ease.If I were to commit to a tiling WM I think I'd have to replace my main monitor with a 4k TV large enough to run at 1x UI scale without the UI elements being tiny so each window gets the virtual real estate required without effectively making the "tiling" part of the tiling WM moot by maximizing every window.
This probably boils down to the type of programs one uses though… someone living in chromeless text editors and terminals all day will probably fare better with tiling than someone who spends all their time in IDEs, graphics editors, and web browsers.
The tiling part is just there to making your windows manageable without the mouse and in a predictable way. Out of my 5 preassigned workspaces, 3 are fullscreen windows, 1 is split in 2, and 1 is split in 3 usually.
When I want a new program running big, then I either 1) close and make space in some workspace I'm not using right now, 2) send it to one of the empty "non-preassigned" spaces, or 3) change the current space layout into "all windows fullscreen" temporarily (with the new window on front, obviously).
Tiling helps, but I just have a bunch of shortcuts that tile a particular window just so under xfwm4.
That's what I do. I use fluxbox, but even Windows 10 has pretty decent built-in multi-desktop functionality.
You are using computers wrong.
Apple is the only one that lacks this. Windows and most linux WM have this for at least 20 years!
windows you just use WIN+[1,2,3,4...] to alternate between your quick launch apps.
Linux obviously you have a myriad of options. Including the top comment here now about using virtual desktops which is even better than application (but you can mix them too!)
And all that while still keeping your Fkeys functionality on each application!
The time I was forced to use a Mac for development was the time my productivity was lowest and frustration highest.
I'm fully convinced that Macs exist only because managers (and wanna be managers) make those decisions. Not to mention i've worked on employeer provided apple, dell, hp, lenovos... macs were the only ones i had to send to IT with failing keyboards, dead screens, etc.
I wonder who should leave the macOS team to have this finally addressed, like Jony Ive had to leave to make the Macbook hardware reasonable again.
And the culture that has formed around macOS users is to just accept it and buy numerous third apps to fix things that should be a standard feature of the OS.
Though I’d rather have function keys back instead of the touchbar, as changing volume/brightness now requires looking at the keyboard as well as a certain precision/dexterity.
Edit: formatting.
Being able to turn that down or off would be a boon to my productivity.
Some keyboard come with dedicated volume +/-/mute keys which is great and frees up function keys.
I have "screenshotting" as a frequent need -- which in some occassions is an urgent one too :)
I use 3 different types of screen capture (current window, select a region, repeat last region) mapped to F6 F7 F8 on all my machines now which gets a lot of use.
F keys are in my opinion better used elsewhere when you can override screenshot key for screenshots.
I know lots of apps that use those F keys you've overriden.
https://getsharex.com/
I've mapped these in something like the last four window managers I use, and they've survived across probably a dozen physical keyboards now. Physical buttons for these things come and go but "WIN-Up" (or Super-Up if you prefer) has always been there.
(I did use a mac with a touch bar for a bit. Was that ever a train wreck for me, as you might expect. Fortunately, people don't seem to be copying them and dumping the function keys. I'm actually perfectly happy with them being a reduced-height bar across the top, as most laptops seem to have now. They don't need to be full height.)
In general, I say to anyone who makes a living on a computer... take control of your keyboard! I don't obsess on not using the mouse at all, but the keyboard can do a lot. There's a lot of keys on there, even ignoring the letter keys (which are densely enough "taken" by a lot of other things I don't tend to override them much).
Mute is the only one that has real urgency. The others are all second tier.
My greatest annoyance with keyboards is that Fn keys (as found to one side of the left Ctrl/Control key; ubiquitous on laptops and common on other keyboards) are always implemented in firmware, and simply don’t do anything with most of the keys, but implement them in such a way that I can’t either.
My laptop’s keyboard has one Fn key, and 82 others.¹ I can only use Fn with 20 of them—one is legitimately handled in firmware², one does nothing³, two emit combos⁴, and 16 emit distinct key codes. The remaining 62 keys? They just get passed through as though I weren’t holding down the Fn key.
I really wish I could use that Fn key just as a regular additional modifier. I use Super+[hjkl] in my tiling window manager, why can’t I use Fn+[hjkl] instead if I want to?
Yes, I know that shifting it all from firmware to driver would cause inconvenience in some situations. Look, perhaps we could at least begin by adding a key code for Fn when it’s tapped by itself or with any of the 62 keys. I dunno, Hyper or something (is Hyper a thing at that level? or is there some other extra modifier available?). That’s sufficiently pragmatic, right?
—⁂—
¹ Asus Zephyrus G15 (2021), GA503QM. I included the power button as one of the 82 keys, as I use it that way: I have XF86PowerOff switch to a Sway/i3 mode where pressing it again shuts down, r reboots, h hibernates, &c. It’s fun being like most projectors with their “press the power button again to show you actually meant it”. But you know my favourite key on the keyboard? XF86AudioMicMute. Really not looking forward to the inevitable day when I get a laptop without one again.
² Fn+Super disables/enables the Super key. Windows things. Wish I could disable this feature, because just occasionally I accidentally trigger it, and I will never want it.
³ As far as I can tell, Fn+Space just gets swallowed. evtest on the appropriate /dev/input/event* file doesn’t show anything being emitted.
⁴ Fn+F6 = Super+Shift+S, and Fn+F9 = Super+P, because those are standard Windows shortcuts. I don’t get why they did it this way, though they’re both very common, given how much more interesting stuff they’ve done than most others. Mostly I’m just grumbling about duplicates because I already want Super+P to do something else, so now Fn+F9 is a dead weight, though I would otherwise have used it.
The firmwares used (e.g. QMK) allow you to build the sort of thing you're talking about into your keyboard and more.
In addition to custom firmware, the other benefit is some custom keyboards have designs which are more coherent than typical keyboards. (e.g. replacing the gigantic spacebar, with more keys so that the thumbs can be more useful).
Many of the devs I work with use Spaces and the three-finger slide to move between apps. However this doesn't work if you're not using the trackpad or Magic Mouse.
Additionally, since I'm usually just moving between a few apps (VSCode, terminal, browser, Teams) it's usually pretty easy to just alt-tab or alt-tab-tab with no loss of context.
Source: am developer of the app ^_^
I was actually excited when the Touch Bar came out because I though I would finally be able to just have named buttons, even click-through menus, instead of having to memorize what f1-f12 did on a given app.
Imagine if instead of “ok, f1 opens my [some application], I just need to memorize that” you could just add a button that says [some application]”.
Sadly the support for the Touch Bar was pretty middling to poor.