Nymph is a lightweight terminal system summary tool (fetch utility) written in Nim, with optional Kitty graphics logos, theming, and JSON output.
- Fast startup and minimal dependencies
- PNG logos via Kitty graphics protocol (with ASCII fallback)
- Customizable output: themes, icon packs, layouts, and modules
- RAM usage level bar with percentage and numeric usage
- Script-friendly JSON mode
- Built-in diagnostics mode for setup troubleshooting
- Nim
>= 2.0.0 - Nimble
nimble releaseThis creates ./bin/nymph.
nim c -r src/nymph.nimRun with defaults:
./bin/nymphTry a different look:
./bin/nymph --theme nord --icon-pack ascii --layout compactUse only selected modules:
./bin/nymph --modules os,kernel,packages,memoryOutput JSON for scripts/status bars:
./bin/nymph --jsonCheck diagnostics:
./bin/nymph --doctor--logo <name|/full/path.png>: use a logo by name or absolute/relative PNG path--no-color/--no-colors: disable ANSI colors--json: print machine-readable JSON and exit--doctor: print environment/config/logo diagnostics and exit--theme <name>:catppuccin,nord,gruvbox,plain--icon-pack <name>:nerd,ascii,mono--layout <name>:full,compact,minimal--modules <csv>: explicit module list (example:os,kernel,packages,memory)--list-themes: print supported themes--list-icon-packs: print supported icon packs-h,--help: show help
NYMPH_LOGO=<name>: default logo name overrideNYMPH_LOGO_DIR=/path/to/logos: extra logo search directoryNYMPH_CONFIG=/path/to/config.conf: custom config file path
On first run, Nymph creates:
~/.config/nymph/config.conf~/.config/nymph/logos/
Supported config.conf keys:
maxwidth: max logo width in pixels (default200)statsoffset: stats start column (default22, with auto padding)nocolor:trueorfalsecustomlogo: full path to PNG logo filetheme:catppuccin|nord|gruvbox|plainiconpack:nerd|ascii|monolayout:full|compact|minimalmodules: comma-separated module listjson:trueorfalse(default output mode)
Example:
maxwidth = 220
statsoffset = 26
theme = nord
iconpack = nerd
layout = compact
modules = os,kernel,packages,memory,uptime
json = false
nocolor = false
customlogo = ""Available modules:
oskerneldesktoppackagesshelluptimememorycolours(alias:colors)
Layout defaults:
full: all modules + color rowcompact:os,kernel,desktop,packages,memory,uptimeminimal:os,kernel,packages,memory
The memory module shows both numeric usage and a compact level bar:
Memory: ██░░░░░░░░ 16% 5.10GiB
The bar uses Nerd Font block glyphs with theme colors by default, and falls back to plain ASCII when --no-color, the plain theme, or a non-Nerd icon pack is active.
Nymph searches for <name>.png in this order:
src/logos/(source tree)logos/(project root)~/.config/nymph/logos/$NYMPH_LOGO_DIR<app_dir>/logos<app_dir>/../share/nymph/logos
Notes:
--logo <name>selects a discovered logo name--logo /path/logo.pnguses that file directlycustomlogoin config is used when CLI logo path is not provided- If no PNG is found or Kitty graphics is unavailable, Nymph falls back to built-in ASCII art
--json returns keys such as:
os,kernel,desktop,shell,uptime,memorymemory_info.known,memory_info.used_kib,memory_info.total_kib,memory_info.percentpackages.totalpackages.sources(per-manager counts)theme,icon_pack,layout,modulesno_color,kitty_graphicslogo.name,logo.path,logo.width,logo.height,logo.ascii_fallback
Run smoke tests:
bash scripts/smoke.shThis validates:
- baseline run
- color toggle
- logo overrides
- theme/icon/layout/modules options
- doctor mode
- JSON mode
- theme/icon-pack listings
MIT. See LICENSE.
