0ab97b597c
Session pump, FFmpeg decode, PipeWire audio, SDL3 gamepads, keymap, trust store, mDNS discovery, library client and Wake-on-LAN move verbatim from clients/linux into crates/pf-client-core, shared with the upcoming Vulkan session binary (punktfunk-planning: linux-client-rearchitecture.md). The GTK client re-exports them at the crate root so every existing crate::-path keeps resolving; its manifest drops the moved-only deps. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
38 lines
1.6 KiB
TOML
38 lines
1.6 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"
|
|
|
|
# The VAAPI GL presenter (video_gl.rs): EGL dmabuf import into a GDK-shared context, dlopened
|
|
# at runtime (`dynamic`) so GPU-less boxes and the software path never touch libEGL.
|
|
khronos-egl = { version = "6", features = ["dynamic"] }
|
|
|
|
serde_json = "1"
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|