файловый менеджер
Find a file
vrubelroman 22af43acd7 fix: open more text file types in editor (nvim)
Expand textExtensions with many missing common text file extensions
(.lua, .rb, .vue, .svelte, .dart, .tex, .scala, .lisp, and many more).

Add textFilenames list for well-known text files without a meaningful
extension (Makefile, Dockerfile, README, LICENSE, .gitignore, etc.)
so they open in the editor via handleEdit() instead of falling back
to xdg-open via handleOpenExternal().
2026-04-27 14:23:29 +03:00
.github/workflows Add packaging and release automation 2026-04-23 00:21:36 +03:00
cmd/vcom Refine mouse interactions and info pane UX 2026-04-22 22:50:30 +03:00
docs Add additional screenshots to README 2026-04-24 14:06:27 +03:00
internal fix: open more text file types in editor (nvim) 2026-04-27 14:23:29 +03:00
scripts Support Ubuntu image preview backend 2026-04-24 22:53:12 +03:00
vendor Add packaging and release automation 2026-04-23 00:21:36 +03:00
.codex Initial vcom TUI prototype 2026-04-22 22:10:50 +03:00
.gitignore Add packaging and release automation 2026-04-23 00:21:36 +03:00
flake.lock Add flake lock file 2026-04-23 00:37:11 +03:00
flake.nix Speed up kitty image previews 2026-04-24 23:42:23 +03:00
go.mod Add syntax highlighting to text previews 2026-04-22 23:35:42 +03:00
go.sum Add syntax highlighting to text previews 2026-04-22 23:35:42 +03:00
LICENSE Initial commit 2026-04-22 22:09:10 +03:00
PKGBUILD Speed up kitty image previews 2026-04-24 23:42:23 +03:00
README.md Speed up kitty image previews 2026-04-24 23:42:23 +03:00
vcom.toml fix: preserve panel background in cursor mode (renderTextCursorContent) 2026-04-27 14:15:20 +03:00

vcom

vcom is a two-pane terminal file manager with a fast built-in info/preview panel for the active selection.

Why vcom

  • Two-pane workflow focused on keyboard speed
  • Built-in preview/info pane for the active selection
  • Asynchronous copy/move with progress and background mode
  • Theme support and configurable layout/columns

Font requirement (icons)

For file icons, vcom expects a Nerd Font in your terminal profile.

Default behavior is ui.icon_mode = "auto":

  • if a Nerd Font is detected, vcom uses Nerd icons
  • if not, vcom falls back to ASCII icons automatically

You can force behavior in config:

  • ui.icon_mode = "nerd": always use Nerd icons
  • ui.icon_mode = "ascii": always use ASCII icons

How to make terminal use the installed Nerd Font:

  • GNOME Terminal: Preferences -> Profile -> Text -> Custom font -> choose JetBrainsMono Nerd Font
  • Konsole: Settings -> Edit Current Profile -> Appearance -> choose a Nerd Font profile
  • Alacritty: set font.normal.family: "JetBrainsMono Nerd Font" in ~/.config/alacritty/alacritty.yml
  • Kitty: set font_family JetBrainsMono Nerd Font in ~/.config/kitty/kitty.conf

Preview mode (F9 / i) temporarily replaces the inactive pane and shows:

  • directory listing preview
  • text file preview with syntax highlighting
  • image metadata (format + dimensions)
  • safe fallback for binary files

Screenshots

vcom screenshot vcom screenshot 2 vcom screenshot 3

Build and run

Run directly:

go run ./cmd/vcom

Build local binary:

go build -o vcom ./cmd/vcom

Installation

NixOS / Nix

Run directly from the flake:

nix run github:vrubelroman/vcom?ref=v0.1.8

Install into user profile:

nix profile add github:vrubelroman/vcom?ref=v0.1.8

The Nix package wraps vcom with ueberzugpp in PATH, so image preview works in non-kitty terminals out of the box.

Debian / Ubuntu

Download the release .deb for v0.1.8, then install:

sudo apt install ./vcom_0.1.8_amd64.deb

The Debian package declares ueberzug (or ueberzugpp where available) as a dependency for image preview outside kitty.

Install a Nerd Font (example):

wget -qO /tmp/JetBrainsMono.zip https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip
mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd
unzip -o /tmp/JetBrainsMono.zip -d ~/.local/share/fonts/JetBrainsMonoNerd
fc-cache -fv

Then set your terminal font to a Nerd Font variant (for example, JetBrainsMono Nerd Font).

Arch Linux

A PKGBUILD is included in the repository:

makepkg -si

The Arch package depends on ueberzugpp, so non-kitty image preview is installed together with vcom.

Configuration

Optional config lookup order:

  1. -config /path/to/vcom.toml
  2. ./vcom.toml
  3. ./config/vcom.toml
  4. $XDG_CONFIG_HOME/vcom/vcom.toml
  5. ~/.config/vcom/vcom.toml

Reference config: vcom.toml

Icon mode example:

[ui]
icon_mode = "auto" # auto | nerd | ascii

Themes

Built-in themes:

  • catppuccin-mocha (default)
  • tokyo-night
  • gruvbox-dark
  • nord-frost

Releases

Pushing a tag like v0.1.8 triggers GitHub Actions release workflow (.github/workflows/release.yml) which:

  • runs tests
  • vendors Go modules
  • builds release binary
  • builds Debian package
  • publishes release assets

Release artifacts:

  • vcom-v0.1.8-x86_64-unknown-linux-gnu.tar.gz
  • vcom_0.1.8_amd64.deb
  • vcom-v0.1.8-checksums.txt

Notes

  • File creation time depends on filesystem/OS support; unavailable values are shown as n/a.

Architecture notes: docs/architecture.md