Extension System

Extension System

Xplorer's extension system lets you add custom panels, file preview handlers, context menu actions, themes, file decorators, and scoped commands — all driven by a manifest and a sandboxed runtime API.

Extensions panel

Architecture

Extension architecture

Extension Host

The Extension Host (extension-host.ts) is a singleton that manages the full lifecycle of every extension — both built-in and third-party. It maintains registries for:

  • Panels — custom sidebar/bottom UI rendered in the right sidebar
  • Commands — named functions extensions can register and invoke
  • File decorators — badges, colors, and tooltips on files in the grid
  • Context menu items — entries appended to the right-click menu

Sandboxed API

Every extension receives a XplorerAPI object whose methods are gated by the permissions declared in the extension's manifest. Attempting to call files.write() without the file:write permission throws an error immediately.

Backend

The Rust backend (src-tauri/src/extensions/) handles:

  • Installation — copies extension files into the extensions directory, validates the manifest
  • Activation state — persists which extensions are active across app restarts via active_extensions.json
  • Extension-scoped storage — per-extension key-value store persisted to extension_storage.json
  • Permission validation — checks that declared permissions are recognized

Extension Lifecycle

Install  →  Load  →  Activate  →  Running  →  Deactivate  →  Uninstall
                          │                        ▲
                          └── Hot Reload ──────────┘
  1. Install — extension folder is copied into the app data extensions directory
  2. Load — the Extension Host reads the manifest and registers declared contributions (panels, commands, menus)
  3. Activate — the extension's code runs, receiving the sandboxed XplorerAPI
  4. Running — the extension's panels render, commands respond, decorators apply
  5. Deactivate — cleanup; panels and commands are hidden but not removed
  6. Uninstall — all files and registrations are permanently removed

What Extensions Can Do

| Capability | SDK API | Permission Required | | --------------------------- | ------------------------ | ------------------------- | | Custom color themes | Theme.register() | xplorer:themes | | Right sidebar panels | Sidebar.register() | ui:panels | | Left sidebar tabs | SidebarTab.register() | ui:panels | | Bottom panel tabs | BottomTab.register() | ui:panels | | Custom file previews | Preview.register() | file:read | | Custom file editors | Editor.register() | file:read, file:write | | Context menu items | ContextMenu.register() | -- | | Commands with shortcuts | Command.register() | -- | | File decorators (badges) | any | -- | | Read/write files | any | file:read, file:write | | Scoped key-value storage | any | -- | | Navigate the file explorer | any | -- |

Bundled Extensions

Xplorer ships with 25 extensions that use the same extension APIs as third-party extensions. They are active by default but can be toggled on or off.

Themes (5)

| Extension | Description | | -------------- | ------------------------------------------------------------------------------- | | Tokyo Night | Dark theme inspired by downtown Tokyo at night with vibrant blues and purples | | Dracula | Iconic dark theme with pink, purple, green, and cyan accents | | Nord | Arctic north-bluish clean and elegant palette | | Cyberpunk | Neon-soaked futuristic theme with electric yellow and hot cyan | | Ocean Deep | Deep navy and teal hues with bioluminescent accents |

Code and Editing (2)

| Extension | Description | | ----------- | ------------------------------------------------------------------------------- | | Code Editor | Full syntax-highlighted editor powered by CodeMirror 6 with search/replace | | IDE Mode | IDE-style interface with project sidebar, file tree, and project detection |

File Tools (8)

| Extension | Description | | -------------------- | ------------------------------------------------------------------------ | | File Hasher | Calculate file hashes (SHA-256, SHA-1, MD5) from the context menu | | JSON Formatter | Format, minify, and validate JSON files from the context menu | | Word Counter | Count words, lines, and characters via command palette | | Batch Image Processor| Batch resize, convert, and compress images | | Image Editor | Rotate, flip, crop, brightness, contrast, and grayscale adjustments | | 3D Model Viewer | View STL and OBJ models with WebGL rendering | | SQLite Browser | Browse and query SQLite databases with table exploration | | Folder Statistics | File type distribution, size breakdown, and largest files in a sidebar |

Integrations (6)

| Extension | Description | | ------------- | -------------------------------------------------------------------------- | | Git | Full Git GUI with commit graph, branches, blame, staging, stash, remotes | | Google Drive | Multi-account Google Drive browsing, upload, download, and file management | | Docker Manager| List, start, stop, remove containers and images, view logs | | SSH Manager | Remote server browsing via SSH/SFTP with saved connections | | Claude Code | Run Claude Code AI commands from a bottom panel tab | | Collaboration | Multi-user shared browsing, file transfer, chat, and team workspaces |

Productivity (4)

| Extension | Description | | ---------------------- | ------------------------------------------------------------------- | | Architecture Visualizer| Visualize project structure as a tree and interactive graph | | Incremental Backup | Create and manage incremental backups with change tracking | | Problems Panel | Directory diagnostics with customizable problem detection rules | | Software Finder | Search and navigate to installed application paths |

Built-in Panels (8)

In addition to the 25 extensions above, Xplorer includes 8 built-in panel extensions:

| Panel | Description | | ----------------- | --------------------------------- | | File Preview | Preview files in the sidebar | | AI Chat | Chat with AI about your files | | Similar Files | Find related files | | Content Search | Search file contents | | File Organizer | AI-powered file organization | | Storage Analytics | Disk usage breakdown | | Duplicate Finder | Find duplicate files | | Notes | Attach notes to files and folders |

Extension Directory

Extensions are stored in the app data directory:

{app_data}/extensions/
├── my-extension/
│   ├── package.json      ← manifest lives in "xplorer" field
│   └── dist/
│       └── index.js      ← compiled entry point
└── another-extension/
    ├── package.json
    └── dist/
        └── index.js

Next Steps