My guide to macOS for (new) power usersJuly 3, 2022, revised September 25, 2022 macOS
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:
- launching applications, opening files and browsing contacts - all through fuzzy search - that’s the core feature.
- clipboard history - Alfred preserves your clipboard history and you can paste not just the last copied buffer, but other recent buffers. This is a huge productivity boost!
- snippets - some people use text substitution apps like Text Expander, or aText. I don’t like them because they listen to all text input and sometimes slow down typing. So, I set up Alfred’s snippet manager to open on
Hyper+;instead, and Alfred’s keyboard-driven UI is just as convenient.
- conversion of units - I use the wonderful units workflow.
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.
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:
- running tasks on a schedule à la cron (directory cleanup, refreshing reports, etc)
- triggering them on filesystem events (process downloads, notify about activity)
- keep a program running at all times (databases, servers)
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.
Utilities and other invaluable apps
- MacUpdater - wonder tool to auto-update applications. Detects apps, finds and installs updates with no setup necessary. Really good coverage, too.
- Yoink - it’s a temporary “drawer” for drag-and-drop items. Very useful with maximized apps. You drag stuff into Yoink, then you drag out at your convenience. It also has a command line helper.
- CleanShot - best screenshot utility i know.
- TripMode - restrict internet access from apps when you have a slow or costly internet connection. Useful to ensure stable, unimpeded calls over a mobile connection.
- Dash - documentation viewer. Has support for hundreds of languages and frameworks, can auto-generate docs for libraries, and you can even build docsets of your own.
- Reeder - RSS and “read it later” application. Deserves its own article.
- Drafts - text scratchpad for jotting down notes or drafting articles like this one.
- AppCleaner - old, reliable utility for “uninstalling” apps, that is, for cleaning out all leftovers.
- Amphetamine - keep your Mac awake; I usually use it to keep a command-line utility going (as opposed to going to sleep).
- Backblaze - my preferred backup solution. I previously used Arq, it’s great because it could backup to “anywhere”. But Backblaze offers a simpler experience and eats less CPU and disk space.
- 1Password - the password manager that I use since 2011.
- Safari - give it a try! It’s integrated well into the system and it’s unbeaten on energy consumption. The downside is the occasional web app doesn’t work in Safari, because modern web devs only test in Chrome. But I use Safari daily and only keep Chrome for emergencies. Be sure to install 1Blocker, StopTheMadness, and Hush extensions for the most serene browsing experience.
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.