Skip to content

shellkit v1.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 15:35
· 17 commits to main since this release

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 via glab, GitHub via gh) 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 −removed line 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 new scaffolds 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 colored man.
  • 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+.
  • jq for {mr} on GitLab and for plugins.
  • Optionally glab / gh and docker, 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 zsh

See the documentation.