Dotfiles, utilities, and other apparatus.
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.
Brennen Bearnes f440afb5e8 xmonad: occupy half of screen with scratch and notes scratchpads 5 years ago
.config add a stub ranger(1) config 5 years ago
.xmonad xmonad: occupy half of screen with scratch and notes scratchpads 5 years ago
bin use /bin/sh for some simpler scripts in bin/ 5 years ago
.Xresources slightly smaller xterm fonts 5 years ago
.bashrc add GOPATH, migrate aliases and some vars to ~/.sh_common 5 years ago
.gitconfig couple of git aliases 5 years ago
.gitignore .gitignore pup & built deb 6 years ago
.gvimrc embiggen vim font once more 5 years ago
.hacksrc_hi_dpi high DPI config thievery 5 years ago
.screenrc ^| instead of ^a in screen 10 years ago
.sh_common bin/dmenu_unique + improved h alias for directory history 5 years ago
.tmux.conf .tmux.conf cleanup 5 years ago
.vimrc .vimrc: update vundle path, comment out ultisnips stuff 5 years ago
.xinitrc various and sundry too-many-pixels tweaks 5 years ago
.xmobarrc various and sundry too-many-pixels tweaks 5 years ago
.xmodmap initial commit 10 years ago
.zshrc add GOPATH, migrate aliases and some vars to ~/.sh_common 5 years ago updated README (and a few other comments) 5 years ago
ns-control dependencies: add curl, jq 6 years ago


This repo is for dotfiles, utility scripts, and other things in my personal setup. I used to keep more of these in separate repos, but it seemed like overkill.

I mostly use Debian and Debian-like GNU/Linux systems (including Ubuntu). I usually edit text in Vim, and use the xmonad tiling window manager.

I have a partially-finished book about the command line which may be relevant.


As of April 2016, much of this collection is actively maintained, although it does not meet the standards of quality, consistency, or documentation that I'd want out of a real software project.


shell stuff

These days I mostly use ZSH on personal systems and Bash when authoring tutorial content or doing tech support. I like to keep lots and lots of history. I think shell scripting is a nightmare for most real tasks, but I do it sometimes anyway.

  • .bashrc
  • .zshrc - nothing fancy
  • .sh_common - aliases and variables for both Bash and ZSH; no Bash compatibility guarantees here, since I mostly don't use custom aliases in Bash

vim config

  • .vimrc - see file for installation details
  • uses Vundle to manage plugins and such
  • pulls in a ton of plugins, some more useful than others

scripts in bin/

Scripts here fall into a handful of categories:

  • Short wrappers for getting (and remembering) specific behavior from other tools
  • Screenshot and screencast tools used in my work as a writer for DigitalOcean and Adafruit
  • Things for working with the p1k3 repo and site
  • Things for use with text editors (prefixed with vim-)
  • Miscellaneous utilities

Most of these are unlikely to be portable, useful, or documented.

  • addprop, findprop: tools for adding properties to entries in the p1k3 repo
  • chrome-incognito: run Google Chrome in incognito mode
  • dmenu_unique: run dmenu with big fonts and vertical, only showing each entry once
  • dog: concatenate argument strings and stdin
  • firefox-fromselection: open a selected url in firefox
  • gif-sel, gif-sel-4, gif-sel-15: take an animated gif of selected screen region
  • git-diff-wrapper: use vim with git-diff-tool
  • git-local-to-remote-status
  • grab, grab-sel: take a screenshot, take a screenshot of a selected region
  • json_decode.php
  • listusers
  • notesession: start a tmux named session for notes
  • photocp: copy photos from various media to a home directory location
  • pmwhich: find the on-filesystem location of a Perl module
  • redshift-wrapper: start Redshift for my approximate location.
  • saytime: speak the time with Festival
  • timelog: parse a timelogging format (I use this to bill for contracting)
  • today: print a date
  • todaydir: find a p1k3 dir for the current date
  • uni: search unicode codepoint names (via @chneukirchen)
  • vertical: verticalize a string
  • vim-filter-decorate: splat some text dingbats into HTML I write sometimes
  • vim-filter-exec: replace text in-between markers with result of shell-script execution
  • vim-filter-exec-raw: like above, but different
  • vim-fragment-bullet: print out a "random" dingbat character
  • words: split input into individual words
  • xm: call xmodmap (dumb)
  • xmonad.start: personal version of xmonad startup script
  • xtfix: do a subtle color shift within the current xterm

window management

  • .xmodmap
    • capslock -> ctrl
    • I run this a bunch with bin/xm
  • .xinitrc
    • sources .hacksrc if it exists
  • .Xresources tweaks xterm behavior and a number of fonts
    • behavior changes depending on whether .hacksrc is linked to .hacksrc_hi_dpi
  • XMonad config -
    • .xmobarrc, .xmonad/
    • see bin/xmonad.start for a drop-in replacement for default XMonad startup on some Debian-like systems, including Gnome/Unity stuff and the like. Perpetually not-quite-right.


I use tmux for terminal multiplexing (i.e., most of what GNU Screen does). In practice, this means that I rely on it for:

  • persistent shell sessions, sometimes attached to multiple machines
  • putting a bunch of shell / editor buffers inside one ssh or mosh session
  • capturing and scrolling back through a bunch of output

My [.tmux.conf][.tmux.conf] is brief, but does contain one useful snippet for correcting weird Esc-key behavior in Vim.

building a debian package for dependencies

See instructions in ns-control.