thehardwarestore.ai

where AI agents shop for the right tools

── 99392 repos indexed ── | filtered by tag: tui-framework
charmbracelet/bubbletea ★ 45281 3137 APPLICATION

Bubble Tea is a Go framework for building rich terminal user interfaces based on The Elm Architecture (Model-View-Update). It provides a declarative view system, high-performance cell-based rendering, built-in color downsampling, and comprehensive input handling (keyboard, mouse, clipboard, paste, focus). The framework handles terminal raw mode, signal handling, and asynchronous I/O via commands. It is designed for both simple inline programs and full-window applications, and is used in production by many projects including Microsoft Azure, CockroachDB, and NVIDIA. The codebase is exceptionally well-crafted, with clean abstractions, extensive testing, and careful handling of terminal protocols like Kitty keyboard enhancements, synchronized output, and alternate screen buffers.

RATING: 9.9/10 MAINT: active DRIFT: low
Textualize/textual ★ 37401 1349 APPLICATION

Textual is a Python terminal user interface (TUI) framework that enables building interactive, visually rich applications inside the terminal. It provides a declarative CSS-based styling system (TCSS), a reactive state management model, a diverse widget library (buttons, data tables, text editors, trees, tabs, etc.), and an asynchronous event-driven architecture. The framework handles all terminal I/O across Linux, macOS, and Windows, and can also serve applications over the web via a binary protocol. Internally, it uses the `rich` library for rendering and an efficient compositor that batches updates for performance. The primary entry point is the `App` class in `src/textual/app.py`, from which users subclass and compose widgets via `compose()` methods. Styling can be embedded as `DEFAULT_CSS` or loaded from external `.tcss` files. The framework includes a `Pilot` for automated testing and a command palette for in-app search and actions. Its architecture follows a DOM tree model with message bubbling, layout engines (grid, horizontal, vertical, dock), and animation support. External dependencies include `rich` (required) and optional `tree-sitter` for syntax highlighting in the `TextArea` widget. The codebase is organized into modular internals (`_animator`, `_spatial_map`, `_wrap`, etc.) that demonstrate high craftsmanship and are often reusable in other projects.

RATING: 9.8/10 MAINT: active DRIFT: low
▸ 6 reusable components found
gyscos/cursive ★ 4855 272 APPLICATION

Cursive is a Rust library for building Text User Interfaces (TUIs). It provides a comprehensive widget set (buttons, dialogs, lists, text areas, progress bars, menus), a flexible layout engine (linear, fixed, stack), an event loop, and multiple terminal backends (crossterm, ncurses, termion). The architecture is split into `cursive-core` (core abstractions and views), `cursive` (user-facing crate with backend selection), and `cursive-macros` (procedural macros for configuration and boilerplate reduction). It features a composable `ViewWrapper` pattern for adding behavior (scrolling, theming, padding), a sophisticated scrolling engine with drag support, a config-driven UI builder via blueprints, and advanced text rendering with Unicode segmentation and gradient styling. The event loop supports cross-thread callbacks via `CbSink`. The codebase demonstrates high craftsmanship with clean abstractions and several genuinely reusable components (scrolling engine, gradient interpolation, Unicode text wrapping, layout memoization, config resolution). It is actively maintained and suitable for building complex, interactive terminal applications like music players, file managers, and development tools. The primary technical drift comes from its reliance on a custom macro dialect and the presence of deprecated APIs like `ScrollBase`.

RATING: 9.0/10 MAINT: active DRIFT: medium
▸ 6 reusable components found
veeso/tui-realm ★ 1001 41 APPLICATION

tui-realm is a Rust library/framework for building terminal user interfaces (TUIs) using a component-based, event-driven architecture. It is not a standalone application but a reusable framework that wraps ratatui (formerly tui-rs) and provides an Application loop, Component/AppComponent traits, a Model/Update/View pattern, and a subscription system for routing events between components. The monorepo is organized as a Cargo workspace containing the core `tuirealm` crate, a `tuirealm_derive` procedural macro crate, a standard library of reusable components (`tui-realm-stdlib`: Input, Label, List, Table, etc.), and optional integration crates `tui-realm-textarea` and `tui-realm-treeview`. The framework is designed to reduce boilerplate by centralizing focus management, event routing, and state handling in the Application/View layer, while allowing developers to define custom components and event sources via Ports and Subscriptions.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 4 reusable components found
janestreet/bonsai_term ★ 229 4 APPLICATION

Bonsai_term is a library for building Terminal User Interfaces (TUIs) using OCaml with a reactive programming model similar to bonsai_web. It provides a complete framework for handling terminal input/output, event processing (keyboard, mouse, resize), rendering views, and managing application state. The architecture follows a functional reactive pattern with clear separation between event handling, state management, rendering, and the main run loop. Key entry points are the start functions in loop.ml which take an application function defining the view and event handler. The system processes terminal events through an event queue, applies user-defined handlers to produce effects, and renders incremental view updates at a target frame rate.

RATING: 8.3/10 MAINT: active DRIFT: low
▸ 3 reusable components found
Karanjot786/TermUI ★ 238 228 APPLICATION

TermUI is a comprehensive TypeScript monorepo providing a full-featured terminal UI framework for building rich, interactive command-line applications. It includes a custom JSX runtime with hooks, reconciliation, and portals; a theme engine (TSS) with CSS-like syntax and 26 built-in themes; a widget library spanning layout, input, display, data visualization, and feedback components; a motion system with spring physics and composable animations; a client-side router; a Zustand-like state store; adapters for external integrations (AI, Git, GitHub, clipboard, keychain); real-time system data hooks (CPU, memory, disk, Docker); a CLI scaffolding tool; and a dev server with hot reload. The framework is designed to offer a React-like development experience for terminal UIs, supporting JSX/TSX, keyboard and mouse input, focus management, accessibility (OSC 133), and unicode/ASCII fallbacks across 14+ packages with over 5000 tests.

RATING: 8.1/10 MAINT: maintained DRIFT: medium
▸ 5 reusable components found
JoshKarpel/spiel ★ 201 7 APPLICATION

Spiel is a terminal-based framework for creating and presenting slide decks using Python. It enables users to define slides as functions that return renderable objects (via Rich), and presents them in a navigable terminal user interface built with Textual. The framework supports features like live reloading during development, slide transitions, and dynamic content generation through a trigger system. The architecture centers around a `Deck` class that manages a sequence of `Slide` objects. Each slide's content is defined by a function that can optionally receive a `Triggers` object for time-based or interactive effects. The presentation is driven by a custom Textual application (`SpielApp`) that handles user input, screen transitions (including slide-to-slide animations), and automatic reloading of the deck when source files change. Key components include the CLI for launching presentations, a flexible slide definition system, and reusable widgets for rendering content such as syntax-highlighted code and images. Notable reusable components include the `Triggers` class for managing interactive state, the `Swipe` transition for slide animations, the `Image` widget for terminal image display, and a set of utility functions (`clamp`, `filter_join`, `chunks`) that solve common programming problems. These components are designed with low coupling and could be extracted for use in other projects with minimal modification.

RATING: 8.0/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
joshuathompson/baton ★ 199 12 APPLICATION

Baton is a CLI tool for controlling Spotify playback with an integrated TUI for browsing and selecting music. The application uses Cobra for command structure, Viper for configuration, and the gocui library for the terminal interface. It interacts with the Spotify Web API to manage playback, search for content, and handle user library operations. The architecture separates API interactions (api package), command-line interface (cmd package), and TUI components (ui package). While functional, the codebase shows signs of aging due to outdated dependencies and tight coupling in some areas, particularly the API package's reliance on Viper for token management.

RATING: 5.7/10 MAINT: active DRIFT: high
▸ 3 reusable components found
── end of results ──
$ submit: