Skip to main content

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

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)

Source distribution for rigi-reekeer 1.3.3
File Size Uploaded
rigi_reekeer-1.3.3.tar.gz 82.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rigi-reekeer 1.3.3
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.3.3 This release

2 release files

1.3.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page