файловый менеджер
Find a file
vrubelroman 92e72bc8c6 feat: theme selector dialog with live preview (t key)
Replace the simple cycleTheme() with a modal dialog that shows all
19 themes with color swatches, live preview on Up/Down navigation,
and commit/revert on Enter/Esc.

Changes:
- Add modalThemeSelect kind to modalKind enum
- Add themeSelectorState struct + field to Model
- Add openThemeSelector() replacing cycleTheme() call
- Add handleModalKey case for modalThemeSelect (Up/Down/Enter/Esc)
- Add applyThemePreview() and finalizeTheme() helper methods
- Add renderThemeSelectModal() with aligned theme names + swatches
- Update renderModal() dispatch and widen modal for theme selector
- Update help text: 't' now shows 'select theme'
2026-04-29 16:13:29 +03:00
.github/workflows Add packaging and release automation 2026-04-23 00:21:36 +03:00
cmd/vcom SSH connection status indicators 2026-04-29 03:11:53 +03:00
docs Add additional screenshots to README 2026-04-24 14:06:27 +03:00
internal feat: theme selector dialog with live preview (t key) 2026-04-29 16:13:29 +03:00
plans feat: theme selector dialog with live preview (t key) 2026-04-29 16:13:29 +03:00
scripts Support Ubuntu image preview backend 2026-04-24 22:53:12 +03:00
vendor SSH connection status indicators 2026-04-29 03:11:53 +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 chore: bump version to v0.1.9 2026-04-27 16:09:31 +03:00
go.mod SSH connection status indicators 2026-04-29 03:11:53 +03:00
go.sum SSH connection status indicators 2026-04-29 03:11:53 +03:00
LICENSE Initial commit 2026-04-22 22:09:10 +03:00
PKGBUILD chore: bump version to v0.1.9 2026-04-27 16:09:31 +03:00
README.md Show F11 (permanent delete) in footer bar between F10 and F12 2026-04-29 03:16:18 +03:00
vcom.toml feat: theme selector dialog with live preview (t key) 2026-04-29 16:13:29 +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

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.2.2

Install into user profile:

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

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

Debian / Ubuntu

Download and install the latest release:

curl -sL https://github.com/vrubelroman/vcom/releases/download/v0.2.2/vcom_0.2.2_amd64.deb -o /tmp/vcom_0.2.2_amd64.deb
sudo apt install /tmp/vcom_0.2.2_amd64.deb

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

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.

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

Installing a Nerd Font

Ubuntu / Debian:

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

Arch Linux:

sudo pacman -S ttf-jetbrains-mono-nerd

Or via AUR helper:

yay -S nerd-fonts-jetbrains-mono

NixOS / Nix:

Add to your /etc/nixos/configuration.nix:

fonts.packages = with pkgs; [ nerd-fonts.jetbrains-mono ];

Or install imperatively:

nix profile install nixpkgs#nerd-fonts.jetbrains-mono

Configuring terminal to use the installed Nerd Font

After installing, set JetBrainsMono Nerd Font (or another Nerd Font) as the terminal 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
  • Foot: set font=JetBrainsMono Nerd Font:size=11 in ~/.config/foot/foot.ini
  • WezTerm: set font = wezterm.font("JetBrainsMono Nerd Font") in ~/.config/wezterm/wezterm.lua
  • Windows Terminal: Settings → Profiles → Defaults → Appearance → Font face → choose JetBrainsMono Nerd Font

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

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 (use T to cycle or set ui.theme in config):

  • catppuccin-mocha (default)
  • catppuccin-macchiato
  • catppuccin-lavender
  • tokyo-night
  • gruvbox-dark
  • nord
  • one-dark
  • everforest
  • github-dark
  • ayu-dark
  • breeze
  • cyberpunk
  • dracula
  • eldritch
  • kanagawa
  • kanagawa-paper
  • rose-pine
  • solarized-dark
  • vesper

Releases

Pushing a tag like v0.2.2 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.2.2-x86_64-unknown-linux-gnu.tar.gz
  • vcom_0.2.2_amd64.deb
  • vcom-v0.2.2-checksums.txt

Notes

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

Architecture notes: docs/architecture.md