Awesome Open Source
Awesome Open Source

Cătălin’s dotfiles

CI status for macOS CI status for Ubuntu

These are the base dotfiles that I start with when I set up a new environment. For more specific local needs I use the *.local files described in the Local Settings section.

Table of Contents


To set up the dotfiles run the appropriate snippet in the terminal:

(⚠️ DO NOT run the setup snippet if you do not fully understand what it does. Seriously, DON'T!)

OS Snippet
macOS bash -c "$(curl -LsS"
Ubuntu bash -c "$(wget -qO -"

That's it! ✨

The setup process will:

Setup process in action:

Setup process on macOS Setup process on Ubuntu
macOS Ubuntu


Local Settings

The dotfiles can be easily extended to suit additional local requirements by using the following files:


The ~/.bash.local file will be automatically sourced after all the other Bash related files, thus, allowing its content to add to or overwrite the existing aliases, settings, PATH, etc.

Here is an example:


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

# Set PATH additions.


export PATH

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

# Set local aliases.

alias g="git"


The ~/.gitconfig.local file will be automatically included after the configurations from ~/.gitconfig, thus, allowing its content to overwrite or add to the existing Git configurations.

Note: Use ~/.gitconfig.local to store sensitive information such as the Git user credentials, e.g.:


    # Sign commits using GPG.

    gpgSign = true


    name = Cătălin Mariș
    email = [email protected]
    signingKey = XXXXXXXX


The ~/.vimrc.local file will be automatically sourced after ~/.vimrc, thus, allowing its content to add or overwrite the settings from ~/.vimrc.

Here is an example:

" Disable arrow keys in insert mode.

inoremap <Down>  <ESC>:echoe "Use j"<CR>
inoremap <Left>  <ESC>:echoe "Use h"<CR>
inoremap <Right> <ESC>:echoe "Use l"<CR>
inoremap <Up>    <ESC>:echoe "Use k"<CR>

" Disable arrow keys in normal mode.

nnoremap <Down>  :echoe "Use j"<CR>
nnoremap <Left>  :echoe "Use h"<CR>
nnoremap <Right> :echoe "Use l"<CR>
nnoremap <Up>    :echoe "Use k"<CR>


If you decide to fork this project, do not forget to substitute my username with your own in the setup snippets and in the setup script.


To update the dotfiles you can either run the setup script or, if you want to update one particular part, run the appropriate os script.



Output for git status:

Output for Git status on macOS Output for Git status on Ubuntu
macOS Ubuntu

Output for git log:

Output for Git log on macOS Output for Git log on Ubuntu
macOS Ubuntu

tmux & Vim

tmux and Vim on macOS tmux and Vim on Ubuntu
macOS Ubuntu


The code is available under the MIT license.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
shell (9,848
macos (1,652
vim (852
git (774
bash (593
ubuntu (331
dotfiles (281
snippets (151
tmux (130

Find Open Source By Browsing 7,000 Topics Across 59 Categories