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.2.tar.gz (81.7 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.2-py3-none-any.whl (77.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rigi_reekeer-1.3.2.tar.gz
  • Upload date:
  • Size: 81.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for rigi_reekeer-1.3.2.tar.gz
Algorithm Hash digest
SHA256 3b19465cc2041e8dc3fe259f8f5f96cad20272a3380a1951c5fe92b9da140a82
MD5 44da452f3b3561a37c6b4968b43e5557
BLAKE2b-256 79b9ff8d688452c7d2d6748c5a012133d1d41655329f0381ac9862ef6eec1b98

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rigi_reekeer-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 77.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for rigi_reekeer-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2527bb3e6878b3625f6ddd1f3fe67810c4371e255e1f8707ed73c78c97d5e5bb
MD5 30dd8374f5c6226c97601b16fc22d4c2
BLAKE2b-256 df811258e260046f0dc192141ca2763299adb3dac1cc0a1287f763fc6ab7234d

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