shellkit

shellkit

A plain zsh / bash setup for Linux and macOS, with an async, themeable prompt that never makes you wait for the network.

  • Linux
  • macOS
  • no framework
  • public domain
The shellkit hermit crab, in sunglasses, dancing on the beach at sunset with its wrench raised

Every fact on one line

Local facts show up right away. The merge request and its CI come from the network: the prompt redraws in place when they land, no Enter needed.

  • ~35 mszsh startup
  • < 50 msprompt, even on a huge repo
  • 0frameworks: plain zsh

Shell out, crab in

Everything a busy shell needs, nothing it doesn't. Each block stays quiet until it has something to say.

  • The crab surfing a huge wave on a surfboard shaped like a terminal window

    Async prompt

    git fetch, the MR / PR and its CI, unhealthy containers: fetched in the background, drawn when they arrive.

  • The crab juggling glowing git branches under a disco ball

    Git at a glance

    Branch, worktree, ahead / behind, a diff stat, a rebase in progress, the branch's ticket and its review.

  • The crab painting its own shell with rainbow stripes

    Themes & blocks

    A format string like '{dir} · {git}', color roles, icon variables, blocks as small zsh functions.

  • A party of hermit crabs swapping colorful shells, puzzle pieces floating above them

    Plugins

    Blocks and themes shared as git repositories, checked against a schema. Nothing runs until you say yes.

And a few more tricks

  • shkit: one command to change settings, create project files, manage plugins and run shkit doctor. Changes apply at once.
  • Long commands notify you: a desktop notification when one ends after 30 s.
  • Shell comforts: jump to a visited directory by name, Esc Esc toggles sudo, shared unlimited history, colored man.
  • Self-updating: daily, from releases that passed CI only. Local changes are never touched.
  • Bash fallback: the same options and aliases, with a deliberately minimal prompt.
  • Secrets stay out: tokens and machine settings live in ~/.config/shkit/, never in the repository.

Quick start

  1. Clone and install

    Links ~/.zshrc and ~/.zshenv, creates ~/.config/shkit.

    $ git clone https://github.com/fmatsos/shellkit.git ~/shellkit
    $ ~/shellkit/zsh/install.sh
    $ exec zsh
  2. Shape the prompt

    No shell file to edit by hand.

    $ shkit set format '{dir} · {git} · {mr}'   # the info line
    $ shkit set color_accent '38;5;33'           # a color role
    $ shkit project                              # this repository only…
    $ shkit set -p format '{dir} · {git}'        # …here and below
    $ shkit show                                 # what is set, where
  3. Check everything

    Versions, locale, font, tools and files.

    $ shkit doctor

Needs zsh 5.8+ (bash 5.1+ for the fallback), git and jq; a Nerd Font for the icons. See every requirement.