Skip to main content

Rigi isn't a graphics interface, it's terminal. A high-level TUI framework built on Textual.

Project description

RIGI

Rigi Isn't a Graphics Interface - it's terminal.

License Python Textual Platform black ruff pyright Stars Last Commit


A high-level TUI framework built on top of Textual. Rigi is an internal library - used across all CLI tools to maintain a consistent, polished terminal interface.


๐Ÿ“ฆ Installation

pip install rigi-reekeer

โœจ Overview

Rigi gives you a complete, opinionated TUI shell in a few lines of code:

  • ๐Ÿ—‚ Sidebar navigation - multi-level tab/subtab navigation with keyboard and mouse support
  • ๐Ÿ–ฅ Bottom panel - resizable terminal with command history, tab completion, and a live log viewer
  • ๐Ÿ“Š Status bar - customizable status items, home button, hamburger menu
  • ๐ŸŽจ Themes - built-in Dark, Light, Monokai, Nord; fully customizable via RigiTheme
  • โŒจ๏ธ Command system - register commands with arguments, aliases, fuzzy completion, and inline help
  • ๐Ÿ” Command palette - Ctrl+P fuzzy-search overlay
  • ๐ŸŒ Cross-platform - Linux (Arch, Debian, WSL), macOS, Windows 10/11, iSH; terminal detection for kitty, alacritty, iTerm2, WezTerm, Ghostty, Konsole, Windows Terminal, tmux, and more
  • ๐Ÿงฉ Widgets - gauges, sparklines, image rendering (kitty/iTerm2/sixel), draggable/clickable mixins, settings screen

๐Ÿš€ Quick start

import rigi

app = rigi.RigiApp(
    name="mytool",
    version="1.0.0",
    description="My internal tool",
)

app.add_tab(rigi.TabDef(name="Dashboard", icon="๓ฐ•ฎ"))
app.run()

See the examples/ directory for complete working apps.


๐Ÿ–ฅ Platform support

OS Supported Notes
Linux (Arch) โœ“ full support
Linux (Debian / Ubuntu) โœ“ full support
Linux (WSL 1/2) โœ“ clipboard via OSC 52
macOS โœ“ AppleScript notifications
Windows 10/11 โœ“ Windows Terminal recommended
iSH (iOS) โœ“ limited - no true color

๐Ÿ”Œ Terminal support

Terminal True color OSC clipboard Hyperlinks Graphics Notifications Progress
kitty โœ“ โœ“ โœ“ kitty OSC 777 -
Alacritty โœ“ โœ“ โœ“ - - -
iTerm2 โœ“ โœ“ โœ“ iTerm2 OSC 9 โœ“
WezTerm โœ“ โœ“ โœ“ iTerm2 OSC 777 โœ“
Ghostty โœ“ โœ“ โœ“ - OSC 777 -
Konsole โœ“ โœ“ โœ“ - - -
Windows Terminal โœ“ โœ“ โœ“ - OSC 9 โœ“
tmux passthrough โœ“ (>=3.2) passthrough passthrough passthrough -
Apple Terminal โœ“ - - - AppleScript -
iSH - - - - - -
VSCode โœ“ - โœ“ - - -

๐Ÿ—‚ Structure

Rigi/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ rigi/
โ”‚       โ”œโ”€โ”€ __init__.py              โ† public API
โ”‚       โ”œโ”€โ”€ commands/
โ”‚       โ”‚   โ”œโ”€โ”€ command.py           โ† Command dataclass
โ”‚       โ”‚   โ”œโ”€โ”€ registry.py          โ† CommandRegistry (fuzzy completions)
โ”‚       โ”‚   โ””โ”€โ”€ parser.py            โ† CLI arg parser + inline command parser
โ”‚       โ”œโ”€โ”€ core/
โ”‚       โ”‚   โ”œโ”€โ”€ app.py               โ† RigiApp (main application class)
โ”‚       โ”‚   โ”œโ”€โ”€ platform.py          โ† OS + terminal detection, cross-platform utils
โ”‚       โ”‚   โ”œโ”€โ”€ console.py           โ† terminal capability queries
โ”‚       โ”‚   โ”œโ”€โ”€ log_store.py         โ† global log interceptor (logging + loguru)
โ”‚       โ”‚   โ”œโ”€โ”€ dev_commands.py      โ† built-in dev commands
โ”‚       โ”‚   โ””โ”€โ”€ types.py             โ† TabDef, SubtabDef, StatusItem, HelpEntry, โ€ฆ
โ”‚       โ”œโ”€โ”€ css/
โ”‚       โ”‚   โ””โ”€โ”€ default.tcss         โ† default Textual stylesheet
โ”‚       โ”œโ”€โ”€ layout/
โ”‚       โ”‚   โ””โ”€โ”€ pane.py              โ† RigiPane, RigiCard, RigiSplit, โ€ฆ
โ”‚       โ”œโ”€โ”€ themes/
โ”‚       โ”‚   โ”œโ”€โ”€ base.py              โ† RigiTheme dataclass
โ”‚       โ”‚   โ”œโ”€โ”€ dark.py              โ† DARK
โ”‚       โ”‚   โ”œโ”€โ”€ light.py             โ† LIGHT
โ”‚       โ”‚   โ”œโ”€โ”€ monokai.py           โ† MONOKAI
โ”‚       โ”‚   โ””โ”€โ”€ nord.py              โ† NORD
โ”‚       โ””โ”€โ”€ widgets/
โ”‚           โ”œโ”€โ”€ bottom_panel.py      โ† RigiBottomPanel (terminal + logs)
โ”‚           โ”œโ”€โ”€ sidebar.py           โ† RigiSidebar
โ”‚           โ”œโ”€โ”€ statusbar.py         โ† RigiStatusBar
โ”‚           โ”œโ”€โ”€ content_area.py      โ† RigiContentArea
โ”‚           โ”œโ”€โ”€ border_frame.py      โ† RigiBorderFrame
โ”‚           โ”œโ”€โ”€ palette.py           โ† RigiPaletteScreen (Ctrl+P)
โ”‚           โ”œโ”€โ”€ help_panel.py        โ† RigiHelpScreen, RigiShortcutsBar
โ”‚           โ”œโ”€โ”€ hamburger_menu.py    โ† RigiHamburgerScreen
โ”‚           โ”œโ”€โ”€ settings_screen.py   โ† RigiSettingsScreen
โ”‚           โ”œโ”€โ”€ gauge.py             โ† RigiGauge, RigiSparkline
โ”‚           โ”œโ”€โ”€ image.py             โ† RigiImage (kitty / iTerm2 / sixel)
โ”‚           โ”œโ”€โ”€ terminal_bar.py      โ† RigiTerminalBar
โ”‚           โ””โ”€โ”€ mouse.py             โ† RigiClickable, RigiDraggable
โ”œโ”€โ”€ .github/
โ”‚   โ”œโ”€โ”€ workflows/
โ”‚   โ”‚   โ””โ”€โ”€ pr.yml                   โ† PR quality checks
โ”‚   โ””โ”€โ”€ dependabot.yml
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ 01_minimal.py
โ”‚   โ”œโ”€โ”€ 02_dashboard.py
โ”‚   โ”œโ”€โ”€ 03_todo.py
โ”‚   โ”œโ”€โ”€ 04_file_browser.py
โ”‚   โ”œโ”€โ”€ 05_system_monitor.py
โ”‚   โ”œโ”€โ”€ 06_notes.py
โ”‚   โ”œโ”€โ”€ 07_multi_theme.py
โ”‚   โ””โ”€โ”€ 08_platform_features.py
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ test_basic.py
โ”‚   โ”œโ”€โ”€ test_commands.py
โ”‚   โ”œโ”€โ”€ test_help_system.py
โ”‚   โ”œโ”€โ”€ test_loggers.py
โ”‚   โ”œโ”€โ”€ test_log_store.py
โ”‚   โ”œโ”€โ”€ test_resize.py
โ”‚   โ”œโ”€โ”€ test_terminal.py
โ”‚   โ””โ”€โ”€ test_widgets.py
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ CONTRIBUTING.md
โ””โ”€โ”€ LICENSE

๐Ÿ“– Philosophy

This is a personal library, not a general-purpose open-source project.

  • No documentation. Learn from the source code and the examples/ directory.
  • No issues or discussions. GitHub Issues and Discussions are disabled. Questions, feature requests, and support will not be answered.
  • Pull requests are welcome - but only for: bug fixes, code optimization, cross-platform improvements, and features that expose missing Textual capabilities. Everything else will be closed without review.

See CONTRIBUTING.md for the exact requirements.


MIT ยฉ reekeer

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

rigi_reekeer-1.3.3.tar.gz (82.8 kB view details)

Uploaded Source

Built Distribution

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

rigi_reekeer-1.3.3-py3-none-any.whl (77.7 kB view details)

Uploaded Python 3

File details

Details for the file rigi_reekeer-1.3.3.tar.gz.

File metadata

  • Download URL: rigi_reekeer-1.3.3.tar.gz
  • Upload date:
  • Size: 82.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rigi_reekeer-1.3.3.tar.gz
Algorithm Hash digest
SHA256 be0f99eaa45c2187f2d734f22a24663dd198fd25a3efdb8bc4262dac704f017a
MD5 f546d5d5555f974e9706e8d84932edac
BLAKE2b-256 23b32c05b6f412c3cc641090aa7f348e4a0b7e3f4be810b51f1cfac02ec14376

See more details on using hashes here.

File details

Details for the file rigi_reekeer-1.3.3-py3-none-any.whl.

File metadata

  • Download URL: rigi_reekeer-1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 77.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rigi_reekeer-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c55d77801fb3ecfbecda6b0c66641260c2bb0b30506460ad0ce5f09c52e0dc33
MD5 93815bcbf98774be718d106b167539b1
BLAKE2b-256 51d5c539c41a5c1685832a8049e4c207ca1a4fab30543a651c2762eed3b7089a

See more details on using hashes here.

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