feat: extended preview for PDF, audio, video via external utilities

Add rich preview support for three new file categories by leveraging
external CLI tools with graceful fallback when tools are missing.

- PDF: text extraction via pdftotext, page count via pdfinfo
- Audio: metadata via ffprobe (duration, bitrate, codec, sample rate, channels)
- Video: metadata via ffprobe (duration, bitrate, video/audio codec, resolution)
- New PreviewKind constants: PDF, Audio, Video
- New Metadata fields for extended preview data
- New extension maps and Category() entries for pdf/audio/video
- Icons: PDF (󰷉), audio (󰋋), video (󰋲) in preview header

Closes #5
This commit is contained in:
vrubelroman 2026-04-27 19:25:03 +03:00
parent 813c40a41e
commit a483267bd9
5 changed files with 833 additions and 8 deletions

View file

@ -36,23 +36,24 @@ go build -o vcom ./cmd/vcom
Run directly from the flake:
```bash
nix run github:vrubelroman/vcom?ref=v0.1.9
nix run github:vrubelroman/vcom?ref=v0.2.0
```
Install into user profile:
```bash
nix profile add github:vrubelroman/vcom?ref=v0.1.9
nix profile add github:vrubelroman/vcom?ref=v0.2.0
```
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.9`, then install:
Download and install the latest release:
```bash
sudo apt install ./vcom_0.1.9_amd64.deb
curl -sL https://github.com/vrubelroman/vcom/releases/download/v0.2.0/vcom_0.2.0_amd64.deb -o /tmp/vcom_0.2.0_amd64.deb
sudo apt install /tmp/vcom_0.2.0_amd64.deb
```
The Debian package declares `ueberzug` (or `ueberzugpp` where available) as a dependency for image preview outside `kitty`.
@ -180,7 +181,7 @@ Built-in themes (use `T` to cycle or set `ui.theme` in config):
## Releases
Pushing a tag like `v0.1.9` triggers GitHub Actions release workflow (`.github/workflows/release.yml`) which:
Pushing a tag like `v0.2.0` triggers GitHub Actions release workflow (`.github/workflows/release.yml`) which:
- runs tests
- vendors Go modules
@ -190,9 +191,9 @@ Pushing a tag like `v0.1.9` triggers GitHub Actions release workflow (`.github/w
Release artifacts:
- `vcom-v0.1.9-x86_64-unknown-linux-gnu.tar.gz`
- `vcom_0.1.9_amd64.deb`
- `vcom-v0.1.9-checksums.txt`
- `vcom-v0.2.0-x86_64-unknown-linux-gnu.tar.gz`
- `vcom_0.2.0_amd64.deb`
- `vcom-v0.2.0-checksums.txt`
## Notes