cmux-customization
cmux customization
cmux-settings
View and edit cmux settings in ~/.config/cmux/cmux.json. Use when the user wants to change cmux preferences (appearance, sidebar, notifications, automation, browser, shortcuts), set a value by JSON path, validate the file, open it in an editor, or look up which keys cmux recognizes. Triggers on '/cmux-settings', 'change cmux setting', 'set <something> in cmux', 'cmux config', 'cmux.json', or 'rebind a cmux shortcut'.
Full skill instructions
cmux reads user settings from ~/.config/cmux/cmux.json (JSONC). The app installs a file watcher; saving the file applies changes immediately, no restart needed. Legacy ~/.config/cmux/settings.json is read only as a fallback for keys not present in cmux.json.
Schema: https://raw.githubusercontent.com/manaflow-ai/cmux/main/web/data/cmux.schema.json. The authoritative path list lives in Sources/CmuxSettingsJSONPathSupport.swift in the cmux checkout, and the installed skill includes a generated copy in references/all-keys.md. Top-level sections are app, terminal, notifications, sidebar, sidebarAppearance, workspaceColors, automation, browser, and shortcuts. Non-settings sections (actions, ui, commands, vault, rightSidebar) coexist in the same file.
Use the bundled helper for every read/write. It strips JSONC comments, writes atomically, and validates keys against the schema.
# From a cmux checkout
skills/cmux-settings/scripts/cmux-settings <subcommand>
# From an installed Codex skill
~/.codex/skills/cmux-settings/scripts/cmux-settings <subcommand>
For brevity in the rest of this doc, assume the script is on $PATH as cmux-settings. To make it so for a session from a checkout: export PATH="$PWD/skills/cmux-settings/scripts:$PATH".
Subcommands:
| Command | What it does |
|---|---|
cmux-settings path | Print the config path. |
cmux-settings dump | Print the raw file (preserves comments). |
cmux-settings dump --no-comments | Print the parsed JSON. |
cmux-settings get <a.b.c> | Print value at dotted JSON path. |
cmux-settings set <a.b.c> <value> | Set value. <value> is parsed as JSON (true, 42, "text", […], {…}); plain strings without quotes are stored as strings. |
cmux-settings unset <a.b.c> | Delete key, reverting to the in-app default. |
cmux-settings list-supported | List every settings JSON path the app recognizes. |
cmux-settings validate | Parse the file and flag any unknown settings keys. |
cmux-settings open | Open cmux.json in $EDITOR, VS Code, Cursor, or TextEdit. |
--file <path> overrides the target file (useful for --file ~/.config/cmux/settings.json when the user keeps things in the legacy file).
cmux-settings list-supported | rg -i 'sidebar.*terminal|terminal.*sidebar'
true, false, numbers, arrays, objects) must be valid JSON. Plain words are stored as strings.
cmux-settings set sidebarAppearance.matchTerminalBackground true
cmux-settings set app.appearance dark
cmux-settings set shortcuts.bindings.toggleSidebar cmd+b
cmux-settings set shortcuts.bindings.newTab '["ctrl+b","c"]'
cmux-settings set browser.hostsToOpenInEmbeddedBrowser '["localhost","*.internal.example"]'
cmux-settings get sidebarAppearance.matchTerminalBackground
cmux-settings validate
cmux-settings unset <key>.app.appearance = "system" | "light" | "dark", app.appIcon, app.menuBarOnly, app.minimalMode.sidebarAppearance.matchTerminalBackground, sidebarAppearance.tintColor, sidebarAppearance.tintOpacity (0..1).sidebar.hideAllDetails, sidebar.showBranchDirectory, sidebar.showPullRequests, sidebar.showPorts, sidebar.showLog.notifications.dockBadge, notifications.sound (enum incl. "none", "custom_file"), notifications.customSoundFilePath, notifications.hooks (array).browser.defaultSearchEngine, browser.theme, browser.openTerminalLinksInCmuxBrowser, browser.hostsToOpenInEmbeddedBrowser.automation.socketControlMode (off | cmuxOnly | automation | password | allowAll), automation.portBase, automation.portRange.shortcuts.bindings.<actionId> = "cmd+b", ["ctrl+b","c"], null, or "" to unbind. See references/shortcut-actions.md.For the full list of settings, defaults, and descriptions, run cmux-settings list-supported or read references/all-keys.md.
cmux.json. Never edit settings.json unless the user explicitly asks; it is legacy and only read when the key is absent from cmux.json.cmux-settings validate. Unknown keys mean the user pasted a key the app does not consume.actions, ui, commands, vault, rightSidebar). They live in the same file and contain non-settings config the user has hand-tuned.#RRGGBB. Opacities are 0..1.web/app/[locale]/docs/configuration/page.tsx mirrors the schema 1:1.cmux customization
cmux diagnostics
Guide and apply cmux keyboard shortcut customization. Use when the user asks to customize, rebind, unbind, reset, audit, or create shortcut templates for cmux, including tmux-style, Vim-style, terminal-first, browser-heavy, iTerm/Terminal-like, or agent-triage layouts.
cmux testing rules for Swift Testing, test target compilation, test wiring, and package/refactor validation. Use when adding or changing tests, touching package/refactor code, or deciding whether reload.sh is enough validation.
Contributor workflow rules for cmux setup, Xcode project normalization, tagged sidebar ExtensionKit development, and dev builds. Use when setting up the cmux repo, changing Xcode project files, adding sidebar extensions, or working with tagged debug builds.
cmux package architecture, refactor layering, dependency inversion, file organization, DocC documentation, package design discipline, testability, and Swift 6 concurrency rules. Use before adding or meaningfully rewriting Swift files, Swift packages, coordinators, services, repositories, or public package APIs.
Debug logging, Debug menu, runtime pitfalls, typing-latency-sensitive paths, SwiftUI list snapshot boundaries, OS-version repros, and local visual iteration for cmux. Use when adding debug probes, diagnosing UI/runtime issues, touching terminal rendering, tab/sidebar list views, drag/drop UTTypes, or using the Debug menu.
Build a custom cmux sidebar from a plain-language request. Use when the user asks for a custom sidebar, a sidebar that shows their workspaces/tabs/PRs/clock, a vibe-coded sidebar, or anything involving files in ~/.config/cmux/sidebars/. Covers authoring the interpreted SwiftUI-style file, enabling the beta flag, selecting it, and iterating with hot reload.
Backend TypeScript and Cloud VM development rules for cmux. Use when editing web/app/api, web/services, backend scripts, Cloud VM lifecycle, provider integrations, Postgres, Stack Auth pricing gates, migrations, or provider image build scripts.
Localization rules and audit workflow for cmux UI strings, settings rows, menus, shortcuts, schema/config text, docs, command/help text, alerts, tooltips, and web messages. Use whenever changing user-facing text.
Socket command threading and focus policy for cmux CLI/socket work. Use when adding or changing socket commands, CLI commands, telemetry commands, focus/select/open/close/send-key behavior, or automation that could steal app focus.
Ghostty submodule and GhosttyKit workflow rules for cmux. Use when modifying the ghostty submodule, rebuilding GhosttyKit.xcframework, updating the parent submodule pointer, or documenting fork conflict notes.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience