sitch

command module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2026 License: MIT Imports: 10 Imported by: 0

README

Sitch

Go Version Go Report Card Go Reference License Release

Blazing fast and glamorous TUI system information fetcher

Gif

Install

go install samouly.fun/sitch@latest

Run

sitch                       # print the fetch with per-distro ASCII logo
sitch --no-ascii           # print without the logo column
sitch --json                # dump a JSON snapshot of the system
sitch -c examples/minimal.toml

Build from source:

go build -ldflags='-s -w' -o sitch .

Config

Sitch reads a TOML file. Pass it with --config / -c, or just run sitch once and it writes a default file to your config directory ($XDG_CONFIG_HOME/sitch/config.toml, ~/Library/Application Support/sitch/config.toml, or %AppData%\sitch\config.toml depending on OS). Edit it and run sitch again.

Top-level keys (each has a matching flag where one exists; see the Flag reference below):

  • format ("terminal" or "json"). Default: terminal. CLI: --json / -j.
  • color_mode ("charmtone", "tty", or "custom"). Default: charmtone. CLI: --color.
  • ascii (true or false). Default: true. Set to false to disable the per-distro ASCII logo. CLI: --no-ascii / -a.
  • logo_position ("left", "right", "top", "bottom"). Default: "left". Where the ASCII logo sits relative to the Bento grid. top and bottom stack the logo above/below the grid; left and right place it in a side column. No CLI flag; set in TOML.
  • logo_justify ("top", "middle", "bottom"). Default: "top". Vertical alignment of the logo against the grid when the logo is in a side column. Only meaningful when the logo is taller than the grid; if the logo is shorter, the column simply pads with blank lines per the chosen justify. No CLI flag; set in TOML.
  • logo_size ("regular" or "small"). Default: "regular". "small" uses the fastfetch small variant if one exists for the distro (note: small variants use newer Unicode block characters that may not render in all terminals). No CLI flag; set in TOML.
  • logo_color_mode ("multi" or "single"). Default: "multi". multi cycles the active theme's palette across the logo lines (the classic fastfetch look); single paints the whole logo with one color. No CLI flag; set in TOML.
  • logo_color ("<color>"). Default: empty. The accent used when logo_color_mode = "single"; if empty, the first palette entry is used instead, and the literal "none" renders the logo transparent. Accepts hex (#rgb, #rrggbb), ANSI numbers (0-255), or terminal color names. Ignored in multi mode. No CLI flag; set in TOML.
  • truncate (true or false). Default: false. When true, clips the logo vertically so the body never grows taller than the (header + grid) — useful when the logo is much taller than the data block. CLI: --truncate.
  • logo ("<id>"). Default: empty (auto-detect from the host distro). Force a specific bundled logo by id. logo = "arch" always shows the Arch art; logo = "nixos_small" shows the small NixOS variant. Case-insensitive. Unknown ids cause a load error that lists the available ids. CLI: --logo <id>.
  • logo_file ("<path>"). Default: empty. Use a custom ASCII art file instead of any bundled logo. Takes precedence over logo and over auto-detection. Errors out at load if the path is missing or unreadable; errors at render if the file is empty. CLI: --logo-file <path>.
  • footer_align ("full" or "grid"). Default: "full". Controls how the bottom user/confetti footer aligns. The footer's right edge always lines up with the grid's right edge regardless of logo position; full lets the footer span the full composed width when the logo is on top or bottom, while grid keeps it grid-width in all cases. No CLI flag; set in TOML.
  • rows: list of rows. Each row is a list of 1 to 3 spec keys (see below). Default: the layout from config.Default(). No CLI flag.

Flag reference

Spec keys: os, host, disk, memory, kernel, uptime, gpu, igpu, cpu, packages, shell, display, desktop, terminal, os-age, locale. Anything else fails to load.

Color modes:

  • charmtone: the default palette. Use this unless you need ANSI 16 or your own colors.
  • tty: ANSI 16 colors. Picked for terminals without truecolor. The Sitch wordmark gets a blue background.
  • custom: you supply only the colors you want to style. With color_mode = "custom" you may define colors.border, colors.background, colors.header, colors.value, colors.sitch, and one colors.titles.<spec> per spec. Empty or missing values stay transparent and use your terminal's default styling. Non-empty invalid colors are rejected.

Flags override TOML where it makes sense. Every flag below is also accepted in the config file under the same name (without the leading --).

Flag Short TOML key Type Default Description
--fetch -f — bool true Print the fetch (default behavior; the flag exists for explicitness).
--json -j format = "json" bool false Force JSON output, ignoring the TOML format.
--config <path> -c — string user config dir Read a specific TOML file instead of the default.
--color <mode> — color_mode charmtone | tty unset Switch the palette for one run. Cannot pick custom because the palette lives in the file.
--no-ascii -a ascii = false bool false Hide the per-distro ASCII logo column; show only the Bento grid.
--truncate — truncate = true bool false Clip the logo vertically so the body never grows taller than the (header + grid).
--logo <id> — logo = "<id>" string empty Show the bundled logo for <id> instead of the detected distro. Case-insensitive.
--logo-file <path> — logo_file = "<path>" string empty Read ASCII art from a file. Overrides --logo and auto-detection.

Examples

examples/ has ready-to-use configs. minimal.toml is the one charmtone example and tty.toml is the one tty example. Everything else is custom with a different well-known palette:

  • minimal.toml: one column, charmtone, single-color logo (#ff985a).
  • no-ascii.toml: two-column layout, logo hidden (ascii = false).
  • ascii-minimal.toml: one-column, logo on the left, charmtone.
  • logo-right.toml: logo on the right of the grid.
  • logo-top.toml: logo above the grid.
  • logo-bottom.toml: logo below the grid.
  • logo-small.toml: small logo variant with truncate enabled.
  • logo-override.toml: forces the Arch bundled logo via logo = "arch".
  • footer-grid.toml: footer aligned to the grid box instead of full width.
  • tty.toml: ANSI 16-color palette.
  • 1-2-3-1.toml: Catppuccin Mocha.
  • 1-3-2-1.toml: Gruvbox Dark.
  • 2-3-1-2.toml: Nord.
  • 3-1-2-3.toml: Tokyo Night.
  • 3-2-1-3.toml: Dracula.
  • all-rows.toml: Kanagawa.
  • one-per-row.toml: Solarized Dark.
  • three-columns.toml: Atom One Dark.
  • custom.toml: Rose Pine.
  • json.toml: Monokai, JSON output.

Try one:

sitch -c examples/3-1-2-3.toml

Nix

NixOS package totals are exact, not estimated. Sitch scans /run/current-system, ~/.nix-profile, the XDG state profile, and /etc/profiles/per-user/<user>. The first run shells out to nix-store --query --requisites for each profile in parallel, which is slow. The result is cached at $XDG_CACHE_HOME/sitch/nix-packages.json, keyed by the resolved paths of every profile, so later runs are instant until you change a generation or move a profile.

Demo

The demo GIF is built with VHS:

go install github.com/charmbracelet/vhs@latest
vhs tapes/preview.tape

Licensed under MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
config
Package config loads Sitch's optional TOML configuration.
Package config loads Sitch's optional TOML configuration.
render
Package render formats system snapshots as a compact Bento-style dashboard.
Package render formats system snapshots as a compact Bento-style dashboard.
system
Package system collects host facts for the Sitch system fetch.
Package system collects host facts for the Sitch system fetch.
version
Package version reports the sitch build version and commit.
Package version reports the sitch build version and commit.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL