Skip to content

Repository files navigation

Notchshell

One hotkey. The terminal is already open.

A terminal, not a cockpit — it just happens to know which agent is waiting for you.

macOS 14+ Swift 5.10 Ghostty 1.3.1 License: personal, non-commercial

Notchshell dropping down, splitting panes, switching themes and going translucent

Press Space anywhere and it slides down over whatever you were doing. Press it again and it is gone.


Three tabs: one badge faded, one lit, one carrying an amber dot

It knows which agent is waiting

Run claude, codex, gemini or a dozen others and the tab wears that tool's mark. When one finishes — or stops to ask you something — while you are looking elsewhere, it says so: a notification you can click to land in the right tab, and a dot that stays until you look.

Come back to a folder you have worked in before and the mark is still there, faded. One click picks the conversation back up.

The command palette open over the terminal, filtered to the Nord themes

Everything it does, one keystroke away

P opens a search box over the terminal: every command, every one of the 602 themes, by name.

No dashboards, no side panels, no second app to learn. The terminal keeps the screen; the rest gets out of the way.


Split panes running a git graph and a syntax-highlighted file

Tabs and split panes

D splits right, D splits down, and every pane is a real shell. blows one pane up to fill the tab and back again.

Quit with three tabs and a split, and that is what comes back — the shape, the proportions, and each pane in its own folder.

The theme picker open over a light theme

602 themes, applied live

The whole iTerm2-Color-Schemes catalog ships with the app, so it works on a clean machine with nothing else installed.

Pick one and the running panes repaint — no restart, no reload.

The panel translucent, the desktop showing through

Opacity, font size and height

The three things people actually reach for are one click away on the tab bar, not buried in Settings. Drag the handle on the bottom edge to resize the panel.

Record what you did

The camera button records the active tab to MP4 in ~/Movies/Notchshell, and can export a GIF from it afterwards.

Only the terminal is in frame — not the chrome, not the tab bar, not what is behind the panel.

A Finder right-click menu with New Terminal in it, and the Notchshell button in the toolbar

Open it where you already are

notchshell . drops a tab in this folder, the way code . or zed . works.

In Finder it is already there: a button in the toolbar, and New Terminal in the right-click menu — on a folder, on a file, or on the empty space in the window. Whichever you point at, the tab opens in that folder.


Install

The installer window: drag Notchshell onto Applications

Homebrew

brew tap hakanuzum/notchshell
brew trust hakanuzum/notchshell
brew install --cask notchshell

brew trust is Homebrew's own requirement for taps outside its official ones, asked once.

Or the disk image — download the latest .dmg from Releases and drag the app onto Applications. It is signed ad-hoc rather than notarized, so right-click it in /Applications and choose Open once; after that it opens normally.

Notchshell lives in the menu bar with no Dock icon, and looks best with the Dock at the bottom, where the panel gets the full width.


How it compares

The terminal is Ghostty, so the first half is mostly its answers rather than ours — which is the point of embedding it. The second is the app around it, and the reason this exists at all.

   Notchshell       Ghostty       iTerm2       WezTerm       Kitty       Alacritty   
Terminal
GPU rendering
True colour
Ligatures
Unicode
Styled underlines
Synchronized output
Kitty keyboard
OSC 52 clipboard
OSC 8 hyperlinks
Shell integration
Notifications
Kitty graphics
iTerm2 images
Sixel
Tabs
Split panes
Multiplexer
App
Drop-down panel
Every Space
Agent awareness
Bundled themes
Command palette
Recording
Finder extension
Socket + MCP
Session restore

Two gaps, both deliberate. Sixel is Ghostty's call — it does the Kitty graphics protocol instead. A multiplexer means detach and re-attach, and tabs, splits and session restore cover what that is usually reached for.

Every Space means the panel joins all of them, so the hotkey brings down the shell you were already in rather than a new window wherever you happen to be.

Reach it from anywhere

notchshell links itself into ~/.local/bin the first time the app runs, so it is there from any shell:

notchshell .            # a tab in this folder, like code . or zed .
notchshell ~/src/app    # or any other
notchshell              # just drop the terminal

macOS has no "default terminal" setting, so Notchshell answers the other routes too: open -a Notchshell <path>, the notchshell:// URL scheme, and Finder. In VS Code, point "terminal.external.osxExec" at Notchshell.app and Open in External Terminal lands here.

From Finder, Notchshell installs an extension that puts it where you are looking: a button in the toolbar, and New Terminal in the right-click menu. Enable it once under System Settings → General → Login Items & Extensions.

Opening a folder that already has a tab shows that tab rather than making another, so clicking the toolbar button twice does not leave two of the same. When you do want a second shell in the same place, T clones the tab you are in.

Shortcuts

Toggle terminal SpaceSplit right · down D · D
Pin / unpin PNext / previous pane ] · [
New tab · clone · close T · T · WZoom pane
Reopen closed tab TCopy · paste C · V
Next / previous tab ] · [Clear screen · find K · F
Go to tab 1–9 1 9Command palette P
Rename tabdouble-clickSettings · Help , · /

Unpinned, the panel hides when it loses focus — pin it to keep it down. Every shortcut above except 1 9, and / can be changed in Settings.


Under the hood

Swift and AppKit — no Electron, no web view. The terminal itself is Ghostty, GPU-rendered on Metal, with true colour and ligatures.

Your config stays yours. Notchshell reads ~/.config/ghostty/config and never writes to it. Anything you change in the app lands in ~/.config/notchshell/overrides.conf, which your config is included into. It does not write your shell configuration either.

Automation, all off or ask-first by default, and nothing phones home:

# Unix socket — JSON in, JSON out. See API.md for every action.
echo '{"action":"state"}' | nc -U /tmp/notchshell.sock

# MCP — an HTTP server exposing 18 tools, so an agent can drive the terminal
claude mcp add --transport http notchshell http://localhost:19876/mcp

Build from source. Needs macOS 14+, a full Xcode install (not just Command Line Tools) and Zig 0.15.2 exactly — libghostty is version-gated and 0.16 fails immediately.

git clone --recursive https://github.com/hakanuzum/notchshell.git
cd notchshell && brew install zig@0.15
./scripts/build-ghostty.sh     # libghostty from vendor/ghostty (slow, once)
./scripts/build-install.sh     # build, sign, install to /Applications
./scripts/run-tests.sh         # every suite

License and credits

© 2026 Hakan Uzum. The source is public to read and the app is free for personal, non-commercial use — but commercial use and redistribution are not permitted. See LICENSE for the exact terms.

Notchshell began as a fork of macuake by menemy (MIT), and owes it the shape of the thing. It stands on Ghostty (MIT) for the terminal, iTerm2-Color-Schemes (MIT) for the themes, and Sparkle for updates. Their notices are reproduced in LICENSE.

About

Native Swift/AppKit drop-down terminal emulator for macOS (Quake/Yakuake style), powered by Ghostty. One hotkey; GPU-rendered, tabs, splits, 600+ live themes.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages