⚠️ Early stage project HardBore is very new and you will run into bugs. If you do, please open an issue. Bug reports help a lot.

More screenshots

Features

  • Native browser integration - Becomes your system file picker (Linux)
  • Keyboard-first - Full navigation without touching the mouse
  • File operations - Copy, cut, paste, move via drag-and-drop, delete
  • Fast search - SQLite FTS5 indexing with fuzzy matching
  • Multi-threaded - Parallel directory crawling with jwalk
  • Low memory - <250MB RAM
  • CLI picker mode - Use as file picker in scripts
  • Default app integration - Open files with system default applications

Quick Start

npm install
npm run tauri dev

Install as System File Picker (Linux Only)

cd portal
./install.sh

After installation, all apps (Firefox, Chrome, VSCode) should use HardBore for file selection.

Stack

  • Rust (Tauri v2) - Backend, file operations
  • SvelteKit - Reactive UI
  • SQLite FTS5 - Full-text search indexing

Performance

Real-world benchmarks on Arch Linux (tested with system directories):

Operation Throughput Details
Single dir read 709,000 items/sec 2,820 files in 3ms
Recursive crawl 424,000 items/sec 38,214 files across /usr (depth 3)
Indexing 19,663 files/sec 47,225 files with SQLite FTS5
FTS5 search 1.7ms avg Sub-2ms queries across 47K indexed files
Cold start 2ms DB open + first search
Large directory 320,000 items/sec 9,906 files from /usr/lib

Multi-threaded crawling with jwalk + rayon. Optimized SQLite inserts with prepared statements and batch commits.

Keyboard Navigation

Key Action
Ctrl+P Command palette / search
j k Navigate up/down
h l Parent / enter directory
Enter Open file with default app / enter directory
Ctrl+C Copy selected file to clipboard
Ctrl+X Cut selected file to clipboard
Ctrl+V Paste file from clipboard
Delete Delete selected file/directory
p Toggle preview
b Toggle sidebar
Ctrl+H Toggle hidden files
Alt+ <- -> History navigation

Mouse: Double-click files to open with default application. Right-click for context menu. Drag and drop files/directories to move them into other directories.

CLI Picker Mode

Use HardBore in shell scripts:

hardbore --picker                   # Select file
hardbore --picker --multiple        # Multiple files
hardbore --picker-dirs              # Select directory
hardbore --picker --types png,jpg   # Filter by extension

Output: HARDBORE_SELECTED:/path/to/file

Build

Requirements: Rust, Node.js 18+, webkit2gtk

Arch:

sudo pacman -S webkit2gtk base-devel

Ubuntu/Debian:

sudo apt install libwebkit2gtk-4.1-dev build-essential

Build:

npm install
npm run tauri dev    # Development
npm run tauri build  # Production

Structure

src/          SvelteKit frontend
src-tauri/    Rust backend + file operations
portal/       XDG Desktop Portal integration
docs/         Documentation

Architecture

  • fs_engine.rs - Multi-threaded directory crawling
  • indexer.rs - Background SQLite FTS5 indexing
  • portal.rs - D-Bus file chooser interface

License

AGPL-3.0

Top categories

Loading Svelte Themes