Configuration

Directory Structure

All Nexion configuration and data is stored in ~/.nexion/:

~/.nexion/
├── config.json            # All preferences (flat key-value JSON)
├── codex-auth.json        # Codex/ChatGPT OAuth tokens
├── history.json           # Browser history (500 entries, recency + frequency scoring)
├── recent-tabs.json       # Recently closed web tabs (up to 10)
├── Plugins/               # Plugin bundles (.nexionplugin)
├── Plugins-Data/          # Sandboxed per-plugin data storage
├── Userscripts/           # Greasemonkey-compatible userscripts
├── bookmark-thumbnails/   # Cached bookmark preview images
└── bookmark-favicons/     # Cached bookmark favicons

Per-project data is stored in a .nexion/ directory inside the project root:

your-project/
└── .nexion/
    ├── config.json        # Project name and accent color
    └── scratchpad/        # Notes (Markdown files with YAML frontmatter)

Additional data stored inside config.json:

  • •nexion.recent.projects: Last 10 opened projects
  • •nexion.webBrowser.bookmarks: Saved bookmarks
  • •nexion.webBrowser.profiles: Browser profiles
  • •nexion.webBrowser.userScripts: Userscript metadata

config.json

The config.json file is a flat JSON key-value store that holds all of Nexion's preferences. It is designed with these properties:

  • •Thread-safe: Reads and writes are safe from any thread.
  • •Coalesced writes: Multiple rapid changes are batched into a single disk write to avoid excessive I/O.
  • •Atomic operations: Writes are atomic, preventing corruption from crashes or power loss.
  • •Auto-migration: On first run, existing preferences from UserDefaults are automatically migrated to this file.

The file uses a flat structure where each key is a dot-separated namespace path. You generally do not need to edit this file manually: use the Preferences panels instead.

Key Namespaces

Configuration keys are organized into namespaces:

Namespace Controls
nexion.terminal.* Terminal font, font size, theme, scrollback buffer, cursor color
nexion.preview.* Markdown preview theme, rendered Markdown toggle, minimap, line numbers, word wrap
nexion.webBrowser.* Default search engine, content blocker, user agent, homepage, appearance mode
nexion.git.* Diff view mode (side-by-side or inline), diff display mode (preview or popup), file list view (flat or tree)
nexion.bots.* AI bot configuration and preferences
nexion.ai.* Multi-provider AI configuration (API keys, OAuth tokens, per-feature model and language selection)
nexion.notes.* Notes enable/disable, custom tag definitions (colors, icons)
nexion.showTmuxAttachButton Show/hide the tmux attach button in the toolbar (default: off)
nexion.plugin.* Plugin-defined settings (each plugin uses its own sub-namespace)

Project Configuration

Individual projects can have a .nexion file in the project root to customize per-project behavior:

{
  "name": "My Project",
  "accentColor": "#FF6B35"
}

The project name is displayed in the window title and workspace selector. The accent color lets you visually distinguish between different projects.

Per-project data like notes and expanded folder state is stored in the .nexion/ directory within the project root.

Session Restoration

Nexion automatically saves and restores your workspace session: open tabs, split pane layouts, and web tab history are all persisted. When you relaunch the app, everything is restored to exactly where you left off.

Portability

Because everything lives in ~/.nexion/, migrating to a new Mac is straightforward: copy the entire directory to the same location on your new machine. All preferences, plugins, plugin data, userscripts, and cached assets transfer with it.

Preferences Panels

Nexion provides 10 preferences panels accessible via Cmd+Shift+,:

Panel What It Controls
General Tmux attach toolbar button, notes quick-add button
Appearance Light/dark/system theme, window behavior, startup options
Terminal Font, font size, color scheme (458 built-in + custom), scrollback buffer, cursor color
Preview Syntax theme, rendered Markdown toggle, minimap, line numbers, word wrap
Editor External editor selection, custom editors (name and bundle identifier)
Web Browser Search engine, content blocker, user agent, homepage, appearance mode, profiles
Notes Enable/disable notes, custom tag management (add, rename, change color and icon)
AI Integration Anthropic API key, OpenAI API key, Codex / ChatGPT OAuth, Gemini API key, GitHub Models token, per-feature model and language selection
Plugins Installed plugins list, enable/disable, reload, plugin-specific settings
Git File list view (flat/tree), diff display mode (preview/popup), diff style (side-by-side/inline)