An open API service indexing awesome lists of open source software.

https://github.com/shyndman/zush

Mid-performance ZSH configuration framework with instant prompts and lazy loading. Features plugin management, auto-compilation, and sub-200ms startup times. 🦥
https://github.com/shyndman/zush

dotfiles plugin-manager shell zsh zshrc zwc

Last synced: about 1 month ago
JSON representation

Mid-performance ZSH configuration framework with instant prompts and lazy loading. Features plugin management, auto-compilation, and sub-200ms startup times. 🦥

Awesome Lists containing this project

README

          

# Zush 🦥 - Mid-Performance ZSH Configuration

[![pre-commit](https://github.com/shyndman/zush/actions/workflows/pre-commit.yml/badge.svg?branch=main)](https://github.com/shyndman/zush/actions/workflows/pre-commit.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Shell: zsh](https://img.shields.io/badge/Shell-zsh-informational)](https://www.zsh.org/)

My personal ZSH configuration framework.

A performance-aware ZSH configuration designed for sub-200ms startup times while maintaining full functionality.

## Installation

```bash
curl -fsSL https://raw.githubusercontent.com/shyndman/zush/main/install.sh | zsh
```

## Features

- **Instant Prompts** - Basic prompt appears immediately, full prompt loads after ~129ms
- **Plugin Management** - Simple `zushp user/repo` command to install GitHub plugins
- **Lazy Loading** - Tools like nvm, pyenv, cargo load only when needed
- **Auto-compilation** - All ZSH files compiled with zcompile for faster loading
- **Smart Caching** - Environment changes cached for instant startup

## Commands

```bash
zushp user/repo # Install plugin
zushp_update # Update all plugins
zush_clean # Clean all caches and plugins
```

## Development

### Pre-commit checks

1. Install the tooling dependencies: `pre-commit`, `shellcheck`, and `shfmt` (Homebrew: `brew install pre-commit shellcheck shfmt`).
2. Enable hooks locally with `pre-commit install`.
3. Run everything once before sending a PR: `pre-commit run --all-files`.

Hooks currently enforce:
- `shellcheck` (with Zsh-friendly flags) on rc.d scripts, `home/.zshenv`, `install.sh`, and any shell helpers under `scripts/`.
- `shfmt --diff` on Bash-compatible scripts (`install.sh`, `scripts/*.sh`).
- `zsh -n` syntax validation across `.zsh/.sh` sources plus completions.
- A `zcompile` dry run on `lib/*.zsh`, `rc.d/*.zsh`, and `home/.zshenv` to ensure everything remains compilable.

## Performance

Current startup time: ~129ms with instant prompts providing immediate visual feedback.

---

*Mid-performance by design. 🦥*