65 lines
3.4 KiB
TOML
65 lines
3.4 KiB
TOML
[package]
|
|
name = "netdesk-viewer"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
description = "NetDesk native viewer window — GPU-filtered (bilinear) remote-screen rendering with a full TeamViewer/RustDesk-style toolbar, built on eframe + egui (winit + glow). Developed by Akronlogic."
|
|
|
|
[[bin]]
|
|
name = "netdesk-viewer"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
netdesk-core = { path = "../core" }
|
|
tokio = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
# control-protocol payloads (session.info / sys.res) arrive as JSON strings from
|
|
# the core; parse them in the net thread into clean Rust before the UI sees them.
|
|
serde_json = { workspace = true }
|
|
# host-control module (host_ctl.rs) models the shared config.json with derive.
|
|
serde = { workspace = true }
|
|
# host-control module: blocking HTTPS (rustls) to the relay /api — account
|
|
# sign-in / sign-up / sign-out, device list, and /health ping. Enable the
|
|
# "json" feature for send_json / into_json (tls + gzip are on by default).
|
|
ureq = { version = "2.10", features = ["json"] }
|
|
# eframe bundles winit + the GPU backend (glow/OpenGL) + the event loop, and egui
|
|
# gives us a real toolbar/menus over the remote image. egui TextureOptions::LINEAR
|
|
# = bilinear GPU filtering = smooth + clear scaling of the decoded frame.
|
|
eframe = { version = "0.29", default-features = false, features = ["glow", "default_fonts"] }
|
|
egui = "0.29"
|
|
# OS clipboard read/write for RustDesk-style clipboard sync (egui can set but not
|
|
# read the clipboard; arboard does both). Already in the tree via eframe.
|
|
arboard = "3"
|
|
# decode the embedded NetDesk logo PNG into pixels (window icon + in-app logo
|
|
# texture) and encode the live frame to PNG for "Save screenshot".
|
|
image = { version = "0.25", default-features = false, features = ["png"] }
|
|
# native OS file-picker for the File transfer panel's "Upload…" button (pick a
|
|
# local file to send to the host). Sync FileDialog only, so no async runtime
|
|
# feature is needed; the Linux-backend features are irrelevant on Windows.
|
|
rfd = { version = "0.15", default-features = false }
|
|
# pure-Rust QR encoder (Nayuki) for in-app TOTP 2FA enrollment — render the
|
|
# host's otpauth:// secret as a QR the user scans with an authenticator app.
|
|
qrcodegen = "1.8"
|
|
# crisp, consistent icon set (web / copy / folder / lock / power / arrows / …) so
|
|
# every button shows a real icon instead of a missing-glyph box. Pure-Rust
|
|
# embedded font (Phosphor), no C build; matches egui 0.29.
|
|
egui-phosphor = "0.7"
|
|
# logging for the headless --host diagnostics
|
|
env_logger = "0.11"
|
|
# NOTE: remote audio playback ("Play remote computer sound") is implemented in
|
|
# src/audio.rs (cpal + Opus) but not yet wired in — the libopus build on this
|
|
# windows-gnu toolchain needs a reliable Opus source (audiopus_sys 0.1.8's build
|
|
# script mangles extended-length paths). Re-enable cpal + an Opus decoder here
|
|
# and `mod audio;` in main.rs once that is sorted.
|
|
|
|
# Unified app: the native Rust host engine (capture+encode+SendInput) runs
|
|
# IN-PROCESS when the user clicks Start Service, so one NetDesk.exe both views
|
|
# and hosts — no Python. Windows-only (DXGI/MediaFoundation/SendInput live here).
|
|
[target.'cfg(windows)'.dependencies]
|
|
netdesk-host = { path = "../host" }
|
|
# Remote audio playback (src/audio.rs): Opus decode via the vendored libopus
|
|
# + cpal (WASAPI) output.
|
|
netdesk-opus = { path = "../opus" }
|
|
cpal = "0.15"
|