Welcome to my dotfiles! Dotfiles manage my system-wide development settings. When you spend most of your day in the terminal, it makes sense to make it fast, efficient, and useful. If you're interested in seeing other configuration options or just seeing more examples of dotfiles, there's a wonderful GitHub Pages site with a collection of examples.
Dotfiles are often stored in the $HOME directory under various sub-folders. To avoid extra tooling or symlinks to track these files, I use an elegant technique posted by StreakyCobra on Hacker News. If you're want to explore how it works, you can read about the system here - it uses a Git bare repository and aliases in a nifty way.
If you are interested in what tools are tracked by the repo, you can explore the files to learn more. Many dotfiles configurations come with extensive system changes and easy install scripts, like this one. However, they also make very opinionated changes to system defaults (like disabling autocorrect) that I don't want or need. In my opinion, it's ineffective to make changes that you don't know how to use. Use other dotfiles as exploratory resources, not install scripts!
You can probably notice the following things:
-
Oh My Zsh: A wonderful framework for managing Zsh. Make sure to install any plugins you want!
-
Powerlevel10k: A wonderful Zsh theme that I have customized to provide me with all of the information I need at a glance.
-
Keyboard Remap: Have you ever used caps lock in a situation where you couldn't have just used shift? No? Then change it! I have it remapped to escape so when I'm on a Macbook Pro with a Touch Bar so I can always have access to escape. Some others also agree.
-
Homebrew: Use it! Also use its casks! Install what you need.
-
QuickLook Management: If you're on a Mac, you can use Homebrew to install QLStephen and QLColorCode. While not explicitly supported, you can add custom file types to QLColorCode with these instructions. I use it so I can QuickLook my .ino Arduino files.
-
Custom "Quick Actions" (aka Services): Using Automator, you can create Quick Actions and add them as keyboard shortcuts. Since I spend so much time calling people, I set up my most frequent contacts as keyboard shortcuts. Weird Permissions Note: Even if you set up the service as a global option, it runs with the permissions of the application in focus when it was called. If you need elevated permissions for your service, a quick way to get around this is to use Automator to create an application that does what you want, and they just link that application to the service. That way, you only have to grant your custom application any permissions. If my weirdly specific use case is something you want, you can use this script (inspiration):
do shell script "open facetime://INSERT_PHONE_NUMBER_HERE}"
tell application "System Events"
repeat until (button "Call" of window 1 of application process "FaceTime" exists)
delay 1
end repeat
click button "Call" of window 1 of application process "FaceTime"
end tell