Beeterm - Minimalist Desktop Terminal

A clean, frameless desktop terminal emulator built with Electron, xterm.js, and node-pty, featuring a chat-style persistent input bar, multi-tab workflows, and GPU acceleration.

  • Electron
  • TypeScript
  • xterm.js
  • node-pty
  • WebGL
  • Vite

Problem

Standard terminals mix user prompt input directly into the scrolling terminal output buffer, making multi-line edits awkward and command history inspection noisy.

Solution

Beeterm separates output from input with a dedicated bottom command bar, intelligent tab completion, auto-attach for password/interactive prompts, and WebGL-accelerated rendering.

My role

Sole developer and designer - IPC communication architecture, PTY daemon lifecycle, custom titlebar, and xterm.js renderer integration.

Impact

Provides a distraction-free, aesthetically modern terminal experience with zero terminal emulator bloat.

Challenges

Managing bi-directional IPC between Electron's main process and renderer for raw PTY streams, handling terminal resize signals reliably, and auto-detecting interactive CLI prompts.

Screenshots

The problem

Traditional terminal emulators place the input cursor right at the tail of stdout text. When commands output extensive logs or run long-running processes, reading previous output while drafting the next command creates visual friction.

The approach

Beeterm re-imagines the desktop terminal interface around clarity:

  • Bottom Chat-Style Input: Commands are typed into a fixed bottom input bar supporting multiline drafting (Shift + Enter), history recall, and inline syntax coloring.
  • Auto-Attach for Interactive Prompts: When an interactive program (like sudo, ssh, or an interactive wizard) requests TTY stdin, the input seamlessly routes keystrokes straight to the PTY.
  • Multiple Tabs: Lightweight tab management with keyboard shortcuts (Cmd/Ctrl + T, Cmd/Ctrl + W).
  • Tab Completion: Context-aware completion across binaries in $PATH, filesystem paths, and common CLI flags.
  • GPU Accelerated: Uses xterm.js WebGL addon for silky-smooth 60fps scrolling and font rendering.

Architecture

Electron Main Process
       ▼ node-pty (Spawns native shell: zsh/bash)
IPC Stream Channel
       ▼ Electron Renderer (xterm.js + WebGL canvas + Custom Input UI)

Packaging

Configured with Electron Builder to produce portable Linux AppImages, .deb packages, and macOS application bundles.