Skip to Content
EnglishFeatures

Features

Pane Management

Split your terminal into multiple independent panes, each running its own PTY shell.

  • Ctrl+D — Split vertically (left/right)
  • Ctrl+E — Split horizontally (top/bottom)
  • Ctrl+W — Close the focused pane
  • Mouse drag on pane borders to resize

Panes can be nested: split a pane, then split one of the halves again. Up to 16 panes.

Minimum pane size is enforced (20 columns wide, 5 rows tall). If a split would create panes too small, the operation is silently ignored.

Tabs

Each tab is an independent workspace with its own panes, file tree, and preview.

  • Alt+T / Ctrl+T — New tab
  • Click a tab to switch
  • Double-click a tab to rename
  • Alt+R — Rename tab (session only; submit empty to reset to auto name)
  • Ctrl+W — Close tab (when only one pane in the tab)

The tab name automatically updates when you cd to a different directory. A custom name takes precedence over the auto-derived name.

Status Bar

The status bar at the bottom shows available shortcuts for the current mode. The right side displays Claude Code model name, context usage, and other session info.

  • Alt+S — Toggle status bar visibility (reclaims 1 row for panes)

File Tree

A sidebar showing your project’s file structure.

  • Ctrl+F — Toggle the file tree
  • j/k — Navigate up/down
  • Enter — Expand directory / open file preview
  • . — Toggle hidden files (.git is always hidden)
  • Mouse click — Select entry
  • Mouse scroll — Scroll the tree
  • Drag the right border to resize

File icons

Files are shown with language-specific icons:

IconExtensions
🦀.rs
.js, .ts, .jsx, .tsx
🐍.py
📄.md
{.json
.toml
$.sh, .bash, .zsh

Syntax-Highlighted Preview

Select a file in the file tree to see its contents with syntax highlighting.

  • Powered by syntect  (base16-eighties theme)
  • Line numbers with separator
  • Scroll vertically with mouse wheel, j/k, or PageUp/PageDown
  • Scroll horizontally with h/l, Left/Right, or Home (for long lines)
  • Line position indicator at the bottom (42/156)
  • Ctrl+W to close preview (when preview is focused)
  • Ctrl+P to swap preview and terminal positions

Files larger than 10MB are not previewed. Binary files show a placeholder message.

Claude Detection

When you run claude (Claude Code) inside a terminal pane, renga automatically detects it:

  • Pane border turns orange (Claude’s brand color #D97757)
  • Pane title changes from shell [N] to claude [N]

Detection works by monitoring the terminal’s window title (OSC 0/2 escape sequences).

cd Tracking

When you cd to a different directory in the shell:

  • File tree updates to show the new directory
  • Tab name updates to the new directory name

This is powered by OSC 7 (operating system command for current directory reporting), injected via PROMPT_COMMAND.

Text Selection & Copy

  • Mouse drag in a terminal pane to select text (highlighted in blue)
  • Text is automatically copied to clipboard when you release the mouse
  • Click anywhere to clear selection
  • Selection stays within a single pane

Terminal Scrollback

Each pane stores 10,000 lines of history.

  • Mouse scroll up in a plain shell pane to browse history
  • ↑ SCROLL indicator appears at the bottom of the pane
  • Any key press automatically scrolls back to the latest output

For alt-screen TUI panes, routing depends on whether the app enabled mouse reporting: apps that turn it on (Claude Code /tui fullscreen, vim with set mouse=a, lazygit, …) receive the wheel as an xterm mouse report; apps that don’t (less, etc.) get Up / Down arrow keys as an xterm/WezTerm-style fallback. See “Mouse Support” below. Set RENGA_DISABLE_MOUSE_FORWARD=1 to revert to the legacy “always scroll vt100 scrollback” behavior.

Mouse Support

ActionEffect
Click paneFocus that pane
Click tabSwitch tab
Click +New tab
Drag panel borderResize (file tree, preview, or between panes)
Scroll in file treeScroll entries
Scroll in previewScroll file content
Scroll in a plain shell paneBrowse vt100 scrollback
Scroll in a TUI pane with mouse reporting onForward as xterm mouse report (Claude /tui fullscreen, vim with set mouse=a, lazygit, …)
Scroll in an alt-screen TUI pane with mouse reporting offForward Up / Down arrows as a fallback (less, etc.)
Drag in paneText selection → clipboard

IME Input (Japanese / Chinese / Korean)

On Windows with WezTerm / zellij / other third-party terminals, the host IME anchors its candidate window to the cursor, and fast-moving TUIs like Claude Code make that anchor jump around — JP input becomes unusable. (macOS native terminals and Windows Terminal don’t reproduce the issue.)

renga paints a centered, multi-line composition overlay that floats over the pane area to give the host IME a stable anchor, and commits the confirmed text to the pane via bracketed paste. Long prompts that span multiple lines can be drafted inside the overlay and sent in one shot. If you temporarily close the overlay to inspect the pane, reopening it on the same pane restores the previous draft.

Centered overlay with the host IME candidate window docked inside it

Keybindings

KeyAction
Enter / Shift+EnterInsert newline
Alt+EnterSend (works everywhere, including macOS Option+Return)
Ctrl+EnterSend (Windows Terminal / wezterm / VS Code and most Linux terminals)
Esc / Ctrl+CClose the overlay and keep the draft for that pane
Navigate
Home / EndStart / end of current line
Ctrl+Home / Ctrl+EndStart / end of whole buffer
BackspaceDelete char left of caret

Three modes

Selected via the [ime] config section or --ime flag:

ModeBehavior
hotkey (default)Ctrl+; opens the overlay
offCtrl+; is swallowed, overlay never opens. Opt-out for environments where the problem doesn’t exist

A third mode, always, used to auto-open the overlay on every Claude pane focus. It was removed because the auto-open never worked reliably in practice.

Config file location:

  • Linux: $XDG_CONFIG_HOME/renga/config.toml (default ~/.config/renga/config.toml)
  • macOS: ~/Library/Application Support/renga/config.toml
  • Windows: %APPDATA%\renga\config.toml

The --ime hotkey|off CLI flag overrides the file. Precedence is CLI > config > default (hotkey). See the README Configuration section for more details.

Windows’ conpty layer flickers the hardware caret during ratatui’s diff paint. renga mitigates with three layers: a cursor::Hide guard around every draw transaction while the overlay is open (Windows-only, since conpty is the only observed culprit), the opt-in --ime-freeze-panes flag that suppresses PTY-output-driven repaints entirely, and the complementary --ime-overlay-catchup-ms <MS> dial that reintroduces a single periodic repaint so streaming output stays visible. See the README [ime] section for recommended defaults.

Keybindings

The status bar always shows the shortcuts available in the current mode. A summary:

Global

KeyAction
Ctrl+QQuit renga
Ctrl+Right / Ctrl+LeftCycle focus between panes / areas
Alt+Right / Alt+LeftSwitch tabs
Alt+1Alt+9Jump to tab N

Pane Mode

KeyAction
Ctrl+D / Ctrl+ESplit vertically / horizontally
Ctrl+WClose pane (close tab if only one pane)
Alt+T / Ctrl+TNew tab
Alt+RRename tab (session only)
Alt+SToggle status bar
Ctrl+FFocus file tree
Ctrl+PSwap preview / terminal layout
Ctrl+;Open the IME overlay (when mode = "hotkey")
Tab / everything elseForwarded to shell

Key conflicts (not forwarded to shell)

Keyrenga actionShell workaround
Ctrl+DVertical splitexit to log out
Ctrl+EHorizontal splitEnd key
Ctrl+FFile tree/ for less/vim search
Ctrl+WClose (only when multiple panes)works normally with a single pane
Ctrl+;IME overlay (when mode = "hotkey")--ime off swallows the keystroke

Small Terminal Handling

  • If the terminal is smaller than 40×10, a “Terminal too small” message is shown
  • Panels auto-hide when the terminal is too narrow to fit them
Last updated on