19 votes

Tips on building keyboard-centric workflow

I do not like using mouse. I feel it disturbs the flow of things I am doing. Moreover, I like quickly pressing through a bunch of keystrokes that results in what I want. There is a sense of satisfaction in that.

For starters, I use Vim and love it. I liked it so much that all my browsers have Vim-like keybindings (through Vimium or Tridactyl). But that is as far as I have gone in making my life easier (apart from switching windows via Command+Tab, but for all else I need to use mouse).

I recently bought a MacBook and it is kind of disappointing that the keybindings are not so intuitive or don't exist natively as they do in Windows. For example, resizing the window was easier on Windows with Win+arrow. There are many such things I find lacking on Mac. Broadly, I am asking for what other improvements can I bring into better my keyboard-centric workflow.

12 comments

  1. [4]
    jackson
    Link
    A few software suggestions for mac: Rectangle: it’s window titling for mac. You can set it up to drag windows to zones, but I much prefer using keyboard shortcuts with it. rCmd costs some money...
    • Exemplary

    A few software suggestions for mac:

    • Rectangle: it’s window titling for mac. You can set it up to drag windows to zones, but I much prefer using keyboard shortcuts with it.
    • rCmd costs some money (definitely more now than when I bought it) but allows for very fluid app switching. I know some people miss alt-tab on macOS but imo this is so much better than alt-tab
    • Raycast: spotlight search on steroids. It has a whole plugin ecosystem. My company has an internal Raycast extension pack and it’s incredibly useful - the default set is also very useful too (clipboard history, join scheduled video calls, camera preview, etc).

    Some default keyboard shortcuts to know:

    • alt-arrow moves one word at a time
    • cmd-arrow moves to the beginning/end of a line (or start/end of a document for up/down)

    Combine with shift to select the range, or delete to delete the range.

    others I use frequently:

    • cmd+` will switch windows of the currently open application as well
    • cmd+ctrl+q to quickly lock your screen, or press the touch ID button
    • cmd+ctrl+space if you want an emoji picker (in messages you can press the globe/fn key after a word to get an associated emoji too)
    • hold alt while looking at a context menu to (potentially) see additional/different options. For example, you can do this when right-clicking an app in your dock to reveal a force quit option.
    • if you need special characters, mac doesn’t do alt-codes, instead you can press alt+[sometimes shift]+[some other keyboard key] to get the character. For example, pi is alt+p.
      • You can also do this for international characters on a US keyboard (unsure about international keyboards but I imagine it’s similar): alt+u followed by a character supporting umlauts will yield the umlauted character (ex: alt+u e yields ë).
    10 votes
    1. tauon
      Link Parent
      +1 for Rectangle and Raycast. Couldn’t use the Mac without them. Great recommendations in the “other keyboard shortcuts” section, too. I might look into rCmd, haven’t heard of it before, looks...

      +1 for Rectangle and Raycast. Couldn’t use the Mac without them. Great recommendations in the “other keyboard shortcuts” section, too.

      I might look into rCmd, haven’t heard of it before, looks intriguing.

      Some notes on the special letters/characters:

      if you need special characters, mac doesn’t do alt-codes, instead you can press alt+[sometimes shift]+[some other keyboard key] to get the character. For example, pi is alt+p.

      There is a special “unicode characters” keyboard (I forget the exact name they gave it) which you can set up in keyboard settings, then activate by pressing function (it’s like regular switching to a different language/alphabet keyboard layout). Then you can hold option/alt key and type the alt code, e.g. ⌥ 2 7 2 6 yielding “✦” to appear on your screen.

      You can also do this for international characters on a US keyboard (unsure about international keyboards but I imagine it’s similar): alt+u followed by a character supporting umlauts will yield the umlauted character (ex: alt+u e yields ë).

      In “native” text inputs (not sure how or why developers can disable it, but I’m fairly certain it’s possible), so most text areas, as well as in all stock GUI Apple apps (should you choose to use those), you can also hold the letter, and a range of options appears, assigning a digit to each letter with umlaut. So pressing E and then either of 1, 2, 3, … gives the altered letter (the exact order offered is dependent on current keyboard layout, since that might offer umlauted letters already in the first/“topmost” layer).

      Edit:

      cmd+ctrl+space if you want an emoji picker (in messages you can press the globe/fn key after a word to get an associated emoji too)

      Forgot to mention, but function + e can open this too, at least sometimes, I believe.

      1 vote
    2. [2]
      elguero
      Link Parent
      Sell Raycast to me, please. Why should I switch over from Alfred?

      Sell Raycast to me, please. Why should I switch over from Alfred?

      1 vote
      1. jackson
        Link Parent
        Haven't used Alfred before, so might have trouble selling you on it. I mostly use it as an application launcher on my personal computer, but at work the custom internal extensions we have are...

        Haven't used Alfred before, so might have trouble selling you on it. I mostly use it as an application launcher on my personal computer, but at work the custom internal extensions we have are incredibly useful for doing quick data lookups or finding and opening specific links out of lists of thousands of links.

        I can join my next meeting with just ctrl+space followed by enter, it opens the videoconf app and I'm good to go. Also has a camera preview tool if you're planning on turning on your camera. Clipboard history is one of the tools I use the most since it just silently runs in the background.

        It has window tiling features, but I just use Rectangle for that instead.

        So really it's all about the extensions, and there's a lot. If you're already happy with Alfred I'm not sure if it's worth switching but it's absolutely worth switching from basic Spotlight.

        1 vote
  2. crdpa
    Link
    Tiling window managers are the best. It's funny that the consensus on this topic is that when you get older you stop thinkering with your OS and use what "just works". In the world of Linux it...

    Tiling window managers are the best.

    It's funny that the consensus on this topic is that when you get older you stop thinkering with your OS and use what "just works". In the world of Linux it would translate to using a major distro like Ubuntu + KDE or Gnome.

    I found the opposite. After 20+ years being a hardcore Linux user I settled with using a lightweight barebones distro (Void Linux) and a light tiling wm (river) and can't use anything else.

    I know exactly how to get what I want from the ground up and even if it takes a day or two to set everything up, when it's done, it's done for life.

    Whenever I try using a big distro and Gnome/KDE I end up trying to bend things to work the way I like and it's always a struggle.

    8 votes
  3. [2]
    Halfdan
    Link
    Being a Windows user, I greatly enjoy Autohotkey, which let me create keyboard commands for pretty much anything using a simple coding language. You could likely find similar software if you...

    Being a Windows user, I greatly enjoy Autohotkey, which let me create keyboard commands for pretty much anything using a simple coding language. You could likely find similar software if you search for autohotkey alternative for mac. I personally have found the ability to just create the keyboard input I want most liberating.

    As an example on how it goes about, this rewires Pause/Break to put Windows to sleep:

    Pause::
    {
    	BlockInput("On")
    	Send("#x")
    	Sleep(100)
    	Send("u")
    	Sleep(100)
    	BlockInput("Off")
    	Send("s")
    	return
    }
    
    5 votes
    1. [2]
      Comment deleted by author
      Link Parent
      1. Weldawadyathink
        Link Parent
        Bettertouchtool also does similar things to AHK.

        Bettertouchtool also does similar things to AHK.

        2 votes
  4. fxgn
    Link
    Set up a tiling window manager. @jackson mentioned Rectangle, I've also seen yabai used a lot, and I'm sure there are a few other ones

    Set up a tiling window manager. @jackson mentioned Rectangle, I've also seen yabai used a lot, and I'm sure there are a few other ones

    3 votes
  5. onyxleopard
    Link
    On macOS, I find both Hammerspoon and Alfred to be indispensable tools to customize a keyboard-centric interface with the OS. Also, know that for any application that has a "Help" menu, you can...

    On macOS, I find both Hammerspoon and Alfred to be indispensable tools to customize a keyboard-centric interface with the OS. Also, know that for any application that has a "Help" menu, you can type shift-command-? to open the help menu and then search any menu bar items textually.

    Another neat tool that attempts to make everything in the GUI accessible via your keyboard is Homerow. Homerow lets you search elements in the GUI via text search and then gives you text anchors that you can type in order to move the mouse to the element you want, and optionally click the element with or without modifier keys. While this is very useful when using software that doesn't provide its own keyboard shortcuts or keyboard-centric affordances, it doesn't allow for consistency—every different app/context may require using different, novel combinations of keystrokes to do something. I still find it useful, but it doesn't allow you to necessarily learn workflows by recalling commands, nor to totally customize the keystrokes.

    3 votes
  6. [2]
    kacey
    Link
    Sorry that you’re having trouble on your new machine … that said, running into workflow problems on MacOS isn’t that uncommon :/ On top of the suggestion for Rectangle, I’d also add AltTab, which...

    Sorry that you’re having trouble on your new machine … that said, running into workflow problems on MacOS isn’t that uncommon :/

    On top of the suggestion for Rectangle, I’d also add AltTab, which is an excellent window switcher: otherwise, you’re stuck cycling through windows in single applications all the time. Karabiner is useful for key rebinding as well. Haven’t been able to find anything that lets you easily move windows between virtual desktops, though.

    Finally, if you’re at a desktop frequently, I’ve found that eye trackers via Talon are an excellent choice.

    Incidentally, if you’re stuck with a MacBook for now and are not attached to the software, I’ve heard that Asahi Linux isn’t bad.

    1 vote
    1. nnjethro
      Link Parent
      I use Karabiner to map the capslock key to a "Hyper" key. That is, holding down caps like maps to holding down shift+command+option+control. There is community defined mappings and I used one that...

      I use Karabiner to map the capslock key to a "Hyper" key. That is, holding down caps like maps to holding down shift+command+option+control. There is community defined mappings and I used one that did this hyper mapping and added i/j/k/l navigation when holding hyper.

      I also use Alfred with the power pack to map all kinds of workflows. I map my most used apps this way to toggle with hyper+key etc. And its clipboard history is also very nice.

      2 votes
  7. rubix
    Link
    I've also been using Tridactyl for years and couldn't live without it these days. In my daily tasks I use vim motions wherever possible. On Mac, I tend to use multiple spaces when undocked on my...

    I've also been using Tridactyl for years and couldn't live without it these days. In my daily tasks I use vim motions wherever possible.

    On Mac, I tend to use multiple spaces when undocked on my laptop. For navigation I have shortcuts for ctrl+h and ctrl+l to navigation left and right between spaces. I also use ctrl+k and ctrl+j to get in and out of Expose. The concept of tiling managers is appealing, but they've never quite worked for my workflows so just keep things really simple.