{"id":13479225,"url":"https://github.com/mattmc3/zdotdir","last_synced_at":"2025-03-16T21:30:35.626Z","repository":{"id":41361558,"uuid":"174215577","full_name":"mattmc3/zdotdir","owner":"mattmc3","description":"My zsh config","archived":false,"fork":false,"pushed_at":"2024-03-27T21:17:10.000Z","size":2356,"stargazers_count":128,"open_issues_count":0,"forks_count":24,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-03-27T22:27:50.365Z","etag":null,"topics":["dotfiles","shell","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/mattmc3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2019-03-06T20:26:01.000Z","updated_at":"2024-03-27T22:27:54.144Z","dependencies_parsed_at":"2023-12-24T19:47:43.117Z","dependency_job_id":"b914d9be-db6f-407d-842c-7524a792b79a","html_url":"https://github.com/mattmc3/zdotdir","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmc3%2Fzdotdir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmc3%2Fzdotdir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmc3%2Fzdotdir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattmc3%2Fzdotdir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattmc3","download_url":"https://codeload.github.com/mattmc3/zdotdir/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243830915,"owners_count":20354850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["dotfiles","shell","zsh"],"created_at":"2024-07-31T16:02:11.745Z","updated_at":"2025-03-16T21:30:35.310Z","avatar_url":"https://github.com/mattmc3.png","language":"Shell","funding_links":[],"categories":["Shell","HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# zdotdir\n\nMy `$ZDOTDIR` [dotfiles] directory, which contains my zsh configuration.\n\n## My Terminal\n\n![My Terminal][zdotdir_gif]\n\n## My setup\n\nI like my Zsh to behave like [Fish][fish], so there's a lot of features that will be very familiar to other Fish users.\n\n- A functions directory for my custom functions\n- A completions directory for my custom functions\n- A conf.d directory so that .zshrc isn't a cluttered mess\n- A plugins directory similar to [oh-my-zsh] for adding/removing shell features\n\n## Installation\n\nSince this is my personal `$ZDOTDIR`, this installation procedure is mostly for my personal use.\n\nIt's a good idea to backup existing files first:\n\n```zsh\nsetopt extended_glob\nzfiles=(\n  ${ZDOTDIR:-~}/.zsh*(.N)\n  ${ZDOTDIR:-~}/.zlog*(.N)\n  ${ZDOTDIR:-~}/.zprofile(.N)\n)\nmkdir -p ~/.bak\nfor zfile in $zfiles; do\n  cp $zfile ~/.bak\ndone\nunset zfile zfiles\n```\n\nInstall this dotfiles repo to your `$ZDOTDIR`:\n\n```zsh\n# set the amazing ZDOTDIR variable\nexport ZDOTDIR=~/.config/zsh\n\n# clone this repo\ngit clone --recursive git@github.com:mattmc3/zdotdir.git $ZDOTDIR\n\n# change the root .zshenv file to use ZDOTDIR\ncat \u003c\u003c 'EOF' \u003e| ~/.zshenv\nexport ZDOTDIR=~/.config/zsh\n[[ -f $ZDOTDIR/.zshenv ]] \u0026\u0026 . $ZDOTDIR/.zshenv\nEOF\n\n# load zsh\nzsh\n```\n\n## Performance\n\nA snappy shell is very important. I regularly run [zsh-bench](https://github.com/romkatv/zsh-bench) to make sure my shell feels snappy.\n\nThe latest benchmark run shows that we load a new shell pretty fast.\n\n```zsh\n% # MacBook Air (M3, 2024): starship prompt\n% zsh-bench\n==\u003e benchmarking login shell of user matt ...\ncreates_tty=0\nhas_compsys=1\nhas_syntax_highlighting=1\nhas_autosuggestions=1\nhas_git_prompt=1\nfirst_prompt_lag_ms=130.800\nfirst_command_lag_ms=139.313\ncommand_lag_ms=126.693\ninput_lag_ms=11.314\nexit_time_ms=65.501\n\n% # MacBook Air (M3, 2024): p10k prompt\n==\u003e benchmarking login shell of user matt ...\ncreates_tty=0\nhas_compsys=1\nhas_syntax_highlighting=1\nhas_autosuggestions=1\nhas_git_prompt=1\nfirst_prompt_lag_ms=13.365\nfirst_command_lag_ms=125.555\ncommand_lag_ms=47.757\ninput_lag_ms=8.953\nexit_time_ms=70.038\n```\n\nIf you prefer a naive, completely meaningless Zsh 'exit' benchmark, I include that too for legacy reasons.\n\n```zsh\n% # MacBook Air (M3, 2024)\n% for i in {1..10}; do; /usr/bin/time zsh -lic exit; done\n        0.09 real         0.03 user         0.02 sys\n        0.07 real         0.02 user         0.01 sys\n        0.06 real         0.02 user         0.01 sys\n        0.07 real         0.02 user         0.01 sys\n        0.07 real         0.02 user         0.01 sys\n        0.06 real         0.02 user         0.01 sys\n        0.07 real         0.02 user         0.01 sys\n        0.07 real         0.02 user         0.01 sys\n        0.06 real         0.02 user         0.01 sys\n        0.07 real         0.02 user         0.01 sys\n```\n\n## Look-and-feel\n\n### Fonts\n\nInstall [nerd fonts][nerd-fonts] via homebrew:\n\n```zsh\nbrew tap homebrew/cask-fonts\nbrew install --cask font-meslo-lg-nerd-font\nbrew install --cask font-fira-code-nerd-font\nbrew install --cask font-hack-nerd-font\nbrew install --cask font-inconsolata-nerd-font\nbrew install --cask font-sauce-code-pro-nerd-font\n```\n\n### Color schemes\n\niTerm2 has some awesome [color schemes][iterm2-colors]. You can use them for more than\njust iTerm2.\n\nI use Space Gray:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"space gray\" src=\"https://github.com/mbadolato/iTerm2-Color-Schemes/blob/master/screenshots/space_gray.png?raw=true\"/\u003e\n\u003c/p\u003e\n\n## Resources\n\n- [fish][fish]\n- [antidote][antidote]\n- [zephyr][zephyr]\n- [zshzoo][zshzoo]\n- [zsh_unplugged][zsh_unplugged]\n- [prezto][prezto]\n- [oh-my-zsh][oh-my-zsh]\n- [supercharge your terminal with zsh][supercharge-zsh]\n- [awesome zsh][awesome-zsh-plugins]\n\n[antidote]:             https://github.com/mattmc3/antidote\n[awesome-zsh-plugins]:  https://github.com/unixorn/awesome-zsh-plugins\n[fish]:                 https://fishshell.com\n[dotfiles]:             https://dotfiles.github.io/\n[homebrew]:             https://brew.sh\n[iterm2-colors]:        https://github.com/mbadolato/iTerm2-Color-Schemes\n[nerd-fonts]:           https://github.com/ryanoasis/nerd-fonts\n[oh-my-zsh]:            https://github.com/ohmyzsh/ohmyzsh\n[prezto]:               https://github.com/sorin-ionescu/prezto\n[starship-toml]:        https://github.com/mattmc3/zdotdir/blob/main/prompt/starship.toml\n[starship]:             https://starship.rs\n[supercharge-zsh]:      https://blog.callstack.io/supercharge-your-terminal-with-zsh-8b369d689770\n[zdotdir_gif]:          https://raw.githubusercontent.com/mattmc3/zdotdir/resources/img/zdotdir.gif\n[zephyr]:               https://github.com/zshzoo/zephyr\n[zsh_unplugged]:        https://github.com/mattmc3/zsh_unplugged\n[zshzoo]:               https://github.com/zshzoo/zshzoo\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattmc3%2Fzdotdir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattmc3%2Fzdotdir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattmc3%2Fzdotdir/lists"}