Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/seem/dotfiles

Personal configuration
https://github.com/seem/dotfiles

applications curated dotfiles macos

Last synced: 25 days ago
JSON representation

Personal configuration

Awesome Lists containing this project

README

        

# dotfiles

## Contents

- [Installation](#installation)
- [MacOS apps](#macos-apps)
- [MacOS settings](#macos-settings)
- [Terminal apps](#terminal-apps)
- [How I use macOS](#how-i-use-macos)

## Installation

1. Manually configure [macOS settings](#macos-settings).
2. Clone and `cd` into this repo _with submodules_:

```bash
$ git clone --recurse-submodules [email protected]:seem/dotfiles ~/dotfiles
$ cd ~/dotfiles
```
3. Install [Homebrew](#homebrew).
4. Install from Brewfile with `brew bundle`:

```bash
brew bundle install
```
5. Install vim plugins using [packer](https://github.com/wbthomason/packer.nvim):

```bash
$ nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'
```
7. Manually install remaining [MacOS apps](#macos-apps).
8. Link VSCode settings (replace `Code\ -\ Insiders` with `Code` if necessary):

```bash
rm ~/Library/Application\ Support/Code\ -\ Insiders/User/settings.json
rm ~/Library/Application\ Support/Code\ -\ Insiders/User/keybindings.json
ln -s $(pwd)/vscode/keybindings.json ~/Library/Application\ Support/Code\ -\ Insiders/User/keybindings.json
ln -s $(pwd)/vscode/settings.json ~/Library/Application\ Support/Code\ -\ Insiders/User/settings.json
```

## MacOS apps

### [1Password](https://1password.com/) - Password manager

### [Alacritty](https://github.com/alacritty/alacritty) - Terminal emulator

I used to use iTerm, but Alacritty feels more lightweight and better suited to how I use the terminal (with tmux).

### [Alfred](https://www.alfredapp.com/) - Launcher

Alfred's main advantage over the standard launcher is custom workflows.

#### Disable ctrl to _Show Actions_

Since I rebind ctrl-p/n to up/down using Karabiner, this option breaks browsing the search list.

Alfred Preferences → Features → Universal Actions → General → Show Actions (uncheck ctrl).

#### [`alfred-github-workflow`](https://github.com/gharlan/alfred-github-workflow)

#### [`alfred-emoji`](https://github.com/jsumners/alfred-emoji)

### [Flux](https://justgetflux.com/) - Blue light controller

### [GIMP-2.10](https://www.gimp.org/) - Image manipulation

### [Google Chrome](https://www.google.co.za/chrome/) - Browser

**Extensions:**

- 1Password
- Vimium (only occasionally use it)
- Twemex (Twitter sidebar)
- Some ad blocker

### [IINA](https://iina.io/) - Video player

### [Inkscape](https://inkscape.org/) - Vector graphics

Lots of confusing installation instructions out there, but `brew install inkspace` seems to work fine.

### [Karabiner](https://pqrs.org/osx/karabiner/) - Keyboard remapping

[`karabiner.edn`](./karabiner/.config/karabiner.edn) is written in the Karabiner domain specific language [Goku](#goku).

Ensure that both Karabiner and Goku are installed, then `stow` the `karabiner` package, and run `goku`.

### [Keyboard Maestro](https://www.keyboardmaestro.com/) – Mac automation

### [LibreOffice](https://www.libreoffice.org/) - Office suite

### [Obsidian](https://obsidian.md/) - Writing

### [Rectangle](https://rectangleapp.com/) - Window manager

### [Spotify](https://www.spotify.com/us/) - Music

### [Transmission](https://www.transmissionbt.com/) - BitTorrent client

### [Zoom](https://zoom.us/) - Video calls

### [Zotero](https://www.zotero.org/) - Reference manager

## MacOS settings

### Dock

1. In the _Dock_ itself, remove all unneeded applications (probably everything except _Finder_, browser, terminal, notes).
2. Open _Dock_ settings.
3. Decrease _Size_ by eye.
4. Set _Position on screen_ to _Bottom_.
5. Check _Automatically hide and show the Dock_.
6. Uncheck _Show recent applications in Dock_.

### Finder

1. In _Finder_ itself, set to list view.
2. Open _Finder_ _Preferences_.
3. Set _New Finder windows show:_ to your home directory.
4. Uncheck _Open folders in tabs instead of new windows_.
5. Select _Tags_.
6. Uncheck all tags.
7. Select _Sidebar_.
8. Check your home directory.
9. Select _Advanced_.
10. Check _Show all filename extensions_.
11. Set _When performing a search_ to _Search the Current Folder_.

### Keyboard

1. Open _Keyboard_ settings.
2. Set _Key Repeat_ to fastest.
3. Set _Delay Until Repeat_ to fastest.
4. Check _Use F1, F2, etc. keys as standard function keys on external keyboards_.
5. Select _Text_ tab.
6. Remove _On my way!_ replacement.

### Mouse

1. Open _Mouse_ settings.
2. Set _Tracking speed_ to fifth from the right.
3. Open _Accessibility_ settings.
4. Select _Display_ on the left.
5. Select _Cursor_ tab.
6. Uncheck _Shake mouse pointer to locate_.

### Trackpad

1. Open _Trackpad_ settings.
2. Set _Click_ to _Light_.
3. Set _Tracking speed_ to fastest.

### Language & Region

1. Open _Language & Region_ > _Advanced_ settings.
2. Set all cases of _Decimal_ to `.`.

## Terminal apps

See my [`Brewfile`](./Brewfile) for the full list of terminal applications I use. The most important ones are listed here.

### [Goku](https://github.com/yqrashawn/GokuRakuJoudo) - Simple Karabiner configuration

### [Homebrew](https://brew.sh/) - Package manager

### [Tmux](https://github.com/tmux/tmux) - Terminal window manager

### [NeoVIM](https://neovim.io/) - Text editor

## How I use macOS

### Window management with Rectangle

95% of the time I have a single application maximised with [Rectangle](https://github.com/rxhanson/Rectangle)–_not_ virtual desktops, I'll explain in a sec. I switch between applications using cmd-tab (or cmd-\` for different windows of the same application), Alfred (my preferred launcher, via cmd-space), or the dock when using my mouse. The other 15% of the time I have two windows open side-by-side. I resize the Dock to be quite small and set it to only show on hover so that I only see the application I'm using and the thin mac bar on the top (that can't be hidden last I checked).

I never use more than one virtual desktop. I find it inflexible and clunky in terms of both keyboard shortcuts and the animations that you can't seem to disable–for example, when fullscreening a window, or switching between fullscreened windows.

I instead use Rectangle to maximise windows in a single virtual desktop. You're supposed to be able to hold option and click on the green fullscreen button on the top-left of windows to do this, but I've found that it doesn't work properly for some applications. So I use [Rectangle](https://github.com/rxhanson/Rectangle) instead, which also has customiseable keyboard shortcuts. I only use these shortcuts:

- control-option-enter: Maximise
- control-option-left: Left Half
- control-option-right: Right Half

I find it convenient to use the same keys to move windows across screens (there's an option for this: _Preferences_ → _Move to adjacent display on repeated left or right commands_). I much less frequently use these too:

- control-option-up: Top Half
- control-option-down: Bottom Half

Rectangle also has a _Snap windows by dragging_ option, like Windows, which I like too.

### Mac oddities

Here are some behaviours I found very unexpected coming from Windows:

1. Some windows don't show up in cmd-tab, usually application settings. When that happens I use the "three finger drap up" gesture or ctrl-up to show all windows on my virtual desktop.
2. In mac, closing all windows of an application doesn't necessarily close the application. It still appears when you cmd-tab and in the dock. Use cmd-q to fully close an application. Caveat: for some reason you can't close the Finder application.
3. Finder's copy vs cut and paste is _very_ unintuitive. You first "select" a file with cmd-c, then use cmd-v to copy-paste, or cmd-option-v to cut-paste.

### Mac keyboard shortcuts

Mac applications often use the same standard keyboard shortcuts. Mac sometimes assumes that you know these, so doesn't make them clear. Here are the shortcuts I use:

- cmd-: Switch to a given tab. cmd-9 switches to the *last* tab
- cmd-{/}: Left/right tab
- cmd-t: New tab
- cmd-w: Close a window in an application (or close a tab, depending on the application)
- cmd-n: New window (I rarely use multiple windows)
- cmd-o: Open file
- cmd-s: Save
- cmd-q: Close an application (and all of its windows)
- touch id: You can press the Touch ID button to lock your screen

I've setup tmux and Karabiner so that many of these work in the terminal too! I also have the following in my terminal:

- cmd-h/j/k/l: Left/down/up/right pane
- cmd-h/j/k/l: Left/down/up/right pane
- cmd-d: Split pane right (think "duplicate")
- cmd-D: Split pane down (think "duplicate")

### Alfred - Launching & switching applications

I use [Alfred](#alfred) instead of the defualt launcher. I don't use too many of its features or custom workflows anymore. It's also been a long time since I used the default launcher so I'm not even sure how much they differ anymore.

I mostly use Alfred by pressing cmd-space typing in a few characters to fuzzily search for the application I want to launch or switch to, and hitting return. After a while, you remember short letter combinations (usually two letters) needed for each application. For example, cmd-space `ch` enter switches to Chrome. Similarly, `al` for Alacritty (terminal), `ob` for Obsidian (notes), `di` for Discord, and so on.

It also has a built-in calculator which I find very convenient. You can type basic math directly into the search prompt and hit enter to paste the result into your clipboard.

The only custom workflow I use these days is for emojis, since not every application has a nice emoji auto-completer. I used to use a custom workflow that I wrote to open GitHub repos in my browser without needing any access to GitHub itself (via the git remote URL). I don't know why I stopped–it's very convenient!