A keyboard-first file manager inspired by Total Commander.
Browse, search, preview and move files across local folders, archives and remote hosts.
Linux + macOS | x86_64 + arm64 | MIT licensed
Familiar function keys. A streaming viewer. Remote connections that feel like local folders. Share over HTTP/WebDAV, send to a phone with native LocalSend. Holos brings the classic commander workflow to a modern terminal, with tabbed panels, background jobs and a built-in shell to keep you moving.
Get started on Linux or macOS:
curl -fsSL https://raw.githubusercontent.com/xls/holos/main/install.sh | sh
hcmdPrefer Node.js?
npx holos-installer
hcmdBoth installers choose the build for your platform and install the latest release
to ~/.local/bin, without root. If hcmd is not found, add that directory to
your PATH, or launch ~/.local/bin/hcmd directly.
Already installed? Run either installer again to update, or use
npx holos-installer update.
Want a package or a manual download? Get a .deb, .rpm or tarball from Releases. Linux builds are available for glibc and musl. There is no Windows build.
Installer options and download verification
HCMD_INSTALL_DIR: binary location, default~/.local/bin.HCMD_SHARE_DIR: editable themes and example configuration, default~/.local/share/hcmd.HCMD_VERSION: release to install, default the latest.
The installers check downloads against the release's published SHA256SUMS.
They warn if checksums are unavailable; the shell installer also warns if neither
sha256sum nor shasum is installed.
You can review the shell installer or the Node.js installer before running it.
Distribution packages and building from source
Debian / Ubuntu: download the .deb from Releases, then run:
sudo dpkg -i hcmd_*.debFedora / RHEL: download the .rpm from Releases, then run:
sudo rpm -i hcmd-*.rpmArch Linux: from a checkout of this repository:
cd packaging/arch && makepkg -siFrom source: requires Rust 1.95 or newer and a C compiler for the compression
and archive libraries. With rustup, the repository's rust-toolchain.toml
selects the pinned toolchain automatically.
git clone https://github.com/xls/holos
cd hcmd
cargo build --release
./target/release/hcmdThe binary is self-contained apart from libc and libstdc++.
Work with your source and destination side by side. Open up to nine tabs per panel, jump to bookmarked directories, and preview a file in the opposite panel without leaving the listing.
Copy and move with familiar function keys. Queue long operations in the background, follow their progress, and keep browsing while they run.
Two-panel browsing. Source and destination side by side, with tabs and familiar function keys.
Quick navigation with Volume list | Hot list | Tabs
Step into ZIP, 7z, RAR and TAR archives as if they were folders, including archives inside archives. Formats are detected by content, so a renamed file is still recognised.
Explore ISO, FAT, ext2/3/4 and SquashFS disk images, including GPT and MBR partitions, with read-only browsing. Find the file you need and copy it out.
Open a SQLite database the same way: enter it to list its tables, enter a table to stream its rows, sort by the table's own columns, and read or copy any row out as JSON. Read-only, and an optional build feature.
Connect over SFTP, FTP, FTPS, SMB2/3, S3 or WebDAV, then browse, view and copy through the same panels you use locally. Saved passwords use the system keyring.
The protocols run in process, without an external ssh command or
libsmbclient installation.
Remote connections (Ctrl+F). Quick connect or choose a saved host, then browse and copy through an ordinary panel.
Share the other way (Ctrl+N). Select files or folders and hcmd serves them
over HTTP and WebDAV for as long as the dialog is open. A browser gets a
plain index page with names, sizes and dates; another hcmd (or Finder, Explorer,
rclone) connects to the same address as dav://; downloads resume. Read-only.
The dialog shows the addresses to hand out and the last requests, and - since
the host firewall is what usually stops the next machine - which firewall is on
and the command that opens the port (serve.port, 8080 by default). Closing
the dialog stops serving.
Fetch a URL (Ctrl+D). Download into a per-session folder (Alt+J) as a
background job with a progress bar; a partial file resumes.
Send to a phone (Alt+X) - native LocalSend, send only. A built-in
implementation of the LocalSend protocol: send the
selection to any LocalSend device on the LAN - pick it from the list or type
its address - and it lands in the stock app with its usual prompt. Runs as a
job; encrypted to the device's own certificate. hcmd sends, it does not
receive.
Press F3 for a streaming viewer that starts displaying a file without waiting to load it all into memory. Read large logs, inspect highlighted source, or view JSON, HTML and Markdown in document mode.
Switch to hex for the bytes behind the file. Built-in binary templates describe 109 formats, exposing details such as image dimensions and executable architecture, with the corresponding regions highlighted in hex mode.
The viewer (F3). Syntax highlighting, line numbers and selection details in the active theme.
Hex mode. Inspect a file's bytes, with offsets and ASCII side by side.
Search names and content across local folders, remote connections and archives. Use masks, whole-word matching or regular expressions to narrow the search. Results become a panel you can act on while the search is still running.
Find Files (Alt+F7). Search by name or content, including inside archives, and work with results as they arrive.
Spot file status in the listing and the current branch in the status line.
Browse commit history as folders, open the files a commit changed, and compare
against HEAD or between panels with unchanged sections folded away.
Holos reads directly from the object store, without starting a git process.
- Rename in batches with a preview and dedicated undo.
- Verify and organise with checksums, file splitting and merging, symlinks and permissions.
- Drop into a persistent shell with
Ctrl+O, then return to your panels. - Find your look with 21 built-in themes and a live preview picker (
Alt+T). - Set your own shortcuts with configurable key bindings and readable TOML settings.
Twenty-one built-in themes with a live-preview picker (Alt+T) that applies as
you move over each one. On an Omarchy desktop there is
one more: a dynamic omarchy theme that reads the desktop's own palette and
recolours in place when you switch the desktop theme.
Themes (Alt+T). Twenty-one built-in looks, plus live integration with Omarchy's colour scheme.
Explore the complete feature list
Start hcmd in a directory you know, then try these:
- Move around: use the arrow keys and
Enterto browse;Tabswitches panels. - Take a look: highlight a file and press
F3to open the viewer. - Copy across: choose a destination in the other panel, return to your file,
and press
F5to open the copy dialog. - Find something: press
Alt+F7(orAlt+S) to search. - Make it yours: press
Alt+Tand preview a theme.
Need a shortcut? F1 shows the keyboard reference for your terminal.
Ready to leave? F10 or Alt+Q quits.
On first run, Holos writes commented configuration to ~/.config/holoscommander/.
Uncomment a setting to override its default.
config.toml: application settings, with defaults documented.keymap.toml: key bindings for each context.themes/: your custom theme files.hotlist.toml: directory bookmarks (Ctrl+D).hosts.toml: saved remote connections.
All 21 themes are built into the binary. To customise one, copy its installed
file from ~/.local/share/hcmd/themes/ into ~/.config/holoscommander/themes/
and edit it. A matching name overrides the built-in theme; new names appear
alongside the defaults in the picker.
Terminal compatibility and diagnostic commands
Holos uses the Kitty keyboard protocol when available, allowing combinations
such as Ctrl+Enter, Shift+F1-F10 and Alt+F1-F12 to be distinguished.
For legacy terminals, affected bindings have documented Alt+letter fallbacks.
Press F1 to see the bindings your terminal can deliver.
hcmd --keytest # show how your terminal encodes each key
hcmd --check-config # validate configuration and exitSet HCMD_KEYBOARD_PROTOCOL=enhanced or HCMD_KEYBOARD_PROTOCOL=legacy to
override automatic detection.
Put Holos to work on your everyday files. If something feels awkward, a terminal behaves unexpectedly, or you have an idea for a better workflow, open an issue. Include your operating system, terminal and Holos version when reporting a problem.
For code contributions, start with AGENTS.md, the guide to the codebase and its checks. Run the full gate before committing:
./scripts/gate.sh gate-greenBefore pushing, run ./scripts/gate.sh pre-push as well.
Building distribution packages
cargo build --release
packaging/build-deb.sh # -> dist/hcmd_<version>_<arch>.deb
packaging/build-rpm.sh # -> dist/hcmd-<version>.<arch>.rpm
cd packaging/arch && makepkg # -> hcmd-<version>-1-<arch>.pkg.tar.zstGitHub Actions builds releases for x86_64 and arm64 on Linux (glibc and musl) and macOS.
MIT. Free to use, modify and share.







