custom linux config files - managed via gnu stow
Clone or download
Failed to load latest commit information.
2bwm add 2bwm config Aug 7, 2017
bin/bin add dmenu launcher script Sep 23, 2018
cmus/.cmus update lots of stuff Jul 2, 2017
compton/.config update lots of stuff Jul 2, 2017
figlet remove font that's not mine Jul 5, 2015
fonts fix up fonts May 2, 2015
fun/bin πŸ”§ Nov 7, 2017
git my new pgp key is `0xAC1D0000` Feb 26, 2017
gpg/.gnupg update lots of stuff Jul 2, 2017
interrobang update lots of stuff Jul 2, 2017
irssi/.irssi add irc aliases Jan 10, 2017
mpd/.mpd update the rockbox (mpd + ncmpcpp) Feb 8, 2015
mutt/.mutt add minimal mutt configs Feb 8, 2015
ncmpcpp/.ncmpcpp update ncmpcpp style Nov 16, 2015
pacman/etc update pacman.conf with infinality repos Oct 12, 2014
previews add neongold irssi theme and cyberpunk wall Mar 29, 2016
pygments/usr/lib/python3.5/site-packages/pygments/styles pygmentize cat and less commands Oct 27, 2015
ranger/.config/ranger update ranger to open files with xdg-utils Jan 31, 2015
ryu-login/etc updated repo to manage dotfiles via gnu stow, the symlink farm manage… Jul 14, 2014
ssh/.ssh work ssh template Sep 4, 2015
stalonetray update lots of stuff Jul 2, 2017
themes/.themes add cathexis-nord theme Sep 23, 2018
tmux tight coupling of vim and tmux keybinds Oct 9, 2018
urxvt update blaque magick xcolors Aug 2, 2017
vim tight coupling of vim and tmux keybinds Oct 9, 2018
wallpaper add classic wallpaper #7 Jan 23, 2017
zsh πŸ”§ fixed #11 Aug 10, 2017
.gitignore vim reorganization Jun 14, 2015 πŸ”₯ πŸ”₯ πŸ”₯ Oct 9, 2018

      β–ˆβ–ˆ            β–ˆβ–ˆ     β–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆ  β–ˆβ–ˆ
     β–‘β–ˆβ–ˆ           β–‘β–ˆβ–ˆ    β–‘β–ˆβ–ˆβ–‘ β–‘β–‘  β–‘β–ˆβ–ˆ
     β–‘β–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆ β–‘β–ˆβ–ˆ  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–ˆβ–ˆβ–‘β–‘β–‘β–ˆβ–ˆβ–‘ β–‘β–‘β–‘β–ˆβ–ˆβ–‘ β–‘β–ˆβ–ˆ β–‘β–ˆβ–ˆ β–ˆβ–ˆβ–‘β–‘β–‘β–ˆβ–ˆ β–ˆβ–ˆβ–‘β–‘β–‘β–‘
 β–ˆβ–ˆβ–‘β–‘β–‘β–ˆβ–ˆβ–‘β–ˆβ–ˆ   β–‘β–ˆβ–ˆ  β–‘β–ˆβ–ˆ    β–‘β–ˆβ–ˆ  β–‘β–ˆβ–ˆ β–‘β–ˆβ–ˆβ–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
β–‘β–ˆβ–ˆ  β–‘β–ˆβ–ˆβ–‘β–ˆβ–ˆ   β–‘β–ˆβ–ˆ  β–‘β–ˆβ–ˆ    β–‘β–ˆβ–ˆ  β–‘β–ˆβ–ˆ β–‘β–ˆβ–ˆβ–‘β–ˆβ–ˆβ–‘β–‘β–‘β–‘  β–‘β–‘β–‘β–‘β–‘β–ˆβ–ˆ
β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   β–‘β–‘β–ˆβ–ˆ   β–‘β–ˆβ–ˆ  β–‘β–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
 β–‘β–‘β–‘β–‘β–‘β–‘  β–‘β–‘β–‘β–‘β–‘β–‘     β–‘β–‘    β–‘β–‘   β–‘β–‘ β–‘β–‘β–‘  β–‘β–‘β–‘β–‘β–‘β–‘ β–‘β–‘β–‘β–‘β–‘β–‘

 β–‘β–“ about  β–“ custom linux config files
 β–‘β–“ author β–“ xero <>
 β–‘β–“ code   β–“
 β–‘β–“ mirror β–“

 2bwm           > fast floating wm
 bin            > system automation scripts
 compton        > minimal composite config for opacity
 figlet         > custom 3d font
 fonts          > configs for gohu and other bitmap fonts
 fun            > term color, sys info, and other misc scripts
 git            > global git config and aliases
 interrobang    > a lightweight application launcher
 irssi          > neon gold irc theme
 mpd            > music player daemon setup
 mutt           > minimal mutt setup
 ncmpcpp        > ncurses mpc++ ui/color settings
 pacman         > pacman colors and progress bar animations
 previews       > unixporn screenshots
 pygments       > add syntax highlighting to cat and less commands
 ranger         > file manager with image previews and z3bra theme
 ryu-login      > ryu ansi art for /etc/issue tty login
 ssh            > remote ssh server keep alive
 stalonetray    > stand alone tray for daemons
 themes         > mod of the cathexis dark theme for gtk/qt/xfce
 tmux           > terminal multiplexer with custom status bar
 urxvt          > sourcerer terminal colors and keyboard settings
 vim            > wizard status bar and sourcerer color scheme
 wallpaper      > the cool desktop background images i use
 zsh            > zshell settings, aliases, and custom prompts

table of contents


in the unix world programs are commonly configured in two different ways, via shell arguments or text based configuration files. programs with many options like window managers or text editors are configured on a per-user basis with files in your home directory ~. in unix like operating systems any file or directory name that starts with a period or full stop character is considered hidden, and in a default view will not be displayed. thus the name dotfiles.

it's been said of every console user:

"you are your dotfiles".

since they dictate how your system will look and function. to many users (see ricers and beaners) these files are very important, and need to be backed up and shared. people who create custom themes have the added challenge of managing multiple versions of them. i have tried many organization techniques. and just take my word for it when i say, keeping a git repo in the root of your home directory is a bad idea. i've written custom shell scripts for moving or symlinking files into place. there are even a few dotfile managers, but they all seem to have lots of dependencies. i knew there had to be a simple tool to help me.


i manage mine with gnu stow, a free, portable, lightweight symlink farm manager. this allows me to keep a versioned directory of all my config files that are virtually linked into place via a single command. this makes sharing these files among many users (root) and computers super simple. and does not clutter your home directory with version control files.


stow is available for all linux and most other unix like distributions via your package manager.

  • sudo pacman -S stow
  • sudo apt-get install stow
  • brew install stow

or clone it from source and build it yourself.

how it works

by default the stow command will create symlinks for files in the parent directory of where you execute the command. so my dotfiles setup assumes this repo is located in the root of your home directory ~/dotfiles. and all stow commands should be executed in that directory. otherwise you'll need to use the -d flag with the repo directory location.

to install most of my configs you execute the stow command with the folder name as the only argument.

to install my herbstluft theme greybeard use the command:

stow herbstluftwm

this will symlink files to ~/.config/herbstluftwm and various other places.

but you can override the default behavior and symlink files to another location with the -t (target) argument flag.

to install the ryu-login you need to execute the command:

stow -t / ryu-login

this will symlink the file to /etc/issue.

note: stow can only create a symlink if a config file does not already exist. if a default file was created upon program installation you must delete it first before you can install a new one with stow. this does not apply to directories, only files.


navigate to your home directory

cd ~

clone the repo:

git clone

enter the dotfiles directory

cd dotfiles

install the zsh settings

stow zsh

install zsh settings for the root user

sudo stow zsh -t /root

install awesomewm theme

stow awesome

uninstall awesome theme

stow -D awesome

install herbstluftwm

stow herbstluftwm

etc, etc, etc...

#my shell i prefer a minimal setup, and choose to interact with my operating system via the so-called "terminal" or "command line", (read that quoting sarcastically) over a gui interface 2 times out of 3. with the web browser and video player among the noted outliers. in my opinion, using your computer should be a very personal experience. your colors, aliases, key-bindings, etc meticulously crafted to your exacting specifications. so for me, the unix shell is the most important part of my environment.

my terminal emulator of choice is the lightweight, unicode, 256 color urxvt. i use zsh as my interactive shell. it's an extensible, bash like shell with awesome completion and correction engines. i manage multiple shell sessions with tmux. it's a feature packed terminal multiplexer with support for buffers, split windows, detached local and remote sessions, etc. i'm a member of the cult of vim. sing phrases to the third reincarnation of the glorious ed! lel. mpd is my music server and i use ncmpcpp as it's frontend. my configs for urxvt, zsh, tmux, vim, mpd and ncmpcpp shown above feature my sourcerer color scheme.


with it's tight integration to the unix shell, vim has quickly become my editor of choice. once you start to master the movements and operators you quickly begin manipulating, not just editing source code files.

when you learn vim it's best to use a more vanilla config. if helps you focus on learning the editor and not the plugins. vim's vast and powerful plugin system can add many great features. i try to keep my editor slim and fast, but i find myself loving these plugins:

  • plug - to manage other plugins
  • vim completes me - super lightweight completion system
  • colorizer - display color codes as their colors inline
  • ale - async syntax linting
  • git gutter - git diff in the gutter
  • match it - extended word and regex matching
  • lightline - custom status line (for much rice)
  • fugitive - fast git integration
  • GV - git commit browser (great for pr review)
  • vim-tmux-clipboard - seamless integration between vim, tmux, and the system clipboard
  • vim-tmux-navigator - seamless navigation between tmux panes and vim splits
  • vim-tmux-resizer - resize tmux panes and vim splits with same keybinds


i'm a mod on /r/unixporn, and you can find more of my stuff there.