You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bretello 926bb413a4
updater: add vim plugins update
1 month ago
ansible ansible: add update.yml to perform updates, add vim install step 1 month ago
dev dev: update makefile with release target, update docs 5 months ago
ipython/profile_default update ipython config, add to install script 5 months ago
themes zsh: theme: improve navigation mode display 1 month ago
vim vim: fix copy/paste shortcuts 1 month ago
.git-blame-ignore-revs add git-blame-ignore-revs 1 month ago
.gitignore update selfupdate mechanism 5 months ago docs: misc formatting fixes 5 months ago
ackrc add .venv to ackrc's ignore 6 months ago aliases: add venv 1 month ago
antibody_plugins.txt zsh: add bgnotify omz plugin: notifications for long running commands (>6s) 1 month ago
antibody_plugins_extra.txt zsh: add add antibody extras, cleanup plugins.txt 1 month ago updater: fix it 1 month ago updater: add vim plugins update 1 month ago colors: improve readability 5 months ago functions: add gi() to query toptal's gitignore API 1 month ago
gitconfig gitconfig: revert back to vimdiff 1 month ago
gitignore git: add global gitignore file 4 months ago pdbprc: minor improvements 1 month ago
tmux.conf add tmux basic config 1 month ago
useful_commands New repo initial commit 3 years ago

brethil’s dotfiles

A set of zsh dotfiles based on antibody and oh-my-zsh


├──────── Main files ────────
│ ├──
│ │     └── aliases definitions (sources `~/.dotfiles_aliases`)
│ ├──
│ │     └── ANSI color escapes
│ ├──
│ │     └── contains function definitions (sources `~/.dotfiles_functions`)
│ ├── ansible
│ │     └── ansible playboooks/config
│ └──
│       └── This file should be sourced by your `.zshrc`
├──────── antibody plugins ────────
│ ├── antibody_plugins_arch.txt
│ └── antibody_plugins.txt
├──────── oh-my-zsh themes ────────
│ ├── brethil.zsh-theme
│ └── brethil-minimal.zsh-theme
├──────── Misc rc files────────
│ ├── gitconfig
│ │     └── git configuration
│ ├── ackrc
│ │     └── ack rc: a grep-like text finder
│ ├── ipython
│ │     ├── profile_default
│ │     ├──
│ │     ├── startup
│ │     ├──
│ │     └── README
│ ├── vim
│ │    ├── vimrc
│ │    │ └── main vim rc
│ │    ├── plugs.vim
│ │    │ └── plugins to be installed with vim-plug
│ │    ├── plugins_config.vim
│ │    │ └── plugins configuration
│ │    ├── shortcuts.vim
│ │    │ └── vim shortcuts definitions
│ │    ├── functions.vim
│ │    │ └── miscellaneous vim function
│ │    └── twilight256.vim
│ │      └── an old colorscheme
│ └──
│      └── pdb++ rc (a drop-in replacement for pdb)
├──────── Other ─────────────
│      └── selfupdate script
└── useful_commands


  • With ansible:

    bash dev/ # only if community.general is not installed
    ansible-playbook -v -i <hosts file> ansible/playbooks/setup.yml

    This playbook can be tested with a docker container

    Use -e fix_annoyances=true to fix some small annoyances (only run once)

  • Manually (this only installs the zsh configuration):

    git clone ~/.dotfiles
    echo 'DOTFILES=~/.dotfiles' >> ~/.zshrc
    echo 'source $DOTFILES/'

A self-update mechanism is included. It asks for confirmation to pull the latest changes from the git repo every two weeks. This also updates the git-sourced repositories installed by the install script. The self-update routine can be called manually by calling


If you do not want to run the installer script, you can just add source in your .zshrc. This requires antibody installed.

Available Functions

  1. cheat: show cheat sheet for commands using (cheat <commandname>)

  2. Quickly edit/reload profile (esource/resource)

  3. dockertags list all tags for a given docker image

  4. color to print colored text (see 3. in the Misc section):

    color $Red "This will be printed in red"
    color $Yellow "This will be printed in red"
  5. mecp to copy files back to the machine from wich you are ssh-ing. For this to work an ssh tunnel with Remoteforward is needed:

     ssh -R 22:localhost:2222 YOURHOSTNAMEHERE

    or specify this in ~/.ssh/config for a persistent configuration:

    Remoteforward 2222 localhost:22

    This can be enabled in ~/.ssh/config globally for all hosts by uncommenting the relevant Host * Remoteforward. You might have to manually edit the username in the mecp definition in if this is different between the two machines. mecp copies by default on the local machine on ~/Desktop/

  6. Many more. Use list_functions to list defined functions and a small description


  1. ~/bin, ~/git, ~/projects folders
  2. ssh config (~/.ssh/config):
    • Create ssh keys if not defined already
    • Keep connections alive by increasing timeout time
    • Include multiplexer to allow quick multiple connections to the same host
    • (Optional: Compression, this should allow more responsive shells with slow connections, but will slow things down when copying large files. My suggestion is to have compression enabled on a by-host basis in ~/.ssh/config)
  3. brethil.zsh-theme, brethil-minimal.zsh-themes, themes for oh-my-zsh.
  4. ~/.dotfiles_functions, ~/.dotfiles_aliases are sourced by this dotfiles, allowing for custom functions/aliases
  5. useful_commands contains a list of useful commands (the first rule of the tautology club...)


  1. Colored output (via grc) for several commands.

  2. Easy names for ANSI color escapes (Black, Red, Green, Yellow, Blue, Cyan, Purple, White, CLEAR), for example:

    echo -e "${Green}This text will be green${CLEAR}"

    will result in green text. Use $CLEAR to clear previous escape sequences add B before the variable (check name to use bold and U to underline (examples: $BRed, $UBlack for bold red and underlined black)

  3. Autoupdate script running every two weeks, autoupdate function: dotfiles_selfupdate (or git pull from $DOTFILESfolder)

  4. Automatic fix of theSSH_AUTH_SOCKenvironment variable:~/.ssh/rc is installed run on every ssh login, and updates a symlink pointing (~/.ssh/ssh_auth_sock). SSH_AUTH_SOCKpoints to this (set The idea is that if the user is logging in using ssh -A, and using tmux, it will be possible to use the remote socket over different sessions by always using the symlink.