{"id":44045109,"url":"https://github.com/contember/okena","last_synced_at":"2026-05-03T20:05:37.786Z","repository":{"id":336951802,"uuid":"1135795020","full_name":"contember/okena","owner":"contember","description":"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.","archived":false,"fork":false,"pushed_at":"2026-02-07T10:05:15.000Z","size":10158,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-07T10:08:53.969Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/contember.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-16T15:50:38.000Z","updated_at":"2026-02-07T07:09:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/contember/okena","commit_stats":null,"previous_names":["contember/okena"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/contember/okena","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contember%2Fokena","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contember%2Fokena/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contember%2Fokena/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contember%2Fokena/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contember","download_url":"https://codeload.github.com/contember/okena/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contember%2Fokena/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29209826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T21:35:21.898Z","status":"ssl_error","status_checked_at":"2026-02-07T21:35:20.106Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-07T22:00:49.992Z","updated_at":"2026-05-03T20:05:37.776Z","avatar_url":"https://github.com/contember.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/okena-icon.png\" width=\"256\" alt=\"Okena\"\u003e\n\u003c/p\u003e\n\n# Okena\n\nA fast, native terminal multiplexer built in Rust with [GPUI](https://github.com/zed-industries/zed/tree/main/crates/gpui) (the UI framework from Zed editor).\nTabs, splits, detachable windows, command palette, and automatic workspace restore.\n\n## Installation\n\n### macOS\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/contember/okena/main/install.sh | bash\n```\n\n### Linux\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/contember/okena/main/install.sh | bash\n```\n\n### Windows\n\n```powershell\nirm https://raw.githubusercontent.com/contember/okena/main/install.ps1 | iex\n```\n\nThe 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.\n\n## Features\n\n### Layout \u0026 Window Management\n- **Split panes** - Horizontal and vertical splits with drag-to-resize dividers\n- **Tabs** - Organize terminals in tabbed containers with reordering support\n- **Detachable windows** - Pop out any terminal into a separate floating window and reattach later\n- **Fullscreen mode** - Focus on a single terminal with next/previous cycling\n- **Minimize/restore** - Collapse terminals to their header to save space\n- **Per-terminal zoom** - Adjust zoom level (0.5x to 3.0x) independently per terminal\n- **Directional focus navigation** - Move focus between panes using arrow-key shortcuts\n\n### Multi-Project Workspace\n- **Project columns** - Manage multiple projects side-by-side with resizable columns\n- **Sidebar** - Collapsible project list with tree view of terminals, drag-and-drop reordering, and auto-hide mode\n- **Folder colors** - Color-code projects (red, orange, yellow, green, blue, purple, pink)\n- **Project switcher** - Quick searchable project navigation overlay\n- **Workspace persistence** - Auto-saves full layout, terminal state, and settings to disk\n\n### Terminal\n- **Full terminal emulation** - Powered by alacritty_terminal with complete ANSI support\n- **Search** - Inline text search with regex support, case sensitivity toggle, and match count\n- **Link detection** - Clickable URLs and file paths (supports `file:line:col` syntax)\n- **File opener integration** - Open detected files in your editor (VS Code, Cursor, Zed, Sublime, vim, etc.)\n- **Bracketed paste mode** - Proper multi-line paste handling with escape sequence injection protection\n- **Image paste** - Paste clipboard images (PrintScreen, Snipping Tool, browser \"Copy image\") into TUIs like Claude Code. On Windows in a WSL terminal this needs `wl-clipboard` installed inside the distro (`sudo apt install wl-clipboard`) so the image is forwarded to WSL's clipboard and attached as `[Image #N]`; without it, the bracketed paste falls back to a `/tmp/...` file-path reference\n- **Shift+Enter** - Send literal newline for multi-line input (useful for Claude Code, Python, etc.)\n- **Configurable scrollback** - 100 to 100,000 lines\n- **Cursor blink** - Toggleable cursor blinking\n- **Bell notification** - Visual indicator when a terminal rings the bell\n- **Per-terminal shell selection** - Choose a different shell for each terminal\n- **Context menu** - Right-click for copy, paste, select all, and link actions\n\n### Session Persistence\n- **Session backends** - Keep terminals alive across app restarts using dtach, tmux, or screen (Unix)\n- **dtach support** - Lightweight session persistence (preferred backend)\n- **Auto-detection** - Automatically selects the best available backend (dtach \u003e tmux \u003e screen)\n- **WSL session support** - Session backends work with WSL terminals on Windows\n- **Session manager** - Save, load, rename, and delete named workspace sessions\n- **Export/import** - Export workspaces to JSON and import them back\n\n### Git Integration\n- **Git worktree support** - Create and manage git worktrees as projects directly from the UI\n- **Worktree sync watcher** - Auto-discovers new git worktrees every 30 seconds\n- **Worktree auto-cleanup** - Removes stale worktree projects when paths no longer exist\n- **Worktree path templates** - Configure worktree paths with `{repo}` and `{branch}` variables\n- **Merge/stash on close** - Options to merge, stash, fetch, push, or delete branch when closing a worktree\n- **Branch detection** - Displays current branch, handles detached HEAD\n- **Diff stats** - Tracks lines added/removed with cached git status\n\n### Themes \u0026 Appearance\n- **Built-in themes** - Dark, Light, Pastel Dark, and High Contrast\n- **Auto theme** - Follows system light/dark appearance\n- **Custom themes** - Load your own theme from a custom themes directory\n- **Configurable fonts** - Font family, size (8-48pt), line height (1.0-3.0), and separate UI font size\n\n### Command Palette \u0026 Overlays\n- **Command palette** - Searchable list of all actions with keybinding hints\n- **File search** - Fast file lookup within a project (respects .gitignore-style filtering)\n- **Settings panel** - GUI for all preferences (theme, font, terminal, hooks, per-project settings)\n- **Theme selector** - Live-preview theme picker\n- **Keybindings help** - Categorized shortcut reference with search\n- **File viewer** - Syntax-highlighted file preview with line numbers and search\n- **Diff viewer** - Unified and side-by-side diff views with syntax highlighting\n\n### Customization\n- **Custom keybindings** - Override any shortcut via `keybindings.json`\n- **Lifecycle hooks** - Run commands on project open/close and worktree create/close (global or per-project)\n- **Per-project settings** - Override global settings per project\n- **Shell configuration** - Set default shell or pick per terminal (bash, zsh, fish, cmd, PowerShell, WSL)\n\n### Hook Terminals\n- **Hook terminals** - Commands prefixed with `terminal:` in hooks spawn visible PTY terminals (e.g., `terminal: claude -p \"fix rebase conflict\"`)\n- **Hook monitor** - Tracks execution history, status (Running/Succeeded/Failed), and duration for all hooks\n- **Git hooks** - `pre_merge`, `post_merge`, `before_worktree_remove`, `worktree_removed`, `on_rebase_conflict`, `on_dirty_worktree_close`\n- **Environment variables** - Hooks receive `OKENA_PROJECT_ID`, `OKENA_PROJECT_NAME`, `OKENA_PROJECT_PATH`, `OKENA_BRANCH`, `OKENA_TARGET_BRANCH`, etc.\n\n### Services\n- **Project services** - Define services in `okena.yaml` with name, command, cwd, env vars\n- **Docker Compose integration** - Auto-detects and manages Docker Compose services\n- **Auto-start \u0026 restart** - Services can auto-start on project open and auto-restart on crash\n- **Service panel** - Monitor service status (Stopped, Starting, Running, Crashed) and ports\n\n### AI Tool Integration\n- **Claude Code status** - Real-time service status from status.claude.com\n- **Claude Code usage** - OAuth-based usage tracking (5-hour, 7-day rate limits, credits)\n- **Codex status \u0026 usage** - OpenAI Codex status monitoring with OAuth token refresh\n- Both integrations are opt-in via settings toggles\n\n### Remote Control \u0026 Companion Apps\n- **Remote API** - Local HTTP/WebSocket server for remote terminal control (see `docs/remote.md`)\n- **Mobile app** - Flutter + Rust FFI companion app for Android/iOS (see `docs/mobile-status.md`)\n- **Web client** - Browser-based terminal access via built-in web UI\n- **Secure pairing** - HMAC-SHA256 token auth with rate-limited pairing codes\n\n### Auto-Update\n- **Built-in updater** - Background update checks via GitHub Releases\n- **SHA256 verification** - Downloaded updates are cryptographically verified\n- **Homebrew-aware** - Skips self-update when installed via Homebrew\n\n### Platform Support\n- **macOS** - Native traffic light buttons, extended PATH for homebrew shells\n- **Linux** - Wayland maximize workaround, auto-detected shells\n- **Windows** - Custom titlebar, cmd/PowerShell/WSL support with distro detection\n\n### Status Bar\n- CPU usage, memory usage, and current time displayed at the bottom\n\n## Building\n\nRequires Rust toolchain (edition 2021).\n\n```bash\ncargo build --release\n```\n\n## Running\n\n```bash\ncargo run\n```\n\n## Keyboard Shortcuts\n\n| Action | macOS | Linux/Windows |\n|--------|-------|---------------|\n| New terminal | Cmd+T | Ctrl+T |\n| Close terminal | Cmd+W | Ctrl+W |\n| Split horizontal | Cmd+D | Ctrl+D |\n| Split vertical | Cmd+Shift+D | Ctrl+Shift+D |\n| Navigate panes | Cmd+Alt+Arrow | Ctrl+Alt+Arrow |\n| Next/prev terminal | Cmd+Shift+]/[ | Ctrl+Tab / Ctrl+Shift+Tab |\n| Fullscreen terminal | Shift+Escape | Shift+Escape |\n| Command palette | Cmd+Shift+P | Ctrl+Shift+P |\n| File search | Cmd+P | Ctrl+P |\n| Find | Cmd+F | Ctrl+F |\n| Copy | Cmd+C | Ctrl+C |\n| Paste | Cmd+V | Ctrl+V |\n| Zoom in/out | Cmd++/- | Ctrl++/- |\n| Reset zoom | Cmd+0 | Ctrl+0 |\n| Toggle sidebar | Cmd+B | Ctrl+B |\n| Settings | Cmd+, | Ctrl+, |\n\nAll shortcuts are customizable via `keybindings.json` in your platform's config directory.\n\n## Configuration\n\nSettings are stored in the platform's config directory (macOS: `~/Library/Application Support/okena/`, Linux/Windows: `~/.config/okena/` / `%APPDATA%\\okena\\`):\n\n| File | Purpose |\n|------|---------|\n| `settings.json` | Theme, font, shell, scrollback, hooks, and other preferences |\n| `workspace.json` | Projects, layouts, and terminal state |\n| `keybindings.json` | Custom keyboard shortcuts |\n| `themes/*.json` | Custom theme files |\n| `okena.yaml` (project root) | Project services and Docker Compose configuration |\n\n## Documentation\n\n| Guide | Description |\n|-------|-------------|\n| [Configuration](docs/configuration.md) | Settings, keybindings, custom themes, per-project overrides |\n| [Lifecycle Hooks](docs/hooks.md) | Hook terminals, git hooks, environment variables |\n| [Project Services](docs/services.md) | okena.yaml, Docker Compose integration, auto-restart |\n| [Git Worktrees](docs/worktrees.md) | Worktree management, sync watcher, path templates |\n| [Remote Control API](docs/remote.md) | HTTP/WebSocket API, pairing, authentication |\n| [Mobile Client](docs/mobile-status.md) | Flutter + Rust FFI mobile companion app |\n\n## Dependencies\n\n- **GPUI** + **gpui-component** - UI framework\n- **alacritty_terminal** - Terminal emulation\n- **portable-pty** - PTY management\n- **smol** - Async runtime\n- **tokio** + **axum** - Remote control server\n- **syntect** - Syntax highlighting\n- **serde_yaml** - Service config parsing\n\n## A Note on Authorship\n\n\u003e **This codebase has not been contaminated by human hands.**\n\u003e\n\u003e Every line of code, every architectural decision, every meticulously placed semicolon — pure, unfiltered Claude Opus.\n\u003e 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.\n\u003e\n\u003e If you find a bug, rest assured — it's not a bug. It's the AI testing whether you're paying attention.\n\u003e\n\u003e *Humans are kindly thanked for providing electricity.*\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontember%2Fokena","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontember%2Fokena","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontember%2Fokena/lists"}