Skip to content

gnoviawan/termul

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Termul Manager

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.

Original project by gnoviawan. This repository also includes Tauri port and migration contributions by mannnrachman.

Note: This is an experimental project developed using long-running autonomous AI agents. It took a total of 15 hours for the first iteration and 8 hours for the 2nd UI iteration, with minimal human intervention, plus 6 iterations for bug fixes with HITL (Human-in-the-Loop).

Termul Manager License Tauri React

Features

  • Project-Based Workspaces - Organize terminals by project with dedicated workspace directories
  • Tabbed Interface - Windows Terminal-style tab bar with drag-and-drop reordering
  • Multiple Shell Support - Automatically detects and supports PowerShell, CMD, Git Bash, WSL, and more
  • Session Persistence - Terminal sessions persist across app restarts
  • Workspace Snapshots - Save and restore workspace states
  • Git Integration - Shows current branch and status in the status bar
  • Command History - Track and search through command history
  • Keyboard Shortcuts - Customizable keyboard shortcuts for power users
  • Cross-Platform - Works on Windows, macOS, and Linux

Screenshots

Termul Manager Screenshot

Installation

Prerequisites

Common Prerequisites

  • Node.js 18+ (recommended: use nvm)
  • npm or bun

For Tauri Build

Tauri requires additional system dependencies:

Windows:

  • Microsoft Visual C++ Build Tools (included in Visual Studio 2022)
  • WebView2 Runtime (usually pre-installed on Windows 10+)

macOS:

  • Xcode Command Line Tools: xcode-select --install
  • Rust toolchain (see below)

Linux:

# Debian/Ubuntu
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

# Fedora
sudo dnf install webkit2gtk4.1-devel \
    gcc \
    gcc-c++ \
    libopenssl-devel \
    appindicator-devel \
    librsvg2-devel \
    patchelf

Rust Toolchain (all platforms):

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Verify installation
rustc --version
cargo --version

From Source

# Clone the repository
git clone https://github.com/gnoviawan/termul.git
cd termul

# Install dependencies
npm install

Running in Development Mode

npm run dev

Building for Production

# Build for your current platform
npm run build

# Debug build (faster compilation, larger binary)
npm run build:tauri:debug

# Platform-specific builds
npm run build:tauri:win        # Windows (x64)
npm run build:tauri:mac-arm    # macOS (Apple Silicon)
npm run build:tauri:mac-x64    # macOS (Intel)
npm run build:tauri:linux      # Linux (x64)

Build Output Location: src-tauri/target/release/bundle/

Usage

Creating a Project

  1. Click the + button in the sidebar to create a new project
  2. Select a workspace directory
  3. Configure your default shell (optional)

Terminal Tabs

  • Click + next to tabs to open a new terminal with the default shell
  • Click the dropdown arrow to select a specific shell
  • Drag tabs to reorder them
  • Double-click a tab to rename it
  • Right-click for context menu (rename, close, kill process)
  • Scroll with mouse wheel when tabs overflow

Keyboard Shortcuts

Action Default Shortcut
New Terminal Ctrl+T
Next Tab Ctrl+PageDown
Previous Tab Ctrl+PageUp
Command Palette Ctrl+K or Ctrl+Shift+P

Shortcuts are customizable in Settings. On Tauri/WebView2, browser-reserved shortcuts such as Ctrl+Tab are not used as defaults because they are not reliably interceptable.

Migration Status

Termul has migrated its desktop runtime to Tauri 2.0 for better performance, smaller bundle sizes, and improved security. The remaining migration artifacts are now mostly archived documentation and cleanup notes.

  • Current Phase: Cleanup + parity hardening
  • Status: Core runtime on Tauri, repository cleanup still in progress

For archived migration history, see Electron to Tauri Migration Status. For the current cleanup snapshot, use Tauri Cleanup Status (2026-03-06).

Tech Stack

Application

  • Tauri 2.0 - Cross-platform desktop app framework
  • Rust - Backend logic
  • React 18 - UI framework
  • TypeScript - Type safety
  • Vite - Build tool
  • Tailwind CSS - Styling
  • shadcn/ui - UI components
  • Zustand - State management
  • tauri-pty - Terminal emulation
  • xterm.js - Terminal rendering
  • Framer Motion - Animations

Tauri Plugins Used

  • @tauri-apps/plugin-fs - Filesystem access
  • @tauri-apps/plugin-store - Configuration persistence
  • @tauri-apps/plugin-os - OS information
  • @tauri-apps/plugin-dialog - Native dialogs
  • @tauri-apps/plugin-clipboard-manager - Clipboard operations
  • @tauri-apps/plugin-updater - Automatic updates
  • @tauri-apps/plugin-process - Process management

Development

# Run in development mode with hot reload
npm run dev

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Type checking
npm run typecheck

# Linting
npm run lint

# Tauri CLI (direct access)
npm run tauri <command>

# Build Tauri app
npm run build

# Build with debug info
npm run build:tauri:debug

Project Structure

src/
├── renderer/       # React frontend used by the Tauri app
│   ├── components/ # UI components
│   ├── hooks/      # Custom React hooks
│   ├── lib/        # Runtime adapters and desktop integration helpers
│   ├── pages/      # Page components
│   └── stores/     # Zustand stores
├── shared/         # Shared types between main/renderer
src-tauri/          # Tauri Rust code, configuration, and bundling
docs/electron-old/  # Archived Electron docs and migration history

Platform Adapters

The renderer keeps an adapter/service layer so desktop integrations stay isolated from UI code:

src/renderer/lib/
├── tauri-*.ts    # Tauri-native integrations
├── *.ts          # Runtime-safe facades and helpers
└── __tests__/    # Regression and parity coverage

Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

About

A modern, project-aware terminal manager built with Electron. Termul treats workspaces as first-class citizens, allowing you to organize terminals by project with persistent sessions, snapshots, and a clean tabbed interface.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages