| .github/workflows | ||
| cmd/vcom | ||
| docs | ||
| internal | ||
| scripts | ||
| vendor | ||
| .codex | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| PKGBUILD | ||
| README.md | ||
| vcom.toml | ||
vcom
vcom is a terminal file manager inspired by Midnight Commander and built on top of Charm's TUI stack.
The layout is:
- left browser pane
- right browser pane
The key difference from classic mc is the inspect mode on i. It temporarily replaces the inactive pane with a preview/info panel for the active side selection:
- directory: child entries
- text file: text preview
- image: metadata and dimensions
- binary or unsupported file: safe fallback preview
Goals
- MC-like browsing and function-key workflow
- configurable column layout
- pleasant default styling
- readable, editable config with commented-out optional features
- clean architecture for async file operations and previews
Current feature set
- MC-like two-pane layout by default
- preview/info mode on
i - left/right file browsers
- preview with top metadata widget
- themes with
catppuccin-mochaas default - runtime theme cycling with
t - configurable visible columns
- hidden files shown by default
- hidden files toggle with
. - browser sort cycling with
s - directory size calculation on
Space - overwrite confirmation before copy or move
- pager on
F3and editor onF4when available - basic
F5copy,F6move,F7mkdir,F8delete,F10quit
Controls
Tab: switch active browser paneEnter: open directoryBackspaceorLeft: go to parent directoryi: replace inactive pane with info/preview for the active pane selectionSpace: calculate selected directory size.: toggle hidden entriess: cycle sort modet: cycle themeF3: open selected file in$PAGERif available, otherwise stay in center previewF4: open selected file in$EDITORF5: copy to passive pane pathF6: move to passive pane pathF7: create directory in active paneF8: delete selected entryF10: quit
Run
go run ./cmd/vcom
To build a local binary:
go build -o vcom ./cmd/vcom
Optional config file lookup order:
-config /path/to/vcom.toml./vcom.toml./config/vcom.toml$XDG_CONFIG_HOME/vcom/vcom.toml~/.config/vcom/vcom.toml
Themes
Built-in presets:
catppuccin-mochatokyo-nightgruvbox-darknord-frost
The sample config in vcom.toml is intentionally written so optional columns and sort variants can be uncommented by hand.
Notes
- File creation time depends on filesystem and OS support. When unavailable the UI shows
n/a. - Real inline image rendering is intentionally not enabled yet because terminal support is fragmented. The current architecture keeps that as an isolated preview backend to add later.
More detail is in docs/architecture.md.
Installation
NixOS / Nix
Run directly from the flake:
nix run github:vrubelroman/vcom?ref=<tag>
Install into the current profile:
nix profile add github:vrubelroman/vcom?ref=<tag>
nix profile add installs vcom into the current user's Nix profile. It does not edit configuration.nix, does not rebuild NixOS, and does not make the package a declarative system package.
Debian / Ubuntu
Release builds include a .deb artifact. Install it with:
sudo apt install ./vcom_<version>_amd64.deb
Arch Linux
A PKGBUILD is included in the repository. Build it with:
makepkg -si
Releases
Tagging a version like v0.1.0 triggers the GitHub Actions release workflow:
- runs
go test ./... - vendors Go modules for reproducible packaging
- builds the release binary
- builds the
.debpackage withdpkg-deb - publishes release artifacts to GitHub Releases
Release artifacts include:
vcom-<tag>-x86_64-unknown-linux-gnu.tar.gzvcom_<version>_amd64.debvcom-<tag>-checksums.txt