Files
clipbin-desktop/README.md
T
harry eb364d25e2
Rust checks / checks (push) Successful in 3m35s
chore: scaffold Rust workspace and native GPUI shell
2026-10-08 12:19:45 +02:00

3.7 KiB
Raw Blame History

Clipbin Desktop

An open-source game recorder for Windows and Linux, inspired by Plays.tv. Rust and GPUI provide the desktop interface; the recording engine will use libobs and official OBS capture components.

SPEC.md defines the agreed v1 product requirements.

Current state

This is the initial project scaffold. It opens a native GPUI window, displays the agreed recording defaults, and always reports Not recording.

Capture, Steam detection, recording, playback, clipping, bookmarks, persistence, global hotkeys, autostart, and background recording are not implemented yet. Closing the window exits this initial shell. The full application will keep its recorder running independently of window closure, as specified in SPEC.md.

Layout

crates/
  clipbin-core/       Settings and recorder state; independent of GPUI and native OBS.
  clipbin-desktop/    GPUI application and initial session-library view.
.gitea/workflows/     Rust formatting and compilation checks.
SPEC.md              Product requirements and acceptance checks.

The core currently has no external dependencies. Keep capture and session operations out of the UI thread when the recording engine is added.

Development

Use Rust 1.98.0, as pinned in rust-toolchain.toml. GPUI is pinned to 0.2.2, with Wayland and X11 enabled. Cargo.lock pins transitive dependencies.

Keep the lockfile checked in and use --locked. It currently pins libc to 0.2.186 because GPUI’s transitive xattr 0.2.3 dependency fails to compile against 0.2.190 on Linux.

On Arch/CachyOS, install the native build dependencies:

sudo pacman -S --needed base-devel pkgconf fontconfig freetype2 wayland libxcb libxkbcommon libxkbcommon-x11 openssl

On Debian/Ubuntu:

sudo apt-get update
sudo apt-get install build-essential pkg-config libfontconfig1-dev libfreetype6-dev libwayland-dev libxcb1-dev libxkbcommon-dev libxkbcommon-x11-dev libssl-dev

For Windows, use the MSVC Rust toolchain and Visual Studio Build Tools with the Desktop development with C++ workload. Windows support needs validation on a Windows machine.

Run the desktop shell from an active graphical session:

cargo run --locked -p clipbin-desktop

The desktop app needs a working Wayland or X11 session on Linux, or a Windows desktop. It does not start a web server. On this remote development machine, bind any future development server to its tailnet IP.

Use the Quit button or Ctrl+Q to quit.

Checks:

cargo fmt --all -- --check
cargo clippy --locked --workspace --all-targets -- -D warnings
cargo build --locked --workspace

The core can also be checked without native UI dependencies:

cargo check --locked -p clipbin-core

First recording milestone

  1. Validate official OBS capture and recording-health signals on CachyOS, Hyprland and the RX 9070 XT at 1440p60.
  2. Select and pin a tested OBS runtime, Rust bindings, and official plugin set together. Preserve the original signed Windows capture-hook binaries.
  3. Prove one continuous hardware encoder can produce short keyframe-aligned segments and remux clips across their boundaries while recording continues.
  4. Integrate the recorder without blocking GPUI, then add native playback and seeking.

OBS is not linked or bundled in this scaffold. Adding an unused native dependency would not validate the required runtime/plugin compatibility. The runtime bundle and adapter belong to the first recording milestone.

The capture integration must use official OBS components: Windows Game Capture/Window Capture, X11 Xcomposite, and Wayland PipeWire/desktop-portal capture. Third-party game hooks are excluded.

License

GPL-3.0-only. See LICENSE.