🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

My guide to macOS for (new) power users

July 3, 2022, revised September 25, 2022 in Software

The goal of this article is to point out places of macOS that you can use to your advantage, beyond the common and advertised features.

MacOS is often viewed as the OS where “beauty” trumps over flexibility and user choice. I’ve been a Mac user for over 10 years now. And before that, I used Windows, then Linux, then Linux in a Windows virtual machine… I’ve seen some stuff.

So trust me, macOS is plenty flexible. You can make it do wonderful things. Let’s go deeper.

Keyboard shortcuts - the fastest way to do things

This is the most obvious usability enhancer. That’s why I try to maintain an array of global shortcuts for the most commonly used actions. These are snippets, password expansion, documentation lookup, and so on.

A common technique to have plenty of global shortcuts is to convert CapsLock into the “hyper key” - a modifier key equivalent to pressing cmd+ctrl+option+shift. Combinations with the hyper key are easy to press and extremely unlikely to conflict with local mappings. For example, Hyper+D on my machine opens documentation, and Hyper+V opens the clipboard manager.

I use two tools for keyboard enhancements. One is Karabiner - it is a low level keyboard customizer, capable of mapping the Hyper key, and many other customizations.

Second is BetterTouchTool. I use it to bind key combinations to a variety of system actions and even scripts. BetterTouchTool can also remap touchpad events - I use it to middle-click with a triple tap.

The Karabiner+BetterTouchTool combo is essential for making the most out of your Mac’s keyboard.

Alfred - a command line for your Mac

Alfred is another keyboard-focused app. In fact, it’s the king of keyboard apps - like Spotlight but with more features and customization. You invoke it with cmd+space and then you type commands into it. (This UI paradigm has spread all over software in recent years.)

Alfred has so many features I probably don’t use or know most of them. It also has a flexible plugin system, you can find plugins online or write your own in a scripting language like Ruby, Python, and PHP.

Some of the things that I use Alfred for:

The menubar - your heads-up display

The menubar - the topmost part of the screen where the menu items and the clock is - doesn’t have to be a place for unconstrained clutter of all the apps that want to place an icon there, whether you like it or not.

In fact, it is the most valuable region of the screen. Use it to show information you need at all times. Time, battery power, obviously, but also - CPU status, the next scheduled meeting, the status of your production servers, and so on.

What you need is Bartender. This app can organize menubar items. Most importantly, it can move items that you don’t need into a secondary, hidden menubar. Then you can get to putting useful indicators into the reclaimed space.

The best app for all sorts of indicators is iStat Menus. It has hardware monitors, enhanced time and date widgets, and even weather. Personally I use it to show network status, battery, and CPU/RAM utilization.

There are many menubar calendar apps, the one I use now is Dato Calendar. My most favorite feature is it can bring up the next event name right into the menubar. Very unobtrusive and convenient way to keep up with meetings.

And finally, to make the menubar show anything you can imagine (and code), there is SwiftBar. With SwiftBar, you can create menubar items and menus by writing a simple script with a text-based output. My favorite SwiftBar item shows the status of our Cloudwatch alerts. This way I can know production is doing fine with a single glance. I wrote the 54-line Ruby script myself, so it serves my need precisely and can be adjusted to any requirements. Note: I previously used xbar, but it’s not well supported and seems to stop refreshing after sleep. The functionality is nearly identical.

Window management

I am not a window power user, I mostly run everything maximized. Even that is a power user feature, i guess - regular macOS only allows you to maximize into a full screen app, and full screen app switching animations are too annoying to me.

I use the window management actions built into BetterTouchTool (hyper+up will maximize window for me). Before I also used Moom - it’s nice if you need more advanced window management.

Services - the heart of automation.

MacOS uses launchd to manage services. (Its Linux analog is systemd). Homebrew-packaged databases will provide launchd services to run automatically. But besides that, you can write your own.

LaunchControl is a convenient interface for writing and controlling launchd services. It’s great at exposing all available features and debugging.

Things you can do with launchd:

The terminal

iTerm2 is the most feature-packed terminal emulator, and if you spend much time in the terminal you definitely want to check it out. However, I’ve switched to the terminal built into VSCode, and it fits my personal needs better (I have many projects open at the same time, and it’s convenient when the terminal and the editor are coupled together.)

If you are a terminal user, you should install Homebrew - the best repository of terminal software. But you probably already know about it, as software distributed through Homebrew is ubiquitous.

And finally, you should know that many Mac applications have command-line helpers; consider the open command that will open GUI applications and associated files.

Scripting - true macOS wizardry

AppleScript is a language and an API technology to control Mac applications. Unfortunately, it’s obscure and cryptic and the developer tools are not the best. But, you can use it to extract data out of applications, or enhance them with custom logic. Sometimes it is the only way to do something seemingly impossible.

I recommend Script Debugger if you want to get into AppleScripting. The hard part is understanding the application model, and find what parts of an application are accessible. Script Debugger helps with that.

By the way, you can write AppleScript in JavaScript, too! And you don’t need any special tools to do it - any text editor will do. You can invoke AppleScripts from the command line with the osascript command.

Utilities and other invaluable apps

Setapp - bankroll apps without going bankrupt

Most of the apps I mentioned are paid. That’s how it goes in macOS - developers are not shy of asking money for their work. The full collection will cost hundreds of dollars. And for many apps, you have to sign up for a subscription, or pay an upgrade fee every year.

So that’s where Setapp comes in. Setapp is a wonderful app subscription service. You pay a flat monthly fee and you get access to an ever-growing collection of software.

In fact, most of the software I listed here is available through Setapp. And I stress that this is not because I found it there. In fact, I used most of this software long before Setapp even existed. But nowadays, if I find a good app, chances are it’s already on Setapp and I can download it for free. The most recent example was App Tamer. Setapp is good at bringing the best Mac apps onto their app store, and I’m an extremely happy customer.

If you want to say thanks for this article, just sign up for Setapp with my referral code; it will earn us both a free month.

Buy me a coffee Liked the post? Treat me to a coffee