Skip to content

Commit 0076227

Browse files
SimplyLizclaude
andcommitted
Initial release — v1.0.0
Dual-pane file manager built with Tauri 2 + Svelte 5. Features: archive browsing, text/hex/diff viewers, process explorer, quick view, plugin system (viewer/column/action/panel categories), themes, color rules, command bar, dir sync, multi-rename, built-in help with search, and hot-reloaded plugins. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
0 parents  commit 0076227

139 files changed

Lines changed: 22982 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v[0-9]+.[0-9]+.[0-9]+'
7+
8+
jobs:
9+
release:
10+
permissions:
11+
contents: write
12+
runs-on: macos-latest
13+
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- name: Setup pnpm
18+
uses: pnpm/action-setup@v4
19+
with:
20+
version: latest
21+
22+
- name: Setup Node
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: 22
26+
cache: pnpm
27+
28+
- name: Setup Rust
29+
uses: dtolnay/rust-toolchain@stable
30+
31+
- name: Rust cache
32+
uses: swatinem/rust-cache@v2
33+
with:
34+
workspaces: src-tauri
35+
36+
- name: Install dependencies
37+
run: pnpm install
38+
39+
- name: Build and release
40+
uses: tauri-apps/tauri-action@v0
41+
env:
42+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43+
with:
44+
tagName: ${{ github.ref_name }}
45+
releaseName: 'Nyx.Commander ${{ github.ref_name }}'
46+
releaseBody: |
47+
See the assets below to download and install.
48+
releaseDraft: false
49+
prerelease: false

.gitignore

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Dependencies
2+
node_modules/
3+
4+
# Build outputs
5+
build/
6+
dist/
7+
.svelte-kit/
8+
9+
# Tauri build artifacts
10+
src-tauri/target/
11+
src-tauri/gen/
12+
13+
# Rust
14+
**/*.rs.bk
15+
16+
# Claude Code knowledge base
17+
.ckb/
18+
19+
# macOS
20+
.DS_Store
21+
**/.DS_Store
22+
23+
# Editor
24+
.vscode/settings.json
25+
.idea/
26+
27+
# Env
28+
.env
29+
.env.*
30+
!.env.example
31+
32+
# Logs
33+
*.log
34+
npm-debug.log*
35+
pnpm-debug.log*

README.md

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
<div align="center">
2+
3+
<img src="src-tauri/icons/128x128@2x.png" width="96" alt="Nyx.Commander icon">
4+
5+
# Nyx.Commander
6+
7+
**A pixel-art dual-pane file manager for macOS — built with Tauri and Svelte.**
8+
9+
[![Version](https://img.shields.io/badge/version-1.0.0-blue?style=flat-square)](src-tauri/tauri.conf.json)
10+
[![Platform](https://img.shields.io/badge/platform-macOS-lightgrey?style=flat-square&logo=apple)](https://tauri.app)
11+
[![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-24C8D8?style=flat-square&logo=tauri)](https://tauri.app)
12+
[![Svelte](https://img.shields.io/badge/frontend-Svelte%205-FF3E00?style=flat-square&logo=svelte)](https://svelte.dev)
13+
[![TypeScript](https://img.shields.io/badge/types-TypeScript-3178C6?style=flat-square&logo=typescript)](https://www.typescriptlang.org)
14+
[![Rust](https://img.shields.io/badge/backend-Rust-CE422B?style=flat-square&logo=rust)](https://www.rust-lang.org)
15+
16+
</div>
17+
18+
---
19+
20+
<div align="center">
21+
22+
![Main view](images/Screenshot%202026-04-12%20at%2022.56.39.png)
23+
24+
</div>
25+
26+
## Overview
27+
28+
Nyx.Commander is a keyboard-first dual-pane file manager in the tradition of Total Commander and FAR Manager, reimagined as a native macOS app. It keeps the workflow that power users love — two panels, F-key operations, instant navigation — wrapped in a crisp dark UI with pixel-art icons and a full plugin system.
29+
30+
No Electron. No web server. Native Rust backend with a SvelteKit frontend rendered via Tauri's WebKit layer.
31+
32+
---
33+
34+
## Features
35+
36+
### Dual-panel navigation
37+
Two independent panels, each with their own tab history. Switch with `Tab`, open a new tab with `Cmd+T`, jump to any path with `Cmd+G`, or click the path bar to edit it directly.
38+
39+
### Archive browsing
40+
Browse ZIP, TAR, GZip, BZip2, XZ, DOCX, XLSX, and more as if they were directories — press `Enter` to walk in, `Backspace` to walk out. No extraction required.
41+
42+
### Viewers
43+
- **Text viewer** — syntax-aware, monospace, scrollable (`Enter` on any text/code file)
44+
- **Hex viewer** — full hex dump with ASCII pane and status bar
45+
- **Diff viewer** — side-by-side colored diff between any two files
46+
- **Image viewer** — via the built-in plugin; pixel-perfect scaling for small pixel art assets
47+
48+
### Tools
49+
- **Process explorer** — live CPU + memory table, kill any process (`F3`)
50+
- **Quick View pane** — preview the file under the cursor without opening a dialog (`Cmd+Q`)
51+
- **Go To Path** — fuzzy path input with history autocomplete (`Cmd+G`)
52+
- **Command bar** — run shell commands with the current path as `$cwd` (`` Ctrl+` ``)
53+
- **Dir sync** — compare two directories side by side, copy differences in one click (`d`)
54+
- **Multi-rename** — batch-rename selected files with pattern substitution (`Cmd+M`)
55+
56+
### Plugin system
57+
Four plugin categories, hot-reloaded from `~/.nyx/plugins/` — no restarts needed:
58+
59+
| Category | What it does |
60+
|----------|-------------|
61+
| **Viewer** | Renders files in a fullscreen overlay (HTML iframe, sandboxed) |
62+
| **Column** | Adds a metadata column to both panels (subprocess, any language) |
63+
| **Action** | Keyboard-triggered operation on selected files (`Ctrl+Shift+<key>`) |
64+
| **Panel** | Mounts a virtual filesystem (S3, FTP, custom protocols) |
65+
66+
Drag a `.nyx-plugin` file onto the Plugin Manager to install. Built-in: Image Viewer, Markdown Viewer, Git Status column.
67+
68+
### Themes & color rules
69+
Four built-in themes — Neon, Classic, Matrix, Amber — switchable at any time with `F9`. Full custom theme editor in the menu. Assign highlight colors to files by glob pattern or extension.
70+
71+
---
72+
73+
## Screenshots
74+
75+
<table>
76+
<tr>
77+
<td align="center" width="50%">
78+
79+
**Plugin Manager**<br>
80+
<img src="images/Screenshot%202026-04-12%20at%2022.56.56.png" alt="Plugin Manager">
81+
82+
</td>
83+
<td align="center" width="50%">
84+
85+
**Theme Picker**<br>
86+
<img src="images/Screenshot%202026-04-12%20at%2022.56.52.png" alt="Theme Picker">
87+
88+
</td>
89+
</tr>
90+
<tr>
91+
<td align="center" width="50%">
92+
93+
**Quick View — Image Preview**<br>
94+
<img src="images/Screenshot%202026-04-12%20at%2023.12.00.png" alt="Quick View with image preview">
95+
96+
</td>
97+
<td align="center" width="50%">
98+
99+
**Go To Path**<br>
100+
<img src="images/Screenshot%202026-04-12%20at%2022.58.02.png" alt="Go To Path dialog with autocomplete">
101+
102+
</td>
103+
</tr>
104+
<tr>
105+
<td align="center" width="50%">
106+
107+
**Hex Viewer**<br>
108+
<img src="images/Screenshot%202026-04-12%20at%2022.59.26.png" alt="Hex Viewer">
109+
110+
</td>
111+
<td align="center" width="50%">
112+
113+
**Process Explorer**<br>
114+
<img src="images/Screenshot%202026-04-12%20at%2022.59.08.png" alt="Process Explorer">
115+
116+
</td>
117+
</tr>
118+
<tr>
119+
<td align="center" width="50%">
120+
121+
**Diff Viewer**<br>
122+
<img src="images/Screenshot%202026-04-12%20at%2023.26.17.png" alt="Diff Viewer">
123+
124+
</td>
125+
<td align="center" width="50%">
126+
127+
**Built-in Help**<br>
128+
<img src="images/Screenshot%202026-04-12%20at%2022.57.13.png" alt="Help Viewer with search">
129+
130+
</td>
131+
</tr>
132+
</table>
133+
134+
---
135+
136+
## Keyboard Reference
137+
138+
| Key | Action |
139+
|-----|--------|
140+
| `Tab` | Switch active panel |
141+
| `Enter` | Enter dir / open file / browse archive |
142+
| `Cmd+Enter` | Open with system app |
143+
| `Backspace` | Go to parent |
144+
| `Alt+←` / `Alt+→` | History back / forward |
145+
| `Cmd+G` | Go to path |
146+
| `Cmd+=` | Mirror current folder to other panel |
147+
| `F1` | Help |
148+
| `F2` | Rename |
149+
| `F5` | Copy to other panel |
150+
| `F6` | Move to other panel |
151+
| `F7` | New directory |
152+
| `F8` | Delete |
153+
| `F9` | Cycle theme |
154+
| `Space` | Toggle selection |
155+
| `Cmd+A` | Select all |
156+
| `Cmd+T` / `Cmd+W` | New / close tab |
157+
| `Cmd+Q` | Quick View pane |
158+
| `` Ctrl+` `` | Command bar |
159+
| `Escape` | Open menu |
160+
161+
Type any printable character in a panel to start a quick filter.
162+
163+
---
164+
165+
## Requirements
166+
167+
- macOS 12 Monterey or later
168+
- [Rust](https://rustup.rs) (stable toolchain)
169+
- [Node.js](https://nodejs.org) 18+ and [pnpm](https://pnpm.io)
170+
171+
---
172+
173+
## Development
174+
175+
```bash
176+
# Install dependencies
177+
pnpm install
178+
179+
# Start dev server (hot-reload)
180+
pnpm tauri dev
181+
182+
# Type check
183+
pnpm check
184+
185+
# Production build
186+
pnpm tauri build
187+
```
188+
189+
Built-in plugins live in `plugins/` at the repo root and are bootstrapped to `~/.nyx/plugins/` on first launch. To iterate on a plugin, edit in `~/.nyx/plugins/<id>/` directly — the watcher picks up changes within a second.
190+
191+
---
192+
193+
## Writing Plugins
194+
195+
See **[docs/user/plugins/authoring.md](docs/user/plugins/authoring.md)** for the full developer guide, or press `F1` inside the app and navigate to **Plugin Dev**.
196+
197+
Quick start — a Python column plugin:
198+
199+
```python
200+
#!/usr/bin/env python3
201+
import sys, json
202+
203+
for line in sys.stdin:
204+
req = json.loads(line.strip())
205+
if req['method'] == 'get_columns':
206+
results = [{'path': f['path'], 'value': ''} for f in req['params']['files']]
207+
print(json.dumps({'id': req['id'], 'result': results}), flush=True)
208+
```
209+
210+
Drop it in `~/.nyx/plugins/com.you.myplugin/` with a `plugin.json` manifest. Done.
211+
212+
---
213+
214+
## License
215+
216+
MIT

0 commit comments

Comments
 (0)