Skip to content

menemy/macuake

Repository files navigation

macuake

Alpha — Quake-style drop-down terminal for macOS, powered by Ghostty.

One hotkey. Instant terminal. Option+Space slides it down from the top of any screen.

macOS 14+ Swift 5.9 License: MIT

Features

  • GPU-accelerated — GhosttyKit Metal renderer. True color, ligatures, GPU text shaping.
  • Hotkey toggleOption+Space (customizable) from any app. No Dock icon.
  • Tabs & split panes — multiple sessions with horizontal/vertical splits.
  • Ghostty themes — use any Ghostty config for fonts, colors, opacity, keybindings.
  • MCP server — built-in HTTP server (port 19876) with 17 tools. Control from Claude Code, Cursor, or any MCP client.
  • Socket API — Unix socket at /tmp/macuake.sock for scripting.
  • Auto-updates — Sparkle integration with EdDSA-signed releases.
  • Multi-display — follows cursor across screens, notch-aware.

Install

Download from Releases, or:

curl -LO https://github.com/menemy/macuake/releases/latest/download/Macuake.dmg
open Macuake.dmg
# Drag to /Applications

Build from source

Requires: macOS 14+, Swift 5.9+, Zig 0.15.2 (for GhosttyKit).

git clone --recursive https://github.com/menemy/macuake.git
cd macuake
./scripts/build-ghostty.sh   # build GhosttyKit xcframework
swift build                   # debug build

Usage

Launch macuake — it lives in the menu bar (no Dock icon). Press Option+Space to toggle.

Shortcut Action
Option+Space Toggle terminal
Cmd+T New tab
Cmd+W Close tab
Cmd+D Split horizontal
Cmd+Shift+D Split vertical
Cmd+] / Cmd+[ Next / previous pane
Cmd+1..9 Switch to tab N
Cmd+, Settings

Ghostty config

macuake uses your Ghostty config (~/.config/ghostty/config). Open it from Settings or:

echo '{"action":"state"}' | nc -U /tmp/macuake.sock

MCP Server

Add to Claude Code:

claude mcp add --transport http macuake http://localhost:19876/mcp

17 tools available: state, list, toggle, show, hide, pin, unpin, new_tab, focus, close_session, execute, read, paste, control_char, clear, split, set_appearance.

Pane support

# List tabs with pane tree
claude> list(include_panes=true)

# Focus a specific pane
claude> focus(pane_id="...")

# Navigate panes
claude> focus(direction="next")

# Close a pane (not the whole tab)
claude> close_session(pane_id="...")

Socket API

See API.md for the full reference.

# Execute a command
echo '{"action":"execute","command":"ls -la"}' | nc -U /tmp/macuake.sock

# Read terminal output
echo '{"action":"read","lines":50}' | nc -U /tmp/macuake.sock

# Split pane
echo '{"action":"split","direction":"h"}' | nc -U /tmp/macuake.sock

Architecture

MaQuake/Sources/MaQuake/
├── API/              # ControlServer (socket API)
├── MCP/              # MCPHTTPServer (MCP over HTTP)
├── Panes/            # PaneManager, PaneNode tree
├── Settings/         # SettingsView, HelpView
├── Tabs/             # TabManager, TabBarView
├── Terminal/         # GhosttyApp, GhosttyBackend, GhosttyTerminalView
├── Updates/          # SparkleUpdater
└── Window/           # WindowController, TerminalPanel, ScreenDetector
  • GhosttyKit — vendored xcframework, GPU Metal terminal engine
  • KeyboardShortcuts — global hotkey (sindresorhus)
  • Sparkle — auto-updates
  • SPM project (not Xcode), swift build / swift test

License

MIT