Ghostty-Based Terminal with Split Tabs and Notifications Designed for Claude Programming Workflows
The Challenge: Managing Multiple Claude Code Sessions
When running Claude Code on macOS using the built-in Terminal application, managing multiple concurrent sessions becomes cumbersome. Each new session requires opening a separate Terminal window, quickly cluttering your workspace.
The typical workflow presents additional challenges:
- Context switching: After delegating tasks to Claude, developers switch to other work. When returning later, Claude may be waiting for approval on an operation.
- Frontend development overhead: After Claude generates code, starting the preview requires switching to a browser window.
- Session management: Tracking multiple concurrent Claude sessions across different Terminal windows becomes mentally taxing.
Fortunately, a macOS terminal神器 (remarkable tool) exists that addresses all these requirements: cmux.
For developers who want to preview and edit files directly within the terminal without constant window switching, Yazi provides an excellent complementary solution.
cmux: The All-in-One Terminal Solution
Core Features
cmux offers an impressive array of features designed specifically for modern development workflows:
Notification System
- Notification ring: Blue ring appears around panes with new alerts, with highlighted tabs
- Notification panel: Centralized view of all notifications with one-click navigation to unread items
Built-in Browser
- Side-by-side browser: Open browser in split screen next to terminal
- Script control: Programmatically control browser behavior
- Browser data import: Support for Chrome, Firefox, Arc, and other browsers with preserved login states
Tab and Split Management
- Horizontal and vertical splits: Flexible pane arrangement
- Sidebar: Displays branches, PRs, directories, ports, and notifications
- Rich keyboard shortcuts: Comprehensive shortcut coverage for all operations
SSH Workspace
- Direct SSH connection:
cmux sshconnects directly to remote systems - Remote network browsing: Browser traffic routes through remote network
- Drag-and-drop file transfer: Simply drag files to transfer
Claude Teams
- Multi-agent collaboration:
cmux claude-teamsenables one-click multi-agent协作 - Native split-screen display: Each agent gets its own pane
Technical Excellence
- Native macOS: Built with Swift + AppKit for fast startup and low resource usage
- Ghostty compatibility: Directly reuse existing themes and font configurations
- GPU rendering: Based on libghostty for smoother display performance
- Comprehensive shortcuts: Extensive keyboard shortcut coverage for workspaces, panes, and browser operations
Configuration
cmux reads configuration from Ghostty configuration files. If you've previously used Ghostty, these options will feel familiar.
Open ~/.config/ghostty/config and add the following configuration:
# === Theme Settings ===
# Automatically switch between light and dark themes based on system
theme = dark:iTerm2 Dark Background,light:iTerm2 Light Background
# === Shell Integration ===
shell-integration = detect
# === Font Settings ===
font-size = 12
font-thicken = true
adjust-cell-height = 2
# === Window Settings ===
window-theme = system
window-save-state = always
background-opacity = 0.8
macos-titlebar-style = transparent
# === Mouse Settings ===
copy-on-select = clipboard
mouse-shift-capture = true
mouse-hide-while-typing = true
cursor-style = bar
cursor-style-blink = true
cursor-opacity = 0.85
# === Buffer Settings ===
scrollback-limit = 8388608
# === Quick Terminal ===
quick-terminal-position = top
quick-terminal-screen = mouse
quick-terminal-autohide = true
quick-terminal-animation-duration = 0.2
# === Security Settings ===
clipboard-paste-protection = true
clipboard-paste-bracketed-safe = trueImportant: After modifying configuration, you must reload it (via menu bar operation).
Installation
Install cmux using Homebrew:
# brew tap manaflow-ai/cmux
brew install --cask cmuxComprehensive Keyboard Shortcuts
Workspace Management
| Shortcut | Operation |
|---|---|
| ⌘ N | New workspace |
| ⌘ 1–8 | Jump to workspace 1–8 |
| ⌘ 9 | Jump to last workspace |
| ⌃ ⌘ ] | Next workspace |
| ⌃ ⌘ [ | Previous workspace |
| ⌘ ⇧ W | Close workspace |
| ⌘ ⇧ R | Rename workspace |
| ⌘ B | Toggle sidebar |
Interface Navigation
| Shortcut | Operation |
|---|---|
| ⌘ T | New interface |
| ⌘ ⇧ ] | Next interface |
| ⌘ ⇧ [ | Previous interface |
| ⌃ Tab | Next interface |
| ⌃ ⇧ Tab | Previous interface |
| ⌃ 1–8 | Jump to interface 1–8 |
| ⌃ 9 | Jump to last interface |
| ⌘ W | Close interface |
Pane Splitting
| Shortcut | Operation |
|---|---|
| ⌘ D | Split right |
| ⌘ ⇧ D | Split down |
| ⌥ ⌘ ← → ↑ ↓ | Switch focus by direction |
| ⌘ ⇧ H | Flash focused pane |
Browser Controls
Browser developer tool shortcuts follow Safari defaults, customizable in Settings → Keyboard Shortcuts.
| Shortcut | Operation |
|---|---|
| ⌘ ⇧ L | Open browser in split |
| ⌘ L | Focus address bar |
| ⌘ [ | Go back |
| ⌘ ] | Go forward |
| ⌘ R | Refresh page |
| ⌥ ⌘ I | Toggle developer tools (Safari default) |
| ⌥ ⌘ C | Show JavaScript console (Safari default) |
Notification Management
| Shortcut | Operation |
|---|---|
| ⌘ I | Show notification panel |
| ⌘ ⇧ U | Jump to latest unread |
Find and Search
| Shortcut | Operation |
|---|---|
| ⌘ F | Find |
| ⌘ G / ⌘ ⇧ G | Find next / previous |
| ⌘ ⇧ F | Hide find bar |
| ⌘ E | Find using selection |
Terminal Operations
| Shortcut | Operation |
|---|---|
| ⌘ K | Clear scrollback buffer |
| ⌘ C | Copy (when content selected) |
| ⌘ V | Paste |
| ⌘ + / ⌘ - | Increase / decrease font size |
| ⌘ 0 | Reset font size |
Window Management
| Shortcut | Operation |
|---|---|
| ⌘ ⇧ N | New window |
| ⌘ , | Settings |
| ⌘ ⇧ , | Reload configuration |
| ⌘ Q | Quit |
Session Restoration
After restart, cmux restores application layout and metadata:
Restored:
- Window/workspace/pane layout
- Working directories
- Terminal scrollback buffer (best effort)
- Browser URLs and navigation history
Not Restored:
- Processes running inside terminal (Claude Code, tmux, vim, etc.)
Notification System
cmux supports desktop notifications, enabling AI agents and scripts to alert you when attention is needed.
View all pending notifications in one place and quickly jump to the latest unread notification.
Ideal Workflow Setup
A typical productive setup might include:
- Left pane: Claude Code session
- Top-right pane:
npm run devdevelopment server - Bottom-right pane: Web browser for preview
This arrangement keeps all relevant context visible simultaneously, eliminating constant window switching.
Yazi: Terminal File Manager Integration
Introduction
Yazi (meaning "duck" in Chinese) is a terminal file manager written in Rust, built on non-blocking asynchronous I/O. It aims to provide efficient, user-friendly, and customizable file management experiences directly within the terminal.
Installation
Install Yazi and its dependencies:
brew install yazi ffmpeg-full sevenzip jq poppler fd ripgrep fzf zoxide resvg imagemagick-full font-symbols-only-nerd-font
brew link ffmpeg-full imagemagick-full -f --overwriteOptional Integration
Add the following to the end of ~/.zshrc:
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
command yazi "$@" --cwd-file="$tmp"
IFS= read -r -d '' cwd < "$tmp"
[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd"
rm -f -- "$tmp"
}After saving, execute source ~/.zshrc to apply changes.
Now you can type y instead of yazi to launch the file manager in the terminal.
Configuration
Yazi has three configuration files:
- yazi.toml: General configuration
- keymap.toml: Key binding configuration
- theme.toml: Color scheme configuration
Show Hidden Files and Symlink Targets
Create ~/.config/yazi/yazi.toml:
[mgr]
show_hidden = true
show_symlink = trueEscape Key Behavior
Create ~/.config/yazi/keymap.toml:
[[input.prepend_keymap]]
on = "<Esc>"
run = ["close", "mgr:escape --filter"]
desc = "Close input and cancel the filter"Essential Keyboard Shortcuts
Navigation
| Binding | Alternative | Action |
|---|---|---|
| k | ↑ | Move cursor up |
| j | ↓ | Move cursor down |
| l | → | Enter hovered directory |
| h | ← | Exit current directory to parent |
File Operations
| Binding | Action |
|---|---|
| o | Open selected file |
| O | Open selected file interactively |
| Enter | Open selected file |
| Shift+Enter | Open selected file interactively (not supported in all terminals) |
| Tab | Show file information |
| y | Copy selected files |
| x | Cut selected files |
| p | Paste copied files |
| P | Paste copied files (overwrite if exists) |
| Y or X | Cancel yank state |
| d | Delete selected files to trash |
| D | Permanently delete selected files |
| a | Create file (directories end with /) |
| r | Rename selected file |
| . | Toggle hidden file visibility |
Copy Paths
Press keys sequentially (e.g., c⇒d means press c, then d):
| Binding | Action |
|---|---|
| c⇒c | Copy file path |
| c⇒d | Copy directory path |
| c⇒f | Copy filename |
| c⇒n | Copy filename without extension |
File Filtering
| Binding | Action |
|---|---|
| f | Filter files |
File Finding
| Binding | Action |
|---|---|
| / | Find next file |
| ? | Find previous file |
| n | Go to next found |
| N | Go to previous found |
File Searching
| Binding | Action |
|---|---|
| s | Search files by name using fd |
| S | Search files by content using ripgrep |
| Ctrl+s | Cancel ongoing search |
Use Case: In-Terminal File Preview and Editing
With Yazi integrated into your terminal workflow, you can preview and edit file contents without leaving the terminal environment. This complements cmux perfectly, creating a fully terminal-based development environment.
Combined Workflow Benefits
Using cmux and Yazi together creates a powerful development environment:
- Reduced context switching: Everything visible in one place
- Improved focus: No need to constantly alt-tab between applications
- Better notification management: Never miss Claude's approval requests
- Efficient file operations: Quick file browsing and editing without leaving terminal
- Customizable layouts: Arrange panes to match your specific workflow
Conclusion
Modern development workflows increasingly rely on AI assistants like Claude Code. Tools like cmux and Yazi address the practical challenges of integrating these assistants into daily development work.
The combination provides:
- Unified workspace for terminal, browser, and file management
- Intelligent notifications for AI agent interactions
- Flexible split-screen arrangements for multi-tasking
- Native macOS performance with minimal resource overhead
For developers spending significant time with Claude Code or similar AI programming assistants, investing time in setting up these tools can substantially improve daily productivity and reduce the cognitive load of managing multiple concurrent sessions.
This guide explores terminal enhancement tools specifically designed for AI-assisted development workflows, providing comprehensive configuration details and practical usage examples for macOS developers.