Skip to main content

A developer's TUI suite for Textual — themes, widgets, modals, icons, and the design system behind ltui, jtui, and sctui

Project description

🍚 ricekit

A developer's TUI suite for Textual.

The themes, widgets, modals, icons, and design rules extracted from building ltui — and now powering its whole family (jtui, sctui, same repo) — everything a fast, clean, rice-friendly terminal app needs, minus the app.

ricekit gallery

what's in the box

module contents
ricekit.themes five themes — mocha, OLED-black void, monochrome onyx, clear (transparent: your terminal's blur shows through), system (your terminal's own ANSI palette) — all sharing one $kit-* CSS variable contract, with the scrollbar/selection fixes baked in
ricekit.palette swappable chrome palette (palette.text, .dim, .blue, …) that flips to terminal ANSI colors under the system theme
ricekit.app KitApp — registers the themes, flips ansi_color for transparent themes, injects CSS variables, replaces the palette's theme command with a live-preview picker
ricekit.widgets NavList (vim keys, quiet cursor), Splitter (drag-to-resize with persistence hook, double-click reset), KitScroll, pop_in (the one sanctioned animation)
ricekit.modals PickerModal (generic chooser), ThemeModal (restyles the app live as you scroll), HelpModal (keybinding cheatsheet from plain data)
ricekit.icons curated nerd-font icons as \uXXXX escapes + unicode state glyphs (◌ ○ ◐ ◑ ● ⊘) + mini bar gauges
ricekit.fx text effects — the letter wave (Wave + wave_markup: Gheat → gHeat → …) and braille spinner frames, driven by one cheap shared ticker
ricekit.storage AppDirs — XDG state/cache/config with merge-on-save state and chmod-600 secrets
DESIGN.md the philosophy: cache-first speed, shape language, color roles, motion rules — and the appendix of Textual sharp edges that each cost a day to find

see it

uv tool install git+https://github.com/Gheat1/ricekit
ricekit-gallery

The gallery demos the palette, icons, glyphs, widgets, and modals — cycle themes with t, live-preview every Textual theme with ctrl+p, drag the divider, press ?.

use it

uv add git+https://github.com/Gheat1/ricekit   # or pip install git+…
from textual.binding import Binding
from textual.widgets import Footer

from ricekit import KitApp, icons, palette
from ricekit.storage import AppDirs
from ricekit.widgets import NavList

DIRS = AppDirs("myapp")

class MyApp(KitApp):
    BINDINGS = [Binding("t", "cycle_kit_theme", "theme")]
    CSS = """
    NavList { border: round $kit-border; }
    NavList:focus { border: round $kit-border-focus; }
    """

    def compose(self):
        yield NavList(id="items")
        yield Footer()

    def on_mount(self):
        self.init_kit(theme=DIRS.load_state().get("theme"))

    def on_kit_theme_changed(self):
        if not self.kit_theme_previewing:
            DIRS.save_state({"theme": self.theme})

That's a themed, transparent-capable, live-previewing app in ~25 lines. Read DESIGN.md before building anything serious — especially the sharp-edges table.

the suite

  • the tracker TUI suite — ltui (Linear), jtui (Jira), sctui (Shortcut); where all of this came from, now backed by Pantheon
  • NaviTui — an animated terminal player for Navidrome, cover art and all
  • yours next?

license

MIT — made by @Gheat1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ricekit-0.2.0.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ricekit-0.2.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file ricekit-0.2.0.tar.gz.

File metadata

  • Download URL: ricekit-0.2.0.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ricekit-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a9670b25e18d0788f76fcf5f4f6423a50f9b3fe4e3450917cec5eeda745e38e8
MD5 3190a75d56e93e83529da62775c3607a
BLAKE2b-256 c17fa1550c448085943542f5ca86f4acefb3e14c36f2b1525b60fdf340ca40f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ricekit-0.2.0.tar.gz:

Publisher: publish.yml on Gheat1/ricekit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ricekit-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ricekit-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ricekit-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e0fb551bd69d6fc44b800a1ce82f4f5eb53cc68e3f44beaaf0b0816bdc5c09a6
MD5 3f2151ee66dc639a670442af3df5be5e
BLAKE2b-256 e206255a4272be351beb3ca4c575bffecd48efb160005abe9638117dbcc88f02

See more details on using hashes here.

Provenance

The following attestation bundles were made for ricekit-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Gheat1/ricekit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page