{"id":20426147,"url":"https://github.com/warbacon/zunder-zsh","last_synced_at":"2026-03-08T16:31:13.703Z","repository":{"id":50487251,"uuid":"441279901","full_name":"warbacon/zunder-zsh","owner":"warbacon","description":"⚡ A minimalistic zsh configuration with sane defaults.","archived":false,"fork":false,"pushed_at":"2024-11-23T20:19:02.000Z","size":3598,"stargazers_count":39,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T19:06:06.504Z","etag":null,"topics":["command-line","shell","shell-script","terminal","termux","zsh","zsh-configuration","zsh-custom","zsh-theme"],"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/warbacon.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,"publiccode":null,"codemeta":null}},"created_at":"2021-12-23T19:42:40.000Z","updated_at":"2025-04-06T07:13:40.000Z","dependencies_parsed_at":"2023-12-29T15:25:09.468Z","dependency_job_id":"4d2a21b5-b890-489b-86ef-d33b63624b45","html_url":"https://github.com/warbacon/zunder-zsh","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/warbacon%2Fzunder-zsh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warbacon%2Fzunder-zsh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warbacon%2Fzunder-zsh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warbacon%2Fzunder-zsh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/warbacon","download_url":"https://codeload.github.com/warbacon/zunder-zsh/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618276,"owners_count":21134200,"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":["command-line","shell","shell-script","terminal","termux","zsh","zsh-configuration","zsh-custom","zsh-theme"],"created_at":"2024-11-15T07:15:39.224Z","updated_at":"2026-03-08T16:31:13.657Z","avatar_url":"https://github.com/warbacon.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚡ Zunder-zsh\n\nZunder-zsh is a minimalistic zsh configuration with sane defaults.\n\n![Preview](./assets/preview.gif)\n\n\u003e [!IMPORTANT]\n\u003e Zunder-zsh 4.0 has been available for a while now, but it might be\n\u003e interesting for everyone to \n\u003e [read the release](https://github.com/warbacon/zunder-zsh/discussions/16) to\n\u003e see its improvements and drawbacks.\n\n## 🚩 Goals\n\n- Straightforward transition from _bash_.\n- Quick and **trouble-free** installation.\n- Responsive typing.\n- Fastest possible startup time without sacrificing functionality.\n- Provide **only completely necessary functionality** and be **easy to\n  extend**.\n\n## 💡 Features\n\n- Syntax highlighting and autosuggestions.\n- Automatic installation.\n- Sensible keybindings.\n- Smarter completions.\n- [Exa](https://github.com/eza-community/eza) integration.\n- Extra fast and minimalistic integrated plugin manager. See\n  [Zap](https://github.com/zap-zsh/zap).\n\n### Plugins\n\n- [spaceship-prompt](https://spaceship-prompt.sh) - Minimalistic, powerful and\n  extremely customizable zsh prompt. I provide a configuration file to make it\n  more performant and less noisy.\n- [zsh-syntax-highlighting](https://github.com/zsh-users/zsh-syntax-highlighting) -\n  Fish shell like syntax highlighting for zsh.\n- [zsh-autosuggestions](https://github.com/zsh-users/zsh-autosuggestions) -\n  Fish-like fast/unobtrusive autosuggestions for zsh.\n- [zsh-completions](https://github.com/zsh-users/zsh-completions) - Additional\n  completion definitions for zsh.\n- [command-not-found](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/command-not-found)\n  plugin from Oh My Zsh - Provide suggested packages to be installed if a\n  command cannot be found.\n\n\u003e [!NOTE]\n\u003e I provide a `plug-defer` function to Zap to defer loading of heavy plugins\n\u003e and improve startup times. It uses [romkatv's\n\u003e zsh-defer](https://github.com/romkatv/zsh-defer).\n\n### Aliases\n\n| Alias | Description                                                                |\n| ----- | -------------------------------------------------------------------------- |\n| ll    | Long list directory contents. Uses exa if installed.                       |\n| la    | List directory contents with hidden files. Uses exa if installed.          |\n| lla   | Long list directory contents with hidden files. Uses exa if installed.     |\n| lt    | Displays the directory tree in the current directory. Uses `tree` or `exa`.|\n\n## 🤔 Why should I use it?\n\nZunder-zsh has been designed so that any user can use it almost instantly\nwithout having to learn new things, just run the script and you are ready to\ngo. There are no unnecessary things and everything works fast.\n\n### Zunder-zsh vs Oh My Zsh\n\nOh My Zsh is a framework, **zunder-zsh isn't**. This means that while Oh My Zsh\nrequires you to configure your shell how they want, zunder-zsh doesn't, since\nits level of abstraction is very low, making it so that anyone can understand\nwhat is happening behind the scenes and can be modified in the way you prefer.\n\nThat means that zunder-zsh doesn't support updates, as is designed so that any\nuser can modify the configuration as desired. However, if you are a user who\nmakes very few modifications, you can use a method to upgrade directly without\nlosing your custom settings. See [File\nStructure](https://github.com/warbacon/zunder-zsh?tab=readme-ov-file#-file-structure).\n\n## 💊 Compatibility\n\nAlthough zunder-zsh can run on any POSIX-compliant operating system, the\ninstallation script will have more functionality on the following operating\nsystems:\n\n- Arch Linux and derivatives (EndeavourOS, Manjaro, etc.).\n- Debian and derivatives (Ubuntu, Linux Mint, etc.).\n- Fedora and derivatives (NobaraOS, Ultramarine Linux, etc.).\n- OpenSUSE and derivatives (Tumbleweed, Leap, GeckoLinux, etc.).\n- Void Linux.\n- MacOS.\n- Android (using [termux](https://termux.dev)).\n\n**Works also in wsl**, but syntax highlighting will be disabled because it\nproduces input lag when typing.\n\n## 🚀 Getting started\n\n### Nerd fonts\n\nDepending on your operating system, the required icons will be installed if\nneeded, but may require additional configuration.\n\nIf the icons are not displayed correctly and you don't want to troubleshoot,\ninstall a [Nerd Font](https://www.nerdfonts.com/) and set it as the default\nfont in your terminal emulator.\n\n\u003e I recommend JetBrainsMono Nerd Font\n\nYou can use\n[Termux:Styling](https://f-droid.org/es/packages/com.termux.styling) on Android\nand set as font, for example, Fira Code.\n\n### Testing\n\nThere is a public docker image on Docker Hub that allows testing zunder-zsh in\nan isolated environment.\n\nYou can test it using this command with `docker` installed:\n\n```sh\ndocker run -it --rm warbacon/zunder-zsh:latest\n```\n\n### Installation\n\n1. Clone this repository locally:\n\n    ```sh\n    git clone https://github.com/warbacon/zunder-zsh.git\n    ```\n\n2. Enter the cloned repository and run the install script:\n\n    ```sh\n    cd ./zunder-zsh\n    ./install.sh\n    ```\n\n## 📁 File Structure\n\n\u003cpre\u003e\n~\n├──/.zsh_history  \u003c- zsh history\n├──/.zshenv       \u003c- environment variables\n├──/.zshrc        \u003c- main configuration\n│\n├──/.config/zunder-zsh\n│           ├── spaceship.zsh   \u003c- spaceship config\n│           ├── after.zsh       \u003c- loads after main config\n│           ├── before.zsh      \u003c- loads before main config\n│           └──/functions       \u003c- extra useful functions\n│               └── ...\n│\n├──/.cache/zsh\n│          ├── .zcompdump       \u003c- completions cache\n│          └── .zcompdump.zwc   \u003c- compiled version\n│\n└──/.local/share/zap          \u003c- installed plugins\n                 └── ...\n\u003c/pre\u003e\n\nThe `~/.config/zunder-zsh` directory and its files are not created\nautomatically. They are intended to extend zunder-zsh easily without modifying\nthe main configuration.\n\n- `before.zsh` loads after the Zap initialization but before all the main\n  configuration. Here, you should write additional plugins you want to add and\n  zunder-zsh specific options.\n\n- `after.zsh` loads after all the main configuration. Here, you should write\n  all your additional configurations.\n\n## 🎨 Customizing zunder-zsh\n\n### Zunder-zsh specific options\n\n\u003e [!IMPORTANT]\n\u003e These variables must be set in your `before.zsh`!\n\nUsage:\n\n```sh\n# ~/.config/zunder-zsh/before.zsh\n\nDISABLE_AUTOSUGGESTIONS=true    # zsh-autosuggestions will be disabled\n```\n\n| Variable                     | Description                                      | Default value          |\n| ---------------------------- | ------------------------------------------------ | ---------------------- |\n| DISABLE_AUTOSUGGESTIONS      | Disables zsh-autosuggestions.                    | \"\" (true in Linux tty) |\n| DISABLE_SPACESHIP_PROMPT     | Disables spaceship-prompt.                       | \"\"                     |\n| DISABLE_EXA                  | Disables exa/eza integration.                    | \"\"                     |\n| SYNTAX_HIGHLIGHTING_PROVIDER | Changes the plugin used for syntax highlighting  | \"\" (\"none\" in WSL)     |\n\n\u003e [!NOTE]\n\u003e Allowed values for `SYNTAX_HIGHLIGHTING_PROVIDER`:\n\u003e `zsh-syntax-hightlighting`, `fast-syntax-highlighting` and `none`.\n\n### Exa integration\n\nZunder-zsh will enable exa integration automatically if `exa` is installed.\n**You must install `exa` or `eza` manually** for this to happen. You can force\nit to be disabled by setting `DISABLE_EXA` to `true` in your `before.zsh`.\n\n### Fzf integration\n\n\u003e [!IMPORTANT]\n\u003e You need to install `fzf` manually\n\n```sh\n[[ -n \"$commands[fzf]\" ]] \u0026\u0026 eval \"$(fzf --zsh)\"\n```\n\nThis enables the integration of fzf into zsh, making it possible to use the\nfollowing keybindings:\n\n| Keybinding | Description                                   |\n| ---------- | --------------------------------------------- |\n| Ctrl+r     | Search history of shell commands.             |\n| Ctrl+t     | List files and folders in current directory.  |\n| Alt+c      | Fuzzy change directory.                       |\n\n## 🔧 Troubleshooting\n\n**If you find any error in zunder-zsh, I would appreciate if you open an issue\nand I will try to help you as soon as possible.**\n\nIf you didn't like it or want to go back to your previous configuration, you\ncan run the `uninstall.sh` script located in this same repository:\n\n```sh\n./uninstall.sh\n```\n\nAdditionally, if you used previously another shell, you can revert it using the\nfollowing command:\n\n```sh\nsudo usermod -s $(which bash) $USER\n```\n\nYou can change bash for the shell of your choice.\n\n## 🤝 I need you\n\nIf you encounter any issue or have any suggestions, please don't hesitate to\ncontact me. I'm open to any discussion and **I'll be happy to help!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwarbacon%2Fzunder-zsh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwarbacon%2Fzunder-zsh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwarbacon%2Fzunder-zsh/lists"}