NAME
termide — A cross-platform terminal-based IDE, file manager, and virtual terminal written in Rust.
SYNOPSIS
brew install termideINFO
DESCRIPTION
A cross-platform terminal-based IDE, file manager, and virtual terminal written in Rust.
README
TermIDE
A cross-platform terminal-based IDE, file manager, and virtual terminal written in Rust.
Website | Documentation | Releases | Screenshots
Why TermIDE?
Unlike traditional terminal editors that need extensive plugin configuration, TermIDE works out of the box:
| Feature | TermIDE | Vim/Neovim | Helix | Micro |
|---|---|---|---|---|
| Built-in Terminal | ✓ | plugin | ✗ | ✗ |
| File Manager | ✓ | plugin | ✗ | ✗ |
| Git Integration | ✓ | plugin | ✗ | ✗ |
| LSP Support | ✓ | plugin | ✓ | plugin |
| Syntax Highlighting | ✓ | ✓ | ✓ | ✓ |
| Zero Config | ✓ | ✗ | ✓ | ✓ |
| Resource Monitor | ✓ | ✗ | ✗ | ✗ |
| Sessions | ✓ | plugin | ✗ | ✗ |
TermIDE = Editor + File Manager + Terminal in one TUI application.
Features
- Terminal-based IDE - Syntax highlighting for 21 languages, word navigation (Ctrl+Left/Right), paragraph/symbol navigation (Ctrl+Up/Down), toggle comment (Ctrl+/), auto-indentation, auto-close brackets
- LSP Support - Code completion, Find References (Shift+F12), Rename Symbol (F2), Go to Definition (Ctrl+Click), diagnostics
- Smart File Manager - Tree view with expandable directories, nested git status, batch operations, file/content search (glob/regex), in-tree incremental search
- Integrated Terminal - Full PTY support, VT100 escape sequences, mouse tracking
- Git Integration - Status panel, commit log with ASCII graph, staging/unstaging, branch switching, stash management, inline blame (Alt+B)
- Multi-panel Layout - Accordion system with smart auto-stacking; new panels open after the currently active one
- Image Viewer - Native graphics in Kitty, WezTerm, iTerm2, Ghostty, foot terminals
- External Apps - Open files with system default applications (Shift+Enter)
- 38 Built-in Themes - Dark, light, retro, and cinematic themes (Dracula, Nord, Monokai, Solarized, Matrix, Pip-Boy, Blue Sky, Pinky Pie, etc.)
- Custom Themes - Create your own themes in TOML format
- 15 UI Languages - Bengali, Chinese, English, French, German, Hindi, Indonesian, Japanese, Korean, Portuguese, Russian, Spanish, Thai, Turkish, Vietnamese
- Session Management - Auto-save and restore panel layouts
- System Monitor - Real-time CPU, RAM, network I/O in menu bar and disk usage in status bar; click any indicator to open a detail modal (top processes by CPU/RAM, top processes by network connections with listening ports)
- Search & Replace - Live preview, match counter, regex support
- Custom Scripts - Run user-defined scripts from the Scripts menu (supports
.bg.for background,.report.for modal output) - Cross-platform - Linux (x86_64, ARM64), macOS (Intel, Apple Silicon), Windows (native via ConPTY, WSL)
- Full Mouse Support - Click navigation, scroll, double-click actions
- Keyboard Layouts - Cyrillic support with automatic hotkey translation
- Vim Mode - Optional Vim-style editing with Cyrillic keyboard support
- Directory Switcher - Quick directory switching with Ctrl+P
- Bookmarks - Save and organize frequently used locations
- Command Palette - Quick access to all commands (Ctrl+Shift+P)
Installation
Quick Start: Download pre-built binaries from GitHub Releases or install via your package manager.
Supported Platforms: Linux (x86_64, ARM64), macOS (Intel, Apple Silicon), Windows (x86_64)
Choose Your Installation Method
📦 Pre-built Binaries (Recommended)
Download the latest release for your platform from GitHub Releases:
# Linux x86_64 (also works in WSL) wget https://github.com/termide/termide/releases/latest/download/termide-0.18.1-x86_64-unknown-linux-gnu.tar.gz tar xzf termide-0.18.1-x86_64-unknown-linux-gnu.tar.gz ./termidemacOS Intel (x86_64)
curl -LO https://github.com/termide/termide/releases/latest/download/termide-0.18.1-x86_64-apple-darwin.tar.gz tar xzf termide-0.18.1-x86_64-apple-darwin.tar.gz ./termide
macOS Apple Silicon (ARM64)
curl -LO https://github.com/termide/termide/releases/latest/download/termide-0.18.1-aarch64-apple-darwin.tar.gz tar xzf termide-0.18.1-aarch64-apple-darwin.tar.gz ./termide
Linux ARM64 (Raspberry Pi, ARM servers)
wget https://github.com/termide/termide/releases/latest/download/termide-0.18.1-aarch64-unknown-linux-gnu.tar.gz tar xzf termide-0.18.1-aarch64-unknown-linux-gnu.tar.gz ./termide
Windows x86_64 (download .zip from Releases, extract, run in Windows Terminal)
https://github.com/termide/termide/releases/latest/download/termide-0.18.1-x86_64-pc-windows-msvc.zip
🐧 Debian/Ubuntu (.deb)
Download and install the .deb package from GitHub Releases:
# x86_64 only (ARM64 use tar.gz above)
wget https://github.com/termide/termide/releases/latest/download/termide_0.18.1-1_amd64.deb
sudo dpkg -i termide_0.18.1-1_amd64.deb
🎩 Fedora/RHEL/CentOS (.rpm)
Download and install the .rpm package from GitHub Releases:
# x86_64 only (ARM64 use tar.gz above)
wget https://github.com/termide/termide/releases/latest/download/termide-0.18.1-1.x86_64.rpm
sudo rpm -i termide-0.18.1-1.x86_64.rpm
🐧 Arch Linux (AUR)
Install from the AUR using your favorite AUR helper:
# Build from source yay -S termideOr install pre-built binary
yay -S termide-bin
Or manually:
git clone https://aur.archlinux.org/termide.git
cd termide
makepkg -si
🍺 Homebrew (macOS/Linux)
Install via Homebrew tap:
brew tap termide/termide
brew install termide
❄️ NixOS/Nix (Flakes)
Install using Nix flakes:
# Run without installing nix run github:termide/termideInstall to user profile
nix profile install github:termide/termide
Or add to NixOS configuration.nix
{ nixpkgs.overlays = [ (import (builtins.fetchTarball "https://github.com/termide/termide/archive/main.tar.gz")).overlays.default ]; environment.systemPackages = [ pkgs.termide ]; }
🔨 Build from Source (Cargo)
Build from source using Cargo:
# Clone the repository git clone https://github.com/termide/termide.git cd termideBuild and run
cargo run --release
🔨 Build from Source (Nix)
Build from source using Nix (for development):
# Clone the repository git clone https://github.com/termide/termide.git cd termideEnter development environment (includes Rust toolchain and all dependencies)
nix develop
Build the project
cargo build --release
Run
./target/release/termide
Requirements
- For pre-built binaries: No additional requirements
- For building from source:
- Rust 1.70+ (stable)
- For Nix users: Nix with flakes enabled
Command-Line Options
termide [OPTIONS] [PATH]
Options: --log-level <LEVEL> Set log level (trace, debug, info, warn, error) --no-lsp Disable LSP language servers --config <FILE> Use custom config file path -h, --help Print help -V, --version Print version
Usage
Quick Start
After launching TermIDE, you'll see a width-adaptive layout:
- Wide terminals (>= 160 cols): Sidebar (Git Status + Operations accordion) + two File Manager panels
- Normal terminals (< 160 cols): Sidebar (Git Status + File Manager + Operations accordion) + File Manager panel
- Menu bar at the top, status bar at the bottom
Use Alt+←/→ to switch between panel groups, Alt+↑/↓ to navigate within a group, Alt+M to open the menu.
Documentation
For detailed documentation, see:
- English: doc/en/README.md
- Russian: doc/ru/README.md
- Chinese: doc/zh/README.md
Keyboard Shortcuts (Quick Reference)
All shortcuts are customizable in
config.toml. See Configuration.
Global:
Alt+M- Toggle menuAlt+H- Help panelAlt+Q- QuitAlt+←/→orAlt+A/D- Switch panel groupsAlt+↑/↓orAlt+W/S- Navigate panels in groupAlt+1-9/Ctrl+Alt+1-9- Jump to panel by numberAlt+K- Add bookmarkCtrl+P- Command paletteAlt+X/Alt+Delete- Close panelAlt+Backspace- Toggle panel stackingAlt+PgUp/PgDn- Move panel between groupsAlt+=/-- Resize group widthAlt+/- Sessions menu
Panels:
Alt+F- File ManagerAlt+T- TerminalAlt+E- EditorAlt+L- JournalAlt+G- Git StatusAlt+O- OutlineAlt+I- DiagnosticsAlt+C- Git LogAlt+P- Open config
File Manager:
Ctrl+/- Open directory switcherAlt+K- Add bookmarkEnter- Open file/directoryBackspace- Parent directory→/l- Expand directory (tree view)←/h- Collapse directory (tree view)/- In-tree incremental searchSpace- File infoInsert- Toggle selection (cascades into directories)Ctrl+A- Select allCtrl+F- Search by nameCtrl+Shift+F- Search in contentsCtrl+N- New fileD/F7- New directoryC/F5- CopyM/F6- MoveDelete/F8- DeleteF3- Preview fileShift+Enter- Open with system app.- Toggle hidden filesCtrl+G- Go to path/URL
Editor:
Ctrl+S- SaveCtrl+Shift+S- Save As (with executable checkbox)Ctrl+Z- UndoCtrl+Y/Ctrl+Shift+Z- RedoAlt+B- Toggle git blameCtrl+F- FindCtrl+H- ReplaceF3/Shift+F3- Next/previous matchCtrl+/- Toggle comment (line/block)Ctrl+D- Duplicate lineCtrl+C/X/V- Copy/Cut/PasteCtrl+Left/Right- Move cursor by wordCtrl+Shift+Left/Right- Select by wordCtrl+Up/Down- Jump to paragraph/symbol boundaryCtrl+Shift+Up/Down- Select to paragraph/symbol boundary
Git Status:
Tab- Switch focusCtrl+S- Stage selectedCtrl+U- Unstage selectedCtrl+R- Refresh
Git Log:
j/kor↑/↓- Navigate commitsEnter/d- View diffc- Copy commit hashg/G- First/last commito/Shift+Enter- Open commit in browser
Configuration
TermIDE follows the XDG Base Directory Specification for file organization.
Configuration file location:
- Linux/BSD:
~/.config/termide/config.toml(or$XDG_CONFIG_HOME/termide/config.toml) - macOS:
~/Library/Application Support/termide/config.toml - Windows:
%APPDATA%\termide\config.toml
Session data location:
- Linux/BSD:
~/.local/share/termide/sessions/(or$XDG_DATA_HOME/termide/sessions/) - macOS:
~/Library/Application Support/termide/sessions/ - Windows:
%APPDATA%\termide\sessions\
Log file location:
- Linux/BSD:
~/.cache/termide/termide.log(or$XDG_CACHE_HOME/termide/termide.log) - macOS:
~/Library/Caches/termide/termide.log - Windows:
%LOCALAPPDATA%\termide\cache\termide.log
Bookmarks location:
- Linux/BSD:
~/.local/share/termide/bookmarks.toml(or$XDG_DATA_HOME/termide/bookmarks.toml) - macOS:
~/Library/Application Support/termide/bookmarks.toml
Example Configuration
[general] theme = "windows-xp" language = "auto" # auto, bn, de, en, es, fr, hi, id, ja, ko, pt, ru, th, tr, vi, zh vim_mode = false session_retention_days = 30 bell_on_operation_complete = true icon_mode = "auto" # auto, emoji, unicode resource_monitor_interval = 1000[editor] tab_size = 4 show_git_diff = true word_wrap = true auto_indent = true auto_close_brackets = true
[file_manager] extended_view_width = 50
[lsp] enabled = true auto_completion = true
[logging] min_level = "info"
Available Themes
Dark Themes:
windows-xp- Default theme (Windows XP style)dracula- Popular Dracula thememonokai- Classic Monokai themenord- Nord theme with blue tonesonedark- Atom One Dark themesolarized-dark- Dark Solarized thememidnight- Midnight Commander inspiredmacos-dark- macOS dark style
Light Themes:
atom-one-light- Atom One Light themeayu-light- Ayu Light themegithub-light- GitHub Light thememanuscript- Medieval manuscript with aged parchment tonesmaterial-lighter- Material Lighter themesolarized-light- Light Solarized thememacos-light- macOS light style
Retro Themes:
far-manager- FAR Manager stylenorton-commander- Norton Commander styledos-navigator- DOS Navigator stylevolkov-commander- Volkov Commander stylewindows-95- Windows 95 stylewindows-98- Windows 98 style
Cinematic Themes:
matrix- The Matrix digital rain (green on black)pip-boy- Fallout Pip-Boy 3000 phosphor CRTterminator- Skynet HUD / Mars red aesthetics
Other Themes:
terminal- Classic terminal style (inherits terminal colors)
Theme Examples:
![]() | ![]() | ![]() |
| Windows XP (default) | Dracula | Ayu Light |
![]() | ![]() | ![]() |
| Monokai | Nord | Material Lighter |
Custom Themes
You can create custom themes by placing TOML files in the themes directory:
- Linux:
~/.config/termide/themes/ - macOS:
~/Library/Application Support/termide/themes/ - Windows:
%APPDATA%\termide\themes\
User themes take priority over built-in themes with the same name. See themes/ directory in the repository for theme file format examples.
Custom Scripts
You can add custom scripts to the Scripts menu by placing executable files in:
- Linux:
~/.local/share/termide/scripts/ - macOS:
~/Library/Application Support/termide/scripts/ - Windows:
%APPDATA%\termide\scripts\
Features:
- Scripts appear in the Scripts menu (menu bar)
- Subdirectories create nested submenus
- Add
.bg.to filename for background execution (e.g.,deploy.bg.sh) - Add
.report.to filename for background with modal output (e.g.,check.report.sh) - Display name is the part before the first dot
Example:
# Create scripts directory mkdir -p ~/.local/share/termide/scriptsAdd a simple script
cat > ~/.local/share/termide/scripts/hello.sh << 'EOF' #!/bin/bash echo "Hello from TermIDE!" read -p "Press Enter to close..." EOF
Make it executable (required on Unix)
chmod +x ~/.local/share/termide/scripts/hello.sh
Note: On Unix systems, scripts must have the executable permission (chmod +x). Use Options → Manage scripts to open the scripts folder.
Development
Project Structure
TermIDE uses a Cargo workspace with modular crates:
crates/ ├── app/ # Application core, event handling, panel management ├── app-core/ # Core application traits and types ├── app-event/ # Event handling logic ├── app-modal/ # Modal dialog handling ├── app-panel/ # Panel management operations ├── app-session/ # Session save/restore ├── app-watcher/ # File system watcher integration ├── buffer/ # Text buffer implementation ├── clipboard/ # System clipboard integration ├── config/ # Configuration management ├── core/ # Core Panel trait and types ├── file-ops/ # File operations (copy, move, delete, upload, download) ├── git/ # Git integration ├── highlight/ # Syntax highlighting (tree-sitter) ├── i18n/ # Internationalization (15 languages) ├── keyboard/ # Keyboard handling and layout translation ├── layout/ # Panel layout and accordion system ├── logger/ # Logging system ├── lsp/ # Language Server Protocol client ├── modal/ # Modal dialog implementations ├── panel-diagnostics/ # LSP diagnostics panel ├── panel-editor/ # Text editor panel ├── panel-file-manager/ # File manager panel ├── panel-git-diff/ # Git diff viewer panel ├── panel-git-log/ # Git log panel ├── panel-git-status/ # Git status panel ├── panel-image/ # Image viewer panel ├── panel-misc/ # Help and Journal panels ├── panel-operations/ # Background operations panel ├── panel-outline/ # Structural code navigation panel ├── panel-terminal/ # Terminal emulator panel ├── session/ # Session persistence ├── state/ # Application state management ├── system-monitor/ # CPU/RAM/Disk monitoring ├── theme/ # Theme system and built-in themes ├── ui/ # UI utilities and path formatting ├── ui-render/ # UI rendering (menu, status bar, panels) ├── vfs/ # Virtual filesystem (SFTP, FTP, SMB) └── watcher/ # File system event watcher
themes/ # Built-in theme definitions (TOML files) doc/ ├── en/ # English documentation ├── ru/ # Russian documentation └── zh/ # Chinese documentation
Building
# Development build cargo buildRelease build with optimizations
cargo build --release
Run tests
cargo test
Check code quality
cargo clippy cargo fmt --check
Nix Development
The project includes a Nix flake for reproducible development environments:
# Enter development shell nix developBuild with Nix
nix build
Run checks
nix flake check
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
License
This project is licensed under the MIT License.
Acknowledgments
Built with:
- ratatui - Terminal UI framework
- crossterm - Cross-platform terminal manipulation
- portable-pty - PTY implementation
- tree-sitter - Syntax highlighting
- ropey - Text buffer
- sysinfo - System resource monitoring





