RIGI
Rigi Isn't a Graphics Interface - it's terminal.
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+Pfuzzy-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
Metadata
Release files for rigi-reekeer 1.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rigi_reekeer-1.3.3.tar.gz | 82.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rigi_reekeer-1.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 160.5 kB
Release files / rigi_reekeer-1.3.3.tar.gz
| Download URL | rigi_reekeer-1.3.3.tar.gz |
|---|---|
| Size | 82.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
be0f99eaa45c2187f2d734f22a24663dd198fd25a3efdb8bc4262dac704f017a
|
|
BLAKE2b-256 checksum How to use checksums |
23b32c05b6f412c3cc641090aa7f348e4a0b7e3f4be810b51f1cfac02ec14376
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / rigi_reekeer-1.3.3-py3-none-any.whl
| Download URL | rigi_reekeer-1.3.3-py3-none-any.whl |
|---|---|
| Size | 77.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c55d77801fb3ecfbecda6b0c66641260c2bb0b30506460ad0ce5f09c52e0dc33
|
|
BLAKE2b-256 checksum How to use checksums |
51d5c539c41a5c1685832a8049e4c207ca1a4fab30543a651c2762eed3b7089a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|