When running Claude Code with macOS's built-in terminal, you need to open many Terminal windows when starting大量 sessions.

In most cases, we hand over requirements to Claude and switch to do other things. When we return much later to check, it might show Claude asking whether you agree to some operation.

If you're doing frontend development, after Claude generates code, you still need to switch to the browser window to start the preview.

There's a macOS terminal tool that meets all your needs—cmux.

If you also want to preview and edit files directly in the terminal without switching windows back and forth, try Yazi.

cmux

Features

  • Notification Ring: Blue ring appears around pane when there's a new alert, with highlighted tabs
  • Notification Panel: View notifications centrally, jump to unread with one click
  • Built-in Browser: Split-screen browser right beside terminal, supports script control
  • Tabs and Split Panes: Supports horizontal and vertical splitting, sidebar shows branches, PRs, directories, ports, and notifications
  • SSH Workspace: cmux ssh connects directly to remote, browser goes through remote network, drag images to transfer
  • Claude Teams: cmux claude-teams one-click multi-agent collaboration, native split-screen display
  • Browser Data Import: Supports Chrome, Firefox, Arc, etc.—logged in state right from the start
  • Custom Commands: Configure project operations in cmux.json, use directly from command palette
  • Scripting Capabilities: CLI + socket API to control workspaces, panes, and browser
  • Native macOS: Swift + AppKit, fast startup, low resource usage
  • Ghostty Compatible: Directly reuse existing themes and font configurations
  • GPU Rendering: Based on libghostty, smoother display
  • Rich Keyboard Shortcuts: Extensive shortcuts covering workspaces, split panes, browser operations, and more

Configuration

cmux reads configuration from Ghostty configuration files. If you previously used Ghostty, these options will be familiar.

Open ~/.config/ghostty/config configuration file and copy the following:

# === Theme Settings ===
# Follow system to automatically switch between light and dark themes
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 ===
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 = true

After modification, you must reload the configuration (via menu bar operation).

Installation

# brew tap manaflow-ai/cmux
brew install --cask cmux

Keyboard Shortcuts

Workspaces

ShortcutOperation
⌘ NNew workspace
⌘ 1–8Jump to workspace 1–8
⌘ 9Jump to last workspace
⌃ ⌘ ]Next workspace
⌃ ⌘ [Previous workspace
⌘ ⇧ WClose workspace
⌘ ⇧ RRename workspace
⌘ BToggle sidebar

Interface

ShortcutOperation
⌘ TNew interface
⌘ ⇧ ]Next interface
⌘ ⇧ [Previous interface
⌃ TabNext interface
⌃ ⇧ TabPrevious interface
⌃ 1–8Jump to interface 1–8
⌃ 9Jump to last interface
⌘ WClose interface

Split Panes

ShortcutOperation
⌘ DSplit right
⌘ ⇧ DSplit down
⌥ ⌘ ← → ↑ ↓Switch focus pane by direction
⌘ ⇧ HFlash focused pane

Browser

Browser developer tool shortcuts follow Safari default settings, customizable in Settings → Keyboard Shortcuts.

ShortcutOperation
⌘ ⇧ LOpen browser in split
⌘ LFocus address bar
⌘ [Back
⌘ ]Forward
⌘ RRefresh page
⌥ ⌘ IToggle developer tools (Safari default)
⌥ ⌘ CShow JavaScript console (Safari default)

Notifications

ShortcutOperation
⌘ IShow notification panel
⌘ ⇧ UJump to latest unread

Find

ShortcutOperation
⌘ FFind
⌘ G / ⌘ ⇧ GFind next / previous
⌘ ⇧ FHide find bar
⌘ EFind using selected content

Terminal

ShortcutOperation
⌘ KClear scrollback buffer
⌘ CCopy (when content selected)
⌘ VPaste
⌘ + / ⌘ -Increase / decrease font size
⌘ 0Reset font size

Window

ShortcutOperation
⌘ ⇧ NNew window
⌘ ,Settings
⌘ ⇧ ,Reload configuration
⌘ QQuit

Session Restoration (Current)

After restart, cmux restores application layout and metadata:

  • Window / workspace / pane layout
  • Working directory
  • Terminal scrollback buffer (best effort restoration)
  • Browser URL and navigation history

What's NOT restored:

  • Processes running inside terminal (such as Claude Code / tmux / vim)

Notifications

cmux supports desktop notifications, letting AI agents and scripts remind you when attention is needed.

View all pending notifications in one place, quickly jump to latest unread notifications.

Usage Scenario

  • Left: Claude
  • Top Right: npm run dev
  • Bottom Right: Web browser

Yazi

Introduction

Yazi (meaning "duck") is a terminal file manager written in Rust, based on non-blocking asynchronous I/O. It aims to provide efficient, user-friendly, and customizable file management experience.

Installation

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 --overwrite

Integration (Optional)

Open ~/.zshrc and append the following to the end of the file (optional):

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 take effect.

Then you can type y in the terminal instead of yazi to launch Yazi.

Configuration

Yazi has three configuration files:

  • yazi.toml - General configuration
  • keymap.toml - Key binding configuration
  • theme.toml - Color scheme configuration

Create file ~/.config/yazi/yazi.toml

Show hidden files and display symlink paths after filenames:

[mgr]
show_hidden = true
show_symlink = true

Create file ~/.config/yazi/keymap.toml

Execute closing input and canceling filter when pressing <Esc> key in input mode:

[[input.prepend_keymap]]
on = "<Esc>"
run = ["close", "mgr:escape --filter"]
desc = "Close input and cancel the filter"

Keyboard Shortcuts

Navigation

BindingAlternate KeyAction
kMove cursor up
jMove cursor down
lEnter mouse-hovered directory
hLeave current directory, enter parent directory

File Operations

BindingAction
oOpen selected file
OOpen selected file interactively
EnterOpen selected file
Shift+EnterOpen selected file interactively (some terminals don't support this yet)
TabShow file information
yCopy selected files
xCut selected files
pPaste copied files
PPaste copied files (overwrite if target location exists)
Y or XCancel yank status
dDelete selected files to trash
DPermanently delete selected files
aCreate a file (directories end with /)
rRename selected file
.Toggle hidden file visibility

Copy Path

c⇒d means press c key first, then press another d key.

BindingAction
c⇒cCopy file path
c⇒dCopy directory path
c⇒fCopy filename
c⇒nCopy filename (without extension)

Filter Files

BindingAction
fFilter files

Find Files

BindingAction
/Find next file
?Find previous file
nGo to next found
NGo to previous found

Search Files

BindingAction
sSearch files by name using fd
SSearch files by content using ripgrep
Ctrl+sCancel ongoing search

Usage Scenario

You can directly preview and edit file content within the terminal.