Carefully Curated Dotfiles for Popular Linux Programs
This repository contains the configuration files (i.e., "dotfiles") used to
configure the programs regularly used by me, Gregory M.
Kapfhammer. Please note that the dotfiles
in this repository are, at least to some extent, "hard-coded" to work for my
development environment and projects. For instance, I created these
configuration files under the assumption that a developer will use Arch Linux.
Even though they are heavily customized, my hope is that they are largely
reusable and, additionally, will give examples of how to configure various
programs such as i3
, mutt
, nvim
, polybar
, tmux
, vim
, and zsh
.
This is a summary of some of the dotfiles and program configurations that I created and actively maintain:
.Rprofile
: initialization for the R programming language.Xresources
: configuration for the Rofi for displaying menus.bibtoolrsc
: configuration for thebibtool
program's BibTeX management.ctags
: extensions forexuberant-ctags
to handle new languages.compton.conf
: configuration for thecompton
compositor used withi3
.gitconfig
: configuration file for Git, including customized aliases.gitignore_global
: configuration of the files to exclude from Git repositories.gvimrc
: legacy configuration ofgvim
text editor.indentconfig.yaml
: pointer to configurations for thelatexindent
program.chopsentences.yaml
: configuration for thelatexindent
program to do semantic linefeeds.inputrc
: configuration of all input-enabled tools withvi
-like mappings.latexmkrc
: configuration for thelatexmk
wrapper for LaTeX compilers.mailcap
: configuration for how MIME-enabled programs load files.minivimrc
: minimal configuration ofvim
andnvim
for testing purposes.msmtprc
: legacy configuration for themsmtp
SMTP client.muttprintrc
: configuration of themuttprint
program for printing emails.muttrc
: configuration of themutt
mail user agent.oh-my-zsh.sh
: customized script to load the oh-my-zsh framework.zprofile
: script to run when first starting the shell environment.signature
: footer displayed bymutt
in all email messages.tmux.conf
: configuration of thetmux
terminal multiplexing tool.urlview
: configuration for theurlview
program used withmutt
andtmux
.vimrc
: configuration for thenvim
andvim
text editors.xinitrc
: configuration for to set environment variables and to start i3.zshrc
: configuration for thezsh
shell to use oh-my-zsh.config/bat/themes
: theme configuration to ensure thatbat
looks likenvim
.config/alacritty
: configuration and color scheme for thealacritty
terminal window.config/dunst
: configuration and scripts for thedunst
notification manager.config/gtkrc-2.0
: configuration of GTK 2.0 to support legacy GTK programs on Arch Linux.config/gtkrc-3.0
: configuration of GTK 3.0 to support GTK programs on Arch Linux.config/i3
: configuration and scripts for thei3
window manager.config/polybar
: configuration and scripts for thepolybar
used withi3
.config/termite
: configuration and color scheme for thetermite
terminal window.config/zathura
: configuration for thezathura
PDF viewer.local/bin
: scripts for regular use through the terminal window androfi
Are you looking for some neat configurations to improved your own dotfiles? If
so, then I encourage you to review the .vimrc
, .zshrc
, and .tmux.conf
files that I regularly improve. Interesting in learning how to configuration the
i3 window manager? Then, you are invited to review the .config/i3
and
.config/polybar
directories. Please note that many of these files have
groupings with beginning and ending marks that respectively look like {{{
and
}}}
, thereby helping to group the regions.
To ensure that my development environment is largely self-contained, this
repository also includes Git submodules of the packages that I actively use in,
for instance, the zsh
shell. When I needed to heavily customize a specific
plugin or tool I forked a specific GitHub repository and then made my
improvements in that fork. Otherwise, I added the needed repository as a
sub-module to this one. These are the current submodules that I maintain:
fastsyntaxhighlighting
fzftab
gitstatus
tpm
zshautosuggestions
zshdefer
zshgitprompt
zshsyntaxhighlighting
You can type the following command if you want to clone this repository:
git clone https://github.com/gkapfham/dotfiles.git
Now, you can type cd dotfiles
and start to browse the configuration files that
are available. I suggest that you make symbolic links from your home directory
to this repository if you want to maintain and use these configuration files.
For instance, if you use the bibtool
program to manage your BibTeX files and
if you were in your home directory and the dotfiles/
directory was in
configure/
, then you would type the following command to create the
.bibtoolrsc
as a symbolic link to the file in the ~/configure/dotfiles/
directory containing this repository.
ln -s ~/configure/dotfiles/.bibtoolrsc .bibtoolrsc
As an alternative to manually creating all of the symbolic links in the
aforementioned fashion, this repository has a Makefile
with rules that use
stow
to create these symbolic links automatically. If a system already
contains dotfiles that you no longer needed and you want to remove them from the
system, then please type the command make purge
. Next, typing the command
make dotfiles
will create all the needed directories and subdirectories and
make symbolic links to the dotfiles in this repository from the correct
destination directories. In summary, the main command to type is:
make dotfiles
If you have any problems with downloading or understanding these configuration
files, then please create an issue associated with this Git repository using
the Issues link at the top of
this repository. As the sole contributor to the dotfiles
repository, I will
do everything possible to resolve your issue and ensure that all the
configurations are clear and, potentially, best suited to working in your
development environment. Remember, this repository is being made publicly
available to provide examples of how to write configurations for programs
like vim
, nvim
, and i3
. If you find that these files help you in
preparing your own configurations, then I also encourage you to "star" and
"watch" this project!