After having my homedirs in subversion for years, moved this collection to Git in 2014 and standardised over all my machines (servers, desktops, laptops, phones, tablets).
To install:
mkdir ~/.dot
cd ~/.dot
clone <url>
cd dotfiles # this takes you to the freshly cloned ~/.dot/dotfiles
sh install.sh # follow the instructions and install the files in the homedir
Extra's:
virtualfish for virtualenv(wrapper) integration in fish
shell.
Both the shell configuration and vim make use of fzf
. fzf is a general-purpose command-line fuzzy finder and helps one 'grep' really fast through filenames. It's an alternative for the well-known find
. Install it by cloning the repository and running the install script (check the Installation notes too).
ripgrep, rg
is a line-oriented search tool that recursively searches your current directory for a regex pattern while respecting your gitignore rules. Basically, a really fast (and clever) grep
.
If your distribution does not provide a package, get yours from the releases page (there's a .deb for 64-bit systems).
By default, the included fish shell configuration installs and uses the bobthefish prompt, but I have been using the starship prompt since November 2023 and configuration is included.
To use, install starship and link the configuration to activate the configured prompt:
cd ~/.config
ln -s ../.dot/dotfiles/.config/starship.toml
The .vimrc has a lot going on. Find out more about my tweaks and use :Maps
in vim itself to see key mappings
vim uses both fzf
and rg
, and also really likes having ctags
(Exuberant Ctags) available.
In tmux, do infocmp > screen-256color
. Add the line kf16=\E[17;2~,
and compile the file with tic. This will result in ~/.terminfo/s/screen-256color
with the correct keycode for shift+F6. .tmux.conf
needs the line setw -g xterm-keys on
for it to register correctly.
The update_repos
script takes the ~/.git_repos
config file and lets you update and clone your projects automatically (or at least in a batch). In the example the first four repos are located in ~/workspace/projects/github, and the other two in workspace/projects/others and workspace/projects/private respectively; then the workspace and group are empty, so mydocs is cloned into the homedir. At the moment, only paths relative to the user's homedir are supported.
workspace=workspace/projects
group=github
[email protected]:aquatix/ns-api.git
[email protected]:aquatix/dotfiles.git
[email protected]:aquatix/dammit.git
[email protected]:aquatix/imagine.git
group=others
https://github.com/Azelphur/pyPushBullet.git
group=private
ssh://myserver/srv/git/privdotfiles.git
# Homedir as workspace:
workspace=
group=
ssh://myserver/srv/git/mydocs.git
./bin/ | description |
---|---|
calibre_update | Update (or install) ebook manager Calibre |
clean_mac_files | Remove those DS_Store and other dirs |
clean_project | Remove compiled Python files, vim swp files |
clean_pyc | Remove compiled Python files |
fixpermissions | chmod dirs to 755, files to 644 |
fixpictimestamps | Change file ctime to datetime from EXIF using exiftool |
fontupdate | Update nerd-fonts; whole repo on server, link font files to ~/.local/share/fonts |
fuz | Simple note-taking 'app' based on FZF and vim |
git_autosave | Simple script to call from crontab or something to commit certain files in Git and push |
git_clean | Clean the Git tree |
sorter | Sort files in newly created subdirectories, based on pre- or postfixes |
update_repos | Update a bunch of Git repos at once, like all your project. Config with ~/.git_repos |