# Convertis Convertis 0.3 is a modular Linux CLI for routing files through independently installed conversion plugins. The base `convertis` package contains the engine and no converters. ## Installation Install the engine first: ```sh sudo apt install convertis # or sudo dnf install convertis ``` Then install only the plugins you need. Each plugin is a separate package: ```sh sudo apt install convertis-native-image sudo apt install convertis-ffmpeg-video convertis-ffmpeg-audio ``` Convenience bundles are available: - `convertis-ffmpeg`: all FFmpeg plugins, including frame extraction and assembly. - `convertis-image`: native image, ASCII, ImageMagick, and GraphicsMagick plugins. - `convertis-plugins-all`: every official plugin. When no installed route can perform a conversion, Convertis prints the individual package or packages that provide one. ### Raw release The release page contains a raw `x86_64-unknown-linux-gnu` executable and one ZIP containing all official `.so` plugins. Extract its `plugins/` directory beside the executable. Plugins can also be placed directly beside the executable, in `~/.local/lib/convertis/plugins`, or in `/usr/lib/convertis/plugins`. Plugins use an exact-version Rust ABI. A plugin must have been built for the same Convertis release; incompatible libraries are rejected before loading. ## Usage ```sh convertis input.png output.ico convertis input.mp4 frames/ --to frames convertis frames/ output.mp4 convertis input.png output.txt --option width=120 ``` Input formats are detected from file contents. The output extension indicates the requested target and can be overridden with `--to`. Use `--from` only when content detection cannot recognize a format. Frame extraction creates numbered images and `.convertis-frames.json`, which preserves the source frame rate and timing for the frames-to-video plugin. External frame folders without metadata use lexical ordering and 30 FPS by default. Useful inspection commands: ```sh convertis --list-plugins convertis --list-formats convertis --help ``` Use `--no-default-plugins` with explicit `--plugin-dir` arguments to run in an isolated plugin environment. Plugin settings use repeatable `--option key=value` arguments. A plugin-qualified key such as `ffmpeg-frames-to-video.fps=24` can disambiguate settings in a multi-plugin route. ## Building Build the engine and every official plugin: ```sh cargo build --release --workspace ``` The engine is `target/release/convertis`; plugins are `target/release/libconvertis_*.so`. ## Plugin API The workspace crate `convertis-plugin-api` defines the exact-version Rust trait used by official plugins. Plugin metadata is checked through a small C-compatible entry point before the Rust factory is called. The official plugin crates are the reference examples; ABI compatibility across Convertis releases is not promised. ## Platforms Version 0.3 supports 64-bit GNU/Linux. Windows and musl builds are intentionally sunset for now. ## License Convertis is licensed under GPL-3.0-only. See [LICENSE](LICENSE).