Difficulty: Medium
Skills: Editing config files, A little Command Line
Time: 2 weeks of research and continuous configuration after that
Project Longevity: 7/10. Though I still use and enjoy aerospace, it is occasionally buggy and resource hungry - requiring a restart or me to revisit the config. I use the Pomodoro app Session inconsistently, though I find the days when I use it to be very productive.
Navigating a typical desktop is cumbersome. It starts with interrupting my flow to reach for my mouse and gets worse when apps overlap or wander off from where I left them. Sure we're draining our time, but more importantly we're robbing ourselves of the fun of a keyboard driven flow state. Fans of Vim make this case often; navigating by keyboard is marginally faster yes, but the real value is that you reduce your mental overhead. If I was using Linux the solution would be i3, but my main computer is a Mac, so I’ve been using Aerospace, a tiling windows manager that lets me navigate apps using keyboard shortcuts. Here's what it looks like.
If you'd like to skip to my solution checkout my Aerospace and SketchyBar config files here and this video from Josean Martinez explaining how to configure Aerospace.
Keyboard = flow
So Aerospace let's you navigate your computer with your keyboard instead of your mouse. It also reduces the amount of navigating your doing by keeping apps in their ideal positions. No more resizing or moving apps to the right screen. With everything in its place and just a key away, the gap between your intentions and results lessens. The experience is much like using a keyboard based text editor like Vim. In fact its so much alike that I want to quote some Vim evangelists explaining why keyboard = flow.
Gil Ben-Herut, The Zen of Vim
- "So coding in Vim is not just faster. It is better, in a deep sense of a better, clearer, more effective thought process and code output."
- "The longer you stay close to the keyboard, without having to move limbs unnecessarily, the better your concentration becomes."
- "it is incredibly distracting for your mind to move a pointer on the screen."
And here's a popular StackOverflow answer on the magic of Vi
- The "Zen" of vi is that you're speaking a language. The initial y
is a verb. The statement yy
is a synonym for y_
. The y
is doubled up to make it easier to type, since it is such a common operation.
It's often hard to parse programmer bravado from good advice. Until I got a bit better at Vim I always sorted terminal based code editors like Vim into the bravado file. I suppose I'm saying that whether you buy that Keyboard = flow or not you should try it out for yourself.
Solving Computer Navigation issues with Aerospace
Okay so now I'm going to get a little more explicit in making the case for Aerospace (and SketchyBar). The following three sections do the work of motivating my configuration by pairing problems you're likely to face with solutions that eventually converge on using Aerospace and SketchyBar together.
Overlapping Windows -> Tiling Windows
Problem: You're coding and you pull up the browser to read some documentation. The browser covers one third of your IDE while leaving space for you to see the screenshots littering your desktop. You select your IDE to make a change and look back to the browser to make sure you've got it correct. To your dismay, the important part is covered up. Oh nooo!
Solution: The culprit, you'd be right to point out is that your windows are floating and not tiled so you download a simple tiling tool like Rectangle and it's smooth sailing. Well, smoother sailing, but there are still problems.
Degrading Workspace -> Continuous Enforcement
Problem: You start up your computer in the morning and array your windows on the right screens setting up the perfect tiled workspace. But entropy is the rule and without a continuously enforced configuration my perfect workspace begins degrading because X app crashes or your computer reboots.
Solution: So you turn to a tiling manager called Aeropace that can continuously enforce default windows for your applications. Aerospace also allows you to configure keyboard shortcuts to switch between windows. Now, when you want to go to your browser you press option+B. Wherever you are, whatever you were doing your configuration ensures you're taken to a page with the browser in full screen. Because you no longer have to navigate to your browser and correctly size it, you conserve focus and keep your train of thought. There's just one more problem to solve.
Confusion -> Hints
Problem: Your working from your IDE and a new song comes on you want to change. You attempt to navigate to Spotify but you've forgotten its keyboard shortcut. So you use Spotlight and you're navigated to a screen with both Spotify and your IDE. Uh oh. Perhaps you were intentionally coding side by side with Spotify but likely there's a problem with your config. But what window are you on, the Dev or Music window. In other words, is your IDE on the wrong page or is Spotify? You could find out by clicking the Aerospace app in the toolbar and looking at the drop bar but as a matter of convenience it would be nice to know right away.
Solution: The solution is easy. Display the possible windows, their shortcuts, and your current window in the toolbar. Well not so much in the toolbar as over the toolbar using an app called SketchyBar.
Final Thoughts
Tiling window managers are common on Linux where you can configure a Windows Manager of your choice. Aerospace works around MacOS’s closed garden and does so swimmingly most of the time. Still, the perfect execution of a Vim-like desktop is probably easier to get right on Linux. Maybe someday I’ll explore it but for now this Aerospace/SketchyBar config likely gets me 90% of the way there. Better to spend that time getting better at Vim and Vimium.