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