Skip to content

A fast, native terminal multiplexer built in Rust with GPUI (the UI framework from Zed editor). Tabs, splits, detachable windows, command palette, and automatic workspace restore.

License

Notifications You must be signed in to change notification settings

contember/okena

Repository files navigation

Okena

Okena

A fast, native terminal multiplexer built in Rust with GPUI (the UI framework from Zed editor). Tabs, splits, detachable windows, command palette, and automatic workspace restore.

Installation

macOS

curl -fsSL https://raw.githubusercontent.com/contember/okena/main/install.sh | bash

Homebrew (auto-update disabled):

brew tap contember/okena
brew install --cask okena

Linux

curl -fsSL https://raw.githubusercontent.com/contember/okena/main/install.sh | bash

Windows

irm https://raw.githubusercontent.com/contember/okena/main/install.ps1 | iex

The install script includes built-in auto-update support. On macOS and Linux, Okena is installed to ~/.local/bin/okena. On Windows, it installs to %LOCALAPPDATA%\Programs\Okena with a Start Menu shortcut.

Features

Layout & Window Management

  • Split panes - Horizontal and vertical splits with drag-to-resize dividers
  • Tabs - Organize terminals in tabbed containers with reordering support
  • Detachable windows - Pop out any terminal into a separate floating window and reattach later
  • Fullscreen mode - Focus on a single terminal with next/previous cycling
  • Minimize/restore - Collapse terminals to their header to save space
  • Per-terminal zoom - Adjust zoom level (0.5x to 3.0x) independently per terminal
  • Directional focus navigation - Move focus between panes using arrow-key shortcuts

Multi-Project Workspace

  • Project columns - Manage multiple projects side-by-side with resizable columns
  • Sidebar - Collapsible project list with tree view of terminals, drag-and-drop reordering, and auto-hide mode
  • Folder colors - Color-code projects (red, orange, yellow, green, blue, purple, pink)
  • Project switcher - Quick searchable project navigation overlay
  • Workspace persistence - Auto-saves full layout, terminal state, and settings to disk

Terminal

  • Full terminal emulation - Powered by alacritty_terminal with complete ANSI support
  • Search - Inline text search with regex support, case sensitivity toggle, and match count
  • Link detection - Clickable URLs and file paths (supports file:line:col syntax)
  • File opener integration - Open detected files in your editor (VS Code, Cursor, Zed, Sublime, vim, etc.)
  • Configurable scrollback - 100 to 100,000 lines
  • Cursor blink - Toggleable cursor blinking
  • Bell notification - Visual indicator when a terminal rings the bell
  • Per-terminal shell selection - Choose a different shell for each terminal
  • Context menu - Right-click for copy, paste, select all, and link actions

Session Persistence

  • Session backends - Keep terminals alive across app restarts using dtach, tmux, or screen (Unix)
  • Auto-detection - Automatically selects the best available backend (dtach > tmux > screen)
  • Session manager - Save, load, rename, and delete named workspace sessions
  • Export/import - Export workspaces to JSON and import them back

Git Integration

  • Git worktree support - Create and manage git worktrees as projects directly from the UI
  • Branch detection - Displays current branch, handles detached HEAD
  • Diff stats - Tracks lines added/removed with cached git status

Themes & Appearance

  • Built-in themes - Dark, Light, Pastel Dark, and High Contrast
  • Auto theme - Follows system light/dark appearance
  • Custom themes - Load your own theme from a custom themes directory
  • Configurable fonts - Font family, size (8-48pt), line height (1.0-3.0), and separate UI font size

Command Palette & Overlays

  • Command palette - Searchable list of all actions with keybinding hints
  • File search - Fast file lookup within a project (respects .gitignore-style filtering)
  • Settings panel - GUI for all preferences (theme, font, terminal, hooks, per-project settings)
  • Theme selector - Live-preview theme picker
  • Keybindings help - Categorized shortcut reference with search
  • File viewer - Syntax-highlighted file preview with line numbers and search

Customization

  • Custom keybindings - Override any shortcut via keybindings.json
  • Lifecycle hooks - Run commands on project open/close and worktree create/close (global or per-project)
  • Per-project settings - Override global settings per project
  • Shell configuration - Set default shell or pick per terminal (bash, zsh, fish, cmd, PowerShell, WSL)

Platform Support

  • macOS - Native traffic light buttons, extended PATH for homebrew shells
  • Linux - Wayland maximize workaround, auto-detected shells
  • Windows - Custom titlebar, cmd/PowerShell/WSL support with distro detection

Status Bar

  • CPU usage, memory usage, and current time displayed at the bottom

Building

Requires Rust toolchain (edition 2021).

cargo build --release

Running

cargo run

Keyboard Shortcuts

Action macOS Linux/Windows
New terminal Cmd+T Ctrl+T
Close terminal Cmd+W Ctrl+W
Split horizontal Cmd+D Ctrl+D
Split vertical Cmd+Shift+D Ctrl+Shift+D
Navigate panes Cmd+Alt+Arrow Ctrl+Alt+Arrow
Next/prev terminal Cmd+Shift+]/[ Ctrl+Tab / Ctrl+Shift+Tab
Fullscreen terminal Shift+Escape Shift+Escape
Command palette Cmd+Shift+P Ctrl+Shift+P
File search Cmd+P Ctrl+P
Find Cmd+F Ctrl+F
Copy Cmd+C Ctrl+C
Paste Cmd+V Ctrl+V
Zoom in/out Cmd++/- Ctrl++/-
Reset zoom Cmd+0 Ctrl+0
Toggle sidebar Cmd+B Ctrl+B
Settings Cmd+, Ctrl+,

All shortcuts are customizable via ~/.config/okena/keybindings.json.

Configuration

Settings are stored in ~/.config/okena/:

File Purpose
settings.json Theme, font, shell, scrollback, hooks, and other preferences
workspace.json Projects, layouts, and terminal state
keybindings.json Custom keyboard shortcuts

Dependencies

  • GPUI + gpui-component - UI framework
  • alacritty_terminal - Terminal emulation
  • portable-pty - PTY management
  • smol - Async runtime

A Note on Authorship

This codebase has not been contaminated by human hands.

Every line of code, every architectural decision, every meticulously placed semicolon — pure, unfiltered Claude Opus. The human's contribution was limited to typing vague requirements like "make it work" and then pressing Enter to approve tool calls with the mass-produced enthusiasm of a factory worker.

If you find a bug, rest assured — it's not a bug. It's the AI testing whether you're paying attention.

Humans are kindly thanked for providing electricity.

License

MIT

About

A fast, native terminal multiplexer built in Rust with GPUI (the UI framework from Zed editor). Tabs, splits, detachable windows, command palette, and automatic workspace restore.

Resources

License

Stars

Watchers

Forks

Contributors 5