chvarkov is a modern, high-performance file manager designed for the GNOME desktop and macOS. It brings the efficiency of macOS-style Miller Columns to both platforms, built from the ground up using Rust, GTK4, and Libadwaita.
|
Miller Columns — light |
Miller Columns — dark |
|
Docked live preview |
Adaptive (narrow) layout |
Gallery images live in
docs/screenshots/— see that folder's README for the expected filenames.
- Miller Columns Navigation: Navigate deep directory structures with ease using side-by-side columns (plus Icon and List views).
- Cross-Platform: Native support for both Linux (GNOME) and macOS.
- Native Resizing: Smoothly resize any column or preview pane using native handles.
- Live Previews: Selecting a file opens a preview docked to the right edge — file details, metadata, large icons, images, video, and syntax-highlighted text — staying pinned in place as you navigate. Press
Spacefor a larger floating Quick Look. - Modern UI: Adheres to Libadwaita standards for a clean, responsive interface, with the sidebar, header bar, breadcrumb, and footer aligned to a single consistent height.
- Adaptive Sidebar: Automatically collapses into an overlay on smaller screens.
- Native Thumbnails: Native support for file thumbnails in all view types.
- Keyboard First & Multi-Selection: Fully navigable via keyboard, with standard multi-selection (Shift, Ctrl, Ctrl+A).
- Full Cut / Copy / Paste with system-clipboard interop — copy in chvarkov and paste in Finder / GNOME Files (and vice-versa).
- New Folder and New Empty File (with inline naming), Duplicate, Move to… / Copy to…, Rename, Create Link (symlink), and Compress to Zip.
- Move to Trash and Delete Permanently (with a confirmation prompt), all operating on the whole selection.
- Undo / Redo (
Ctrl/Cmd+Z,Ctrl+Shift+Z, plus an Undo button on the result toast) for move, rename, trash, copy, duplicate, and create — a bounded history of the last 16 operations. Undoing a copy/duplicate/create sends the new items to Trash so nothing is lost; undo never overwrites (a clashing original is restored asname (2)). - Open in Terminal, Copy Path / URI / Name, and Email / Share (native macOS Share sheet;
xdg-emailon Linux).
- Permission-aware: actions you don't have rights to perform are hidden from the menu (driven by the filesystem's reported capabilities).
- Conflict handling: Replace / Skip / Keep Both on name collisions, with directory Merge instead of destructive overwrite, and an "apply to all" option for batches.
- Data-loss guards (modeled on GNOME Nautilus): refuses to copy/move a folder into itself, never silently replaces a directory, preserves symlinks instead of dereferencing them, and validates rename input.
- Default file manager: can be registered to open folders via
xdg-openand "Open With" (see Set as default file manager).
| Action | Shortcut |
|---|---|
| Quit Application | Ctrl + Q (Linux) / Cmd + Q (macOS) |
| Quick Look Preview | Space (macOS QuickLook / GNOME Sushi when available, else built-in preview) |
| Toggle Sidebar | F9 |
| Toggle Hidden Files | Ctrl + H (Linux) / Cmd + H (macOS) |
| Toggle Metadata | Ctrl + M (Linux) / Cmd + M (macOS) |
| Open File/Folder | Return (Enter) |
| Copy | Ctrl + C (Linux) / Cmd + C (macOS) |
| Cut | Ctrl + X (Linux) / Cmd + X (macOS) |
| Paste | Ctrl + V (Linux) / Cmd + V (macOS) |
| Rename | F2 |
| Duplicate | Ctrl + D (Linux) / Cmd + D (macOS) |
| Undo | Ctrl + Z (Linux) / Cmd + Z (macOS) |
| Redo | Ctrl + Shift + Z (Linux) / Cmd + Shift + Z (macOS) |
| New Folder | Ctrl + Shift + N |
| New Empty File | Ctrl + N |
| Create Link | Ctrl + Shift + M |
| Move to Trash | Delete (Linux) / Cmd + Delete (macOS) |
| Delete Permanently | Shift + Delete |
| Select All | Ctrl + A |
| Preferences | Ctrl + , |
| Zoom In / Out | Ctrl + + / Ctrl + - |
| View Properties | Alt + Return |
| Trigger Context Menu | Menu key or Shift + F10 |
Additional operations — Move to…, Copy to…, Compress, Open in Terminal, Copy Path/URI/Name, Email, Share — are available from the right-click context menu (only the entries you have permission to perform are shown).
Download Chvarkov-macos-aarch64.zip (Apple Silicon / M-series) from the Releases Page, extract it, and move Chvarkov.app to your /Applications folder.
Intel Mac? GitHub no longer offers Intel macOS CI runners, so prebuilt Intel binaries aren't published. On an Intel Mac you can build one yourself with
./build.sh macos(see Building from Source).
"Chvarkov.app is damaged and can't be opened"? The app is ad-hoc signed but not notarized (no paid Apple Developer account), so macOS quarantines it on download. Clear the quarantine flag once after moving it to
/Applications:xattr -dr com.apple.quarantine /Applications/Chvarkov.appThen open it normally.
Note: You must have the system dependencies installed:
brew install pkg-config gtk4 libadwaita adwaita-icon-theme gtksourceview5For video previews on macOS, GStreamer is also required:
brew install gstreamer gst-plugins-base gst-plugins-good gst-libavDownload chvarkov-linux-amd64.AppImage from the Releases Page, then:
chmod +x chvarkov-linux-amd64.AppImage
./chvarkov-linux-amd64.AppImageAll GTK4/Adwaita/GtkSourceView libraries are bundled inside the AppImage.
Download chvarkov-linux-amd64.flatpak from the Releases Page, then:
flatpak install --user chvarkov-linux-amd64.flatpak
flatpak run net.nocopypaste.chvarkovRequires Homebrew dependencies listed in Prerequisites.
./build.sh macosThis creates Chvarkov.app in the project root.
Requires GTK4, Libadwaita and GtkSourceView 5 to be installed on your system:
sudo pacman -S gtk4 libadwaita gtksourceview5sudo dnf install gtk4 libadwaita gtksourceview5sudo apt install libgtk-4-1 libadwaita-1-0 libgtksourceview-5-0Then download chvarkov-linux-amd64.tar.gz, extract and run:
tar -xzf chvarkov-linux-amd64.tar.gz
./chvarkov- Rust: Install Rust
- Development headers:
- macOS (Homebrew):
brew install pkg-config gtk4 libadwaita adwaita-icon-theme gtksourceview5 gstreamer gst-plugins-base gst-plugins-good gst-libav - Arch Linux:
sudo pacman -S gtk4 libadwaita gtksourceview5 gst-plugins-good - Fedora:
sudo dnf install gtk4-devel libadwaita-devel gtksourceview5-devel gstreamer1-plugins-good - Ubuntu/Debian:
sudo apt install libgtk-4-dev libadwaita-1-dev libgtksourceview-5-dev libgstreamer1.0-dev gstreamer1.0-plugins-good
- macOS (Homebrew):
git clone https://github.com/eboye/chvarkov.git
cd chvarkov
cargo xtask installThis builds the binary, installs it to ~/.local/bin/chvarkov, registers the GSettings schema, .desktop entry and icon. Make sure ~/.local/bin is in your $PATH.
To install to /usr/local instead (requires sudo):
sudo cargo xtask install --systemTo uninstall:
cargo xtask uninstall # from ~/.local
sudo cargo xtask uninstall --systemcargo run --releaseFor a development experience similar to npm watch, we recommend using cargo-watch.
-
Install
cargo-watch:cargo install cargo-watch
-
Run the watch command:
cargo watch -c -x run
After installing (cargo xtask install), register chvarkov as the handler for folders so it opens from xdg-open, file links, and the "Open With" menu:
xdg-mime default net.nocopypaste.chvarkov.desktop inode/directoryThen opening a folder launches chvarkov at that path:
xdg-open ~/DownloadsContributions are welcome! Feel free to open issues or submit pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.