| Crates.io | nibble-rs |
| lib.rs | nibble-rs |
| version | 0.0.6 |
| created_at | 2025-12-09 12:47:53.49917+00 |
| updated_at | 2025-12-16 13:25:20.569706+00 |
| description | A tool for glamorous shell scripts. Quick, inline TUI components built with Ratatui—no full-screen takeover, just small bites of interaction. |
| homepage | |
| repository | https://github.com/Vaishnav-Sabari-Girish/nibble |
| max_upload_size | |
| id | 1975427 |
| size | 86,437 |
Table of Contents generated with DocToc
A tool for glamorous shell scripts. Quick, inline TUI components built with Ratatui—no full-screen takeover, just small bites of interaction.
This tool was inspired by gum
To view the changelog go to CHANGELOG.md for more details
cargo install nibble-rs
Currently nibble supports the following widgets
nibble block --title "Block Widget" --border rounded --border-color cyan --height 7
Gives you this output

nibble gauge -v 75 --title "Progress" --border double --fg green --modifier bold --time 120
Gives you this output

Display tabular data inline with customizable styling and multiple data formats.
This below command
nibble table --data "Name,Age,City;Alice,30,NYC;Bob,25,LA;Carol,28,SF" -t "Users" --highlight-header
Will output this

Inline Data:
nibble table --data "Name,Age,City;Alice,30,NYC;Bob,25,LA;Carol,28,SF" --title "Users" --highlight-header
From CSV File:
nibble table --file data.csv --title "CSV Data" --height 12 --border rounded --fg cyan
From JSON File:
nibble table --file users.json --title "Users" --highlight-header --border double
With Custom Column Widths:
nibble table -d "Product,Price,Stock;Laptop,999,50;Mouse,25,200" -w "50,25,25" -t "Inventory"
Supported Formats:
;) for rows and commas (,) for columns[{"name": "Alice", ...}] or array of arrays [["Name", "Age"], ["Alice", 30]]Key Options:
--data, -d: Inline data string--file, -f: Path to CSV or JSON file--headers: Custom column headers (comma-separated)--widths, -w: Column widths as percentages (comma-separated, must sum to ≤100)--highlight-header: Bold the header row--height: Table height in lines (default: 10)--title, -t: Title for the table blockExample JSON (array of objects):
[
{"name": "Alice", "age": 30, "city": "NYC"},
{"name": "Bob", "age": 25, "city": "LA"}
]
Example JSON (array of arrays):
[
["Name", "Age", "City"],
["Alice", 30, "NYC"],
["Bob", 25, "LA"]
]
Single-line text input field with support for prompts, placeholders, passwords, and character limits.
Basic Input:
nibble input --prompt "Name:" --placeholder "Enter your name"
Password Input:
nibble input --prompt "Password:" --password --border double
With Character Limit and Counter:
nibble input --prompt "Username:" --max-length 20 --show-count --border rounded --fg cyan
Pre-filled Value:
nibble input --prompt "Email:" --value "user@example.com" --show-count
Styled Input:
nibble input --title "User Input" --prompt "City:" --placeholder "New York" --border thick --fg green
Key Options:
--prompt, -r: Label text displayed before the input field--placeholder, -p: Placeholder text shown when input is empty--value, -v: Initial/pre-filled value--title, -t: Title for the input block--password: Masks input with asterisks (does not print output)--max-length, -m: Character limit--show-count, -c: Display character counter--height: Widget height in lines (default: 3)Interactive confirmation prompt with Yes/No buttons. Returns exit code 0 for Yes and 1 for No.
Basic Confirm
# Default confirm
nibble confirm
Custom Text with Custom options
# Custom Text
nibble confirm --text "Continue ?"
# Custom options
nibble confirm --text "Continue ?" --affirmative "Proceed" --negative "Cancel"
Select No by default
nibble confirm --text "Continue ?" --affirmative "Proceed" --negative "Cancel" --default-no