• Stars
    star
    154
  • Rank 242,095 (Top 5 %)
  • Language
    Shell
  • License
    MIT License
  • Created over 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

My zsh config

zdotdir

My $ZDOTDIR dotfiles directory, which contains my zsh configuration.

My Terminal

My Terminal

My setup

I like my Zsh to behave like Fish, so there's a lot of features that will be very familiar to other Fish users.

  • A functions directory for my custom functions
  • A completions directory for my custom functions
  • A conf.d directory so that .zshrc isn't a cluttered mess
  • A plugins directory similar to oh-my-zsh for adding/removing shell features

Installation

Since this is my personal $ZDOTDIR, this installation procedure is mostly for my personal use.

It's a good idea to backup existing files first:

setopt extended_glob
zfiles=(
  ${ZDOTDIR:-~}/.zsh*(.N)
  ${ZDOTDIR:-~}/.zlog*(.N)
  ${ZDOTDIR:-~}/.zprofile(.N)
)
mkdir -p ~/.bak
for zfile in $zfiles; do
  cp $zfile ~/.bak
done
unset zfile zfiles

Install this dotfiles repo to your $ZDOTDIR:

# set the amazing ZDOTDIR variable
export ZDOTDIR=~/.config/zsh

# clone this repo
git clone --recursive [email protected]:mattmc3/zdotdir.git $ZDOTDIR

# change the root .zshenv file to use ZDOTDIR
cat << 'EOF' >| ~/.zshenv
export ZDOTDIR=~/.config/zsh
[[ -f $ZDOTDIR/.zshenv ]] && . $ZDOTDIR/.zshenv
EOF

# load zsh
zsh

Performance

A snappy shell is very important. My config includes a zbench alias that runs zsh 10 times and presents the timings.

The latest benchmark run shows that we load a new shell pretty fast.

% # MacBook Air (M1, 2020)
% for i in $(seq 10); do; /usr/bin/time zsh -lic exit; done
        0.06 real         0.03 user         0.02 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.02 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.01 sys
        0.04 real         0.02 user         0.01 sys

% # pure prompt
% zsh-bench
==> benchmarking login shell of user matt ...
creates_tty=0
has_compsys=1
has_syntax_highlighting=0
has_autosuggestions=1
has_git_prompt=0
first_prompt_lag_ms=17.076
first_command_lag_ms=83.892
command_lag_ms=57.657
input_lag_ms=5.708
exit_time_ms=43.770

Look-and-feel

Fonts

Install nerd fonts via homebrew:

brew tap homebrew/cask-fonts
brew install --cask font-meslo-lg-nerd-font
brew install --cask font-fira-code-nerd-font
brew install --cask font-hack-nerd-font
brew install --cask font-inconsolata-nerd-font
brew install --cask font-sauce-code-pro-nerd-font

Color schemes

iTerm2 has some awesome color schemes. You can use them for more than just iTerm2.

I use Space Gray:

space gray

Resources

More Repositories

1

antidote

https://getantidote.github.io - the cure to slow zsh plugin management
Shell
812
star
2

zsh_unplugged

๐Ÿค” perhaps you don't need a Zsh plugin manager after all...
Shell
343
star
3

neovim-cheatsheet

Google Sheets docs for neovim/vim cheatsheets and tutorials supporting multiple alternative keyboard layouts
JavaScript
309
star
4

zephyr

๐ŸŒฌ๏ธ A Zsh framework as nice as a cool summer breeze
Shell
108
star
5

dotmore

The core .NET libraries are missing some really handy common things. dotmore brings them to you.
C#
40
star
6

keyboard-tools

โŒจ๏ธ My tools for keyboarding with Colemak, and other sweet tasty goodness
Vim Script
39
star
7

zshrc.d

Load config files from a zshrc.d directory
Shell
27
star
8

fishconf

๐ŸŸ ๐Ÿš My fish config
Shell
22
star
9

zsh-safe-rm

Zsh plugin to add safe-rm functionality so that `rm` will put files in the trash.
Shell
21
star
10

zfunctions

Use a zfunctions directory for lazy loaded (autoload) zsh functions - similar to fish shell
Shell
20
star
11

zman

Use fzf to quickly browse Zsh manuals
Shell
20
star
12

dotfiles

Make everywhere feel like `$HOME`
Shell
15
star
13

magic-enter.fish

A fish shell plugin to run a default command when none was given
Shell
12
star
14

taskpaper-themes

Themes for TaskPaper
Less
10
star
15

ztap

An implementation of the Test Anything Protocol for unit testing Zsh using pure Zsh
Shell
7
star
16

dict.fish

Treat a key/value paired array like a dictionary in Fish
Shell
6
star
17

mac.bak

Bash rsync backup utility to grab files off my Mac
Shell
6
star
18

prezto-prompt-contrib

Additional popular prompt themes for Prezto
Shell
6
star
19

zebrafish

A powerful starter .zshrc
Shell
6
star
20

reel

A simple, elegant, clutter-free git plugin manager for the fish shell
Shell
3
star
21

zsh_custom

My oh-my-zsh plugins
Shell
3
star
22

frame-geometry

Spacemacs Layer to save and restore your window positioning across sessions
Emacs Lisp
2
star
23

alfred-timestamp

Alfred workflow for various date/time operations
Python
2
star
24

str

A modern command line string utility
Go
2
star
25

xonsh-dotfiles

My Xonsh shell config
Xonsh
1
star