https://github.com/palaashatri/clipkit
A high-performance, native GUI wrapper around yt-dlp — built in Rust with Iced
https://github.com/palaashatri/clipkit
gui rust wrapper yt-dlp
Last synced: 26 days ago
JSON representation
A high-performance, native GUI wrapper around yt-dlp — built in Rust with Iced
- Host: GitHub
- URL: https://github.com/palaashatri/clipkit
- Owner: palaashatri
- License: mit
- Created: 2026-05-10T10:46:06.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-10T11:48:47.000Z (about 2 months ago)
- Last Synced: 2026-05-10T13:32:27.327Z (about 2 months ago)
- Topics: gui, rust, wrapper, yt-dlp
- Language: Rust
- Homepage:
- Size: 141 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ClipKit
A high-performance, native GUI wrapper for media download engines — built in Rust with [Iced](https://github.com/iced-rs/iced).

## Features
- **Simple & advanced download modes** — paste a URL and go, or tune every download option.
- **Engine version manager** — fetch, download, and activate any release from GitHub; or use a system-installed binary.
- **Download queue** — multiple concurrent downloads with real-time progress, speed, and ETA.
- **Transcoder** — convert downloaded files via ffmpeg with built-in presets and HDR-aware options (tone-map to SDR, preserve HDR/DV best-effort).
- **Settings** — configure paths, theme (dark/light), GPU acceleration, and more.
## Prerequisites
### Build tools
- [Rust stable toolchain](https://rustup.rs/) (edition 2021, 1.70+)
- A C linker (MSVC on Windows, Xcode CLT on macOS, `gcc` on Linux)
### Runtime tools
- **Download Engine** — ClipKit can download and manage it for you from the *Engine Management* tab in Settings. Alternatively install it manually and use "Use system engine".
- **ffmpeg** — required for transcoding only. Install from [ffmpeg.org](https://ffmpeg.org/download.html) and make sure it is on your `PATH`, or point the app to its location in Settings.
## Building
The quickest way to build and launch is with the provided scripts:
```bat
# Windows
scripts\build.bat
```
```bash
# macOS / Linux
chmod +x scripts/build.sh && ./scripts/build.sh
```
Or build manually:
```bash
# Debug build (fast to compile)
cargo build
# Release build (optimised, smaller binary)
cargo build --release -p gui
```
The compiled binary lives at `target/release/clipkit` (or `clipkit.exe` on Windows).
> **Windows note:** If you are on a machine with an Application Control policy (e.g. corporate Windows), Cargo's
> build scripts may be blocked when run from user-writable directories. The `build.bat` script handles this
> automatically by using `C:\ProgramData\clipkit-build` as the output directory. To do the same manually:
> ```powershell
> $env:CARGO_TARGET_DIR = "C:\ProgramData\clipkit-build"
> cargo build --release -p gui
> # Binary: C:\ProgramData\clipkit-build\release\clipkit.exe
> ```
## Running
```bash
cargo run --release -p gui
```
Or run the binary directly after building.
## First run
1. Go to the **Settings** pane and select the **Engine Management** tab.
2. Click **Check for versions** to load the release list.
3. Click **Download & activate** on the desired release — ClipKit downloads the correct binary for your OS.
4. Switch to the **Download** pane, paste a URL, and click **Download**.
If ffmpeg is installed, it will be detected automatically on startup; otherwise a warning appears in the **Transcoder** pane and you can set the path in **Settings**.
## Project layout
```
crates/
core/ # Config, models (DownloadJob, TranscodeJob, …), presets
yt_dlp_backend/ # GitHub release fetcher, binary downloader, engine process manager
transcoder/ # ffmpeg detection and transcode engine (HDR/DV handling)
gui/ # Iced application — all panes and app state
```
## Architecture notes
- All heavy work (process I/O, HTTP) runs inside Tokio tasks.
- Events flow from background tasks → `tokio::sync::broadcast` channel → Iced subscription → UI messages. The UI thread is never blocked.
- Config is persisted to the platform-appropriate directory (`%APPDATA%\clipkit` on Windows, `~/.config/clipkit` on Linux/macOS).
- Engine binaries are stored in `%LOCALAPPDATA%\clipkit\bin\\` (Windows) or `~/.local/share/clipkit/bin//` (Linux/macOS).
## HDR / Dolby Vision notes
| Source | Preset choice | Behaviour |
|--------|---------------|-----------|
| HDR10 | Preserve HDR | Passes through `-color_primaries bt2020 -color_trc smpte2084` |
| HDR10 | Tone-map to SDR | `tonemap(hable) + format(yuv420p)` filter chain |
| Dolby Vision | Copy codec + Preserve HDR | Stream-copies video; DV metadata preserved if container supports it (MKV / MP4) |
| Dolby Vision | Re-encode + Preserve HDR | Outputs HDR10 (DV metadata stripped — clear warning shown) |
## License
MIT