My Terminal Setup

August 12, 2019

linux

Every so often I tweak my setup which includes the shell, terminal, mutt, Vim and their color configuration. Currently I’m using a setup that I’ve tweaked a couple of years back - it seems I like this one. The color setup between my often used application are all unified, giving everything a consistent look.

As for colors; I like contrast: I have a black background terminal and the main text is white. I’m also using a minimal color scheme, just a few tints here and there. Most of the text is just white.

As I spend most of my time in my editor the color scheme in Vim is leading in how I setup things.

Vim

I’m using the iceberg color scheme with a few tweaks to make the black background work. I currently have added:

au ColorScheme * set cursorline
au ColorScheme * hi ColorColumn ctermbg=235 guibg=#2d2d27
au ColorScheme * hi Normal guifg=#eeeeee ctermfg=255 guibg=NONE ctermbg=NONE gui=NONE cterm=NONE
au ColorScheme * hi EndOfBuffer guifg=#eeeeee ctermfg=255 guibg=NONE ctermbg=NONE gui=NONE cterm=NONE
au ColorScheme * hi SpecialKey ctermbg=NONE ctermfg=236 guibg=NONE guifg=#242940
au ColorScheme * hi NonText ctermbg=NONE ctermfg=236 guibg=NONE guifg=#242940
au ColorScheme * hi CursorLine NONE
au ColorScheme * hi Comment     cterm=italic gui=italic
au ColorScheme * hi goFunction  cterm=italic gui=italic
au ColorScheme * hi goStructDef cterm=italic gui=italic

Now having this scheme in Vim, means I also want this in my shell setup. I’ve basically ported iceberg to my shell, my prompt and mutt.

Shell

I’m using zsh as my shell and configured my prompt (lean prompt to use the same colors as iceberg which are color242, color110 and color150.

Now the other important part is how my files are colored (and it seems zsh uses these colors for other stuff as well). To configure this you need a dircolors file, mine is short:

NORMAL 00
FILE 00
RESET
DIR 00;38;5;110
LINK target
MULTIHARDLINK 01
FIFO 00
SOCK 00
DOOR 00
BLK 00
CHR 00
ORPHAN 00
SETUID 00
SETGID 00
CAPABILITY 00
STICKY_OTHER_WRITABLE 01
OTHER_WRITABLE 01
STICKY 01
EXEC 00

.log        00;38;5;242
.bak        00;38;5;242
.aux        00;38;5;242
.lof        00;38;5;242
.lol        00;38;5;242
.lot        00;38;5;242
.out        00;38;5;242
.toc        00;38;5;242
.bbl        00;38;5;242
.blg        00;38;5;242
*~          00;38;5;242
*#          00;38;5;242
.part       00;38;5;242
.incomplete 00;38;5;242
.swp        00;38;5;242
.tmp        00;38;5;242
.temp       00;38;5;242
.o          00;38;5;242
.pyc        00;38;5;242
.class      00;38;5;242
.cache      00;38;5;242

mutt

A pet peeve of mine is that when I view an email in mutt the coloring should be identical to what I would see in Vim. This leads to the following colors file (sourced with source ~/.mutt/color)

color indicator color150 color235
color status default color235
color error color203 color234

color normal default default
color tree color242 default
color message color203 color234

color signature  white        default
color attachment color150     color235
color search     brightyellow red
color tilde      blue         default
color markers    red          default
color bold       red          default
color underline  green        default

color hdrdefault color243    default # default header lines
color header     color140    default  "^Subject:"

color index      default     default  ~N
color index      color243    default  "!~N"
color index 	 color110  	 default  ~Q
color index 	 color140  	 default  "~Q~N"
color index      color1      default  ~D

color   quoted   color242  default
color   quoted1  color252  default
color   quoted2  color242  default
color   quoted3  color252  default

color header color150 default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # email
color body   color150 default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # email
color body   color109 default "(http|ftp|https)://[\-\.\,/+=&%~_:?\#a-zA-Z0-9]+" # URL

Terminal

For my terminal I use the Tango color scheme, but then reset the background to actual black.

Terminal  Colors  Zsh