e925d00194
- library.rs + ui_library.rs: the host's unified game library over the management API (the Apple LibraryClient/LibraryView ported) — mTLS with the paired identity, host verified by its pinned cert fingerprint (ureq + rustls, unified with the workspace rustls 0.23); posters load async with monogram placeholders, and picking a title starts a session that asks the host to launch it (the library id rides the Hello). - app.rs (~800 lines lighter) splits into cli.rs (argv/headless pairing/--connect/screenshot scenes), launch.rs (mode resolve + session worker + event stream into the UI) and ui_trust.rs (TOFU / SPAKE2 PIN / delegated-approval dialogs); ui_hosts/ui_stream reworked around the split. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
53 lines
1.4 KiB
Rust
53 lines
1.4 KiB
Rust
//! `punktfunk-client` — the native Linux punktfunk/1 client (design: Option A, 2026-06-12).
|
|
//!
|
|
//! GTK4/libadwaita shell · `NativeClient` linked as a crate (no C ABI) · FFmpeg decode →
|
|
//! `GtkGraphicsOffload` present · PipeWire audio · SDL3 gamepads. The trust surface
|
|
//! mirrors the Apple client: persistent identity, TOFU prompt with the host fingerprint,
|
|
//! SPAKE2 PIN pairing.
|
|
|
|
#[cfg(target_os = "linux")]
|
|
mod app;
|
|
#[cfg(target_os = "linux")]
|
|
mod audio;
|
|
#[cfg(target_os = "linux")]
|
|
mod cli;
|
|
#[cfg(target_os = "linux")]
|
|
mod discovery;
|
|
#[cfg(target_os = "linux")]
|
|
mod gamepad;
|
|
#[cfg(target_os = "linux")]
|
|
mod keymap;
|
|
#[cfg(target_os = "linux")]
|
|
mod launch;
|
|
#[cfg(target_os = "linux")]
|
|
mod library;
|
|
#[cfg(target_os = "linux")]
|
|
mod session;
|
|
#[cfg(target_os = "linux")]
|
|
mod trust;
|
|
#[cfg(target_os = "linux")]
|
|
mod ui_hosts;
|
|
#[cfg(target_os = "linux")]
|
|
mod ui_library;
|
|
#[cfg(target_os = "linux")]
|
|
mod ui_settings;
|
|
#[cfg(target_os = "linux")]
|
|
mod ui_stream;
|
|
#[cfg(target_os = "linux")]
|
|
mod ui_trust;
|
|
#[cfg(target_os = "linux")]
|
|
mod video;
|
|
|
|
#[cfg(target_os = "linux")]
|
|
fn main() -> gtk::glib::ExitCode {
|
|
app::run()
|
|
}
|
|
|
|
/// GTK4/PipeWire/SDL3 are Linux turf; this stub keeps `cargo build --workspace` green on
|
|
/// macOS (the Mac client lives in clients/apple).
|
|
#[cfg(not(target_os = "linux"))]
|
|
fn main() {
|
|
eprintln!("punktfunk-client is Linux-only — the macOS client lives in clients/apple");
|
|
std::process::exit(2);
|
|
}
|