Skip to content

Repository files navigation

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

About

Blazing fast and glamorous TUI system information fetcher

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages