.dir
Tauri 2Rust + ReactWASM extensions

File manager for developers

Embedded terminal. WASM extension sandbox. Tauri 2 + Rust. No Electron.

.dir
Loading demo…

What's inside

cat /usr/share/doc/dotdir/features.md

Dual-Pane

Two independent panels, each with tabs and breadcrumbs. Orthodox bindings: F5 copy, F6 move, F7 mkdir, F8 delete. Drag between panels.

Embedded Terminal

PTY-based terminal with multiple sessions. Auto-syncs CWD with the active panel. Detects bash, zsh, fish, nu.

WASM Extensions

Extensions run sandboxed in a WebAssembly runtime. package.json manifest, JS/TS SDK. Publish with `dotdir ext publish`. Install with `dotdir ext install publisher.name`.

Filesystem Stylesheets

FSS: CSS-like syntax to style files per directory. Apply colors, icons, and badges by language, extension, or metadata — e.g., `file[lang='rust'] { color: #ff8c00 }`.

Keyboard-First

Command palette. Configurable F-key action bar. Rebind anything in `~/.config/dotdir/keybindings.toml`. No mouse required.

Native Binary

Tauri 2 + Rust backend, React frontend. Targets macOS (arm64 + x86_64), Linux, Windows. No Electron.

~/.config/dotdir/styles.fss

Filesystem Stylesheets

Style files like you style HTML. CSS-inspired syntax scoped to directories, extensions, or file metadata.

styles.fss
file[lang='rust']  { color: #ff8c00;
                     icon: url(./icons/rust.svg); }
file[lang='md']    { icon: url(./icons/markdown.svg); }
file[name='*.test.*'] { color: #34d399; badge: test; }
dir[name='node_modules'] { opacity: 0.4; }
file[modified < '1h']    { badge: recent; }

dotdir ext publish

Extension API

Extensions run in a WASM sandbox with explicit permission grants. Build with TypeScript, publish to the registry.

package.json
{
  "name": "my-viewer",
  "version": "1.0.0",
  "main": "dist/index.js",
  "dotdir": {
    "permissions": {
      "fs":    ["read"],
      "ui":    ["panel", "statusbar"],
      "shell": false
    }
  }
}

Tauri 2.x

Runtime

Rust

Backend

React + TS

Frontend

WASM

Extensions