From 9c22ca4c6e2b6a0f8454d58884e80fa6f09ca11d Mon Sep 17 00:00:00 2001 From: rustdesk Date: Thu, 29 Apr 2021 09:35:23 +0800 Subject: [PATCH 01/17] wording --- README.md | 2 +- src/server/connection.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f51a3e51e..3fb6653c9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # RustDesk | Your Remote Desktop Software -The best open-source remote desktop software, written in Rust. Works out of the box, no configuration required. Great alternative to TeamViewer and AnyDesk! You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, [set up your own](https://rustdesk.com/blog/id-relay-set/), or write your own rendezvous/relay server. +The best open-source remote desktop client software, written in Rust. Works out of the box, no configuration required. Great alternative to TeamViewer and AnyDesk! You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, [set up your own](https://rustdesk.com/blog/id-relay-set/), or write your own rendezvous/relay server. [**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases) diff --git a/src/server/connection.rs b/src/server/connection.rs index e40d5bab3..c2ab222d0 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -437,7 +437,7 @@ impl Connection { try_activate_screen(); match super::video_service::get_displays() { Err(err) => { - res.set_error(err.to_string()); + res.set_error(format!("X11 error: {}", err)); } Ok((current, displays)) => { pi.displays = displays.into(); From afc842785af1359b6c1d975c9ea7b1f40cc71090 Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Thu, 29 Apr 2021 11:49:30 +0800 Subject: [PATCH 02/17] Update README.md --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 3fb6653c9..f54ed3c7f 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit ## How To Build +### Steps * Prepare your Rust development env and C++ build env * Install [vcpkg](https://github.com/microsoft/vcpkg), and set `VCPKG_ROOT` env variable correctly @@ -22,6 +23,22 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit - Linux/Osx: vcpkg install libvpx libyuv opus * run `cargo run` +### Build on Debain +``` +sudo apt install -y git curl wget nasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake +git clone https://github.com/microsoft/vcpkg +vcpkg/bootstrap-vcpkg.sh +export VCPKG_ROOT=$HOME/vcpkg +vcpkg/vcpkg install libvpx libyuv opus +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source $HOME/.cargo/env +git clone https://github.com/rustdesk/rustdesk +cd rustdesk +mkdir -p target/debug +wget https://github.com/c-smile/sciter-sdk/raw/dc65744b66389cd5a0ff6bdb7c63a8b7b05a708b/bin.lnx/x64/libsciter-gtk.so +mv libsciter-gtk.so target/debug +cargo run +``` ## File Structure From 401648eefd787c76edc815c3b3d248f59264b876 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Fri, 30 Apr 2021 00:33:37 +0800 Subject: [PATCH 03/17] fedora --- README.md | 37 +++++++++++++++++--- src/platform/linux.rs | 80 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 102 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index f54ed3c7f..9b9768c1a 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,8 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit [Linux](https://github.com/c-smile/sciter-sdk/raw/dc65744b66389cd5a0ff6bdb7c63a8b7b05a708b/bin.lnx/x64/libsciter-gtk.so) [Osx](https://github.com/c-smile/sciter-sdk/raw/dc65744b66389cd5a0ff6bdb7c63a8b7b05a708b/bin.osx/sciter-osx-64.dylib) -## How To Build -### Steps +## Raw Steps to build * Prepare your Rust development env and C++ build env * Install [vcpkg](https://github.com/microsoft/vcpkg), and set `VCPKG_ROOT` env variable correctly @@ -23,13 +22,41 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit - Linux/Osx: vcpkg install libvpx libyuv opus * run `cargo run` -### Build on Debain + +## How to build on Linux + +### Ubuntu 18 (Debain 10) ``` -sudo apt install -y git curl wget nasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake -git clone https://github.com/microsoft/vcpkg +sudo apt install -y g++ gcc git curl wget nasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake +``` + +### Fedora 28 +``` +yum -y install gcc-c++ git curl wget nasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel +``` + +### Install VCPKG +``` +git clone https://github.com/microsoft/vcpkg --branch 2020.11-1 vcpkg/bootstrap-vcpkg.sh export VCPKG_ROOT=$HOME/vcpkg vcpkg/vcpkg install libvpx libyuv opus +``` + +### Fix libvpx (For Fedora) +``` +cd vcpkg/buildtrees/libvpx/src +cd * +./configure +sed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile +sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile +make +cp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/ +cd +``` + +### Build +``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env git clone https://github.com/rustdesk/rustdesk diff --git a/src/platform/linux.rs b/src/platform/linux.rs index 6798fb1a3..15c619378 100644 --- a/src/platform/linux.rs +++ b/src/platform/linux.rs @@ -1,6 +1,7 @@ use super::{CursorData, ResultType}; use hbb_common::{allow_err, bail, log}; use libc::{c_char, c_int, c_void}; +use std::io::prelude::*; use std::{ cell::RefCell, sync::{ @@ -30,7 +31,7 @@ extern "C" { #[link(name = "X11")] extern "C" { fn XOpenDisplay(display_name: *const c_char) -> *mut c_void; -// fn XCloseDisplay(d: *mut c_void) -> c_int; + // fn XCloseDisplay(d: *mut c_void) -> c_int; } #[link(name = "Xfixes")] @@ -162,8 +163,36 @@ pub fn start_os_service() { if tmp != uid && !tmp.is_empty() { uid = tmp; log::info!("uid of seat0: {}", uid); - std::env::set_var("XAUTHORITY", format!("/run/user/{}/gdm/Xauthority", uid)); - std::env::set_var("DISPLAY", get_display()); + let gdm = format!("/run/user/{}/gdm/Xauthority", uid); + let mut auth = get_env("XAUTHORITY", &uid); + if auth.is_empty() { + auth = if std::path::Path::new(&gdm).exists() { + gdm + } else { + let username = get_active_username(); + if username == "root" { + format!("/{}/.Xauthority", username) + } else { + let tmp = format!("/home/{}/.Xauthority", username); + if std::path::Path::new(&tmp).exists() { + tmp + } else { + format!("/var/lib/{}/.Xauthority", username) + } + } + }; + } + let mut d = get_env("DISPLAY", &uid); + if d.is_empty() { + d = get_display(); + } + if d.is_empty() { + d = ":0".to_owned() + } + log::info!("DISPLAY: {}", d); + log::info!("XAUTHORITY: {}", auth); + std::env::set_var("XAUTHORITY", auth); + std::env::set_var("DISPLAY", d); if let Some(ps) = server.as_mut() { allow_err!(ps.kill()); std::thread::sleep(std::time::Duration::from_millis(30)); @@ -245,26 +274,27 @@ fn get_cm() -> bool { fn get_display() -> String { let user = get_active_username(); + log::debug!("w {}", &user); if let Ok(output) = std::process::Command::new("w").arg(&user).output() { for line in String::from_utf8_lossy(&output.stdout).lines() { + log::debug!(" {}", line); let mut iter = line.split_whitespace(); - let a = iter.nth(1); - let b = iter.next(); - if a == b { - if let Some(b) = b { - if b.starts_with(":") { - return b.to_owned(); - } + let b = iter.nth(2); + if let Some(b) = b { + if b.starts_with(":") { + return b.to_owned(); } } } } // above not work for gdm user + log::debug!("ls -l /tmp/.X11-unix/"); if let Ok(output) = std::process::Command::new("ls") .args(vec!["-l", "/tmp/.X11-unix/"]) .output() { for line in String::from_utf8_lossy(&output.stdout).lines() { + log::debug!(" {}", line); let mut iter = line.split_whitespace(); if iter.nth(2) == Some(&user) { if let Some(x) = iter.last() { @@ -444,3 +474,33 @@ pub fn block_input(_v: bool) { pub fn is_installed() -> bool { true } + +fn run_cmds(cmds: String) -> ResultType> { + let mut tmp = std::env::temp_dir(); + tmp.push(format!( + "{}_{}", + hbb_common::config::APP_NAME, + crate::get_time() + )); + let mut file = std::fs::File::create(&tmp)?; + file.write_all(cmds.as_bytes())?; + file.sync_all()?; + if let Ok(output) = std::process::Command::new("bash") + .arg(tmp.to_str().unwrap_or("")) + .output() + { + Ok(Some(String::from_utf8_lossy(&output.stdout).to_string())) + } else { + Ok(None) + } +} + +fn get_env(name: &str, uid: &str) -> String { + let cmd = format!("ps -u {} -o pid= | xargs -I__ cat /proc/__/environ 2>/dev/null | tr '\\0' '\\n' | grep -m1 '^{}=' | sed 's/{}=//g'", uid, name, name); + log::debug!("Run: {}", &cmd); + if let Ok(Some(x)) = run_cmds(cmd) { + x.trim_end().to_string() + } else { + "".to_owned() + } +} From 9aac02426731b2dabfe06f16ef480d8394b32985 Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Fri, 30 Apr 2021 00:41:20 +0800 Subject: [PATCH 04/17] About wayland --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 9b9768c1a..f6f38cea6 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,9 @@ mv libsciter-gtk.so target/debug cargo run ``` +### Change Wayland to X11 (Xorg) +RustDesk does not support Wayland. Check [this](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) to configuring Xorg as the default GNOME session. + ## File Structure - **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs functions for file transfer, and some other utility functions From 0b5d9b63eae409a01eb16b68f76ca823463d67a8 Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Fri, 30 Apr 2021 23:47:44 +0800 Subject: [PATCH 05/17] somebody report yasm needed also --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f6f38cea6..faa03e207 100644 --- a/README.md +++ b/README.md @@ -27,12 +27,12 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit ### Ubuntu 18 (Debain 10) ``` -sudo apt install -y g++ gcc git curl wget nasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake +sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake ``` ### Fedora 28 ``` -yum -y install gcc-c++ git curl wget nasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel +yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel ``` ### Install VCPKG From 335ec619d9f5fde6ac50a362254890dcd68b00ac Mon Sep 17 00:00:00 2001 From: RustDesk <71636191+rustdesk@users.noreply.github.com> Date: Sat, 1 May 2021 15:57:58 +0800 Subject: [PATCH 06/17] Update README.md --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index faa03e207..d7956caa4 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit [Osx](https://github.com/c-smile/sciter-sdk/raw/dc65744b66389cd5a0ff6bdb7c63a8b7b05a708b/bin.osx/sciter-osx-64.dylib) -## Raw Steps to build +## Raw steps to build * Prepare your Rust development env and C++ build env * Install [vcpkg](https://github.com/microsoft/vcpkg), and set `VCPKG_ROOT` env variable correctly @@ -32,10 +32,15 @@ sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-ra ### Fedora 28 ``` -yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel +sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel ``` -### Install VCPKG +### Arch (Manjaro) +``` +sudo pacman -Syu unzip git cmake gcc curl wget yasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pulseaudio +``` + +### Install vcpkg ``` git clone https://github.com/microsoft/vcpkg --branch 2020.11-1 vcpkg/bootstrap-vcpkg.sh From 547b85adbf1b48eb3d5c5deeafbd024ed3a5d628 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Sun, 2 May 2021 00:37:32 +0800 Subject: [PATCH 07/17] force to use static link for Manjaro --- Cargo.lock | 997 +++++++++--------------------------- README.md | 4 +- libs/scrap/build.rs | 2 +- src/server/video_service.rs | 6 +- 4 files changed, 247 insertions(+), 762 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 533fbc409..527f65f4b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,35 +11,29 @@ dependencies = [ [[package]] name = "adler" -version = "0.2.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" - -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "0.7.15" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] [[package]] name = "alsa" -version = "0.4.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb213f6b3e4b1480a60931ca2035794aa67b73103d254715b1db7b70dcb3c934" +checksum = "75c4da790adcb2ce5e758c064b4f3ec17a30349f9961d3e5e6c9688b052a9e18" dependencies = [ "alsa-sys", "bitflags", "libc", - "nix 0.15.0", + "nix 0.20.0", ] [[package]] @@ -81,33 +75,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" - -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" +checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" [[package]] name = "async-trait" -version = "0.1.42" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d" +checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" dependencies = [ "proc-macro2", "quote", @@ -165,11 +141,12 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.56" +version = "0.3.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" +checksum = "88fb5a785d6b44fd9d6700935608639af1b8356de1e55d5f7c2740f4faa15d82" dependencies = [ "addr2line", + "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", @@ -177,24 +154,12 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base-x" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" - [[package]] name = "base64" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - [[package]] name = "bindgen" version = "0.52.0" @@ -249,17 +214,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - [[package]] name = "block" version = "0.1.6" @@ -283,9 +237,9 @@ checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" [[package]] name = "byteorder" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -370,16 +324,10 @@ dependencies = [ "libc", "num-integer", "num-traits 0.2.14", - "time 0.1.43", + "time", "winapi 0.3.9", ] -[[package]] -name = "chunked_transfer" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" - [[package]] name = "clang-sys" version = "0.28.1" @@ -456,19 +404,6 @@ dependencies = [ "objc", ] -[[package]] -name = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - [[package]] name = "combine" version = "4.5.2" @@ -485,49 +420,10 @@ version = "0.4.1" source = "git+https://github.com/open-trade/confy#27fa12941291b44ccd856aef4a5452c1eb646047" dependencies = [ "directories", - "serde 1.0.123", + "serde 1.0.125", "toml", ] -[[package]] -name = "const_fn" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "cookie" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784ad0fbab4f3e9cef09f20e0aea6000ae08d2cb98ac4c0abc53df18803d702f" -dependencies = [ - "percent-encoding", - "time 0.2.25", - "version_check 0.9.2", -] - -[[package]] -name = "cookie_store" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3818dfca4b0cb5211a659bbcbb94225b7127407b2b135e650d717bfb78ab10d3" -dependencies = [ - "cookie", - "idna", - "log", - "publicsuffix", - "serde 1.0.123", - "serde_json 1.0.62", - "time 0.2.25", - "url", -] - [[package]] name = "copypasta" version = "0.7.1" @@ -626,23 +522,23 @@ dependencies = [ [[package]] name = "cpal" -version = "0.13.1" -source = "git+https://github.com/rustaudio/cpal#1d72ae74535fea1cebc5158d8a63362042e2633f" +version = "0.13.3" +source = "git+https://github.com/rustaudio/cpal#1b2469d0c1175250e1c7944b51e53f613671e987" dependencies = [ "alsa", "core-foundation-sys 0.6.2", "coreaudio-rs", - "jni 0.17.0", + "jni", "js-sys", "lazy_static", "libc", "mach", "ndk", "ndk-glue", - "nix 0.15.0", + "nix 0.20.0", "oboe", "parking_lot", - "stdweb 0.1.3", + "stdweb", "thiserror", "web-sys", "winapi 0.3.9", @@ -663,18 +559,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "crossbeam-utils" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae8f328835f8f5a6ceb6a7842a7f2d0c03692adb5c889347235d59194731fe3" -dependencies = [ - "autocfg 1.0.1", - "cfg-if 1.0.0", - "lazy_static", - "loom", -] - [[package]] name = "ct-logs" version = "0.6.0" @@ -686,11 +570,11 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.1.7" +version = "3.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b57a92e9749e10f25a171adcebfafe72991d45e7ec2dcb853e8f83d9dafaeb08" +checksum = "232295399409a8b7ae41276757b5a1cc21032848d42bff2352261f958b3ca29a" dependencies = [ - "nix 0.18.0", + "nix 0.20.0", "winapi 0.3.9", ] @@ -861,9 +745,9 @@ dependencies = [ [[package]] name = "dasp_window" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66bcb90ea007ba45fc48d426e28af3e8a653634f9a7174d768dcfe90fa6211f4" +checksum = "99ded7b88821d2ce4e8b842c9f1c86ac911891ab89443cc1de750cae764c5076" dependencies = [ "dasp_sample", ] @@ -881,9 +765,9 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.11" +version = "0.99.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8c" +checksum = "f82b1b72f1263f214c0f823371768776c4f5841b942c9883aa8e5ec584fd0ba6" dependencies = [ "proc-macro2", "quote", @@ -931,12 +815,12 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" +checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" dependencies = [ "libc", - "redox_users 0.3.5", + "redox_users", "winapi 0.3.9", ] @@ -947,16 +831,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.4.0", + "redox_users", "winapi 0.3.9", ] -[[package]] -name = "discard" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" - [[package]] name = "dispatch" version = "0.2.0" @@ -973,15 +851,24 @@ dependencies = [ ] [[package]] -name = "docopt" -version = "1.1.0" +name = "dlib" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f525a586d310c87df72ebcd98009e57f1cc030c8c268305287a476beb653969" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +dependencies = [ + "libloading 0.7.0", +] + +[[package]] +name = "docopt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f3f119846c823f9eafcf953a8f6ffb6ed69bf6240883261a7f13b634579a51f" dependencies = [ "lazy_static", "regex", - "serde 1.0.123", - "strsim 0.9.3", + "serde 1.0.125", + "strsim 0.10.0", ] [[package]] @@ -992,9 +879,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "dtoa" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d7ed2934d741c6b37e33e3832298e8850b53fd2d2bea03873375596c7cea4e" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" [[package]] name = "either" @@ -1011,7 +898,7 @@ dependencies = [ "log", "objc", "pkg-config", - "serde 1.0.123", + "serde 1.0.125", "serde_derive", "unicode-segmentation", "winapi 0.3.9", @@ -1071,16 +958,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "error-chain" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" -dependencies = [ - "backtrace", - "version_check 0.9.2", -] - [[package]] name = "failure" version = "0.1.8" @@ -1090,17 +967,6 @@ dependencies = [ "backtrace", ] -[[package]] -name = "fetch_unroll" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d44807d562d137f063cbfe209da1c3f9f2fa8375e11166ef495daab7b847f9" -dependencies = [ - "libflate", - "tar", - "ureq", -] - [[package]] name = "filetime" version = "0.2.14" @@ -1109,7 +975,7 @@ checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.5", + "redox_syscall", "winapi 0.3.9", ] @@ -1162,16 +1028,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" -[[package]] -name = "form_urlencoded" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" -dependencies = [ - "matches", - "percent-encoding", -] - [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -1196,9 +1052,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9052a1a50244d8d5aa9bf55cbc2fb6f357c86cc52e46c62ed390a7180cf150" +checksum = "a9d5813545e459ad3ca1bff9915e9ad7f1a47dc6a91b627ce321d5863b7dd253" dependencies = [ "futures-channel", "futures-core", @@ -1211,9 +1067,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d31b7ec7efab6eefc7c57233bb10b847986139d88cc2f5a02a1ae6871a1846" +checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" dependencies = [ "futures-core", "futures-sink", @@ -1221,15 +1077,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e5145dde8da7d1b3892dad07a9c98fc04bc39892b1ecc9692cf53e2b780a65" +checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" [[package]] name = "futures-executor" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e59fdc009a4b3096bf94f740a0f2424c082521f20a9b08c5c07c48d90fd9b9" +checksum = "10f6cb7042eda00f0049b1d2080aa4b93442997ee507eb3828e8bd7577f94c9d" dependencies = [ "futures-core", "futures-task", @@ -1238,15 +1094,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28be053525281ad8259d47e4de5de657b25e7bac113458555bb4b70bc6870500" +checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" [[package]] name = "futures-macro" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c287d25add322d9f9abdcdc5927ca398917996600182178774032e9f8258fedd" +checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -1256,24 +1112,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf5c69029bda2e743fddd0582d1083951d65cc9539aebf8812f36c3491342d6" +checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" [[package]] name = "futures-task" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13de07eb8ea81ae445aca7b69f5f7bf15d7bf4912d8ca37d6645c77ae8a58d86" -dependencies = [ - "once_cell", -] +checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" [[package]] name = "futures-util" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632a8cd0f2a4b3fdea1657f08bde063848c3bd00f9bbf6e256b8be78802e624b" +checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" dependencies = [ "futures-channel", "futures-core", @@ -1282,7 +1135,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.6", "pin-utils", "proc-macro-hack", "proc-macro-nested", @@ -1354,19 +1207,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "generator" -version = "0.6.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9fed24fd1e18827652b4d55652899a1e9da8e54d91624dc3437a5bc3a9f9a9c" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "winapi 0.3.9", -] - [[package]] name = "generic-array" version = "0.14.4" @@ -1374,7 +1214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" dependencies = [ "typenum", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] @@ -1567,9 +1407,9 @@ dependencies = [ "protobuf-codegen-pure", "quinn", "rand 0.7.3", - "serde 1.0.123", + "serde 1.0.125", "serde_derive", - "serde_json 1.0.62", + "serde_json 1.0.64", "socket2", "sodiumoxide", "tokio", @@ -1624,17 +1464,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "instant" version = "0.1.9" @@ -1676,29 +1505,15 @@ checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "jni" -version = "0.14.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1981310da491a4f0f815238097d0d43d8072732b5ae5f8bd0d8eadf5bf245402" +checksum = "24967112a1e4301ca5342ea339763613a37592b8a6ce6cf2e4494537c7a42faf" dependencies = [ "cesu8", - "combine 3.8.1", - "error-chain", - "jni-sys", - "log", - "walkdir", -] - -[[package]] -name = "jni" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36bcc950632e48b86da402c5c077590583da5ac0d480103611d5374e7c967a3c" -dependencies = [ - "cesu8", - "combine 4.5.2", - "error-chain", + "combine", "jni-sys", "log", + "thiserror", "walkdir", ] @@ -1710,18 +1525,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.47" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cfb73131c35423a367daf8cbd24100af0d077668c8c2943f0e7dd775fef0f65" +checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" dependencies = [ "wasm-bindgen", ] @@ -1780,27 +1595,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.86" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" - -[[package]] -name = "libflate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389de7875e06476365974da3e7ff85d55f1972188ccd9f6020dd7c8156e17914" -dependencies = [ - "adler32", - "crc32fast", - "libflate_lz77", - "rle-decode-fast", -] - -[[package]] -name = "libflate_lz77" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3286f09f7d4926fc486334f28d8d2e6ebe4f7f9994494b6dab27ddfad2c9b11b" +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "libloading" @@ -1823,10 +1620,20 @@ dependencies = [ ] [[package]] -name = "libpulse-binding" -version = "2.23.0" +name = "libloading" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2405f806801527dfb3d2b6d48a282cdebe9a1b41b0652e0d7b5bad81dbc700e" +checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + +[[package]] +name = "libpulse-binding" +version = "2.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db951f37898e19a6785208e3a290261e0f1a8e086716be596aaad684882ca8e3" dependencies = [ "bitflags", "libc", @@ -1883,9 +1690,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" dependencies = [ "scopeguard", ] @@ -1899,17 +1706,6 @@ dependencies = [ "cfg-if 1.0.0", ] -[[package]] -name = "loom" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4" -dependencies = [ - "cfg-if 1.0.0", - "generator", - "scoped-tls", -] - [[package]] name = "mac_address" version = "1.1.1" @@ -1955,17 +1751,11 @@ dependencies = [ "libc", ] -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" - [[package]] name = "memchr" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "memmap2" @@ -1978,9 +1768,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", "autocfg 1.0.1", @@ -2013,7 +1803,7 @@ checksum = "0840c1c50fd55e521b247f949c241c9997709f23bd7f023b9762cd561e935656" dependencies = [ "log", "mio", - "miow 0.3.6", + "miow 0.3.7", "winapi 0.3.9", ] @@ -2042,19 +1832,18 @@ dependencies = [ [[package]] name = "miow" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a33c1b55807fbed163481b5ba66db4b2fa6cde694a5027be10fb724206c5897" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "socket2", "winapi 0.3.9", ] [[package]] name = "ndk" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" +checksum = "8794322172319b972f528bf90c6b467be0079f1fa82780ffb431088e741a73ab" dependencies = [ "jni-sys", "ndk-sys", @@ -2064,9 +1853,9 @@ dependencies = [ [[package]] name = "ndk-glue" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" +checksum = "c5caf0c24d51ac1c905c27d4eda4fa0635bbe0de596b8f79235e0b17a4d29385" dependencies = [ "lazy_static", "libc", @@ -2106,19 +1895,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "nix" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" -dependencies = [ - "bitflags", - "cc", - "cfg-if 0.1.10", - "libc", - "void", -] - [[package]] name = "nix" version = "0.17.0" @@ -2156,6 +1932,18 @@ dependencies = [ "libc", ] +[[package]] +name = "nix" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", +] + [[package]] name = "nom" version = "4.2.3" @@ -2173,7 +1961,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" dependencies = [ "memchr", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] @@ -2227,9 +2015,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" +checksum = "226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066" dependencies = [ "derivative", "num_enum_derive", @@ -2237,9 +2025,9 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" +checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2284,11 +2072,11 @@ checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" [[package]] name = "oboe" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aadc2b0867bdbb9a81c4d99b9b682958f49dbea1295a81d2f646cca2afdd9fc" +checksum = "4cfb2390bddb9546c0f7448fd1d2abdd39e6075206f960991eb28c7fa7f126c4" dependencies = [ - "jni 0.14.0", + "jni", "ndk", "ndk-glue", "num-derive", @@ -2298,18 +2086,18 @@ dependencies = [ [[package]] name = "oboe-sys" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ff7a51600eabe34e189eec5c995a62f151d8d97e5fbca39e87ca738bb99b82" +checksum = "fe069264d082fc820dfa172f79be3f2e088ecfece9b1c47b0c9fd838d2bef103" dependencies = [ - "fetch_unroll", + "cc", ] [[package]] name = "once_cell" -version = "1.5.2" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" +checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" [[package]] name = "opaque-debug" @@ -2358,7 +2146,7 @@ dependencies = [ "libc", "log", "mio-named-pipes", - "miow 0.3.6", + "miow 0.3.7", "rand 0.7.3", "tokio", "winapi 0.3.9", @@ -2384,7 +2172,7 @@ dependencies = [ "cfg-if 1.0.0", "instant", "libc", - "redox_syscall 0.2.5", + "redox_syscall", "smallvec", "winapi 0.3.9", ] @@ -2395,12 +2183,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - [[package]] name = "phf" version = "0.7.24" @@ -2441,15 +2223,15 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c917123afa01924fc84bb20c4c03f004d9c38e5127e3c039bbf7f4b9c76a2f6b" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" +checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" [[package]] name = "pin-utils" @@ -2494,7 +2276,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] @@ -2505,7 +2287,7 @@ checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", - "version_check 0.9.2", + "version_check 0.9.3", ] [[package]] @@ -2522,9 +2304,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" dependencies = [ "unicode-xid", ] @@ -2532,12 +2314,12 @@ dependencies = [ [[package]] name = "protobuf" version = "3.0.0-pre" -source = "git+https://github.com/stepancheg/rust-protobuf#5af22c6456a61eea324aff15a8edcaf6a57d8c5f" +source = "git+https://github.com/stepancheg/rust-protobuf#bbe35a98e196c4dea67dd23ac93c0a66ca11b903" [[package]] name = "protobuf-codegen" version = "3.0.0-pre" -source = "git+https://github.com/stepancheg/rust-protobuf#5af22c6456a61eea324aff15a8edcaf6a57d8c5f" +source = "git+https://github.com/stepancheg/rust-protobuf#bbe35a98e196c4dea67dd23ac93c0a66ca11b903" dependencies = [ "protobuf", ] @@ -2545,7 +2327,7 @@ dependencies = [ [[package]] name = "protobuf-codegen-pure" version = "3.0.0-pre" -source = "git+https://github.com/stepancheg/rust-protobuf#5af22c6456a61eea324aff15a8edcaf6a57d8c5f" +source = "git+https://github.com/stepancheg/rust-protobuf#bbe35a98e196c4dea67dd23ac93c0a66ca11b903" dependencies = [ "protobuf", "protobuf-codegen", @@ -2553,9 +2335,9 @@ dependencies = [ [[package]] name = "psutil" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cdb732329774b8765346796abd1e896e9b3c86aae7f135bb1dda98c2c460f55" +checksum = "e780a52bf9358cb8257cac630b130dc603901f7488f8eef13e2d512cead10739" dependencies = [ "cfg-if 0.1.10", "darwin-libproc", @@ -2570,28 +2352,6 @@ dependencies = [ "unescape", ] -[[package]] -name = "publicsuffix" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" -dependencies = [ - "error-chain", - "idna", - "lazy_static", - "regex", - "url", -] - -[[package]] -name = "qstring" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" -dependencies = [ - "percent-encoding", -] - [[package]] name = "quest" version = "0.3.0" @@ -2613,9 +2373,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88de58d76d8f82fb28e5c89302119c102bb5b9ce57b034186b559b63ba147a0f" +checksum = "8a626bb32aee973667aff87a9f5187bd076a78a09f79c262f78ab260b9ba0077" dependencies = [ "bytes 0.5.6", "err-derive 0.2.4", @@ -2623,7 +2383,8 @@ dependencies = [ "libc", "mio", "quinn-proto", - "rustls 0.17.0", + "rustls", + "socket2", "tokio", "tracing", "webpki", @@ -2640,7 +2401,7 @@ dependencies = [ "err-derive 0.2.4", "rand 0.7.3", "ring", - "rustls 0.17.0", + "rustls", "rustls-native-certs", "slab", "tracing", @@ -2854,30 +2615,13 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" +checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" dependencies = [ "bitflags", ] -[[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - [[package]] name = "redox_users" version = "0.4.0" @@ -2885,26 +2629,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" dependencies = [ "getrandom 0.2.2", - "redox_syscall 0.2.5", + "redox_syscall", ] [[package]] name = "regex" -version = "1.4.3" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a" +checksum = "1efb2352a0f4d4b128f734b5c44c79ff80117351138733f12f982fe3e2b13343" dependencies = [ "aho-corasick", "memchr", "regex-syntax", - "thread_local", ] [[package]] name = "regex-syntax" -version = "0.6.22" +version = "0.6.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" +checksum = "00efb87459ba4f6fb2169d20f68565555688e1250ee6825cdf6254f8b48fafb2" [[package]] name = "remove_dir_all" @@ -2940,12 +2683,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "rle-decode-fast" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" - [[package]] name = "rpassword" version = "2.1.0" @@ -2977,18 +2714,6 @@ dependencies = [ "which", ] -[[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64 0.13.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", -] - [[package]] name = "rust-pulsectl" version = "0.2.10" @@ -3008,15 +2733,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - [[package]] name = "rustdesk" version = "1.1.2" @@ -3055,9 +2771,9 @@ dependencies = [ "rust-pulsectl", "sciter-rs", "scrap", - "serde 1.0.123", + "serde 1.0.125", "serde_derive", - "serde_json 1.0.62", + "serde_json 1.0.64", "sha2", "systray", "uuid", @@ -3074,20 +2790,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" dependencies = [ - "base64 0.11.0", - "log", - "ring", - "sct", - "webpki", -] - -[[package]] -name = "rustls" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064fd21ff87c6e87ed4506e68beb42459caa4a0e2eb144932e6776768556980b" -dependencies = [ - "base64 0.13.0", + "base64", "log", "ring", "sct", @@ -3101,7 +2804,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75ffeb84a6bd9d014713119542ce415db3a3e4748f0bfce1e1416cd224a23a5" dependencies = [ "openssl-probe", - "rustls 0.17.0", + "rustls", "schannel", "security-framework", ] @@ -3139,8 +2842,8 @@ dependencies = [ [[package]] name = "sciter-rs" -version = "0.5.54" -source = "git+https://github.com/sciter-sdk/rust-sciter#3428c3a7e2837770f3b20e7cd045328a8fa91c22" +version = "0.5.56" +source = "git+https://github.com/sciter-sdk/rust-sciter#d318df56eafe7800015c790f5880f6183551fdce" dependencies = [ "lazy_static", "libc", @@ -3172,7 +2875,7 @@ dependencies = [ "num_cpus", "quest", "repng", - "serde 1.0.123", + "serde 1.0.125", "target_build_utils", "webm", "winapi 0.3.9", @@ -3180,9 +2883,9 @@ dependencies = [ [[package]] name = "sct" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ "ring", "untrusted", @@ -3211,21 +2914,6 @@ dependencies = [ "libc", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "0.9.15" @@ -3234,18 +2922,18 @@ checksum = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" [[package]] name = "serde" -version = "1.0.123" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" +checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.123" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" +checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" dependencies = [ "proc-macro2", "quote", @@ -3266,21 +2954,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.62" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ "itoa 0.4.7", "ryu", - "serde 1.0.123", + "serde 1.0.125", ] -[[package]] -name = "sha1" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" - [[package]] name = "sha2" version = "0.9.3" @@ -3317,9 +2999,9 @@ checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" [[package]] name = "slab" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" [[package]] name = "smallvec" @@ -3329,12 +3011,12 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "smithay-client-toolkit" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "316e13a3eb853ce7bf72ad3530dc186cb2005c57c521ef5f4ada5ee4eed74de6" +checksum = "4750c76fd5d3ac95fa3ed80fe667d6a3d8590a960e5b575b98eea93339a80b80" dependencies = [ "bitflags", - "dlib", + "dlib 0.4.2", "lazy_static", "log", "memmap2", @@ -3373,7 +3055,7 @@ checksum = "7038b67c941e23501573cb7242ffb08709abe9b11eb74bceff875bbda024a6a8" dependencies = [ "libc", "libsodium-sys", - "serde 1.0.123", + "serde 1.0.125", ] [[package]] @@ -3382,70 +3064,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" -[[package]] -name = "standback" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2beb4d1860a61f571530b3f855a1b538d0200f7871c63331ecd6f17b1f014f8" -dependencies = [ - "version_check 0.9.2", -] - [[package]] name = "stdweb" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" -[[package]] -name = "stdweb" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" -dependencies = [ - "discard", - "rustc_version", - "stdweb-derive", - "stdweb-internal-macros", - "stdweb-internal-runtime", - "wasm-bindgen", -] - -[[package]] -name = "stdweb-derive" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" -dependencies = [ - "proc-macro2", - "quote", - "serde 1.0.123", - "serde_derive", - "syn", -] - -[[package]] -name = "stdweb-internal-macros" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" -dependencies = [ - "base-x", - "proc-macro2", - "quote", - "serde 1.0.123", - "serde_derive", - "serde_json 1.0.62", - "sha1", - "syn", -] - -[[package]] -name = "stdweb-internal-runtime" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" - [[package]] name = "strsim" version = "0.8.0" @@ -3458,6 +3082,12 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strum" version = "0.18.0" @@ -3478,9 +3108,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.60" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" +checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" dependencies = [ "proc-macro2", "quote", @@ -3526,17 +3156,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "tar" -version = "0.4.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0bcfbd6a598361fda270d82469fff3d65089dc33e175c9a131f7b4cd395f228" -dependencies = [ - "filetime", - "libc", - "xattr", -] - [[package]] name = "target_build_utils" version = "0.3.1" @@ -3557,7 +3176,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "rand 0.8.3", - "redox_syscall 0.2.5", + "redox_syscall", "remove_dir_all", "winapi 0.3.9", ] @@ -3609,15 +3228,6 @@ dependencies = [ "syn", ] -[[package]] -name = "thread_local" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" -dependencies = [ - "once_cell", -] - [[package]] name = "time" version = "0.1.43" @@ -3628,59 +3238,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "time" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1195b046942c221454c2539395f85413b33383a067449d78aab2b7b052a142f7" -dependencies = [ - "const_fn", - "libc", - "standback", - "stdweb 0.4.20", - "time-macros", - "version_check 0.9.2", - "winapi 0.3.9", -] - -[[package]] -name = "time-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" -dependencies = [ - "proc-macro-hack", - "time-macros-impl", -] - -[[package]] -name = "time-macros-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c3be1edfad6027c69f5491cf4cb310d1a71ecd6af742788c6ff8bced86b8fa" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "standback", - "syn", -] - -[[package]] -name = "tinyvec" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" - [[package]] name = "tokio" version = "0.2.25" @@ -3698,7 +3255,7 @@ dependencies = [ "mio-named-pipes", "mio-uds", "num_cpus", - "pin-project-lite 0.1.11", + "pin-project-lite 0.1.12", "signal-hook-registry", "slab", "tokio-macros", @@ -3727,7 +3284,7 @@ dependencies = [ "futures-io", "futures-sink", "log", - "pin-project-lite 0.1.11", + "pin-project-lite 0.1.12", "tokio", ] @@ -3737,26 +3294,26 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "serde 1.0.123", + "serde 1.0.125", ] [[package]] name = "tracing" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77d3842f76ca899ff2dbcf231c5c65813dea431301d6eb686279c15c4464f12" +checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" dependencies = [ "cfg-if 1.0.0", - "pin-project-lite 0.2.4", + "pin-project-lite 0.2.6", "tracing-attributes", "tracing-core", ] [[package]] name = "tracing-attributes" -version = "0.1.13" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a9bd1db7706f2373a190b0d067146caa39350c486f3d455b0e33b431f94c07" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" dependencies = [ "proc-macro2", "quote", @@ -3765,18 +3322,18 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" dependencies = [ "lazy_static", ] [[package]] name = "typenum" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" +checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" [[package]] name = "unescape" @@ -3784,24 +3341,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" -[[package]] -name = "unicode-bidi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.7.1" @@ -3816,18 +3355,9 @@ checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "untrusted" @@ -3835,37 +3365,6 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" -[[package]] -name = "ureq" -version = "1.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "294b85ef5dbc3670a72e82a89971608a1fcc4ed5c7c5a2895230d31a95f0569b" -dependencies = [ - "base64 0.13.0", - "chunked_transfer", - "cookie", - "cookie_store", - "log", - "once_cell", - "qstring", - "rustls 0.19.0", - "url", - "webpki", - "webpki-roots", -] - -[[package]] -name = "url" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" -dependencies = [ - "form_urlencoded", - "idna", - "matches", - "percent-encoding", -] - [[package]] name = "uuid" version = "0.8.2" @@ -3895,9 +3394,9 @@ checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "void" @@ -3907,9 +3406,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", "winapi 0.3.9", @@ -3930,9 +3429,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.70" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c0f7123de74f0dab9b7d00fd614e7b19349cd1e2f5252bbe9b1754b59433be" +checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -3940,9 +3439,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.70" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc45447f0d4573f3d65720f636bbcc3dd6ce920ed704670118650bcd47764c7" +checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" dependencies = [ "bumpalo", "lazy_static", @@ -3955,9 +3454,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.70" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b8853882eef39593ad4174dd26fc9865a64e84026d223f63bb2c42affcbba2c" +checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3965,9 +3464,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.70" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4133b5e7f2a531fa413b3a1695e925038a05a71cf67e87dafa295cb645a01385" +checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" dependencies = [ "proc-macro2", "quote", @@ -3978,20 +3477,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.70" +version = "0.2.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4945e4943ae02d15c13962b38a5b1e81eadd4b71214eee75af64a4d6a4fd64" +checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" [[package]] name = "wayland-client" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbdbe01d03b2267809f3ed99495b37395387fde789e0f2ebb78e8b43f75b6d7" +checksum = "06ca44d86554b85cf449f1557edc6cc7da935cc748c8e4bf1c507cbd43bae02c" dependencies = [ "bitflags", "downcast-rs", "libc", - "nix 0.18.0", + "nix 0.20.0", "scoped-tls", "wayland-commons", "wayland-scanner", @@ -4000,11 +3499,11 @@ dependencies = [ [[package]] name = "wayland-commons" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480450f76717edd64ad04a4426280d737fc3d10a236b982df7b1aee19f0e2d56" +checksum = "8bd75ae380325dbcff2707f0cd9869827ea1d2d6d534cff076858d3f0460fd5a" dependencies = [ - "nix 0.18.0", + "nix 0.20.0", "once_cell", "smallvec", "wayland-sys", @@ -4012,20 +3511,20 @@ dependencies = [ [[package]] name = "wayland-cursor" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6eb122c160223a7660feeaf949d0100281d1279acaaed3720eb3c9894496e5f" +checksum = "b37e5455ec72f5de555ec39b5c3704036ac07c2ecd50d0bffe02d5fe2d4e65ab" dependencies = [ - "nix 0.18.0", + "nix 0.20.0", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "319a82b4d3054dd25acc32d9aee0f84fa95b63bc983fffe4703b6b8d47e01a30" +checksum = "95df3317872bcf9eec096c864b69aa4769a1d5d6291a5b513f8ba0af0efbd52c" dependencies = [ "bitflags", "wayland-client", @@ -4035,9 +3534,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7010ba5767b3fcd350decc59055390b4ebe6bd1b9279a9feb1f1888987f1133d" +checksum = "389d680d7bd67512dc9c37f39560224327038deb0f0e8d33f870900441b68720" dependencies = [ "proc-macro2", "quote", @@ -4046,20 +3545,20 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.28.3" +version = "0.28.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6793834e0c35d11fd96a97297abe03d37be627e1847da52e17d7e0e3b51cc099" +checksum = "2907bd297eef464a95ba9349ea771611771aa285b932526c633dc94d5400a8e2" dependencies = [ - "dlib", + "dlib 0.5.0", "lazy_static", "pkg-config", ] [[package]] name = "web-sys" -version = "0.3.47" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40dc691fc48003eba817c38da7113c15698142da971298003cac3ef175680b3" +checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" dependencies = [ "js-sys", "wasm-bindgen", @@ -4093,15 +3592,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "webpki-roots" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82015b7e0b8bad8185994674a13a93306bea76cf5a16c5a181382fd3a5ec2376" -dependencies = [ - "webpki", -] - [[package]] name = "which" version = "3.1.1" @@ -4224,15 +3714,6 @@ dependencies = [ "xcb", ] -[[package]] -name = "xattr" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" -dependencies = [ - "libc", -] - [[package]] name = "xcb" version = "0.9.0" diff --git a/README.md b/README.md index d7956caa4..f4966fd53 100644 --- a/README.md +++ b/README.md @@ -30,14 +30,14 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake ``` -### Fedora 28 +### Fedora 28 (CentOS 8) ``` sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel ``` ### Arch (Manjaro) ``` -sudo pacman -Syu unzip git cmake gcc curl wget yasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pulseaudio +sudo pacman -Syu unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pulseaudio ``` ### Install vcpkg diff --git a/libs/scrap/build.rs b/libs/scrap/build.rs index c4354076a..5aee32156 100644 --- a/libs/scrap/build.rs +++ b/libs/scrap/build.rs @@ -31,7 +31,7 @@ fn find_package(name: &str) -> Vec { if lib == "vpx" && target_os == "windows" { lib = format!("{}mt", lib); } - println!("{}", format!("cargo:rustc-link-lib={}", lib)); + println!("{}", format!("cargo:rustc-link-lib=static={}", lib)); println!( "{}", format!( diff --git a/src/server/video_service.rs b/src/server/video_service.rs index e3f943789..5c466683e 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -73,7 +73,11 @@ fn run(sp: GenericService) -> ResultType<()> { rc_max_quantizer, speed, }; - let mut vpx = Encoder::new(&cfg, 1).with_context(|| "Failed to create encoder")?; + let mut vpx; + match Encoder::new(&cfg, 1) { + Ok(x) => vpx = x, + Err(err) => bail!("Failed to create encoder: {}", err), + } if *SWITCH.lock().unwrap() { log::debug!("Broadcasting display switch"); From 2adc774d8ae287c34229912d6291aa8db20e528c Mon Sep 17 00:00:00 2001 From: rustdesk Date: Sun, 2 May 2021 21:19:48 +0800 Subject: [PATCH 08/17] fix on linux --- src/platform/mod.rs | 11 +++++++++++ src/ui.rs | 5 +++++ src/ui/common.tis | 6 ++++-- src/ui/header.tis | 24 +++++++++++++++++++++--- src/ui/remote.rs | 5 +++++ 5 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/platform/mod.rs b/src/platform/mod.rs index 0bb979b7c..2ec552f26 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -17,6 +17,17 @@ pub mod linux; use hbb_common::{message_proto::CursorData, ResultType}; const SERVICE_INTERVAL: u64 = 300; +pub fn is_xfce() -> bool { + #[cfg(target_os = "linux")] + { + return std::env::var_os("XDG_CURRENT_DESKTOP") == Some(std::ffi::OsString::from("XFCE")); + } + #[cfg(not(target_os = "linux"))] + { + return false; + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/ui.rs b/src/ui.rs index 729b62b91..a8e1450ff 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -495,10 +495,15 @@ impl UI { let p = "xdg-open"; allow_err!(std::process::Command::new(p).arg(url).spawn()); } + + fn is_xfce(&self) -> bool { + crate::platform::is_xfce() + } } impl sciter::EventHandler for UI { sciter::dispatch_script_call! { + fn is_xfce(); fn get_id(); fn get_password(); fn update_password(String); diff --git a/src/ui/common.tis b/src/ui/common.tis index 2f6987337..2b14e1d79 100644 --- a/src/ui/common.tis +++ b/src/ui/common.tis @@ -7,6 +7,8 @@ var is_osx = OS == "OSX"; var is_win = OS == "Windows"; var is_linux = OS == "Linux"; var is_file_transfer; +var is_xfce = false; +try { is_xfce = handler.is_xfce(); } catch(e) {} function hashCode(str) { var hash = 160 << 16 + 114 << 8 + 91; @@ -221,8 +223,8 @@ function msgbox(type, title, text, callback, height, width) { var dialog = { client: true, parameters: msgbox_params, - width: width, - height: height, + width: width + (is_xfce ? 50 : 0), + height: height + (is_xfce ? 50 : 0), }; var html = handler.get_msgbox(); if (html) dialog.html = html; diff --git a/src/ui/header.tis b/src/ui/header.tis index 4132eab46..b662934a9 100644 --- a/src/ui/header.tis +++ b/src/ui/header.tis @@ -15,10 +15,28 @@ var svg_insecure = ; var svg_secure_relay = ; -view << event statechange { +var cur_window_state = view.windowState; +function check_state_change() { + if (view.windowState != cur_window_state) { + stateChanged(); + } + self.timer(30ms, check_state_change); +} + +if (is_linux) { + check_state_change(); +} else { + view << event statechange { + stateChanged(); + } +} + +function stateChanged() { + stdout.println('state changed from ' + cur_window_state + ' -> ' + view.windowState); + cur_window_state = view.windowState; adjustBorder(); adaptDisplay(); - view.focus = handler; + if (!is_linux) view.focus = handler; // this cause windows always topmost on linux var fs = view.windowState == View.WINDOW_FULL_SCREEN; var el = $(#fullscreen); if (el) el.attributes.toggleClass("active", fs); @@ -56,7 +74,7 @@ class Header: Reactor.Component { var title = handler.get_id(); if (pi.hostname) title += "(" + pi.username + "@" + pi.hostname + ")"; if ((pi.displays || []).length == 0) { - return
{title}
; + return
{title}
; } var screens = pi.displays.map(function(d, i) { return
diff --git a/src/ui/remote.rs b/src/ui/remote.rs index 61a692ff0..f18600fc9 100644 --- a/src/ui/remote.rs +++ b/src/ui/remote.rs @@ -139,6 +139,7 @@ impl sciter::EventHandler for Handler { } sciter::dispatch_script_call! { + fn is_xfce(); fn get_id(); fn get_default_pi(); fn get_option(String); @@ -279,6 +280,10 @@ impl Handler { self.lc.read().unwrap().remember } + fn is_xfce(&self) -> bool { + crate::platform::is_xfce() + } + fn save_size(&mut self, x: i32, y: i32, w: i32, h: i32) { let size = (x, y, w, h); let mut config = self.load_config(); From b5e8b9ee0de0719aa6b466a7c7111daeec79c7cf Mon Sep 17 00:00:00 2001 From: rustdesk Date: Sun, 2 May 2021 22:55:50 +0800 Subject: [PATCH 09/17] more fix on linux --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- src/ui/cm.tis | 6 +++++- src/ui/header.tis | 2 +- src/ui/remote.tis | 5 +++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 527f65f4b..6b0029f9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2842,8 +2842,8 @@ dependencies = [ [[package]] name = "sciter-rs" -version = "0.5.56" -source = "git+https://github.com/sciter-sdk/rust-sciter#d318df56eafe7800015c790f5880f6183551fdce" +version = "0.5.53" +source = "git+https://github.com/sciter-sdk/rust-sciter?rev=7702fb17290e76606bdd7010a0c3cbb32e85db76#7702fb17290e76606bdd7010a0c3cbb32e85db76" dependencies = [ "lazy_static", "libc", diff --git a/Cargo.toml b/Cargo.toml index 9f6f4c2b4..16d306829 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ cpal = { git = "https://github.com/rustaudio/cpal" } [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] machine-uid = "0.2" mac_address = "1.1" -sciter-rs = { git = "https://github.com/sciter-sdk/rust-sciter" } +sciter-rs = { git = "https://github.com/sciter-sdk/rust-sciter", rev = "7702fb17290e76606bdd7010a0c3cbb32e85db76" } [target.'cfg(target_os = "windows")'.dependencies] systray = { path = "libs/systray-rs" } diff --git a/src/ui/cm.tis b/src/ui/cm.tis index a4cdfa543..d879ccaa0 100644 --- a/src/ui/cm.tis +++ b/src/ui/cm.tis @@ -246,7 +246,11 @@ function update() { function bring_to_top(idx=-1) { if (view.windowState == View.WINDOW_HIDDEN || view.windowState == View.WINDOW_MINIMIZED) { - view.windowState = View.WINDOW_SHOWN; + if (is_linux) { + view.focus = self; + } else { + view.windowState = View.WINDOW_SHOWN; + } if (idx >= 0) body.cur = idx; } else { view.windowTopmost = true; diff --git a/src/ui/header.tis b/src/ui/header.tis index b662934a9..26509720d 100644 --- a/src/ui/header.tis +++ b/src/ui/header.tis @@ -86,7 +86,7 @@ class Header: Reactor.Component { if (is_osx) style += "margin: *"; self.timer(1ms, toggleMenuState); return
- {is_osx ? "" : {svg_fullscreen}} + {is_osx || is_xfce ? "" : {svg_fullscreen}}
{icon_conn}
{handler.get_id()}
diff --git a/src/ui/remote.tis b/src/ui/remote.tis index a447c98cd..7aa15aaff 100644 --- a/src/ui/remote.tis +++ b/src/ui/remote.tis @@ -10,6 +10,7 @@ var display_scale = 1; var keyboard_enabled = true; // server side var clipboard_enabled = true; // server side var audio_enabled = true; // server side +var scroll_body = $(body); handler.setDisplay = function(x, y, w, h) { display_width = w; @@ -166,7 +167,7 @@ function handler.onMouse(evt) { if (is_file_transfer || is_port_forward) return false; if (view.windowState == View.WINDOW_FULL_SCREEN && !dragging) { - if (evt.y < 10) { + if (evt.y - scroll_body.scroll(#top) < 10) { if (!wait_window_toolbar) { wait_window_toolbar = true; self.timer(300ms, function() { @@ -392,7 +393,7 @@ handler.adaptSize = function() { size_adapted = true; var (sx, sy, sw, sh) = view.screenBox(#workarea, #rectw); var (fx, fy, fw, fh) = view.screenBox(#frame, #rectw); - workarea_offset = sy; + if (is_osx) workarea_offset = sy; var r = handler.get_size(); if (r[2] > 0) { if (r[2] >= fw && r[3] >= fh) { From dafc34dde52f6abc704bd7c5dafdb4a411b1973c Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 3 May 2021 00:50:50 +0800 Subject: [PATCH 10/17] fix fullscreen issue on linux --- src/ui/header.tis | 1 + src/ui/remote.tis | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ui/header.tis b/src/ui/header.tis index 26509720d..bfa84fc86 100644 --- a/src/ui/header.tis +++ b/src/ui/header.tis @@ -182,6 +182,7 @@ class Header: Reactor.Component { view.windowState = View.WINDOW_SHOWN; } view.windowState = View.WINDOW_FULL_SCREEN; + if (is_linux) { self.timer(150ms, function() { view.windowState = View.WINDOW_FULL_SCREEN; }); } } } diff --git a/src/ui/remote.tis b/src/ui/remote.tis index 7aa15aaff..bb4d2d6c8 100644 --- a/src/ui/remote.tis +++ b/src/ui/remote.tis @@ -396,10 +396,12 @@ handler.adaptSize = function() { if (is_osx) workarea_offset = sy; var r = handler.get_size(); if (r[2] > 0) { - if (r[2] >= fw && r[3] >= fh) { + if (r[2] >= fw && r[3] >= fh && !is_linux) { view.windowState = View.WINDOW_FULL_SCREEN; + stdout.println("Initialize to full screen"); } else if (r[2] >= sw && r[3] >= sh) { view.windowState = View.WINDOW_MAXIMIZED; + stdout.println("Initialize to full screen"); } else { view.move(r[0], r[1], r[2], r[3]); } From 8f5387c713a9a8bdd71ded1b2b72b53432ab96a9 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 3 May 2021 01:00:19 +0800 Subject: [PATCH 11/17] better fullscreen --- src/ui/header.tis | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ui/header.tis b/src/ui/header.tis index bfa84fc86..951236c89 100644 --- a/src/ui/header.tis +++ b/src/ui/header.tis @@ -44,6 +44,11 @@ function stateChanged() { if (el) { el.state.disabled = fs; } + if (fs) { + $(header).style.set { + display: "none", + }; + } } var header; From 49aeeffbe63e9938695190899d2979b3f00ca666 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 3 May 2021 01:25:18 +0800 Subject: [PATCH 12/17] improve initial window size --- src/ui/remote.tis | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/remote.tis b/src/ui/remote.tis index bb4d2d6c8..e712d2c7a 100644 --- a/src/ui/remote.tis +++ b/src/ui/remote.tis @@ -407,11 +407,11 @@ handler.adaptSize = function() { } } else { var w = handler.box(#width, #border) - if (sw == w) { + var h = handler.box(#height, #border) + if (w >= sw || h >= sh) { view.windowState = View.WINDOW_MAXIMIZED; return; } - var h = $(header).box(#height, #border); // extra for border var extra = 2; centerize(w + extra, handler.box(#height, #border) + h + extra); From 8528eb3aff22418710e23f5a13fdfc4a7e46a352 Mon Sep 17 00:00:00 2001 From: Arthur Henrique Date: Sun, 9 May 2021 11:29:25 -0300 Subject: [PATCH 13/17] doc: fix typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f4966fd53..f6224386e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The best open-source remote desktop client software, written in Rust. Works out [**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases) -## Dependences +## Dependencies Desktop versions use [sciter](https://sciter.com/) for GUI, please download sciter dynamic library yourself. @@ -25,7 +25,7 @@ Desktop versions use [sciter](https://sciter.com/) for GUI, please download scit ## How to build on Linux -### Ubuntu 18 (Debain 10) +### Ubuntu 18 (Debian 10) ``` sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake ``` From 539cf03ad5473a83dab57b21c544a94d08e33b86 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Tue, 11 May 2021 19:02:18 +0800 Subject: [PATCH 14/17] make local connection secured --- libs/hbb_common/protos/rendezvous.proto | 1 + src/rendezvous_mediator.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/libs/hbb_common/protos/rendezvous.proto b/libs/hbb_common/protos/rendezvous.proto index cd920bb3a..c71084785 100644 --- a/libs/hbb_common/protos/rendezvous.proto +++ b/libs/hbb_common/protos/rendezvous.proto @@ -109,6 +109,7 @@ message LocalAddr { bytes socket_addr = 1; bytes local_addr = 2; string relay_server = 3; + string id = 4; } message RendezvousMessage { diff --git a/src/rendezvous_mediator.rs b/src/rendezvous_mediator.rs index 0e5c9cfa1..f804d7e89 100644 --- a/src/rendezvous_mediator.rs +++ b/src/rendezvous_mediator.rs @@ -302,6 +302,7 @@ impl RendezvousMediator { relay_server = fla.relay_server; } msg_out.set_local_addr(LocalAddr { + id: Config::get_id(), socket_addr: AddrMangle::encode(peer_addr), local_addr: AddrMangle::encode(local_addr), relay_server, From 5b2c1eea75c14b096662966da28f5964f021a5d7 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Tue, 11 May 2021 20:34:04 +0800 Subject: [PATCH 15/17] make intranet also secured --- src/rendezvous_mediator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rendezvous_mediator.rs b/src/rendezvous_mediator.rs index f804d7e89..170a9776d 100644 --- a/src/rendezvous_mediator.rs +++ b/src/rendezvous_mediator.rs @@ -310,7 +310,7 @@ impl RendezvousMediator { }); let bytes = msg_out.write_to_bytes()?; socket.send_raw(bytes).await?; - crate::accept_connection(server.clone(), socket, peer_addr, false).await; + crate::accept_connection(server.clone(), socket, peer_addr, true).await; Ok(()) } From 7630713534b2c8240a6d72a045798a3697290c80 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Thu, 13 May 2021 00:24:38 +0800 Subject: [PATCH 16/17] fix no audio issue with sample rate >= 48000 and strange crash issue (there is some overflow in unsafe code, will test again) --- src/platform/windows.rs | 3 +++ src/server/audio_service.rs | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 11145ecb1..d4a46d4b2 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -105,6 +105,9 @@ pub fn get_cursor_data(hcursor: u64) -> ResultType { bm_mask.bmHeight / 2 }; let cbits_size = width * height * 4; + if cbits_size < 16 { + bail!("Invalid icon: too small"); // solve some crash + } let mut cbits: Vec = Vec::new(); cbits.resize(cbits_size as _, 0); let mut mbits: Vec = Vec::new(); diff --git a/src/server/audio_service.rs b/src/server/audio_service.rs index d903eefe2..d77e0c633 100644 --- a/src/server/audio_service.rs +++ b/src/server/audio_service.rs @@ -198,6 +198,7 @@ mod cpal_impl { log::error!("an error occurred on stream: {}", err); }; // Sample rate must be one of 8000, 12000, 16000, 24000, or 48000. + // Note: somehow 48000 not work let sample_rate_0 = config.sample_rate().0; let sample_rate = if sample_rate_0 < 12000 { 8000 @@ -205,10 +206,8 @@ mod cpal_impl { 12000 } else if sample_rate_0 < 24000 { 16000 - } else if sample_rate_0 < 48000 { - 24000 } else { - 48000 + 24000 }; let mut encoder = Encoder::new( sample_rate, From f760e56f79d7c0d3384e48ac02674b5d9798bd7f Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 17 May 2021 20:46:02 +0800 Subject: [PATCH 17/17] better support for win7 --- libs/scrap/src/common/dxgi.rs | 27 ++++++---- libs/scrap/src/common/quartz.rs | 4 +- libs/scrap/src/common/x11.rs | 2 +- libs/scrap/src/dxgi/gdi.rs | 3 +- libs/scrap/src/dxgi/mod.rs | 93 +++++++++++++++++++++++++++------ 5 files changed, 101 insertions(+), 28 deletions(-) diff --git a/libs/scrap/src/common/dxgi.rs b/libs/scrap/src/common/dxgi.rs index 476027a72..4683ad5f2 100644 --- a/libs/scrap/src/common/dxgi.rs +++ b/libs/scrap/src/common/dxgi.rs @@ -62,13 +62,23 @@ pub struct Display(dxgi::Display); impl Display { pub fn primary() -> io::Result { - match dxgi::Displays::new()?.next() { - Some(inner) => Ok(Display(inner)), - None => Err(NotFound.into()), - } + // not implemented yet + Err(NotFound.into()) } pub fn all() -> io::Result> { + let tmp = Self::all_().unwrap_or(Default::default()); + if tmp.is_empty() { + println!("Display got from gdi"); + return Ok(dxgi::Displays::get_from_gdi() + .drain(..) + .map(Display) + .collect::>()); + } + Ok(tmp) + } + + fn all_() -> io::Result> { Ok(dxgi::Displays::new()?.map(Display).collect::>()) } @@ -92,13 +102,12 @@ impl Display { self.0.is_online() } - pub fn origin(&self) -> (usize, usize) { - let o = self.0.origin(); - (o.0 as usize, o.1 as usize) + pub fn origin(&self) -> (i32, i32) { + self.0.origin() } - // to-do: not found primary display api for dxgi pub fn is_primary(&self) -> bool { - self.name() == Self::primary().unwrap().name() + // https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-devmodea + self.origin() == (0, 0) } } diff --git a/libs/scrap/src/common/quartz.rs b/libs/scrap/src/common/quartz.rs index 9b1d8907d..f0095a8ef 100644 --- a/libs/scrap/src/common/quartz.rs +++ b/libs/scrap/src/common/quartz.rs @@ -114,9 +114,9 @@ impl Display { self.0.is_online() } - pub fn origin(&self) -> (usize, usize) { + pub fn origin(&self) -> (i32, i32) { let o = self.0.bounds().origin; - (o.x as usize, o.y as usize) + (o.x as _, o.y as _) } pub fn is_primary(&self) -> bool { diff --git a/libs/scrap/src/common/x11.rs b/libs/scrap/src/common/x11.rs index 99063f1bb..3eab43c1c 100644 --- a/libs/scrap/src/common/x11.rs +++ b/libs/scrap/src/common/x11.rs @@ -68,7 +68,7 @@ impl Display { self.0.rect().h as usize } - pub fn origin(&self) -> (usize, usize) { + pub fn origin(&self) -> (i32, i32) { let r = self.0.rect(); (r.x as _, r.y as _) } diff --git a/libs/scrap/src/dxgi/gdi.rs b/libs/scrap/src/dxgi/gdi.rs index 015a42ecc..9fb0611e2 100644 --- a/libs/scrap/src/dxgi/gdi.rs +++ b/libs/scrap/src/dxgi/gdi.rs @@ -13,6 +13,7 @@ use winapi::{ BITMAPINFO, BITMAPINFOHEADER, BI_RGB, + CAPTUREBLT, DIB_RGB_COLORS, //CAPTUREBLT, HGDI_ERROR, RGBQUAD, @@ -97,7 +98,7 @@ impl CapturerGDI { self.screen_dc, 0, 0, - SRCCOPY, // | CAPTUREBLT, // CAPTUREBLT enable layered window but also make cursor blinking + SRCCOPY | CAPTUREBLT, // CAPTUREBLT enable layered window but also make cursor blinking ); if res == 0 { return Err("Failed to copy screen to Windows buffer".into()); diff --git a/libs/scrap/src/dxgi/mod.rs b/libs/scrap/src/dxgi/mod.rs index 08f4a2764..a24b357a3 100644 --- a/libs/scrap/src/dxgi/mod.rs +++ b/libs/scrap/src/dxgi/mod.rs @@ -12,7 +12,7 @@ use winapi::{ // shared::dxgiformat::{DXGI_FORMAT, DXGI_FORMAT_B8G8R8A8_UNORM, DXGI_FORMAT_420_OPAQUE}, shared::dxgi1_2::{IDXGIOutput1, IID_IDXGIOutput1}, shared::dxgitype::DXGI_MODE_ROTATION, - shared::minwindef::{TRUE, UINT}, + shared::minwindef::{DWORD, FALSE, TRUE, UINT}, shared::ntdef::LONG, shared::windef::HMONITOR, shared::winerror::{ @@ -25,7 +25,9 @@ use winapi::{ D3D11_CPU_ACCESS_READ, D3D11_SDK_VERSION, D3D11_USAGE_STAGING, }, um::d3dcommon::D3D_DRIVER_TYPE_UNKNOWN, + um::wingdi::*, um::winnt::HRESULT, + um::winuser::*, }; //TODO: Split up into files. @@ -55,20 +57,24 @@ impl Capturer { let mut desc = unsafe { mem::MaybeUninit::uninit().assume_init() }; let mut gdi_capturer = None; - let mut res = wrap_hresult(unsafe { - D3D11CreateDevice( - display.adapter as *mut _, - D3D_DRIVER_TYPE_UNKNOWN, - ptr::null_mut(), // No software rasterizer. - 0, // No device flags. - ptr::null_mut(), // Feature levels. - 0, // Feature levels' length. - D3D11_SDK_VERSION, - &mut device, - ptr::null_mut(), - &mut context, - ) - }); + let mut res = if display.gdi { + wrap_hresult(1) + } else { + wrap_hresult(unsafe { + D3D11CreateDevice( + display.adapter as *mut _, + D3D_DRIVER_TYPE_UNKNOWN, + ptr::null_mut(), // No software rasterizer. + 0, // No device flags. + ptr::null_mut(), // Feature levels. + 0, // Feature levels' length. + D3D11_SDK_VERSION, + &mut device, + ptr::null_mut(), + &mut context, + ) + }) + }; if res.is_err() { gdi_capturer = display.create_gdi(); @@ -346,6 +352,56 @@ impl Displays { }) } + pub fn get_from_gdi() -> Vec { + let mut all = Vec::new(); + let mut i: DWORD = 0; + loop { + let mut d: DISPLAY_DEVICEW = unsafe { std::mem::MaybeUninit::uninit().assume_init() }; + d.cb = std::mem::size_of::() as _; + let ok = unsafe { EnumDisplayDevicesW(std::ptr::null(), i, &mut d as _, 0) }; + if ok == FALSE { + break; + } + i += 1; + if 0 == (d.StateFlags & DISPLAY_DEVICE_ACTIVE) + || (d.StateFlags & DISPLAY_DEVICE_MIRRORING_DRIVER) > 0 + { + continue; + } + // let is_primary = (d.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE) > 0; + let mut disp = Display { + inner: std::ptr::null_mut(), + adapter: std::ptr::null_mut(), + desc: unsafe { std::mem::zeroed() }, + gdi: true, + }; + disp.desc.DeviceName = d.DeviceName; + let mut m: DEVMODEW = unsafe { std::mem::MaybeUninit::uninit().assume_init() }; + m.dmSize = std::mem::size_of::() as _; + m.dmDriverExtra = 0; + let ok = unsafe { + EnumDisplaySettingsExW( + disp.desc.DeviceName.as_ptr(), + ENUM_CURRENT_SETTINGS, + &mut m as _, + 0, + ) + }; + if ok == FALSE { + continue; + } + disp.desc.DesktopCoordinates.left = unsafe { m.u1.s2().dmPosition.x }; + disp.desc.DesktopCoordinates.top = unsafe { m.u1.s2().dmPosition.y }; + disp.desc.DesktopCoordinates.right = + disp.desc.DesktopCoordinates.left + m.dmPelsWidth as i32; + disp.desc.DesktopCoordinates.bottom = + disp.desc.DesktopCoordinates.top + m.dmPelsHeight as i32; + disp.desc.AttachedToDesktop = 1; + all.push(disp); + } + all + } + // No Adapter => Some(None) // Non-Empty Adapter => Some(Some(OUTPUT)) // End of Adapter => None @@ -414,6 +470,7 @@ impl Displays { inner, adapter: self.adapter, desc, + gdi: false, })) } } @@ -460,8 +517,11 @@ pub struct Display { inner: *mut IDXGIOutput1, adapter: *mut IDXGIAdapter1, desc: DXGI_OUTPUT_DESC, + gdi: bool, } +// https://github.com/dchapyshev/aspia/blob/59233c5d01a4d03ed6de19b03ce77d61a6facf79/source/base/desktop/win/screen_capture_utils.cc + impl Display { pub fn width(&self) -> LONG { self.desc.DesktopCoordinates.right - self.desc.DesktopCoordinates.left @@ -511,6 +571,9 @@ impl Display { impl Drop for Display { fn drop(&mut self) { + if self.inner.is_null() { + return; + } unsafe { (*self.inner).Release(); (*self.adapter).Release();