{"id":29417255,"url":"https://github.com/juliusgarbe/dotfiles","last_synced_at":"2026-04-06T08:32:07.952Z","repository":{"id":46135469,"uuid":"191778505","full_name":"juliusgarbe/dotfiles","owner":"juliusgarbe","description":":wrench: My dotfiles","archived":false,"fork":false,"pushed_at":"2025-06-12T09:21:02.000Z","size":5832,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-19T21:15:58.805Z","etag":null,"topics":["bash","dotfiles","git","iterm2","macos","nord","oh-my-zsh","shell","unix","vim","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juliusgarbe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-13T14:28:03.000Z","updated_at":"2025-06-12T09:21:05.000Z","dependencies_parsed_at":"2024-06-28T11:12:13.319Z","dependency_job_id":"5c05a972-6efd-4306-97d2-0a61472bd34f","html_url":"https://github.com/juliusgarbe/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/juliusgarbe/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliusgarbe%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliusgarbe%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliusgarbe%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliusgarbe%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juliusgarbe","download_url":"https://codeload.github.com/juliusgarbe/dotfiles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliusgarbe%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31464604,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","dotfiles","git","iterm2","macos","nord","oh-my-zsh","shell","unix","vim","zsh"],"created_at":"2025-07-11T20:39:12.815Z","updated_at":"2026-04-06T08:32:07.921Z","avatar_url":"https://github.com/juliusgarbe.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\nThis repository contains my personal system configuration files, a.k.a. [dotfiles](https://wiki.archlinux.org/index.php/Dotfiles).\n\n## Contents\n- [`.app-defaults/`](.app-defaults/): Contains [X applications](https://www.x.org/) default resources.\n  - [`Ncview`](.app-defaults/Ncview): Contains the default resources for [Ncview](http://meteora.ucsd.edu/~pierce/ncview_home_page.html).\n- [`.bash/`](.bash/): Contains general shell environment definitions.\n  - [`aliases.sh`](.bash/aliases.sh): Contains all personal bash alias definitions.\n  - [`functions.sh`](.bash/functions.sh): Contains all personal bash functions.\n  - [`prompt.sh`](.bash/prompt.sh): Customize appearance of shell prompt.\n  - [`variables.sh`](.bash/variables.sh): Contains personal environment variables.\n- [`.bash_profile`](.bash_profile): General configuration file for the [Bash](https://www.gnu.org/software/bash/) login shell. Sets the preferred custom shell.\n- [`.bashrc`](.bashrc): Configuration file for interactive non-login Bash shells. Loads aliases from `.bash/aliases.sh`, functions from `.bash/functions.sh`, and environment variables from `.bash/variables.sh`.\n- [`.cdo/`](.cdo/): Settings for the [Climate Data Operators (CDO)](https://code.mpimet.mpg.de/projects/cdo).\n  - [`cdoCompletion.bash`](.cdo/cdoCompletion.bash): Definitions of CDO auto-completions for Bash.\n  - [`cdoCompletion.zsh`](.cdo/cdoCompletion.zsh): Definitions of CDO auto-completions for ZSH.\n- [`.condarc`](.condarc): Configuration file for the [Conda](https://docs.conda.io/en/latest/) Python package management system.\n- [`.config/`](.config/): Contains further user-specific configuration files.\n  - [`bat/config`](.config/bat/config): Configuration file for [Bat](https://github.com/sharkdp/bat).\n  - [`matplotlib/matplotlibrc`](.config/matplotlib/matplotlibrc): Configuration file for [Matplotlib](https://matplotlib.org/index.html). See [here](https://matplotlib.org/stable/tutorials/introductory/customizing.html) for more information.\n- [`.gitconfig`](.gitconfig): [Git](https://git-scm.com) configuration file, contains some handy aliases and UI color definitions.\n- [`.jupyter/`](.jupyter/): Contains configuration files for [Jupyter Notebooks](https://jupyter.org).\n  - [`.custom/custom.css`](.jupyter/custom/custom.css): This file mainly adds custom UI colors and some font styles to Jupyter Notebooks.\n- [`.kshrc`](.kshrc): Configuration file for the [KornShell](http://www.kornshell.org). Currently not used.\n- [`.launch-jupyter`](.launch-jupyter): Run Jupyter Notebooks on login nodes with output-forwarding into my local browser. Requires logging in with port listening enabled (`ssh -L`). Load automatically using `ssh [...] -t 'exec bash ~/.launch-jupyter; bash -i'`. \n- [`.launch-jupyter-slurm`](.launch-jupyter-slurm): Run Jupyter Notebooks on compute nodes (using SLURM) with output-forwarding into my local browser. Requires logging in with port listening enabled (`ssh -L`). \n- [`.ncmaps/`](.ncmaps/): Contains [ncmaps](https://github.com/TomLav/ncmaps) settings.\n  - [`ncmaps_myselection`](.ncmaps/ncmaps_myselection): Personal selection of ncmaps color maps used for Ncview.\n- [`.ncviewrc`](.ncviewrc): Configuration file for [Ncview](http://meteora.ucsd.edu/~pierce/ncview_home_page.html). I'm using [ncmaps](https://github.com/TomLav/ncmaps) to bring in and manage my favorite scientific color maps.\n- [`.profile`](.profile): General configuration file for the Bash login shell. Only sourced if no `.bash_profile` is present. Currently empty, but custom environment variables might be defined here.\n- [`.vimrc`](.vimrc): Configuration file for [Vim](https://www.vim.org). I'm using [vim-plug](https://github.com/junegunn/vim-plug), e.g. for the [Nord](https://www.nordtheme.com/ports/vim) color scheme and a [beautiful statusline](https://github.com/vim-airline/vim-airline).\n- [`.xinitrc`](.xinitrc): Configuration file for the initialization of the [X Server](https://www.x.org/). Not used.\n- [`.Xresources`](.Xresources): Configuration file for the [X Window System](https://www.x.org/). I'm using the pretty [Nord](https://github.com/arcticicestudio/nord-xresources) color theme. Also adds some UI customization for Ncview.\n- [`.zshrc`](.zshrc): Configuration file for [Oh My Zsh](https://ohmyz.sh). Loads custom themes and plugins, as well as custom shell aliases, functions, environment variables, and more. The [agnoster](https://github.com/agnoster/agnoster-zsh-theme) theme requires [Powerline-patched Fonts](https://github.com/powerline/fonts) to be installed and a unicode-compatible terminal (I use [iTerm2](https://www.iterm2.com)) in order to render properly.\n\n## ZSH\n### Theme / prompt\nZSH is configured with the Agnoster theme which adds some more useful information to the prompt, e.g. it indicates the active conda environment as well as the current version control worktree status by changing its color:\n\n*Unstaged changes:*\n![prompt unstaged changes](images/prompt1.png)\n\n*Staged changes:*\n![prompt staged changes](images/prompt2.png)\n\n*Clean worktree:*\n![prompt clean worktree](images/prompt3.png)\n\nFor more capabilities of the Agnoster theme and tips how to customize the prompt view, see [here](https://github.com/agnoster/agnoster-zsh-theme).\n\n### Fuzzy Finder\nI'm using [FZF](https://github.com/junegunn/fzf). It's great - see yourself!\n\n![fzf](images/fzf.png)\n\nFZF uses [fd](https://github.com/sharkdp/fd) to find files and the preview is configured to use [Bat](https://github.com/sharkdp/bat) for previewing files with syntax highlighting. I'm also using the *Nord* theme here. For directories, the contents are listed with `ls`.\n\n### Other OMZ plugins\n#### Autosuggestions\nAdds type-ahead [autocomplete suggestions](https://github.com/zsh-users/zsh-autosuggestions) based on the command history and completions:\n\n![autosuggestions](images/autosuggestions.png)\n\n#### Syntax highlighting\nThe [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting) plugin makes commands turn green if typed right, red if not, while files \u0026 folders get underlined if existing.\n\n## Vim\n### Plugins\nMy plugins are managed through the [vim-plug](https://github.com/junegunn/vim-plug) plugin manager. Below are some of the plugins I enjoy using:\n\n#### Nord Vim\nI'm using the beautiful [Nord](https://www.nordtheme.com/ports/vim) Vim color theme.\n\n#### Statusline\nThe [vim-airline](https://github.com/vim-airline/vim-airline) plugin enables a nice and customizable statusline at the bottom of each Vim window:\n![screenshot vim](images/vim.png)\n\n#### Fuzzy Finder\nIntegrates [FZF](#fuzzy-finder) as a Vim plugin.\n\n#### Indent Guides\nThe useful [vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides) plugin adds the functionality to visually display indent levels in Vim.\n\n#### Gitgutter\nThe [vim-gitgutter](https://github.com/airblade/vim-gitgutter) plugin shows a git diff in the sign column, i.e. which lines have been added, modified, or removed.\n\n#### Netrw\nI'm using Vim's built-in file explorer (`:Explore`) for quick access to my files. It's simple yet helpful and with some customization it renders any additional plugin like NERDTree dispensable.\n\n### Mappings\nI am a long-time Mac user and as such I'm used to certain shortcuts or key strokes when it comes to quick navigation between open files and windows. My Vim is therefore configured with key mappings like \u003ckbd\u003eShift\u003c/kbd\u003e\u003ckbd\u003e\u0026#8592;\u003c/kbd\u003e/\u003ckbd\u003e\u0026#8594;\u003c/kbd\u003e to switch between vertical window splits, \u003ckbd\u003eAlt\u003c/kbd\u003e\u003ckbd\u003e\u0026#8592;\u003c/kbd\u003e/\u003ckbd\u003e\u0026#8594;\u003c/kbd\u003e to switch between open buffers, and \u003ckbd\u003eTab\u003c/kbd\u003e/\u003ckbd\u003eShift\u003c/kbd\u003e\u003ckbd\u003eTab\u003c/kbd\u003e to switch between tabs. Below are some more convenient key mappings I use:\n\n| Key | Mapping | Normal mode | Insert mode |\n| --- | ------- | ----------- | ----------- |\n| \u003ckbd\u003eTab\u003c/kbd\u003e\u003ckbd\u003eTab\u003c/kbd\u003e | Open [Fuzzy Finder](#fuzzy-finder) | :heavy_check_mark: | :heavy_minus_sign: |\n| \u003ckbd\u003ee\u003c/kbd\u003e | Toggle [Netrw](#netrw) browser side panel | :heavy_check_mark: | :heavy_minus_sign: |\n| \u003ckbd\u003eF1\u003c/kbd\u003e | Toggle line numbers | :heavy_check_mark: | :heavy_check_mark: |\n| \u003ckbd\u003eF2\u003c/kbd\u003e | Toggle paste mode | :heavy_check_mark: | :heavy_check_mark: |\n| \u003ckbd\u003eF3\u003c/kbd\u003e | Toggle [vim-gitgutter](#gitgutter) | :heavy_check_mark: | :heavy_check_mark: |\n| \u003ckbd\u003eF4\u003c/kbd\u003e | Toggle invisible characters | :heavy_check_mark: | :heavy_check_mark: |\n| \u003ckbd\u003eF5\u003c/kbd\u003e | Toggle spell checking | :heavy_check_mark: | :heavy_check_mark: |\n\n## Ncview\nI use [Ncview](http://meteora.ucsd.edu/~pierce/ncview_home_page.html) extensively, so I like it to look pretty. In addition to using the [Nord](https://www.nordtheme.com) color theme, I also made a few UI tweaks (see [`.Xresources`](.Xresources)) and I use [ncmaps](https://github.com/TomLav/ncmaps) and [cmasher](https://cmasher.readthedocs.io) to add some nice scientific color maps. Below are two examples using color maps from [cmocean](https://matplotlib.org/cmocean/).\n\n![ncview_example1](images/ncview_example1.png)\n![ncview_example2](images/ncview_example2.png)\n\n## Git aliases\nI also use some aliases to make Git look prettier and more convenient. If you want, for example, a much prettier looking `git log`, just add the following alias to the global Git config file (`~/.gitconfig`) by copy-pasting this command into your terminal:\n```\ngit config --global alias.logg \"log --color --graph --pretty=format:'%C(bold yellow)%h%C(reset) - %C(green)[%cr]%C(reset) %s - %C(dim white)%an%C(reset) %C(bold red)%d%C(reset)' --abbrev-commit\"\n```\nNow, using the alias `git logg` instead of `git log`, your commit history looks like this:\n![git logg](images/gitlogg.png)\n\nSimilarly, you can output a formatted and colored list of the tags using the following alias:\n```\ngit config --global alias.tags \"tag --sort=taggerdate --format='%(color:bold yellow)%(refname:short)%(color:reset) - %(color:green)[%(taggerdate:relative)]%(color:reset) %(subject) - %(color:dim white)%(taggername)%(color:reset)'\"\n```\nThe output of `git tags` will now look like this:\n\n![git tags](images/gittags.png)\n\nAnother shortcut to make the `git branch` command more informative is to define the following alias:\n```\ngit config --global alias.branches \"branch -vv\"\n```\nUsing `git branches` instead of the usual `git branch` now also prints the SHA1 and subject line of each branch's HEAD, as well as the name of the upstream branch:\n\n![git branches](images/gitbranches.png)\n\n## Installing and managing dotfiles\n\n\u003e :warning: **WARNING:** These files contain code which affects the way your system behaves. **DO NOT** use blindly unless you know what that entails and only after reviewing the code. Use at your own risk! And always remember: with great power comes great responsibility. :point_up:\n\nBefore installation, make sure to back up already existing configuration files in your $HOME folder if you care about them, so they won't be overwritten by Git. To install, use the following commands (note, that this dotfile repository should be managed as a *bare Git repository*):\n```\ngit clone --bare https://github.com/juliusgarbe/dotfiles.git $HOME/.cfg\ngit --git-dir=$HOME/.cfg/ --work-tree=$HOME checkout\n```\nCreate an alias `config` which is used instead of the regular `git` command when interacting with the configuration repository:\n```\nalias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'\n```\nYou might want to add the alias definition to your `.bashrc` (make sure to log out and log back in afterwards to be able to use it):\n```\necho \"alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'\" \u003e\u003e $HOME/.bashrc\n```\nSet a local flag to hide files that are not explicitly tracked:\n```\nconfig config --local status.showUntrackedFiles no\n```\nAfter successful execution of the setup any file within the $HOME folder can be version-controlled with normal commands, replacing `git` with the newly created `config` alias, e.g.:\n```\nconfig status\nconfig add .bashrc\nconfig commit -m \"Add bashrc\"\n```\nFor more details, see [here](https://www.atlassian.com/git/tutorials/dotfiles).\n\n## Authorship\nThis repository is maintained by [Julius Garbe](mailto:julius.garbe@pik-potsdam.de). Unless stated otherwise, the code is licensed under the [MIT License](LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliusgarbe%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliusgarbe%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliusgarbe%2Fdotfiles/lists"}