https://github.com/scott-walker/terma
Modern terminal emulator built with Electron, React and xterm.js
https://github.com/scott-walker/terma
electron linux terminal typescript
Last synced: 2 months ago
JSON representation
Modern terminal emulator built with Electron, React and xterm.js
- Host: GitHub
- URL: https://github.com/scott-walker/terma
- Owner: scott-walker
- License: mit
- Created: 2026-02-21T15:01:44.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-24T20:02:07.000Z (2 months ago)
- Last Synced: 2026-04-24T21:37:39.953Z (2 months ago)
- Topics: electron, linux, terminal, typescript
- Language: JavaScript
- Homepage: https://scott-walker.github.io/terma/
- Size: 12.4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Modern terminal emulator
Built with Electron • React • xterm.js
---
## Features
- **Split panes** — vertical & horizontal splits, unlimited nesting
- **6 pane types** — terminal, file manager, agent, markdown, image, system monitor — switch on the fly
- **Multiple tabs** — drag-reorder, color coding, close confirmation
- **Git integration** — branch info, checkout, create branches from UI
- **SSH file browsing** — connect to remote servers via SFTP, manage profiles
- **System monitor** — CPU, RAM, disk metrics + app self-monitoring gauges
- **4 built-in themes** — Tokyo Night, Dracula, Catppuccin Mocha, One Dark
- **Session persistence** — tabs, panes, working directories survive restart
- **File manager** — virtual tree, live updates, trash & restore, SSH remote browsing
- **Voice input** — Whisper transcription via OpenAI API
- **Translation** — text translation via OpenAI API
- **Agent profiles** — configurable AI agent commands (Claude, Aider, etc.)
- **Settings panel** — font, theme, cursor style, file associations, SSH/agent profiles, zoom
- **Frameless window** — custom titlebar, close confirmation dialog
## Quick Start
```bash
git clone terma
cd terma
npm install
npm run dev
```
> Requires Node.js >= 18, C++ compiler, Python 3.x (for node-pty native build)
## Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `Ctrl+Shift+T` | New tab |
| `Ctrl+Shift+W` | Close tab |
| `Ctrl+Shift+D` | Split vertical |
| `Ctrl+Shift+E` | Split horizontal |
| `Ctrl+Shift+B` | Open file manager |
| `Ctrl+Shift+A` | Toggle agent mode |
| `Ctrl+Shift+,` | Settings |
| `Ctrl+=` / `Ctrl+-` | Zoom in/out |
| `Ctrl+/` | Toggle voice recording |
| `Ctrl+W` / `Ctrl+Q` | Close window |
| `Ctrl+Shift+1-9` | Switch tabs |
## Documentation
Full documentation is available in the [wiki](docs/wiki/index.md):
| Section | Description |
|---------|-------------|
| [Getting started](docs/wiki/getting-started.md) | Installation, first run |
| [Architecture](docs/wiki/architecture.md) | Electron processes, data flow |
| [Project structure](docs/wiki/project-structure.md) | File tree, modules |
| [Main process](docs/wiki/main-process.md) | PTY, file system, services |
| [IPC API](docs/wiki/ipc-api.md) | All channels, typed API |
| [Renderer](docs/wiki/renderer-process.md) | React components, stores |
| [Layout system](docs/wiki/layout-system.md) | Pane tree, splits, types |
| [File manager](docs/wiki/file-manager.md) | Virtual tree, watchers |
| [Theming](docs/wiki/theming.md) | Color themes, design tokens |
| [Shortcuts](docs/wiki/keyboard-shortcuts.md) | All keybindings |
| [Contributing](docs/wiki/contributing.md) | Dev guide, debugging |
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Runtime | Electron 40 |
| UI | React 19, Tailwind CSS 4 |
| Terminal | xterm.js 5, node-pty 1 |
| State | Zustand 5 |
| Persistence | electron-store 11 |
| Panels | react-resizable-panels 4 |
| SSH | ssh2 |
| System info | systeminformation |
| Markdown | react-markdown |
| Icons | lucide-react |
| Animations | framer-motion |
## License
MIT