Beta

garterm

GPU-Accelerated Terminal Emulator

A fast terminal emulator with GPU-accelerated rendering via wgpu. Features tabbed interface with split panes, VT100-compatible terminal emulation, 7 built-in color themes, and deep integration with gar's Lua configuration. Control running instances via gartermctl for scripting and automation.

Features

  • GPU-accelerated rendering with wgpu
  • Tabbed interface with horizontal/vertical splits
  • VT100/xterm-compatible terminal emulation
  • 7 built-in color themes (Tokyo Night, Catppuccin, etc.)
  • Lua + TOML configuration
  • Deep integration with gar window manager
  • IPC control via gartermctl
  • Declarative session management
  • Text selection (normal, line, block modes)
  • Incremental search with highlighting
  • 10,000 line scrollback buffer
  • Mouse support (X10, SGR, urxvt encodings)
  • OSC 52 clipboard operations
  • Shell integration (OSC 133)
  • Font fallbacks with Nerd Font support
  • Configurable tab bar with path shortening

Quick Start Guide

Get garterm running standalone or integrated with the gar window manager.

1. Installation

terminal
$ curl -fsSL https://gar.musicsian.com/install.sh | bash -s -- --component=garterm # Install via script
$ cd ~/.local/src/gardesk/garterm && cargo build --release # Or build from source

2. Running garterm

terminal
$ garterm # Start with default config
$ garterm -e /bin/zsh # Start with specific shell
$ garterm --font-size 14 # Custom font size
$ garterm --print-config # Print loaded config and exit

3. Configuration

Create a configuration file or integrate with gar:

terminal
$ mkdir -p ~/.config/garterm # Create config directory
$ $EDITOR ~/.config/garterm/config.toml # Edit TOML config (standalone)
$ $EDITOR ~/.config/gar/init.lua # Or configure via gar.terminal table

4. Control with gartermctl

terminal
$ gartermctl new-tab # Open new tab
$ gartermctl split --horizontal # Split pane horizontally
$ gartermctl next-tab # Switch to next tab
$ gartermctl send "ls -la\n" # Send text to terminal
$ gartermctl load-session webdev # Load named session
$ gartermctl --all reload # Reload config on all instances

5. Basic Navigation

Action Keybind
New tab Ctrl+Shift+T
Close tab Ctrl+Shift+W
Next/prev tab Alt+] / Alt+[
Split vertical Ctrl+Shift+Enter
Split horizontal Ctrl+Shift+\
Focus direction Alt+Arrow
Search Ctrl+Shift+F