How to set up rory's exact desktop environment (and why it matters)
Setting up your computer is a form of mise en place, a way of being intentional about the work you're going to do. This is all the apps, tools, and settings I use, and some of the reasoning behind my choices. I wrote this mostly as a reference for myself, but you might find an idea or two that could make a difference in the quality of your digital life.
I recently had my laptop wiped as part of exiting my job, and so yesterday I set it up again from scratch. I've set up a new or newly-wiped Macbook for myself probably on average once a year for the past 6 years (maybe I quit jobs a lot--to be discussed in some later post probably). As my preferences evolve, and technologies shift, each time the setup is slightly different. Still, I like to make it a smooth process for myself by documenting everything clearly.
Setting up your computer is a form of mise en place, a way of being intentional about the work you're going to do. After going through the process and thinking about it for this post, for the first time I've extracted some core principles that seem to underlie most of my digital practices. I'll list them here, and then in all the setup details that follow, you'll probably be able to see how the specifics tie back to the principles.
- Core principles
- Step 0: First things first
- Step 1: Apps I use on a daily basis
- Step 2: Remove noise and clutter
- Step 3: Make all actions easier and/or faster
- Short digression: Why is remapping caps-lock the most important life hack I use that you probably haven't heard of?
- Step 4: Development environment
Core principles: the zen of rory's desktop environment
i. No noise, no clutter. Everything I see a lot should have only what is needed. All docks, menu bars, sidebars, etc should be pared down to only necessary items, and hidden by default. Desktop should always be empty.
ii. The most frequent actions should be lightning fast. Life is short, and I want to spend as close to zero of it as possible typing, switching or opening or closing windows/panes/tabs, moving my mouse cursor, searching, navigating, fixing text formatting, etc. Thinking, reading, and writing should take time. Everything else should happen close to the speed of thought. This is at least half the reason that I was usually one of the faster developers on a team. Often when I paired with another developer, I could see they were actually spending the majority of their time on the above actions, which adds up when you're doing them hundreds or thousands of times per day. Below I'll show you how I set these up to be faster. (Except for typing, I guess. That takes lots of practice.)
iii. Everything in the cloud; individual machines are replaceable. All code and configs in GitHub; everything else in either specific cloud-based apps (streaming music, to-dos, notes, passwords, etc) or Dropbox. Everything stored locally on the machine is meant to be temporary and expendable. This way, my computer can be wiped or replaced at any time, and I don't have to worry about losing any work or getting it back to the state I'm used to.
iv. Create your own environment. I'm going to repeat this every time I give any advice. Never blindly follow someone else's system, including mine! Consider each item individually, and only incorporate it if it sparks joy for you. This is also why my dotfiles are annotated with the purpose of every setting and plugin.
And now, the setup. This was on a Macbook Pro 2017, running macOS Mojave.
If you want to know how to do a certain thing, try googling it. If you want more detail on exact settings I use, just find me and ask.
Step 0: First things first.
Rename the computer to something cool. This is under Sharing. It's so much easier to properly care for your machine when you've named it.
Step 1: Apps I use on a daily basis:
Chrome: browser. Use Safari to download Chrome, then never open Safari again.
1Password: password manager
Karabiner-Elements: remaps keyboard keys. This is incredibly important and explained below.
Dropbox: cloud storage
Byword: simple text editor for writing (I draft everything in Markdown)
WhatsApp: text messaging
Messages (already installed): text messaging
Step 2: Remove noise and clutter.
Dock: Remove all apps from the Dock. Make the Dock small and auto-hidden. Never use the mouse to open, close, or switch to an app: I use
cmd+tab to switch between open apps, and
cmd+space to open Spotlight, type the app I want, and open it.
Menu bar: Remove unnecessary stuff from the menu bar at the top of the screen.
Touch bar: This is under Keyboard. "Touch Bar shows: Expanded Control Strip" -- this makes it always show the same stuff which I've configured, rather than app-specific stuff. "Customize Touch Bar…" -- you can drag and drop to put only the stuff you want in the touch bar. I have:
esc key (not configurable), brightness, music controls, volume controls, screen lock.
Finder: Change the sidebar to have the stuff that I want: most importantly my home directory (this is the directory named after you). Set to show file extensions. Press
cmd+shift+. to show hidden files.
Displays: Scaled: More space. MAXIMUM SPACE! Just squint a little, and zoom in when needed. :D
Chrome: install Momentum extension, which makes new tabs clean and pretty.
Chrome: Settings: “Ask where to save each file before downloading". Why? Apps these days always want to turn a single folder (e.g. Downloads) into a crap pile. I want to be more intentional about where each item goes.
Set computer's screenshots location to a dedicated screenshots directory in Dropbox. Why? See above "Desktop should always be empty." Secondly, see above "Everything in the cloud."
Byword: wide width, 15pt Menlo.
Step 3: Make all actions easier and/or faster.
Trackpad: Tracking speed higher. Change all the gestures to the ones I prefer.
Mouse: Set up a mouse with similar settings if I have one.
Keyboard: Keyboard: Key Repeat: fast. Delay Until Repeat: short.
Keyboard: Text: Uncheck all auto-correcting.
Keyboard: Input Sources: Enable extra keyboards. (Currently I use: US; Pinyin - Simplified; Turkish Q - Legacy.)
Keyboard: Shortcuts: Input Sources: set
option+space to toggle between the above keyboards.
Karabiner-Elements: Complex modifications: Import rules from the internet: Modifier keys: Change caps_lock key.
This is the most important life hack I use that you probably haven't heard of:
Enable rule: "Change caps_lock to control if pressed with other keys, to escape if pressed alone."
(I also enable a second rule, "Post escape if left_control is pressed alone." This just ensures the same as the above, but for my Whitefox keyboard.)
Why is remapping caps-lock the most important life hack I use that you probably haven't heard of?
I initially learned about this key remapping because it's common amongst vim users, and it will probably immediately make sense to a vim user, but it is a game-changer even when I'm not coding at all.
The caps lock key is a useless key--yes, a USELESS key--taking up incredibly valuable real estate due to its central, easily-reachable location. There are at least two other keys that are 100x more deserving of that location: Control, and Escape. Fortunately, it's possible to remap that key to a more useful one, and even possible to overload it with BOTH Control and Escape, due to the fact that Control is always pressed in combination with some other key, and Escape is always pressed alone. So depending on whether you're pressing that key alone or in combination, you can have it trigger one or the other.
Of the two, you may think that you would use Control more often than Escape. After all, in the Macbooks with touch bar, Apple opted to not even give Escape a real key! But Apple has its priorities all wrong, and if you're not using the Escape key a hundred times a day, you're missing out on all the things in life that you could be Escaping. Escape fullscreen, like in YouTube. Escape Spotlight search. Escape a settings menu. Escape an annoying modal popup on a website. Escape from
cmd+f (the "find on page" function in most apps). Escape to "mark as read" in Slack. Escape tends to have some useful function in almost every app, and once you get into that mindset, Escaping is a way of life.
I have listed this step last here, but actually I set it up immediately after installing Chrome, because I can't stand to do the rest of the setup without it. And if you ARE using the Escape key a hundred times a day, you'll know that you've gotta remap it to where caps lock is, right next to your hand for easy access.
If you want to remap the key but get stuck, just reach out, I'm happy to help.
Anyway. If you're not a developer, then congrats! We're done.
Step 4: Development environment.
Are you a developer, or learning to code? Then you can find the rest of the setup steps, config, and tools for my dev environment over at my dotfiles, which are now up to date as of today.
Shoutout to my friend Nathan, who has been a big influence in this area, especially in the early days.
This time around, I had everything including my dev environment up and running in under 3 hours, which I'm pretty happy with.
Bottom line: are you going to live forever? Probably not. How much of your life are you going to spend on the computer? If you're a reader of my blog, then probably a fair amount. Therefore it's a good idea to do the preparation necessary to make this chunk of our finite life as joyful, chill, and intuitive as possible.