A fast, keyboard-driven file manager for macOS, built with Tauri 2 + React 19.
brew install --cask luqueee/kenafold/kenafoldFirst time? Add the tap once:
brew tap luqueee/kenafold
brew install --cask kenafoldRequires macOS 13 Ventura or later.
Open Kenafold from the terminal with the kenafold command:
kenafold # open at last session path
kenafold . # open in the current directory
kenafold ~/Projects # open at a specific pathInstall the CLI tool:
sudo ln -sf "/Applications/Kenafold.app/Contents/Resources/scripts/kenafold" /usr/local/bin/kenafold- Dual-pane layout with multi-tab navigation per pane
- List & grid view with virtualised rendering for large directories
- Inline quick filter — type to filter without leaving the keyboard
- Preview pane — images, video, PDF, code with syntax highlight, archives
- Full keyboard control — configurable hotkeys for every action
- File operations — copy, move, rename, delete (to Trash), with undo
- Bulk rename — regex/pattern tokens with live preview
- Tags — color-coded labels stored in SQLite, filterable from the sidebar
- Archive support — compress/decompress zip, tar.zst, tar.gz, tar.bz2 with progress
- Folder comparator — diff two directories by size, mtime, and SHA-256 hash
- Disk usage panel — treemap visualisation
- SMB / network shares — mount and browse shares from the sidebar
- Native macOS notifications — on long copy / archive operations
| Tool | Version |
|---|---|
| macOS | 13 Ventura or later |
| Rust | stable (latest) |
| Bun | 1.x |
This is a monorepo managed with Bun workspaces and Turbo.
apps/
app/ # Tauri 2 desktop app (React + Vite + Rust)
web/ # Landing page (TanStack Router + Vite)
packages/
ui/ # Shared shadcn components + Tailwind 4 theme (@kenafold/ui)
bun install# Desktop app (Tauri + Rust + frontend hot-reload)
bun run dev:app
# Landing page
bun run dev:web
# Both in parallel
bun run dev
# Type-check all packages
bun run typecheck
# Lint all packages
bun run lint
# Tests
bun run testFrom apps/app/ directly:
bun run dev # tauri dev (full app)
bun run dev:vite # vite only (frontend, port 1420)
bun run test # vitest
bun run test:e2e # playwrightapps/app/
src/features/
file-explorer/ # main pane, selection, view modes, drag-drop
filesystem/ # file ops, undo stack, directory listing
hotkeys/ # global hotkey registry + user-configurable bindings
navigation/ # history (back/forward), favorites
search/ # full-text search palette (calls Rust grep)
settings/ # user preferences panel
sidebar/ # favorites + SMB shares
smb/ # SMB/network share mounting
tags/ # color-coded tags (SQLite)
src-tauri/src/
archive.rs # compress / decompress
comparator.rs # folder diff
fs.rs # file operations + directory listing
grep.rs # ripgrep integration
hash.rs # SHA-256 / SHA-1 / MD5
preview.rs # file preview
search.rs # full-text search
tags.rs # SQLite tag storage
watcher.rs # FSEvents directory watcher
packages/ui/
src/components/ # shadcn primitives
globals.css # Tailwind 4 theme tokens
| Layer | Tech |
|---|---|
| Frontend | React 19, TypeScript, Vite 7, TailwindCSS 4 |
| Shared UI | @kenafold/ui — shadcn/ui (Radix UI), lucide-react |
| Tables / virtual scroll | TanStack Table + TanStack Virtual |
| Hotkeys | TanStack Hotkeys |
| Drag & drop | dnd-kit |
| Syntax highlight | shiki (lazy-loaded) |
| Charts | Recharts |
| Backend | Rust, Tauri 2 |
| Package manager | Bun workspaces |
| Monorepo | Turbo 2 |
| Tests | Vitest + @testing-library/react |
MIT
