Linux homedir dotfiles
by Jon Gjengset
Most first-time Linux users come from a world where every program has a settings dialog in which to configure the program; indeed some have never opened those dialogs at all. In Linux, however, many applications still use configuration files located in your home directory. These are often prefixed with a period (.bashrc, .xinit, etc), and referred to as dotfiles for this reason. The reason behind the dot-prefix is that in Linux, files with filenames starting with a period are hidden in most listings by default. Since you don’t want to see all your config files every time you try to find something in your home directory, it makes sense to make them hidden. (If you don’t believe me, open a command prompt and run “ls -la” to see all the dotfiles as well)
So, let’s have a the dotfiles you will most likely want to change. Note that these are primarily for command-line applications, but since you’re using Linux, you will more than likely come in contact with the command line sooner or later.
This file contains all the configuration options for your shell (the application that handles everything that happens in your terminal window).
Below is my current .bashrc file:
# Check for an interactive session [ -z "$PS1" ] && return # Color aliases alias ls='ls --color=auto' alias grep='grep --color=auto' # Common aliases alias more='less' # Convenience aliases alias svim='sudo vim' alias srm='sudo rm' # Prompt PS1='[\u@\h \W]\$ ' # Tab completion for sudo # Disabled because it also autocompletes filenames... #complete -cf sudo # Sets the editor to use export EDITOR='vim' # Add local bins to path export PATH="$PATH:/usr/local/bin" # Other aliases # make alias ,='make' # git alias .='git pull' alias ..='git push' # file handlers alias o='xdg-open' # update commands alias yu='yaourt -Syu --aur' alias pu='sudo powerpill -Syu' alias yi='yaourt -S' # online tools alias t='tweet'
Note that you should change this to suit your preferences. If you don’t use git, then remove the git aliases or change them to something else you find useful!
The .xinitrc file is a small, but important, file which controls what happens when you log in and start your X session (The “startx” command). If you’re running a graphical login manager such as GDM, KDM or SLiM, then these will execute startx for you, thus still invoking .xinitrc.
Since I’m running XFCE, my .xinitrc contains “exec startxfce4”.
The “ssh-agent” part runs the entire window manager under a single SSH agent daemon, allowing me to only enter the password for my private keys once in a single session.
exec ssh-agent startxfce4
The .Xresources file configures the visual aspects of all X applications (most notably xterm and xscreensaver).
Note that a lot of these settings will not change anything if you are using another terminal editor such as gnome-terminal or Konsole.
In my .Xresources file below (which is heavily inspired by the Arch Linux Wiki page on the subject), I define a “better” color theme, terminal settings such as font and how my xscreensaver should look. Feel free to experiment these and come up with the perfect settings for your tastes!
One important thing to note is that I am setting xterm to use the Inconsolata font – a very good monospaced terminal font. It is probably available for your Linux distro through the packaging system (Look for ttf-inconsolata)
! terminal colors ------------------------------------------------------------ ! tangoesque scheme *background: #111111 *foreground: #babdb6 ! Black (not tango) + DarkGrey *color0: #000000 *color8: #555753 ! DarkRed + Red *color1: #ff6565 *color9: #ff8d8d ! DarkGreen + Green *color2: #93d44f *color10: #c8e7a8 ! DarkYellow + Yellow *color3: #eab93d *color11: #ffc123 ! DarkBlue + Blue *color4: #204a87 *color12: #3465a4 ! DarkMangenta + Mangenta *color5: #ce5c00 *color13: #f57900 !DarkCyan + Cyan (both not tango) *color6: #89b6e2 *color14: #46a4ff ! LightGrey + White *color7: #cccccc *color15: #ffffff ! xterm ---------------------------------------------------------------------- xterm*geometry: 100x25 xterm*faceName: inconsolata:pixelsize=15 !xterm*font: -*-dina-medium-r-*-*-16-*-*-*-*-*-*-* xterm*dynamicColors: true xterm*utf8: 1 xterm*eightBitInput: true xterm*saveLines: 512 xterm*scrollTtyKeypress: true xterm*scrollTtyOutput: false xterm*jumpScroll: true xterm*multiScroll: true xterm*toolBar: false ! xscreensaver --------------------------------------------------------------- !font settings xscreensaver.Dialog.headingFont: -*-dina-bold-r-*-*-12-*-*-*-*-*-*-* xscreensaver.Dialog.bodyFont: -*-dina-medium-r-*-*-12-*-*-*-*-*-*-* xscreensaver.Dialog.labelFont: -*-dina-medium-r-*-*-12-*-*-*-*-*-*-* xscreensaver.Dialog.unameFont: -*-dina-medium-r-*-*-12-*-*-*-*-*-*-* xscreensaver.Dialog.buttonFont: -*-dina-bold-r-*-*-12-*-*-*-*-*-*-* xscreensaver.Dialog.dateFont: -*-dina-medium-r-*-*-12-*-*-*-*-*-*-* xscreensaver.passwd.passwdFont: -*-dina-bold-r-*-*-12-*-*-*-*-*-*-* !general dialog box (affects main hostname, username, password text) xscreensaver.Dialog.foreground: #ffffff xscreensaver.Dialog.background: #111111 xscreensaver.Dialog.topShadowColor: #111111 xscreensaver.Dialog.bottomShadowColor: #111111 xscreensaver.Dialog.Button.foreground: #666666 xscreensaver.Dialog.Button.background: #ffffff !username/password input box and date text colour xscreensaver.Dialog.text.foreground: #666666 xscreensaver.Dialog.text.background: #ffffff xscreensaver.Dialog.internalBorderWidth:24 xscreensaver.Dialog.borderWidth: 20 xscreensaver.Dialog.shadowThickness: 2 !timeout bar (background is actually determined by Dialog.text.background) xscreensaver.passwd.thermometer.foreground: #ff0000 xscreensaver.passwd.thermometer.background: #000000 xscreensaver.passwd.thermometer.width: 8 !datestamp format--see the strftime(3) manual page for details xscreensaver.dateFormat: %I:%M%P %a %b %d, %Y
If you want to do any kind of advanced text editing (programming, etc), you’ll want a proper editor. And vim is definitely a suitable option when configured properly.
My .vimrc below is largely inspired by Steve Losh’s “Coming Home to Vim“, though it does contain some of my own preferences as well.
With regards to Vim, there are a couple of plugins I recommend you download. The script below only contains a couple of them: ZenCoding and CloseTag, but have a read of the above article and find your own combination.
" Get indentation set autoindent set guioptions-=T " Remove toolbar set vb t_vb= " No more beeps set backspace=2 " Backspace over newlines " GUI fixes set ruler " Where am I? set ttyfast set laststatus=2 " Relative line numbers set relativenumber " Permanent undo set undofile " Autocomplete set wildmenu set wildmode=list:longest " Fix tabs set shiftwidth=4 set softtabstop=4 set tabstop=4 set expandtab " Get syntax syntax on " Style vim colors clouds " Keymaps let mapleader = "," nnoremap <tab> % vnoremap <tab> % inoremap <F1> <ESC> vnoremap <F1> <ESC> vnoremap <F1> <ESC> inoremap jj <ESC> " Good-bye arrow keys... =( nnoremap <up> <nop> nnoremap <down> <nop> nnoremap <left> <nop> nnoremap <right> <nop> inoremap <up> <nop> inoremap <down> <nop> inoremap <left> <nop> inoremap <right> <nop> nnoremap j gj nnoremap k gk " Proper search nnoremap / /\v vnoremap / /\v set ignorecase set smartcase set gdefault " Script plugins au Filetype html,xml,xsl,php source ~/.vim/scripts/closetag.vim au Filetype html,xml,css,php source ~/.vim/scripts/zencoding.vim " Filetype indenting filetype indent on " Load indentation rules and plugins " according to the detected filetype. if has("autocmd") filetype plugin indent on endif " Settings set nocompatible set modelines=0 set encoding=utf-8 set scrolloff=3 set showmode set showcmd set hidden set showcmd " Show (partial) command in status line. set mouse=a " Enable mouse usage (all modes) in terminals