cbcd7a5c40
The GTK client becomes a relm4 component tree: AppModel owns the window, trust gate (rules 1-3), and the spawned session child's lifecycle as typed messages; the hosts page is a child component with a FactoryVecDeque of host cards — the HostsCallbacks Rc<dyn Fn> bag, the busy Cell, and the Rc<RefCell<HostsUi>> cross-page pokes are gone. Trust/settings/library dialogs stay plain GTK, invoked from update with a ComponentSender. Deleted with the in-process presenter: ui_stream.rs, video_gl.rs, ui_gamepad_library.rs, launch.rs, the khronos-egl dep, and the PUNKTFUNK_LEGACY_PRESENTER hatch. Every stream (and the console library) now runs in punktfunk-session; the shell spawns it for card connects and exec's it for --connect/--browse so the Decky wrapper keeps working. The request-access flow gains --connect-timeout + a CancelHandle that kills the child. Screenshot scenes re-pointed onto the components (verified: hosts + library self-capture; the dialog scenes present correctly and capture under a GL renderer); the gamepad-library scene is gone with the page. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
TOML
35 lines
1.4 KiB
TOML
[package]
|
|
name = "punktfunk-client-linux"
|
|
description = "Native Linux punktfunk/1 client — GTK4/libadwaita shell, FFmpeg decode, PipeWire audio, SDL3 gamepads"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
repository.workspace = true
|
|
|
|
[[bin]]
|
|
name = "punktfunk-client"
|
|
path = "src/main.rs"
|
|
|
|
# Everything is Linux-gated so `cargo build --workspace` stays green on macOS (the Mac
|
|
# client lives in clients/apple); on other platforms this builds as a stub binary.
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
# Session pump, decode, audio, gamepads, trust, discovery, keymap — the UI-agnostic
|
|
# plumbing, shared with the upcoming Vulkan session binary (design: punktfunk-planning
|
|
# linux-client-rearchitecture.md). This crate keeps only the GTK shell + GL presenter.
|
|
pf-client-core = { path = "../../crates/pf-client-core" }
|
|
punktfunk-core = { path = "../../crates/punktfunk-core", features = ["quic"] }
|
|
|
|
# UI shell. GraphicsOffload needs GTK ≥ 4.14; black-background ≥ 4.16. AlertDialog/
|
|
# PreferencesDialog need libadwaita ≥ 1.5.
|
|
gtk = { package = "gtk4", version = "0.11", features = ["v4_16"] }
|
|
adw = { package = "libadwaita", version = "0.9", features = ["v1_5"] }
|
|
async-channel = "2"
|
|
|
|
serde_json = "1"
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
relm4 = { version = "0.11", features = ["libadwaita"] }
|