shellkit v1.0.0
The first release of shellkit: a plain zsh / bash setup for Linux and macOS, with an async, themeable prompt that keeps every fact on one line and never makes you wait for the network.
Highlights
- Async prompt. Local facts are shown right away.
git fetch, the merge / pull request and its CI (GitLab viaglab, GitHub viagh) and unhealthy containers are fetched in the background, and the prompt redraws in place when they arrive. - Git at a glance. Branch, worktree, ahead / behind, changed files with a
+added −removedline count, and a rebase / merge / cherry-pick / revert / bisect in progress with its conflicts. - One info line. The right part (
{agents} · {quota}by default) ends the info line at the terminal's width, and the input line holds only the$. - Themes and blocks. The layout is a format string (
'{dir} · {git} · {mr}'), colors are roles and icons are variables. A block is a small zsh function, and slow data goes through a background cache. - Per-project settings. Another format or palette for one repository and everything below it.
- Plugins. Blocks and themes shared as git repositories. Each is checked against a JSON schema, and nothing is fetched or run until you confirm.
shkit plugin newscaffolds one. shkit. One command to change settings, create project files, manage plugins and update shellkit. Every change applies at once.- Self-updating. At shell startup, at most once a day, a clone fast-forwards to the latest release. Only versions that passed CI are installed, and local changes are never touched. Turn it off with
SHKIT_AUTO_UPDATE=false. - Shell comforts. Jump to a visited directory by its name, Esc Esc to toggle
sudo, an unlimited shared history with prefix search, and coloredman. - Bash fallback. The same options and aliases, with a deliberately minimal prompt.
- Secrets stay out. Machine settings, secrets, local aliases and themes live in
~/.config/shkit/, never in the repository.
Requirements
- Linux or macOS, zsh 5.8+ and git 2.31+.
jqfor{mr}on GitLab and for plugins.- Optionally
glab/ghanddocker, and bash 5.1+ for the fallback. - A Nerd Font (or Symbols Nerd Font as a fallback font) for the icons.
Install
git clone https://github.com/fmatsos/shellkit.git ~/shellkit
~/shellkit/zsh/install.sh
exec zshSee the documentation.