Skip to content
thdxgPublic

About

A lightweight macOS terminal with vertical tabs, persistent sessions, and native experience

Topics

Resources

Code of conduct

Contributing

Stars

495 stars

Watchers

0 watching

Forks

Repository files navigation


Macterm

A lightweight macOS terminal with vertical tabs, persistent sessions, and native experience. Built on libghostty.

Latest version Total downloads CI status macOS 14+

Website · Docs · Releases

Macterm's vertical project sidebar beside an editor pane and a shell pane

Watch it work →

Note

This project has no relation to MacTerm, an earlier macOS terminal emulator with the same name.

Features

  • Session persistence
    When you quit, your shells keep running. When you start Macterm again, every pane returns with its scrollback and its running programs.
  • Multiplexing
    Drag a pane onto another pane to join them. Move a pane to its own tab with a drag or a keybind. Macterm saves your projects, tabs and splits and restores them when you start it again.
  • Remote projects
    Open a folder on another machine over SSH. Your shells keep running on that machine. They keep running when you quit Macterm, when the connection drops and when you restart your Mac.
  • Vertical project sidebar
    Projects and their tabs are in a native macOS sidebar. The sidebar is vertical, so there is room to read long names. To add a project from Finder, right-click a folder and select Services → New Macterm Project Here.
  • Pinned tabs
    Pin a tab above your projects to keep it. It starts each time Macterm starts. If its session ends, Macterm starts it again with its command.
  • Command palette
    Press ⌘P to split panes, switch projects or open a folder. Each command is in the palette, and each row shows its keybind.
  • Declarative layouts
    Write the tabs, splits and commands of a project in YAML. Macterm builds the tabs from the file when you apply the layout.
  • Control CLI
    The bundled macterm command controls the running app. Scripts and AI agents can open panes, run commands, and apply and save layouts. macterm skills prints skills that teach a coding agent to use the CLI.
  • Quick terminal
    A drop-down terminal with a global keybind (⌃`). Use it for short tasks from any app.
  • Desktop widgets
    Put a terminal on your desktop next to the macOS widgets. It has the same grid and the same shape. Its shell keeps running when you quit. The widget returns to the same place.
  • Password autofill
    When ssh, sudo or another program asks for a password, Macterm offers to save the password in your keychain after the password works. The next time the same prompt appears, Macterm fills it in after Touch ID or your login password.
  • Adaptive background
    The window takes the background color that the running program paints. A full-screen program colors the whole window. In a split, each pane takes its own color.
  • Ghostty compatibility
    Macterm reads your existing Ghostty config. Your theme, font and keybinds carry over.

Install

Homebrew

brew install --cask thdxg/tap/macterm

The cask removes the Gatekeeper quarantine attribute when it installs. The app then starts with no extra prompts.

From Releases

Download the latest .dmg from Releases. Open it and drag Macterm to Applications. The app has no Apple Developer certificate signature, so clear the quarantine flag one time:

xattr -cr /Applications/Macterm.app

After that, Sparkle installs updates. It checks an EdDSA signature on each update. You do not need xattr again.

Configuration

Macterm reads your Ghostty config from the same places as Ghostty: ~/.config/ghostty/config or ~/Library/Application Support/com.mitchellh.ghostty/config. An existing setup carries over with no change. The Ghostty option reference documents every key. A minimal config looks like this:

theme = catppuccin-mocha
font-family = JetBrains Mono
font-size = 14

A few Macterm defaults are different from the Ghostty defaults: theme, font size, padding and macos-option-as-alt. Macterm also sets tab-inherit-working-directory = false, so new tabs open at the project root. Macterm loads these defaults before your config. A key that you set always wins. defaultsBody in MactermConfig.swift has the full list.

Macterm has its own settings for window opacity, sidebar behavior, quick terminal size and keymaps. Open them with Macterm → Settings. The configuration docs give the full order of precedence and the few window keys that Macterm overrides.

Cookbook

The community shares workflows and recipes: layouts, keybinds and scripts that people run with Macterm. For example:

Do you have a recipe? Start a Cookbook topic. Anyone can post a recipe, and anyone can use one.

Contributing

Read CONTRIBUTING.md for setup, build and pull request rules.

License

MIT

About

A lightweight macOS terminal with vertical tabs, persistent sessions, and native experience

Topics

Resources

Code of conduct

Contributing

Stars

495 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages