https://github.com/houqp/kiorg
A hacker's file manager with VIM inspired keybind
https://github.com/houqp/kiorg
cross-platform egui file-browser file-manager filebrowser filemanager rust
Last synced: 2 months ago
JSON representation
A hacker's file manager with VIM inspired keybind
- Host: GitHub
- URL: https://github.com/houqp/kiorg
- Owner: houqp
- License: mit
- Created: 2025-03-30T03:27:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-28T06:53:08.000Z (3 months ago)
- Last Synced: 2026-02-28T12:37:32.025Z (3 months ago)
- Topics: cross-platform, egui, file-browser, file-manager, filebrowser, filemanager, rust
- Language: Rust
- Homepage:
- Size: 7 MB
- Stars: 411
- Watchers: 3
- Forks: 13
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome-github-stars - houqp/kiorg - A hacker's file manager with VIM inspired keybind (Rust)
README
# Kiorg
[](https://github.com/houqp/kiorg/releases)
[](https://discord.gg/TdTb2CHfpr)
Kiorg is a performance focused cross-platform file manager with Vim-inspired key
bindings. It is built using the [egui](https://www.egui.rs/#demo) framework.
## Key Features
* Lightingly fast rendering and navigation
* Multi-tab support
* Vim-inspired keyboard shortcuts
* Built-in zoxide like fuzzy directory teleport
* Content preview for various file formats including code syntax highlight, image, video,pdf, epub, etc.
* Customizable shortcuts and color themes through TOML config files
* Cross-platform support (Linux, macOS, Windows)
* Bookmarks for quick access to frequently used directories
* Single self-contained binary with battery included
* Builtin terminal emulator
* App state persistence
* Language agnostic plugin system
* Undo/redo file operations
## Screenshots
Built-in help menu with keyboard shortcuts
File content preview
Customizable color themes
## Installation
Pre-built binaries for all platforms are available on the [releases page](https://github.com/houqp/kiorg/releases).
Alternatively, you can build and install from source using cargo:
```bash
cargo install --locked --git https://github.com/houqp/kiorg.git kiorg
```
## Configuration
Kiorg reads the `config.toml` TOML configuration file stored in the following locations:
* Linux: `~/.config/kiorg/`
* macOS: `~/.config/kiorg/` (if it exists) or `~/Library/Application Support/kiorg/`
* Windows: `%APPDATA%\kiorg\`
### Sample Configuration
```toml
# Sort preference configuration (optional)
[sort_preference]
column = "Name" # Sort column: "Name", "Modified", "Size", or "None"
order = "Ascending" # Sort order: "Ascending" or "Descending"
[layout]
preview = 0.5 # Increase preview default width ratio to 50%
# Override default shortcuts (optional)
[shortcuts]
MoveDown = [
{ key = "j" },
{ key = "down" }
]
MoveUp = [
{ key = "k" },
{ key = "up" }
]
DeleteEntry = [
{ key = "d" }
]
ActivateSearch = [
{ key = "/" },
{ key = "f", ctrl = true }
]
```
### Custom Theme
To define a custom theme:
```toml
# Select your custom theme
theme = "my_cool_theme"
# Define the custom theme colors
[[custom_themes]]
name = "my_cool_theme"
display_name = "My Cool Theme"
[custom_themes.colors]
fg = "#FAF7F0" # Main text color
bg = "#000000" # Main background color
bg_light = "#080808" # Lighter background (panels, separators)
bg_extreme = "#050505" # Darkest background (scrollbars, inputs)
bg_selected = "#1A1A1A" # Selected item background
bg_fill = "#1A1A1A" # UI element background
bg_interactive_fill = "#262626" # Interactive element background
bg_active = "#333333" # Active element background
fg_selected = "#FAF7F0" # Selected text color
fg_light = "#4E5A6A" # Dimmed/secondary text
fg_folder = "#87CEEB" # Folder icon color
highlight = "#FFA247" # Highlight color
link_text = "#7FA5CC" # Link text color
link_underscore = "#58B8FD" # Link underline color
warn = "#FFA247" # Warning color
error = "#D06666" # Error color
success = "#6BBF59" # Success color
```
You can try asking LLM to generate these custom theme configs for you based on themes from other apps, it typically works one shot.
## Development
### Common workflows
* To run static analysis: `cargo clippy --workspace --all-targets -- -D warnings`
* To execute tests, run: `cargo test` or `cargo nextest run`
* Recommend nextest since it's 2-3x faster.
* To regenerate screenshots in readme: `UPDATE_SNAPSHOTS=1 cargo test --features=snapshot`
### Design patterns
* Composition over inheritance.
* Simple modular design and avoid unnecessary abstractions.
* Leverage async operations for long-running tasks to prevent blocking UI rendering.
* Implementing user preference persistence for improved user experience.
* Clean layout with compact spacing and alignment, functionality over flashy visuals.