Shell-related config files and scripts
Shell AppleScript CoffeeScript Perl JavaScript
Latest commit 88aff3f Sep 23, 2016 @ithinkihaveacat Add vscode-init
Failed to load latest commit information.
etc Add Visual Studio Code icon Sep 21, 2016
home Update Sep 20, 2016
.gitignore Ignore fish/fish_read_history Sep 7, 2015
LICENSE Add personal details Apr 30, 2015 Update docs Sep 5, 2016 Let's turn git back on again Jun 7, 2016
update Don't install keybase Sep 22, 2016


Config files for various tools I use, or have used in the past, such as fish, git, jed, Sublime Text, Atom and Visual Studio Code.

It's very unlikely that anyone will want to use this directly; the more interesting directories are:


Getting locale-related errors when going through these steps?

  1. Generate missing locales: locale-gen en_GB.UTF-8


Ubuntu OS X
sudo apt-get install git-core Install Xcode

No sudo? (If, for example, you're on a Gandi VPS.)

  1. Login as root: ssh root@server
  2. Install sudo: apt-get install sudo
  3. Edit /etc/sudoers: visudo
  4. Add the line: mjs ALL=(ALL) NOPASSWD:ALL

Don't want to install Xcode?

Run git and install the command-line tools. (This also saves a lot of diskspace.)



Via PPA:

  1. Install apt-add-repository: sudo apt-get install software-properties-common
  2. Add fish PPA:

Via DEB:

  1. Download appropriate package from
  2. Install via e.g. sudo dpkg -i fish_2.3.0-1~trusty_amd64.deb.


Via brew:

brew install fish

Don't already have brew?

If you want to install into /usr/local ...


If you want to install somewhere else ...

See alternative installs. (Installing into ~/local/homebrew, and symlinking brew into ~/local/homebrew/bin might be a good option.)

Note that the binaries are symlinked into whatever directory brew is installed into. (So if brew is symlinked into /usr/local/bin, then all executables installed by brew will be symlinked into there as well.) This can be useful if you want to install brew in your home directory, but symlink binaries into /usr/local/bin.

Other Platforms



$ cd $HOME
$ git clone .dotfiles
# Pull from ro repo, push to rw
$ git remote set-url origin --push
$ cd $HOME/.dotfiles
$ ./update
# On OS X, logout and login again

Note that update may be destructive—if you have "unmanaged" files in locations such as ~/Library/KeyBindings or ~/Library/Fonts, they will be wiped out!

(Though it is safe to run update multiple times.)

Manual Changes

All Platforms


If you have problems installing jed from packages, it can be installed manually via something like:

# slang
# extract
./configure --prefix=$HOME/local --libdir=$HOME/local/homebrew/lib --includedir=$HOME/local/homebrew/include --without-x --without-png
make install

# jed
# extract
./configure --prefix=$HOME/local --libdir=$HOME/local/homebrew/lib --includedir=$HOME/local/homebrew/include --without-x
make install


(See this script for some tips on how to change some of these settings automatically.)

Configure Terminal

Import the etc/Solarized Dark.terminal profile. (See this script for some information on how to do this automatically.)

Configure keyboard

  • Open System Preferences > Keyboard
    • Open Shortcuts > Services > File and Folders, enable "New Terminal at Folder".
    • Open Text, disable "Correct spelling automatically".

Add Lock Screen option to Menu Bar

Configure via "Keychain Access" preferences.

Add Volume Controls to Menu Bar

Configure via the "Sound" system preference panel.

Disable local Time Machine backups

$ sudo tmutil disablelocal


Emacs Keybindings

Get emacs keybindings across all gtk apps (source):

$ gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

Ubuntu Terminal

Change Colour Scheme

Run the following gconftool commands to set Solarized colours correctly:

Change Font

Use "Profile Preferences" to change the default font.

Make Alt Available

Open "Keyboard Shortcuts" and unselect "Enable menu access keys". (Otherwise Alt is used for accessing the menu.)

Manually Installing Binaries?

Put them in ~/local/bin, and man pages (if you have them) in ~/local/share/man/man?. (man --path lists the man page search path.)