caery 0.1.22

KnottDynamics-styled Linux desktop media converter for audio and video.
Documentation
# Caery

Caery is a Rust desktop app for converting media files with `ffmpeg`, styled after the KnottFlasher/Motte monochrome HUD interface.

It supports common local workflows:

- Video to audio extraction, such as `.mp4` to `.mp3`, `.flac`, `.wav`, `.ogg`, `.opus`, or `.m4a`.
- Video to video transcoding, such as `.mkv` to `.mp4`, `.webm`, `.mov`, or `.mkv`.
- Audio to audio conversion between common audio containers/codecs.
- Built-in Media Vault browser, path paste, and drag-and-drop source selection.
- Suggested output filenames, overwrite guarding, final route review, live logs, and progress telemetry.

## Run

```bash
cargo run
```

Caery is designed for Linux desktops and expects `ffmpeg` and `ffprobe` to be installed.

More usage details are in [`docs/usage.md`](docs/usage.md).

## CLI Mode

Run quick terminal conversions with two paths. Caery infers the route from the input and output extensions:

```bash
caery song.wav song.mp3
caery clip.mp4 clip.flac
caery clip.mkv clip.webm

cargo run -- song.wav song.mp3
cargo run -- clip.mp4 clip.flac
cargo run -- clip.mkv clip.webm
```

Quick mode supports audio-to-audio, video-to-audio, and video-to-video. If the extension pair cannot map to a supported route, Caery exits before starting `ffmpeg` and prints why it cannot infer the conversion.

Use `--cli` for explicit terminal conversion options:

```bash
caery --cli --input clip.mp4 --audio-format mp3
caery --cli --input clip.mkv --output clip.webm --mode video-to-video --video-format webm --quality archive
caery --cli --input song.wav --mode audio-to-audio --audio-format flac

cargo run -- --cli --input clip.mp4 --audio-format mp3
cargo run -- --cli --input clip.mkv --output clip.webm --mode video-to-video --video-format webm --quality archive
cargo run -- --cli --input song.wav --mode audio-to-audio --audio-format flac
```

CLI options:

- `--input` or `-i`: source media file.
- `--output` or `-o`: output file; omitted output paths use `<source>-caery.<format>`.
- `--mode` or `-m`: `extract-audio`, `video-to-video`, or `audio-to-audio`.
- `--audio-format`: `mp3`, `m4a`, `flac`, `wav`, `ogg`, or `opus`.
- `--video-format`: `mp4`, `mkv`, `webm`, or `mov`.
- `--quality` or `-q`: `compact`, `balanced`, or `archive`.
- `--overwrite` or `-y`: replace an existing output file.

Use `caery --cli --help` for the full terminal help.

## Desktop Install

Install the current binary as a Linux desktop app launcher:

```bash
cargo run -- --install
```

`--install` writes:

- `~/.local/share/applications/caery.desktop`
- `~/.local/share/icons/hicolor/256x256/apps/caery.png` from the bundled `assets/logo.png`
- `~/Desktop/Caery.desktop` when `~/Desktop` exists

The launcher points to the exact binary used to run `--install`. For a permanent launcher, run `--install` from the final installed binary path rather than a temporary build location.

## Workflow

1. Choose a source audio or video file with Media Vault, paste a path, or drag a file into the window.
2. Confirm or edit the output file path.
3. Pick the conversion route: extract audio, transcode video, or transcode audio.
4. Pick the output format and quality profile.
5. Press `Review + Convert`, inspect the final route, then start conversion.

## System Tools

- `ffmpeg` for conversion.
- `ffprobe` for duration probing and progress calculation.

Install them with your distro package manager, for example `sudo pacman -S ffmpeg`, `sudo apt install ffmpeg`, or `sudo dnf install ffmpeg`.

## Test

```bash
cargo fmt --check
cargo test
cargo check
```