[package] name = "rustdesk" version = "1.2.4" authors = ["rustdesk "] edition = "2021" build= "build.rs" description = "A remote control software." default-run = "rustdesk" rust-version = "1.75" [lib] name = "librustdesk" crate-type = ["cdylib", "staticlib", "rlib"] [[bin]] name = "naming" path = "src/naming.rs" [features] inline = [] cli = [] flutter_texture_render = [] appimage = [] flatpak = [] use_samplerate = ["samplerate"] use_rubato = ["rubato"] use_dasp = ["dasp"] flutter = ["flutter_rust_bridge"] default = ["use_dasp"] hwcodec = ["scrap/hwcodec"] gpucodec = ["scrap/gpucodec"] mediacodec = ["scrap/mediacodec"] linux_headless = ["pam" ] virtual_display_driver = ["virtual_display"] plugin_framework = [] linux-pkg-config = ["magnum-opus/linux-pkg-config", "scrap/linux-pkg-config"] unix-file-copy-paste = [ "dep:x11-clipboard", "dep:x11rb", "dep:percent-encoding", "dep:once_cell", "clipboard/unix-file-copy-paste", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] whoami = "1.4" scrap = { path = "libs/scrap", features = ["wayland"] } hbb_common = { path = "libs/hbb_common" } serde_derive = "1.0" serde = "1.0" serde_json = "1.0" serde_repr = "0.1" cfg-if = "1.0" lazy_static = "1.4" sha2 = "0.10" repng = "0.2" parity-tokio-ipc = { git = "https://github.com/open-trade/parity-tokio-ipc" } runas = "=1.0" # https://github.com/mitsuhiko/rust-runas/issues/13 magnum-opus = { git = "https://github.com/rustdesk/magnum-opus" } dasp = { version = "0.11", features = ["signal", "interpolate-linear", "interpolate"], optional = true } rubato = { version = "0.12", optional = true } samplerate = { version = "0.2", optional = true } uuid = { version = "1.3", features = ["v4"] } clap = "4.2" rpassword = "7.2" base64 = "0.21" num_cpus = "1.15" bytes = { version = "1.4", features = ["serde"] } default-net = "0.14" wol-rs = "1.0" flutter_rust_bridge = { version = "=1.80", features = ["uuid"], optional = true} errno = "0.3" rdev = { git = "https://github.com/fufesou/rdev" } url = { version = "2.3", features = ["serde"] } crossbeam-queue = "0.3" hex = "0.4" chrono = "0.4" cidr-utils = "0.5" libloading = "0.8" fon = "0.6" zip = "0.6" shutdown_hooks = "0.1" totp-rs = { version = "5.4", default-features = false, features = ["gen_secret", "otpauth"] } [target.'cfg(not(any(target_os = "android", target_os = "linux")))'.dependencies] cpal = "0.15" ringbuf = "0.3" [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] mac_address = "1.1" sciter-rs = { git = "https://github.com/open-trade/rust-sciter", branch = "dyn" } sys-locale = "0.3" enigo = { path = "libs/enigo", features = [ "with_serde" ] } clipboard = { path = "libs/clipboard" } ctrlc = "3.2" arboard = { version = "3.2", features = ["wayland-data-control"] } system_shutdown = "4.0" qrcode-generator = "4.1" [target.'cfg(target_os = "windows")'.dependencies] winapi = { version = "0.3", features = ["winuser", "wincrypt", "shellscalingapi", "pdh", "synchapi", "memoryapi"] } winreg = "0.11" windows-service = "0.6" virtual_display = { path = "libs/virtual_display", optional = true } impersonate_system = { git = "https://github.com/21pages/impersonate-system" } shared_memory = "0.12" tauri-winrt-notification = "0.1.2" [target.'cfg(target_os = "macos")'.dependencies] objc = "0.2" cocoa = "0.24" dispatch = "0.2" core-foundation = "0.9" core-graphics = "0.22" include_dir = "0.7" dark-light = "1.0" fruitbasket = "0.10" objc_id = "0.1" [target.'cfg(any(target_os = "macos", target_os = "linux", target_os = "windows"))'.dependencies] tray-icon = { git = "https://github.com/rustdesk-org/tray-icon" } tao = { git = "https://github.com/rustdesk-org/tao", branch = "dev" } image = "0.24" [target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies] keepawake = { git = "https://github.com/rustdesk-org/keepawake-rs" } [target.'cfg(any(target_os = "windows", target_os = "linux"))'.dependencies] wallpaper = { git = "https://github.com/21pages/wallpaper.rs" } [target.'cfg(any(target_os = "macos", target_os = "windows"))'.dependencies] # https://github.com/rustdesk/rustdesk-server-pro/issues/189, using native-tls for better tls support reqwest = { git = "https://github.com/rustdesk-org/reqwest", features = ["blocking", "json", "native-tls", "gzip"], default-features=false } [target.'cfg(not(any(target_os = "macos", target_os = "windows")))'.dependencies] reqwest = { git = "https://github.com/rustdesk-org/reqwest", features = ["blocking", "json", "rustls-tls", "gzip"], default-features=false } [target.'cfg(target_os = "linux")'.dependencies] psimple = { package = "libpulse-simple-binding", version = "2.27" } pulse = { package = "libpulse-binding", version = "2.27" } rust-pulsectl = { git = "https://github.com/open-trade/pulsectl" } async-process = "1.7" mouce = { git="https://github.com/fufesou/mouce.git" } evdev = { git="https://github.com/fufesou/evdev" } dbus = "0.9" dbus-crossroads = "0.5" pam = { git="https://github.com/fufesou/pam", optional = true } users = { version = "0.11" } x11-clipboard = {git="https://github.com/clslaid/x11-clipboard", branch = "feat/store-batch", optional = true} x11rb = {version = "0.12", features = ["all-extensions"], optional = true} percent-encoding = {version = "2.3", optional = true} once_cell = {version = "1.18", optional = true} [target.'cfg(target_os = "android")'.dependencies] android_logger = "0.13" jni = "0.21" android-wakelock = { git = "https://github.com/21pages/android-wakelock" } [workspace] members = ["libs/scrap", "libs/hbb_common", "libs/enigo", "libs/clipboard", "libs/virtual_display", "libs/virtual_display/dylib", "libs/portable"] exclude = ["vdi/host", "examples/custom_plugin"] [package.metadata.winres] LegalCopyright = "Copyright © 2023 Purslane, Inc." # this FileDescription overrides package.description FileDescription = "RustDesk" [target.'cfg(target_os="windows")'.build-dependencies] winres = "0.1" winapi = { version = "0.3", features = [ "winnt", "pdh", "synchapi" ] } [build-dependencies] cc = "1.0" hbb_common = { path = "libs/hbb_common" } os-version = "0.2" [dev-dependencies] hound = "3.5" [package.metadata.bundle] name = "RustDesk" identifier = "com.carriez.rustdesk" icon = ["res/32x32.png", "res/128x128.png", "res/128x128@2x.png"] osx_minimum_system_version = "10.14" #https://github.com/johnthagen/min-sized-rust [profile.release] lto = true codegen-units = 1 panic = 'abort' strip = true #opt-level = 'z' # only have smaller size after strip rpath = true