Post-setup tasks

The setup.sh script tries to automate as much as possible, but there are some things that have to be manually done. This page documents those additional tasks.

Mac

Cursor

  • In iTerm, I like tweaking the cursor a little, to have the block cursor show inverted colors and to have the vertical line cursor a little wider so it’s easier to see. First, in Preference -> Profile -> Colors, select “Smart box cursor color”. Then in Preferences -> Advanced:

    • width of vertical bar cursor: 2

    • threshold for smart cursor for foreground: 0

    • threshold for smart cursor for background: 0

Disable bell

To turn off the iTerm2 audio bell (that “donk!” noise you get after hitting TAB): under preferences, go to Profiles, then the Terminal tab. Make sure “Silence bell” is checked.

Fix keyboard on Mac

By default on Mac, unless overridden by a program, Home and End jump to the beginning/end of a document rather than a line. This is different from the Windows and Linux behavior of jumping to beginning/end of a line.

The typical workaround is to use Cmd-Left and Cmd-Right. Some programs (like Outlook on Mac) already override this. But some don’t, noticeable web browsers. When editing a large text input box in a web browser, it can be frustrating if you mistakenly hit End, expecting to jump to the end of a like in Outlook, but instead it jumps to the very end of the text input and you have to go find where you were.

Running ./setup.sh --mac-keyboard-fix fixes this by creating a new ~/Library/KeyBindings/DefaultKeyBinding.dict file; see that file for details. You’ll need to restart programs to see the effect.

zsh to bash

Recent macOS versions use zsh as the default shell instead of bash. These dotfiles assume bash as the default shell (for compatibility with HPC (Linux) systems which typically default to bash as well). See this post for a great explanation of the differences.

The chsh command just has to be run once to change the shell to bash. To avoid the message about zsh popping up all the time (as documented at support.apple.com), set BASH_SILENCE_DEPRECATION_WARNING=1. Here, we export it in ~/.extra, which as .bashrc describes, will be sourced by .bashrc once these dotfiles are set up.

chsh -s /bin/bash
echo "export BASH_SILENCE_DEPRECATION_WARNING=1" >> ~/.extra

This can also be done by using ./setup.sh --mac-stuff.

Touchbar

To turn off the application-specific changing of the touch bar: System Preferences > Keyboard, then change “Touch Bar shows” to “Expanded Control Strip”.

Copy/paste

In iTerm preferences, click the “General” icon, and check “Applications in terminal may access clipboard”

Mac Terminal

If you’re using Mac Terminal, the colorscheme for nvim will not work because the built-in Mac Terminal.app does not support true color for some reason. See nvim has light gray text, colorscheme looks broken for details on how to fix this.

SSH config

Create your ssh keys, and add them to the various systems.

See https://nichd-bspc.github.io/training/ssh.html for more details and for more specific commands.

ssh-keygen
ssh-copy-id user@hostname
cat ~/.ssh/id_rsa.pub

On Mac, add this to your ~/.ssh/config file (creating it if it doesn’t exist). Then, by using the s alias, your SSH key will be added to the session using your login to MacOS as the authentication, without needing to type in your passphrase

# this goes in ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519

Git config

git config --global user.name "your name here"
git config --global user.email "your email here"

Alacritty config

If you’re using Alacritty as your terminal, it needs a little configuration to get colors to work on tmux.

These instructions are from this gist.

In .config/alacritty/alacritty.yml:

env:
    TERM: xterm-256color

In .tmux.conf:

set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

# Or use a wildcard instead of forcing a default mode.
# Some users in the comments of this gist have reported that this work better.
#set -sg terminal-overrides ",*:RGB"

# You can also use the env variable set from the terminal.
# Useful if you share your configuration betweeen systems with a varying value.
#set -ag terminal-overrides ",$TERM:RGB"

In .config/nvim/init.vim:

" You might have to force true color when using regular vim inside tmux as the
" colorscheme can appear to be grayscale with "termguicolors" option enabled.
" if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
"   let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
"   let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
" endif

set termguicolors
colorscheme yourfavcolorscheme