My dotfiles and setup scripts
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Gib's Dotfiles

Contains everything I use to setup a new machine (except ssh and gpg keys).

How to run

Run either the full or the manual setup, then go to the Post Install Setup.


  • Git:

Standard full setup

# Make a directory to put it in (any path is fine):
mkdir -p ~/code
git clone ~/code/dot && cd ~/code/dot
HARDCORE="" ./up

Lite (non-root) setup

Useful for remote machines you don't own (you still want some niceties, but you can't install a bunch of packages). Just copy and paste this one-line command:

git clone -o up && cd dot &&
  GIT_NAME=$(git config --global GIT_EMAIL=$(git config --global NO_SUDO=true HARDCORE="" ./up

How to update to the latest master


Manual setup

Everything should be pretty self-explanatory and commented, it's all basic bash scripting. From ./up you can see what scripts get run. Each of them can be run individually (and run more than once).

If you don't have root (and don't want sudo prompts), just do:

export NO_SUDO=true

The scripts change your default shell to zsh, if you don't want this change $NEWSHELL to the path to the shell you'd like (or an empty string to not change shell). Make sure the shell you choose is in /etc/shells.

export NEWSHELL=/usr/local/bin/fish # Or NEWSHELL="" to keep current shell.

If you want hardcore modifications enter anything at the prompt.

If you want to enable HARDCORE mode for a single script, just pass it as an env var, e.g.

export HARDCORE=true

If you just want to update your dotfile symlinks, you can just run:


Dotfiles are pretty personal, so feel free to adapt this repo as you wish. If you make a change feel free to send a Pull Request, you might fix something for me!

Post install setup

Some things you have to do manually, here's a short list:

  • Set up ssh keys (All)
    • If you don't have them you probably want them. Instructions here.
  • Set up gpg keys (All)
    • Similar to ssh keys, instructions here.
  • CopyQ setup (All)
    • Set History to 9999
    • Add Global Shortcut: Show/Hide Main Window -> Shiftv
    • Add Global Shortcut: Paste as Plain Text -> ShiftEnter
  • Run Spectacle on Login (macOS):
    • SpaceSpectacleEnter
    • Click on the spectacles in the Menu Bar, click Preferences
    • Check the box at the bottom: Launch Spectacle at login
  • Run HyperSwitch on Login (macOS):
    • Change settings:
      • General:
        • Check Run HyperSwitch in the background.
        • Active the window switcher for all windows -> Tab
        • Check Include windows from other screens
      • App Switcher
        • App Switcher -> Delay activation for -> 0 ms for both.
      • Appearance
        • Hide animation: -> None
        • Show HyperSwitch in -> the menu bar
      • About:
        • Download and install updates in the background
  • Make default screenshot combination copy to clipboard:
    • System Preferences -> Keyboard -> Shortcuts -> Screen Shots
    • Swap Save picture of selected area as file and Copy picture of selected area to the clipboard.

Adding a new file to your dotfiles

As long as it goes in $HOME, just put it in the same relative directory inside ./dotfiles/ (so ~/.bashrc becomes dot/dotfiles/.bashrc). If you rerun link it should get symlinked into the right place.