Skip to content

Repository files navigation

FigyTerm

FigyTerm

A modern, intelligent terminal for macOS with autocomplete superpowers.

FeaturesInstallationDevelopmentShortcutsContributing


FigyTerm is a fully local desktop terminal built with Tauri 2, React, and Rust. It brings IDE-level autocomplete to your command line — context-aware suggestions for git, docker, pnpm, npm, uv, and more — all running natively with zero network dependency.

Inspired by Fig (now part of AWS), FigyTerm is an open-source alternative that keeps your terminal experience fast, private, and extensible.

Features

  • Intelligent Autocomplete — Context-aware suggestions for commands, subcommands, options, and file paths
  • Spec-based Engine — Compatible with Fig's spec format for community-driven command completions
  • Split Panes — Up to 4 resizable terminal panes per tab (Cmd+D / Cmd+Shift+D)
  • Multiple Tabs — Browser-style tab bar with drag-to-reorder and rename support
  • Oh My Zsh Integration — Real-time theme switching with full prompt rendering
  • Dark & Light Mode — Beautifully themed UI that adapts to your preference
  • Recent Directory Ordering — Frequently visited folders appear first in suggestions
  • Clickable URLs — Links in terminal output open in your default browser
  • Native Performance — Rust PTY backend with zero-latency input

Installation

Download (macOS)

  1. Go to the Releases page
  2. Download the .dmg file for your Mac:
    • Apple Silicon (M1/M2/M3/M4): FigyTerm_x.x.x_aarch64.dmg
    • Intel: FigyTerm_x.x.x_x64.dmg
  3. Open the .dmg file
  4. Drag FigyTerm to your Applications folder
  5. Launch from Applications

First launch: macOS may show "FigyTerm can't be opened because it is from an unidentified developer." Go to System Settings > Privacy & Security, scroll down, and click Open Anyway.

"FigyTerm" is damaged and can't be opened: This happens because the app isn't code-signed. Run this in Terminal:

xattr -cr /Applications/FigyTerm.app

Then launch again.

Keychain access popup: macOS may ask to allow FigyTerm to access your keychain (for SSH keys, credentials, etc.). Click Always Allow or Allow to proceed. If you accidentally deny it, go to Keychain Access > login and update the access control for the relevant entry.

Build from Source

git clone https://github.com/code4mk/figyterm.git
cd figyterm
npm install
npm run tauri build

The built .app and .dmg will be in src-tauri/target/release/bundle/macos/.

Prerequisites (for building from source)

Requirement Version
Node.js 18+
Rust 1.86+
Tauri CLI 2.x
Xcode Command Line Tools xcode-select --install

Keyboard Shortcuts

Shortcut Action
⌘ T New tab
⌘ W Close active pane
⌘ D Split pane horizontally
⌘ ⇧ D Split pane vertically
⌘ K Clear terminal
⌘ , Settings
⌘ 1-9 Switch to tab N
⌘ ⇧ [ Previous tab
⌘ ⇧ ] Next tab
Tab Accept autocomplete suggestion
↑ ↓ Navigate suggestions
Esc Dismiss suggestions

Shell-native shortcuts (Ctrl+C, Ctrl+D, Ctrl+Z, Ctrl+L) pass through directly.

Supported Command Specs

FigyTerm ships with built-in specs for popular tools:

Command Coverage
git Subcommands, branches, options
docker Commands, containers, images, options
docker compose Services, commands, options
npm Scripts, packages, options
pnpm Scripts, workspaces, options
yarn Scripts, packages, options
uv Scripts from pyproject.toml, options
cd Directories with recent-first ordering

Adding a new spec is straightforward — see the Spec Authoring Guide.

Architecture

┌─────────────────────────────────────────────┐
│  React + TypeScript (UI Layer)              │
│  ├── xterm.js (terminal rendering)         │
│  ├── Autocomplete engine (spec-based)      │
│  ├── Split panes (react-resizable-panels)  │
│  └── Settings & theme management           │
├─────────────────────────────────────────────┤
│  Tauri IPC (commands + events)             │
├─────────────────────────────────────────────┤
│  Rust (Native Layer)                        │
│  ├── PTY session management                │
│  ├── Path completion (filesystem)          │
│  ├── Shell command execution               │
│  └── Window management                     │
└─────────────────────────────────────────────┘

Tech Stack

Layer Technology
Frontend React 18, TypeScript, Vite, Tailwind CSS
Terminal xterm.js, FitAddon, WebLinksAddon
Desktop Tauri 2.x
Native Rust
PTY portable-pty
State Zustand
UI Components Headless UI, Lucide Icons
Panels react-resizable-panels

Development

# Install dependencies
npm install

# Start dev mode (hot-reload frontend + Rust rebuild)
npm run tauri dev

# Type check
npx tsc --noEmit

# Production build
npm run tauri build

Project Structure

figyterm/
├── src/                          # Frontend (React + TypeScript)
│   ├── components/
│   │   ├── AppShell/             # Main layout, tab & pane management
│   │   ├── Terminal/             # Terminal, TabBar, SplitHandle, PaneContainer
│   │   └── Settings/            # Settings modal (tabbed)
│   ├── services/                 # Autocomplete engine, spec registry, recent dirs
│   ├── specs/                    # Command completion specs (git, docker, etc.)
│   ├── stores/                   # Zustand stores (settings, theme)
│   └── types/                    # TypeScript definitions (figy, terminal)
├── src-tauri/                    # Backend (Rust)
│   └── src/
│       ├── commands/             # Tauri IPC handlers
│       │   ├── terminal.rs       # PTY session create/write/resize/close
│       │   ├── autocomplete.rs   # Path completions
│       │   └── shell_exec.rs     # Shell command execution
│       └── lib.rs                # App entry point
├── docs/                         # Documentation
│   ├── CONTRIBUTING.md           # Contribution guidelines
│   └── SPECS.md                  # Spec authoring guide
├── public/                       # Static assets (logo, icons)
└── package.json

Roadmap

  • Real PTY sessions with persistent shell
  • Multi-tab support with rename
  • Intelligent autocomplete (spec-based)
  • Split panes (up to 4 per tab)
  • Oh My Zsh theme management
  • Dark/Light mode
  • Recent directory ordering
  • Clickable URLs
  • Command history search (Ctrl+R enhancement)
  • Plugin system for custom specs
  • AI-powered command suggestions (local models)
  • Snippet management
  • Session restore on relaunch

Contributing

We welcome contributions! Please read our Contributing Guide to get started.

License

MIT

About

Fig like terminal figyterm

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages