Loading repository data…
Loading repository data…
gnoviawan / repository
Termul is Terminal Ultimate Manager a cross-platform desktop terminal manager built with Tauri and React. Organize terminals by workspace with persistent sessions, multiple shell, split panes, embedded browser tabs, and a built-in code & markdown editor.
A modern, project-aware terminal manager built with Tauri
Termul treats workspaces as first-class citizens, allowing you to organize terminals by project with persistent sessions, snapshots, and a clean tabbed interface.
Getting Started · Features · Documentation · Contributing · Report Bug · Request Feature
| Feature | Description |
|---|---|
| Project-Based Workspaces | Organize terminals by project with dedicated workspace directories, separate state, and per-project configuration |
| Pane-Based Split Layout | Split your workspace into resizable panes and arrange terminals, editors, and browser tabs side by side |
| Tabbed Interface | Windows Terminal-style tab bar with drag-and-drop reordering, rename, and context menu |
| Multiple Shell Support | Auto-detects PowerShell, CMD, Git Bash, WSL, fish, zsh, and more; switch shells per tab |
| Feature | Description |
|---|---|
| Code Editor | Built-in code editor with syntax highlighting, file buffers, dirty-state tracking, and save/reload |
| Markdown Editor | Rich markdown editing powered by BlockNote with live preview, table of contents, and heading navigation |
| Mermaid Diagrams | Render Mermaid diagrams inline within your markdown documents |
| File Explorer | Full file tree with create, rename, delete, clipboard operations, drag-and-drop, and context menus |
| File Watching | Live file watching for real-time updates as files change on disk |
| Feature | Description |
|---|---|
| Embedded Browser Tabs | Browse the web directly inside your workspace using child webview tabs — no app switching |
| Annotation Workflow | Capture browser states, annotate with severity and intent labels, review, and export |
| Annotation Export | Package annotations with metadata into structured export formats |
| Feature | Description |
|---|---|
| Command Palette | Global command launcher (Ctrl+K / Ctrl+Shift+P) for project switching, workspace actions, and more |
| Command History | Per-project and aggregate command history viewer with search |
| Keyboard Shortcuts | Fully customizable shortcut bindings for every action |
| Git Integration | Status bar shows current branch, working directory, git status, and exit code |
| Custom Title Bar | Desktop-native title bar with window controls, sidebar toggles, and settings navigation |
| Feature | Description |
|---|---|
| Auto-Updater | Built-in update infrastructure with signed artifacts — get notified and update without leaving the app |
| State Management | Zustand-powered reactive stores for projects, terminals, workspace layout, editor buffers, browser sessions, and settings |
| Configurable Settings | Terminal and UI preferences, color picker, theme customization, and shell configuration |
| Cross-Platform | Works on Windows, macOS, and Linux with native platform packaging |
| Error Boundaries | Graceful error handling with runtime error boundaries and user-friendly fallback UI |
| Domain | Key Components | Zustand Store |
|---|---|---|
| Workspace | WorkspaceLayout, PaneRenderer, PaneContent, WorkspaceTabBar | workspace-store |
| Terminal | ConnectedTerminal, XTerminal, TerminalSearchBar, ActivityIndicator | terminal-store |
| Editor | EditorPanel, CodeEditor, MarkdownEditor, EditorToolbar, MermaidBlock | editor-store |
| Browser | BrowserPanel, BrowserControls, AnnotationPanel, AnnotationExportModal | browser-session-store, annotation-store |
| File Explorer | FileExplorer, FileTreeNode, FileTreeContextMenu | — |
| Snapshots | CreateSnapshotModal, RestoreSnapshotModal, DeleteSnapshotModal | snapshot-store |
| Projects | ProjectSidebar, NewProjectModal | project-store |
| Settings | ShortcutRecorder, ColorPickerPopover, ContextBarSettingsPopover | app-settings-store, context-bar-settings-store |
| Updates | UpdateAvailableToast, UpdateReadyModal | updater-store |
| Shared | CommandPalette, ContextMenu, ConfirmDialog, ShellSelector, ErrorBoundary | — |
brew tap gnoviawan/termul
brew install --cask termul
curl -fsSL https://raw.githubusercontent.com/gnoviawan/termul/main/scripts/install.sh | bash
Windows users should install the .exe or .msi from GitHub Releases. Manual DMG downloads in a browser may still hit Gatekeeper, so macOS users should prefer Homebrew or curl.
| Dependency | Version | Notes |
|---|---|---|
| Bun | 1.3+ | JavaScript runtime and package manager |
| Rust | Latest stable | Required for Tauri builds |
xcode-select --install
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential curl wget file \
libxdo-dev libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev patchelf
sudo dnf install webkit2gtk4.1-devel \
gcc gcc-c++ libopenssl-devel \
appindicator-devel librsvg2-devel \
patchelf
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustc --version && cargo --version
# Clone the repository
git clone https://github.com/gnoviawan/termul.git
cd termul
# Install dependencies
bun install
# Launch in development mode
bun run dev
This repository also includes a standalone Vite landing page under landing/.
# Install landing page dependencies (from landing/)
cd landing && bun install
# Start the landing page dev server
bun run landing:dev
# Lint the landing page
bun run landing:lint
# Build the landing page for production
bun run landing:build
# Build for your current platform
bun run build
# Platform-specific builds
bun run build:tauri:win # Windows (x64)
bun run build:tauri:mac-arm # macOS (Apple Silicon)
bun run build:tauri:mac-x64 # macOS (Intel)
bun run build:tauri:linux # Linux (x64)
# Debug build (faster compilation, larger binary)
bun run build:tauri:debug
Build output: src-tauri/target/release/bundle/
| Action | How |
|---|---|
| New terminal | Click + next to tabs |
| Select specific shell | Click the dropdown arrow |
| Reorder tabs | Drag and drop |
| Rename tab | Double-click the tab |
| Context menu | Right-click (rename, close, kill process) |
| Action | Default Shortcut |
|---|---|
| New Terminal | Ctrl+T |
| Next Tab | Ctrl+PageDown |