diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml
index 7825286bd..738b57c4d 100644
--- a/.github/workflows/flutter-ci.yml
+++ b/.github/workflows/flutter-ci.yml
@@ -1,4 +1,4 @@
-name: Flutter CI
+name: Full Flutter CI
on:
workflow_dispatch:
@@ -11,42 +11,113 @@ on:
paths-ignore:
- ".github/**"
+env:
+ LLVM_VERSION: "10.0"
+ # Note: currently 3.0.5 does not support arm64 officially, we use latest stable version first.
+ FLUTTER_VERSION: "3.0.5"
+ # vcpkg version: 2022.05.10
+ # for multiarch gcc compatibility
+ VCPKG_COMMIT_ID: "14e7bb4ae24616ec54ff6b2f6ef4e8659434ea44"
+ VERSION: "1.2.0"
+
jobs:
- build:
+ build-for-windows:
name: ${{ matrix.job.target }} (${{ matrix.job.os }})
runs-on: ${{ matrix.job.os }}
strategy:
- fail-fast: false
+ fail-fast: true
matrix:
job:
- # - { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
- # - { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true }
- # - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
# - { target: i686-pc-windows-msvc , os: windows-2019 }
- # - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
- # - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
- # - { target: x86_64-apple-darwin , os: macos-10.15 }
# - { target: x86_64-pc-windows-gnu , os: windows-2019 }
- # - { target: x86_64-pc-windows-msvc , os: windows-2019 }
- - { target: x86_64-unknown-linux-gnu , os: ubuntu-20.04 }
- # - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
+ - { target: x86_64-pc-windows-msvc, os: windows-2019 }
steps:
- name: Checkout source code
uses: actions/checkout@v3
- - name: Install prerequisites
- shell: bash
- run: |
- case ${{ matrix.job.target }} in
- x86_64-unknown-linux-gnu) sudo apt-get -y update ; 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 libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev;;
- # arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
- # aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
- esac
+ - name: Install LLVM and Clang
+ uses: KyleMayes/install-llvm-action@v1
+ with:
+ version: ${{ env.LLVM_VERSION }}
- name: Install flutter
uses: subosito/flutter-action@v2
with:
- channel: 'stable'
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
+ cache: true
+
+ - name: Replace engine with rustdesk custom flutter engine
+ run: |
+ flutter doctor -v
+ flutter precache --windows
+ Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk.2/windows-x64-flutter-release.zip -OutFile windows-x64-flutter-release.zip
+ Expand-Archive windows-x64-flutter-release.zip -DestinationPath engine
+ mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: "1.62"
+ target: ${{ matrix.job.target }}
+ override: true
+ components: rustfmt
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: ${{ matrix.job.os }}
+
+ - name: Install flutter rust bridge deps
+ run: |
+ dart pub global activate ffigen --version 5.0.1
+ $exists = Test-Path ~/.cargo/bin/flutter_rust_bridge_codegen.exe
+ Push-Location ..
+ git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1
+ Push-Location flutter_rust_bridge/frb_codegen ; cargo install --path . ; Pop-Location
+ Pop-Location
+ Push-Location flutter ; flutter pub get ; Pop-Location
+ ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
+
+ - name: Restore from cache and install vcpkg
+ uses: lukka/run-vcpkg@v7
+ with:
+ setupOnly: true
+ vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
+
+ - name: Install vcpkg dependencies
+ run: |
+ $VCPKG_ROOT/vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
+ shell: bash
+
+ - name: Build rustdesk
+ run: python3 .\build.py --portable --hwcodec --flutter
+
+ build-for-macOS:
+ name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}]
+ runs-on: ${{ matrix.job.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ job:
+ - {
+ target: x86_64-apple-darwin,
+ os: macos-latest,
+ extra-build-args: "",
+ }
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v3
+
+ - name: Install build runtime
+ run: |
+ brew install llvm create-dmg nasm yasm cmake gcc wget ninja
+
+ - name: Install flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
@@ -56,14 +127,21 @@ jobs:
override: true
profile: minimal # minimal component installation (ie, no documentation)
- - uses: Swatinem/rust-cache@v1
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: ${{ matrix.job.os }}
- name: Install flutter rust bridge deps
+ shell: bash
run: |
dart pub global activate ffigen --version 5.0.1
# flutter_rust_bridge
- pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && popd
- pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . && popd
+ pushd /tmp
+ wget https://github.com/Kingtous/flutter_rust_bridge/releases/download/1.32.0-rustdesk/flutter_rust_bridge_codegen-x86_64-darwin.tgz
+ tar -zxvf flutter_rust_bridge_codegen-x86_64-darwin.tgz
+ mkdir -p ~/.cargo/bin
+ mv flutter_rust_bridge_codegen ~/.cargo/bin; chmod +x ~/.cargo/bin/flutter_rust_bridge_codegen
+ popd
pushd flutter && flutter pub get && popd
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
@@ -71,29 +149,849 @@ jobs:
uses: lukka/run-vcpkg@v7
with:
setupOnly: true
- vcpkgGitCommitId: '1d4128f08e30cec31b94500840c7eca8ebc579cb'
+ vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
- name: Install vcpkg dependencies
run: |
$VCPKG_ROOT/vcpkg install libvpx libyuv opus
- shell: bash
- - name: Show version information (Rust, cargo, GCC)
+ - name: Show version information (Rust, cargo, Clang)
shell: bash
run: |
- gcc --version || true
+ clang --version || true
rustup -V
rustup toolchain list
rustup default
cargo -V
rustc -V
- - name: Build rustdesk ffi lib
- run: cargo build --features flutter --lib
-
- - name: Build Flutter
+ - name: Build rustdesk
run: |
+ # --hwcodec not supported on macos yet
+ ./build.py --flutter ${{ matrix.job.extra-build-args }}
+
+ build-vcpkg-deps-linux:
+ runs-on: ${{ matrix.job.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ job:
+ # - { arch: armv7, os: ubuntu-20.04 }
+ - { arch: x86_64, os: ubuntu-20.04 }
+ - { arch: aarch64, os: ubuntu-20.04 }
+ steps:
+ - name: Create vcpkg artifacts folder
+ run: mkdir -p /opt/artifacts
+
+ - name: Cache Vcpkg
+ id: cache-vcpkg
+ uses: actions/cache@v3
+ with:
+ path: /opt/artifacts
+ key: vcpkg-${{ matrix.job.arch }}
+
+ - uses: Kingtous/run-on-arch-action@amd64-support
+ name: Run vcpkg install on ${{ matrix.job.arch }}
+ id: vcpkg
+ with:
+ arch: ${{ matrix.job.arch }}
+ distro: ubuntu18.04
+ githubToken: ${{ github.token }}
+ setup: |
+ ls -l "/opt/artifacts"
+ dockerRunArgs: |
+ --volume "/opt/artifacts:/artifacts"
+ shell: /bin/bash
+ install: |
+ apt update -y
+ case "${{ matrix.job.arch }}" in
+ x86_64)
+ # CMake 3.15+
+ apt install -y gpg wget ca-certificates
+ echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
+ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
+ apt update -y
+ apt install -y curl zip unzip tar git cmake g++ gcc build-essential pkg-config wget nasm yasm ninja-build libjpeg8-dev
+ ;;
+ aarch64|armv7)
+ apt install -y curl zip unzip tar git cmake g++ gcc build-essential pkg-config wget nasm yasm ninja-build libjpeg8-dev automake libtool
+ esac
+ cmake --version
+ gcc -v
+ run: |
+ # disable git safe.directory
+ git config --global --add safe.directory "*"
+ case "${{ matrix.job.arch }}" in
+ x86_64)
+ export VCPKG_FORCE_SYSTEM_BINARIES=1
+ pushd /artifacts
+ git clone https://github.com/microsoft/vcpkg.git || true
+ pushd vcpkg
+ git reset --hard ${{ env.VCPKG_COMMIT_ID }}
+ ./bootstrap-vcpkg.sh
+ ./vcpkg install libvpx libyuv opus
+ ;;
+ aarch64|armv7)
+ pushd /artifacts
+ # libyuv
+ git clone https://chromium.googlesource.com/libyuv/libyuv || true
+ pushd libyuv
+ git pull
+ mkdir -p build
+ pushd build
+ mkdir -p /artifacts/vcpkg/installed
+ cmake .. -DCMAKE_INSTALL_PREFIX=/artifacts/vcpkg/installed
+ make -j4 && make install
+ popd
+ popd
+ # libopus, ubuntu 18.04 prebuilt is not be compiled with -fPIC
+ wget -O opus.tar.gz http://archive.ubuntu.com/ubuntu/pool/main/o/opus/opus_1.1.2.orig.tar.gz
+ tar -zxvf opus.tar.gz; ls -l
+ pushd opus-1.1.2
+ ./autogen.sh; ./configure --prefix=/artifacts/vcpkg/installed
+ make -j4; make install
+ ;;
+ esac
+ - name: Upload artifacts
+ uses: actions/upload-artifact@master
+ with:
+ name: vcpkg-artifact-${{ matrix.job.arch }}
+ path: |
+ /opt/artifacts/vcpkg/installed
+
+ generate-bridge-linux:
+ name: generate bridge
+ runs-on: ${{ matrix.job.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ job:
+ - {
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-18.04,
+ extra-build-args: "",
+ }
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v3
+
+ - name: Install prerequisites
+ run: |
+ sudo apt update -y
+ sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang cmake libclang-dev ninja-build llvm-dev libclang-10-dev llvm-10-dev pkg-config
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.job.target }}
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: bridge-${{ matrix.job.os }}
+ workspace: "/tmp/flutter_rust_bridge/frb_codegen"
+
+ - name: Cache Bridge
+ id: cache-bridge
+ uses: actions/cache@v3
+ with:
+ path: /tmp/flutter_rust_bridge
+ key: vcpkg-${{ matrix.job.arch }}
+
+ - name: Install flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
+ cache: true
+
+ - name: Install ffigen
+ run: |
+ dart pub global activate ffigen --version 5.0.1
+
+ - name: Install flutter rust bridge deps
+ shell: bash
+ run: |
+ pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 || true && popd
+ pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . && popd
+ pushd flutter && flutter pub get && popd
+
+ - name: Run flutter rust bridge
+ run: |
+ ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
+
+ - name: Upload Artifact
+ uses: actions/upload-artifact@master
+ with:
+ name: bridge-artifact
+ path: |
+ ./src/bridge_generated.rs
+ ./flutter/lib/generated_bridge.dart
+ ./flutter/lib/generated_bridge.freezed.dart
+
+ build-rustdesk-android-arm64:
+ needs: [generate-bridge-linux]
+ name: build rustdesk android apk ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-features }}]
+ runs-on: ${{ matrix.job.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ job:
+ - {
+ arch: x86_64,
+ target: aarch64-linux-android,
+ os: ubuntu-18.04,
+ extra-build-features: "",
+ }
+ # - {
+ # arch: x86_64,
+ # target: armv7-linux-androideabi,
+ # os: ubuntu-18.04,
+ # extra-build-features: "",
+ # }
+ steps:
+ - name: Install dependencies
+ run: |
+ sudo apt update
+ sudo apt-get -qq install -y 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 libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libvdpau-dev libva-dev libclang-dev llvm-dev libclang-10-dev llvm-10-dev pkg-config tree g++ libc6-dev gcc-multilib g++-multilib openjdk-11-jdk-headless
+ - name: Checkout source code
+ uses: actions/checkout@v3
+ - name: Install flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
+ - uses: nttld/setup-ndk@v1
+ id: setup-ndk
+ with:
+ ndk-version: r22b
+ add-to-path: true
+
+ - name: Download deps
+ shell: bash
+ run: |
+ pushd /opt
+ wget https://github.com/rustdesk/doc.rustdesk.com/releases/download/console/dep.tar.gz
+ tar xzf dep.tar.gz
+
+ - name: Restore bridge files
+ uses: actions/download-artifact@master
+ with:
+ name: bridge-artifact
+ path: ./
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: rustdesk-lib-cache
+ key: ${{ matrix.job.target }}-${{ matrix.job.extra-build-features }}
+
+ - name: Disable rust bridge build
+ run: |
+ sed -i "s/gen_flutter_rust_bridge();/\/\//g" build.rs
+
+ - name: Build rustdesk lib
+ env:
+ ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
+ ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
+ VCPKG_ROOT: /opt/vcpkg
+ run: |
+ rustup target add ${{ matrix.job.target }}
+ cargo install cargo-ndk
+ case ${{ matrix.job.target }} in
+ aarch64-linux-android)
+ ./flutter/ndk_arm64.sh
+ mkdir -p ./flutter/android/app/src/main/jniLibs/arm64-v8a
+ cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so
+ ;;
+ armv7-linux-androideabi)
+ ./flutter/ndk_arm.sh
+ mkdir -p ./flutter/android/app/src/main/jniLibs/armeabi-v7a
+ cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/armeabi-v7a/librustdesk.so
+ ;;
+ esac
+
+ - name: Build rustdesk
+ shell: bash
+ env:
+ JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64
+ run: |
+ export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH
+ # download so
pushd flutter
- flutter pub get
- flutter build linux --debug -v
+ wget -O so.tar.gz https://github.com/rustdesk/doc.rustdesk.com/releases/download/console/so.tar.gz
+ tar xzvf so.tar.gz
popd
+ # temporary use debug sign config
+ sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle
+ case ${{ matrix.job.target }} in
+ aarch64-linux-android)
+ mkdir -p ./flutter/android/app/src/main/jniLibs/arm64-v8a
+ cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so
+ # build flutter
+ pushd flutter
+ flutter build apk --release --target-platform android-arm64 --split-per-abi
+ mv build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ../rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-release.apk
+ ;;
+ armv7-linux-androideabi)
+ mkdir -p ./flutter/android/app/src/main/jniLibs/armeabi-v7a
+ cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/armeabi-v7a/librustdesk.so
+ # build flutter
+ pushd flutter
+ flutter build apk --release --target-platform android-arm --split-per-abi
+ mv build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk ../rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-release.apk
+ ;;
+ esac
+ popd
+ mkdir -p signed-apk; pushd signed-apk
+ mv ../rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-release.apk .
+
+ build-rustdesk-lib-linux-amd64:
+ needs: [generate-bridge-linux, build-vcpkg-deps-linux]
+ name: build-rust-lib ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-features }}]
+ runs-on: ${{ matrix.job.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ # use a high level qemu-user-static
+ job:
+ # - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
+ # - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-20.04,
+ extra-build-features: "",
+ }
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-20.04,
+ extra-build-features: "flatpak",
+ }
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-20.04,
+ extra-build-features: "appimage",
+ }
+ # - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
+ steps:
+ - name: Maximize build space
+ run: |
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/lib/android
+ sudo rm -rf /usr/share/dotnet
+ sudo apt update -y
+ sudo apt install qemu-user-static
+
+ - name: Checkout source code
+ uses: actions/checkout@v3
+
+ - name: Set Swap Space
+ uses: pierotofy/set-swap-space@master
+ with:
+ swap-size-gb: 12
+
+ - name: Free Space
+ run: |
+ df
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.job.target }}
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: rustdesk-lib-cache
+ key: ${{ matrix.job.target }}-${{ matrix.job.extra-build-features }}
+ cache-directories: "/opt/rust-registry"
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.job.target }}
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - name: Install local registry
+ run: |
+ mkdir -p /opt/rust-registry
+ cargo install cargo-local-registry
+
+ - name: Build local registry
+ uses: nick-fields/retry@v2
+ id: build-local-registry
+ continue-on-error: true
+ with:
+ max_attempts: 3
+ timeout_minutes: 15
+ retry_on: error
+ command: cargo local-registry --sync ./Cargo.lock /opt/rust-registry
+
+ - name: Disable rust bridge build
+ run: |
+ sed -i "s/gen_flutter_rust_bridge();/\/\//g" build.rs
+ # only build cdylib
+ sed -i "s/\[\"cdylib\", \"staticlib\", \"rlib\"\]/\[\"cdylib\"\]/g" Cargo.toml
+
+ - name: Restore bridge files
+ uses: actions/download-artifact@master
+ with:
+ name: bridge-artifact
+ path: ./
+
+ - name: Restore vcpkg files
+ uses: actions/download-artifact@master
+ with:
+ name: vcpkg-artifact-${{ matrix.job.arch }}
+ path: /opt/artifacts/vcpkg/installed
+
+ - uses: Kingtous/run-on-arch-action@amd64-support
+ name: Build rustdesk library for ${{ matrix.job.arch }}
+ id: vcpkg
+ with:
+ arch: ${{ matrix.job.arch }}
+ distro: ubuntu18.04
+ # not ready yet
+ # distro: ubuntu18.04-rustdesk
+ githubToken: ${{ github.token }}
+ setup: |
+ ls -l "${PWD}"
+ ls -l /opt/artifacts/vcpkg/installed
+ dockerRunArgs: |
+ --volume "${PWD}:/workspace"
+ --volume "/opt/artifacts:/opt/artifacts"
+ --volume "/opt/rust-registry:/opt/rust-registry"
+ shell: /bin/bash
+ install: |
+ apt update -y
+ echo -e "installing deps"
+ apt-get -qq install -y 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 libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libvdpau-dev libva-dev libclang-dev llvm-dev libclang-10-dev llvm-10-dev pkg-config tree g++ gcc libvpx-dev tree > /dev/null
+ # we have libopus compiled by us.
+ apt remove -y libopus-dev || true
+ # output devs
+ ls -l ./
+ tree -L 3 /opt/artifacts/vcpkg/installed
+ run: |
+ # disable git safe.directory
+ git config --global --add safe.directory "*"
+ # rust
+ pushd /opt
+ wget -O rust.tar.gz https://static.rust-lang.org/dist/rust-1.64.0-${{ matrix.job.target }}.tar.gz
+ tar -zxvf rust.tar.gz > /dev/null && rm rust.tar.gz
+ cd rust-1.64.0-${{ matrix.job.target }} && ./install.sh
+ rm -rf rust-1.64.0-${{ matrix.job.target }}
+ # edit config
+ mkdir -p ~/.cargo/
+ echo """
+ [source.crates-io]
+ registry = 'https://github.com/rust-lang/crates.io-index'
+ replace-with = 'local-registry'
+
+ [source.local-registry]
+ local-registry = '/opt/rust-registry/'
+ """ > ~/.cargo/config
+ cat ~/.cargo/config
+ # start build
+ pushd /workspace
+ # mock
+ case "${{ matrix.job.arch }}" in
+ x86_64)
+ # no need mock on x86_64
+ export VCPKG_ROOT=/opt/artifacts/vcpkg
+ cargo build --lib --features hwcodec,flutter,${{ matrix.job.extra-build-features }} --release
+ ;;
+ esac
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@master
+ with:
+ name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so
+ path: target/release/liblibrustdesk.so
+
+ build-rustdesk-lib-linux-arm:
+ needs: [generate-bridge-linux, build-vcpkg-deps-linux]
+ name: build-rust-lib ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-features }}]
+ runs-on: ${{ matrix.job.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ # use a high level qemu-user-static
+ job:
+ - {
+ arch: aarch64,
+ target: aarch64-unknown-linux-gnu,
+ os: ubuntu-20.04,
+ use-cross: true,
+ extra-build-features: "",
+ }
+ - {
+ arch: aarch64,
+ target: aarch64-unknown-linux-gnu,
+ os: ubuntu-18.04, # just for naming package, not running host
+ use-cross: true,
+ extra-build-features: "appimage",
+ }
+ # - { arch: aarch64, target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true, extra-build-features: "flatpak" }
+ # - {
+ # arch: armv7,
+ # target: arm-unknown-linux-gnueabihf,
+ # os: ubuntu-20.04,
+ # use-cross: true,
+ # extra-build-features: "",
+ # }
+ # - { arch: armv7, target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true, extra-build-features: "flatpak" }
+ # - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
+ steps:
+ - name: Maximize build space
+ run: |
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/lib/android
+ sudo rm -rf /usr/share/dotnet
+ sudo apt update -y
+ sudo apt install qemu-user-static
+
+ - name: Checkout source code
+ uses: actions/checkout@v3
+
+ - name: Set Swap Space
+ uses: pierotofy/set-swap-space@master
+ with:
+ swap-size-gb: 12
+
+ - name: Free Space
+ run: |
+ df
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.job.target }}
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.job.target }}
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+
+ - uses: Swatinem/rust-cache@v2
+ with:
+ prefix-key: rustdesk-lib-cache
+ key: ${{ matrix.job.target }}-${{ matrix.job.extra-build-features }}
+ cache-directories: "/opt/rust-registry"
+
+ - name: Install local registry
+ run: |
+ mkdir -p /opt/rust-registry
+ cargo install cargo-local-registry
+
+ - name: Build local registry
+ uses: nick-fields/retry@v2
+ id: build-local-registry
+ continue-on-error: true
+ with:
+ max_attempts: 3
+ timeout_minutes: 15
+ retry_on: error
+ command: cargo local-registry --sync ./Cargo.lock /opt/rust-registry
+
+ - name: Disable rust bridge build
+ run: |
+ sed -i "s/gen_flutter_rust_bridge();/\/\//g" build.rs
+ # only build cdylib
+ sed -i "s/\[\"cdylib\", \"staticlib\", \"rlib\"\]/\[\"cdylib\"\]/g" Cargo.toml
+
+ - name: Restore bridge files
+ uses: actions/download-artifact@master
+ with:
+ name: bridge-artifact
+ path: ./
+
+ - name: Restore vcpkg files
+ uses: actions/download-artifact@master
+ with:
+ name: vcpkg-artifact-${{ matrix.job.arch }}
+ path: /opt/artifacts/vcpkg/installed
+
+ - uses: Kingtous/run-on-arch-action@amd64-support
+ name: Build rustdesk library for ${{ matrix.job.arch }}
+ id: vcpkg
+ with:
+ arch: ${{ matrix.job.arch }}
+ distro: ubuntu18.04-rustdesk
+ githubToken: ${{ github.token }}
+ setup: |
+ ls -l "${PWD}"
+ ls -l /opt/artifacts/vcpkg/installed
+ dockerRunArgs: |
+ --volume "${PWD}:/workspace"
+ --volume "/opt/artifacts:/opt/artifacts"
+ --volume "/opt/rust-registry:/opt/rust-registry"
+ shell: /bin/bash
+ install: |
+ apt update -y
+ echo -e "installing deps"
+ apt-get -qq install -y 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 libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libvdpau-dev libva-dev libclang-dev llvm-dev libclang-10-dev llvm-10-dev pkg-config tree g++ gcc libvpx-dev tree > /dev/null
+ # we have libopus compiled by us.
+ apt remove -y libopus-dev || true
+ # output devs
+ ls -l ./
+ tree -L 3 /opt/artifacts/vcpkg/installed
+ run: |
+ # disable git safe.directory
+ git config --global --add safe.directory "*"
+ # rust
+ pushd /opt
+ wget -O rust.tar.gz https://static.rust-lang.org/dist/rust-1.64.0-${{ matrix.job.target }}.tar.gz
+ tar -zxvf rust.tar.gz > /dev/null && rm rust.tar.gz
+ cd rust-1.64.0-${{ matrix.job.target }} && ./install.sh
+ rm -rf rust-1.64.0-${{ matrix.job.target }}
+ # edit config
+ mkdir -p ~/.cargo/
+ echo """
+ [source.crates-io]
+ registry = 'https://github.com/rust-lang/crates.io-index'
+ replace-with = 'local-registry'
+
+ [source.local-registry]
+ local-registry = '/opt/rust-registry/'
+ """ > ~/.cargo/config
+ cat ~/.cargo/config
+ # start build
+ pushd /workspace
+ # mock
+ case "${{ matrix.job.arch }}" in
+ aarch64)
+ cp -r /opt/artifacts/vcpkg/installed/lib/* /usr/lib/aarch64-linux-gnu/
+ cp -r /opt/artifacts/vcpkg/installed/include/* /usr/include/
+ ls -l /opt/artifacts/vcpkg/installed/lib/
+ mkdir -p /vcpkg/installed/arm64-linux
+ ln -s /usr/lib/aarch64-linux-gnu /vcpkg/installed/arm64-linux/lib
+ ln -s /usr/include /vcpkg/installed/arm64-linux/include
+ export VCPKG_ROOT=/vcpkg
+ # disable hwcodec for compilation
+ cargo build --lib --features flutter,${{ matrix.job.extra-build-features }} --release
+ ;;
+ armv7)
+ cp -r /opt/artifacts/vcpkg/installed/lib/* /usr/lib/arm-linux-gnueabihf/
+ cp -r /opt/artifacts/vcpkg/installed/include/* /usr/include/
+ mkdir -p /vcpkg/installed/arm-linux
+ ln -s /usr/lib/arm-linux-gnueabihf /vcpkg/installed/arm-linux/lib
+ ln -s /usr/include /vcpkg/installed/arm-linux/include
+ export VCPKG_ROOT=/vcpkg
+ # disable hwcodec for compilation
+ cargo build --lib --features flutter,${{ matrix.job.extra-build-features }} --release
+ ;;
+ esac
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@master
+ with:
+ name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so
+ path: target/release/liblibrustdesk.so
+
+ build-rustdesk-linux-arm:
+ needs: [build-rustdesk-lib-linux-arm]
+ name: build-rustdesk ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-features }}]
+ runs-on: ubuntu-20.04 # 20.04 has more performance on arm build
+ strategy:
+ fail-fast: true
+ matrix:
+ job:
+ - {
+ arch: aarch64,
+ target: aarch64-unknown-linux-gnu,
+ os: ubuntu-18.04, # just for naming package, not running host
+ use-cross: true,
+ extra-build-features: "",
+ }
+ - {
+ arch: aarch64,
+ target: aarch64-unknown-linux-gnu,
+ os: ubuntu-18.04, # just for naming package, not running host
+ use-cross: true,
+ extra-build-features: "appimage",
+ }
+ # - {
+ # arch: aarch64,
+ # target: aarch64-unknown-linux-gnu,
+ # os: ubuntu-18.04, # just for naming package, not running host
+ # use-cross: true,
+ # extra-build-features: "flatpak",
+ # }
+ # - { arch: armv7, target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true, extra-build-features: "" }
+ # - { arch: armv7, target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true, extra-build-features: "flatpak" }
+ # - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v3
+
+ - name: Restore bridge files
+ uses: actions/download-artifact@master
+ with:
+ name: bridge-artifact
+ path: ./
+
+ - name: Prepare env
+ run: |
+ sudo apt update -y
+ sudo apt-get -qq install -y git curl wget nasm yasm libgtk-3-dev libarchive-tools
+ mkdir -p ./target/release/
+
+ - name: Restore the rustdesk lib file
+ uses: actions/download-artifact@master
+ with:
+ name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so
+ path: ./target/release/
+
+ - name: Download Flutter
+ shell: bash
+ run: |
+ # disable git safe.directory
+ git config --global --add safe.directory "*"
+ pushd /opt
+ # clone repo and reset to flutter 3.0.5
+ git clone https://github.com/sony/flutter-elinux.git || true
+ pushd flutter-elinux
+ # reset to flutter 3.0.5
+ git fetch
+ git reset --hard b09a90eee643859ce4e676839227edd9fd3feba8
+ popd
+
+ - uses: Kingtous/run-on-arch-action@amd64-support
+ name: Build rustdesk binary for ${{ matrix.job.arch }}
+ id: vcpkg
+ with:
+ arch: ${{ matrix.job.arch }}
+ distro: ubuntu18.04-rustdesk
+ githubToken: ${{ github.token }}
+ setup: |
+ ls -l "${PWD}"
+ dockerRunArgs: |
+ --volume "${PWD}:/workspace"
+ --volume "/opt/artifacts:/opt/artifacts"
+ --volume "/opt/flutter-elinux:/opt/flutter-elinux"
+ shell: /bin/bash
+ install: |
+ apt update -y
+ apt-get -qq install -y git cmake g++ gcc build-essential nasm yasm curl unzip xz-utils python3 wget pkg-config ninja-build pkg-config libgtk-3-dev liblzma-dev clang libappindicator3-dev rpm
+ run: |
+ # disable git safe.directory
+ git config --global --add safe.directory "*"
+ pushd /workspace
+ # we use flutter-elinux to build our rustdesk
+ sed -i "s/flutter build linux --release/flutter-elinux build linux/g" ./build.py
+ # Setup flutter-elinux
+ export PATH=/opt/flutter-elinux/bin:$PATH
+ flutter-elinux doctor -v
+ # edit to corresponding arch
+ case ${{ matrix.job.arch }} in
+ aarch64)
+ sed -i "s/Architecture: amd64/Architecture: arm64/g" ./build.py
+ sed -i "s/x64\/release/arm64\/release/g" ./build.py
+ ;;
+ armv7)
+ sed -i "s/Architecture: amd64/Architecture: arm/g" ./build.py
+ sed -i "s/x64\/release/arm\/release/g" ./build.py
+ ;;
+ esac
+ python3 ./build.py --flutter --hwcodec --skip-cargo
+
+ build-rustdesk-linux-amd64:
+ needs: [build-rustdesk-lib-linux-amd64]
+ name: build-rustdesk ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-features }}]
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: true
+ matrix:
+ job:
+ # - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
+ # - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-18.04,
+ extra-build-features: "",
+ }
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-18.04,
+ extra-build-features: "flatpak",
+ }
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-18.04,
+ extra-build-features: "appimage",
+ }
+ # - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
+ steps:
+ - name: Checkout source code
+ uses: actions/checkout@v3
+
+ - name: Restore bridge files
+ uses: actions/download-artifact@master
+ with:
+ name: bridge-artifact
+ path: ./
+
+ - name: Prepare env
+ run: |
+ sudo apt update -y
+ sudo apt-get -qq install -y git curl wget nasm yasm libgtk-3-dev libarchive-tools
+ mkdir -p ./target/release/
+
+ - name: Restore the rustdesk lib file
+ uses: actions/download-artifact@master
+ with:
+ name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so
+ path: ./target/release/
+
+ - uses: Kingtous/run-on-arch-action@amd64-support
+ name: Build rustdesk binary for ${{ matrix.job.arch }}
+ id: vcpkg
+ with:
+ arch: ${{ matrix.job.arch }}
+ distro: ubuntu18.04
+ githubToken: ${{ github.token }}
+ setup: |
+ ls -l "${PWD}"
+ dockerRunArgs: |
+ --volume "${PWD}:/workspace"
+ --volume "/opt/artifacts:/opt/artifacts"
+ shell: /bin/bash
+ install: |
+ apt update -y
+ apt-get -qq install -y git cmake g++ gcc build-essential nasm yasm curl unzip xz-utils python3 wget pkg-config ninja-build pkg-config libgtk-3-dev liblzma-dev clang libappindicator3-dev rpm
+ run: |
+ # disable git safe.directory
+ git config --global --add safe.directory "*"
+ # Setup Flutter
+ pushd /opt
+ wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz
+ tar xf flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz
+ ls -l .
+ export PATH=/opt/flutter/bin:$PATH
+ flutter doctor -v
+ pushd /workspace
+ python3 ./build.py --flutter --hwcodec --skip-cargo
diff --git a/.github/workflows/flutter-nightly.yml b/.github/workflows/flutter-nightly.yml
index 4ccd42081..967c85385 100644
--- a/.github/workflows/flutter-nightly.yml
+++ b/.github/workflows/flutter-nightly.yml
@@ -47,8 +47,8 @@ jobs:
run: |
flutter doctor -v
flutter precache --windows
- Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk/windows-x64-release-flutter.zip -OutFile windows-x64-release-flutter.zip
- Expand-Archive windows-x64-release-flutter.zip -DestinationPath engine
+ Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk.2/windows-x64-flutter-release.zip -OutFile windows-x64-flutter-release.zip
+ Expand-Archive windows-x64-flutter-release.zip -DestinationPath engine
mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
- name: Install Rust toolchain
@@ -142,13 +142,42 @@ jobs:
job:
- {
target: x86_64-apple-darwin,
- os: macos-10.15,
+ os: macos-latest,
extra-build-args: "",
}
steps:
- name: Checkout source code
uses: actions/checkout@v3
+ - name: Import the codesign cert
+ uses: apple-actions/import-codesign-certs@v1
+ with:
+ p12-file-base64: ${{ secrets.MACOS_P12_BASE64 }}
+ p12-password: ${{ secrets.MACOS_P12_PASSWORD }}
+ keychain: rustdesk
+
+ - name: Check sign and import sign key
+ run: |
+ security default-keychain -s rustdesk.keychain
+ security find-identity -v
+
+ - name: Import notarize key
+ uses: timheuer/base64-to-file@v1.2
+ with:
+ # https://gregoryszorc.com/docs/apple-codesign/stable/apple_codesign_rcodesign.html#notarizing-and-stapling
+ fileName: rustdesk.json
+ fileDir: ${{ github.workspace }}
+ encodedString: ${{ secrets.MACOS_NOTARIZE_JSON }}
+
+ - name: Install rcodesign tool
+ shell: bash
+ run: |
+ pushd /tmp
+ wget https://github.com/indygreg/apple-platform-rs/releases/download/apple-codesign%2F0.22.0/apple-codesign-0.22.0-macos-universal.tar.gz
+ tar -zxvf apple-codesign-0.22.0-macos-universal.tar.gz
+ mv apple-codesign-0.22.0-macos-universal/rcodesign /usr/local/bin
+ popd
+
- name: Install build runtime
run: |
brew install llvm create-dmg nasm yasm cmake gcc wget ninja
@@ -158,7 +187,6 @@ jobs:
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
- cache: true
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
@@ -177,8 +205,12 @@ jobs:
run: |
dart pub global activate ffigen --version 5.0.1
# flutter_rust_bridge
- pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && popd
- pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . && popd
+ pushd /tmp
+ wget https://github.com/Kingtous/flutter_rust_bridge/releases/download/1.32.0-rustdesk/flutter_rust_bridge_codegen-x86_64-darwin.tgz
+ tar -zxvf flutter_rust_bridge_codegen-x86_64-darwin.tgz
+ mkdir -p ~/.cargo/bin
+ mv flutter_rust_bridge_codegen ~/.cargo/bin; chmod +x ~/.cargo/bin/flutter_rust_bridge_codegen
+ popd
pushd flutter && flutter pub get && popd
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
@@ -192,10 +224,6 @@ jobs:
run: |
$VCPKG_ROOT/vcpkg install libvpx libyuv opus
- - name: Install cargo bundle tools
- run: |
- cargo install cargo-bundle
-
- name: Show version information (Rust, cargo, Clang)
shell: bash
run: |
@@ -211,10 +239,22 @@ jobs:
# --hwcodec not supported on macos yet
./build.py --flutter ${{ matrix.job.extra-build-args }}
+ - name: Codesign app and create signed dmg
+ run: |
+ security default-keychain -s rustdesk.keychain
+ security unlock-keychain -p ${{ secrets.MACOS_P12_PASSWORD }} rustdesk.keychain
+ # start sign the rustdesk.app and dmg
+ rm rustdesk-${{ env.VERSION }}.dmg || true
+ codesign --force --options runtime -s ${{ secrets.MACOS_CODESIGN_IDENTITY }} --deep ./flutter/build/macos/Build/Products/Release/rustdesk.app -v
+ create-dmg --icon "rustdesk.app" 200 190 --hide-extension "rustdesk.app" --window-size 800 400 --app-drop-link 600 185 rustdesk-${{ env.VERSION }}.dmg ./flutter/build/macos/Build/Products/Release/rustdesk.app
+ codesign --force --options runtime -s ${{ secrets.MACOS_CODESIGN_IDENTITY }} --deep rustdesk-${{ env.VERSION }}.dmg -v
+ # notarize the rustdesk-${{ env.VERSION }}.dmg
+ rcodesign notary-submit --api-key-path ${{ github.workspace }}/rustdesk.json --staple rustdesk-${{ env.VERSION }}.dmg
+
- name: Rename rustdesk
run: |
for name in rustdesk*??.dmg; do
- mv "$name" "${name%%.dmg}-untested-${{ matrix.job.target }}.dmg"
+ mv "$name" "${name%%.dmg}-${{ matrix.job.target }}.dmg"
done
- name: Publish DMG package
@@ -377,7 +417,7 @@ jobs:
run: |
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
- - name: Upload Artifcat
+ - name: Upload Artifact
uses: actions/upload-artifact@master
with:
name: bridge-artifact
@@ -559,6 +599,12 @@ jobs:
os: ubuntu-20.04,
extra-build-features: "flatpak",
}
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-20.04,
+ extra-build-features: "appimage",
+ }
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
steps:
- name: Maximize build space
@@ -715,6 +761,13 @@ jobs:
use-cross: true,
extra-build-features: "",
}
+ - {
+ arch: aarch64,
+ target: aarch64-unknown-linux-gnu,
+ os: ubuntu-18.04, # just for naming package, not running host
+ use-cross: true,
+ extra-build-features: "appimage",
+ }
# - { arch: aarch64, target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true, extra-build-features: "flatpak" }
# - {
# arch: armv7,
@@ -893,6 +946,13 @@ jobs:
use-cross: true,
extra-build-features: "",
}
+ - {
+ arch: aarch64,
+ target: aarch64-unknown-linux-gnu,
+ os: ubuntu-18.04, # just for naming package, not running host
+ use-cross: true,
+ extra-build-features: "appimage",
+ }
# - {
# arch: aarch64,
# target: aarch64-unknown-linux-gnu,
@@ -916,7 +976,7 @@ jobs:
- name: Prepare env
run: |
sudo apt update -y
- sudo apt-get -qq install -y git curl wget nasm yasm libgtk-3-dev
+ sudo apt-get -qq install -y git curl wget nasm yasm libgtk-3-dev libarchive-tools
mkdir -p ./target/release/
- name: Restore the rustdesk lib file
@@ -1000,7 +1060,7 @@ jobs:
shell: bash
run: |
for name in rustdesk*??.deb; do
- mv "$name" "${name%%.deb}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb"
+ cp "$name" "${name%%.deb}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb"
done
- name: Publish debian package
@@ -1011,8 +1071,31 @@ jobs:
tag_name: ${{ env.TAG_NAME }}
files: |
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
+
+ - name: Build appimage package
+ if: ${{ matrix.job.extra-build-features == 'appimage' }}
+ shell: bash
+ run: |
+ # set-up appimage-builder
+ pushd /tmp
+ wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
+ chmod +x appimage-builder-x86_64.AppImage
+ sudo mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
+ popd
+ # run appimage-builder
+ pushd appimage
+ sudo appimage-builder --skip-tests --recipe ./AppImageBuilder-${{ matrix.job.arch }}.yml
- - name: Upload Artifcat
+ - name: Publish appimage package
+ if: ${{ matrix.job.extra-build-features == 'appimage' }}
+ uses: softprops/action-gh-release@v1
+ with:
+ prerelease: true
+ tag_name: ${{ env.TAG_NAME }}
+ files: |
+ ./appimage/rustdesk-${{ env.VERSION }}-*.AppImage
+
+ - name: Upload Artifact
uses: actions/upload-artifact@master
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
with:
@@ -1108,6 +1191,12 @@ jobs:
os: ubuntu-18.04,
extra-build-features: "flatpak",
}
+ - {
+ arch: x86_64,
+ target: x86_64-unknown-linux-gnu,
+ os: ubuntu-18.04,
+ extra-build-features: "appimage",
+ }
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
steps:
- name: Checkout source code
@@ -1122,7 +1211,7 @@ jobs:
- name: Prepare env
run: |
sudo apt update -y
- sudo apt-get -qq install -y git curl wget nasm yasm libgtk-3-dev
+ sudo apt-get -qq install -y git curl wget nasm yasm libgtk-3-dev libarchive-tools
mkdir -p ./target/release/
- name: Restore the rustdesk lib file
@@ -1177,10 +1266,12 @@ jobs:
shell: bash
run: |
for name in rustdesk*??.deb; do
- mv "$name" "${name%%.deb}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb"
+ # use cp to duplicate deb files to fit other packages.
+ cp "$name" "${name%%.deb}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb"
done
- name: Publish debian package
+ if: ${{ matrix.job.extra-build-features == '' }}
uses: softprops/action-gh-release@v1
with:
prerelease: true
@@ -1188,7 +1279,7 @@ jobs:
files: |
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
- - name: Upload Artifcat
+ - name: Upload Artifact
uses: actions/upload-artifact@master
if: ${{ contains(matrix.job.extra-build-features, 'flatpak') }}
with:
@@ -1244,6 +1335,29 @@ jobs:
files: |
res/rustdesk*.zst
+ - name: Build appimage package
+ if: ${{ matrix.job.extra-build-features == 'appimage' }}
+ shell: bash
+ run: |
+ # set-up appimage-builder
+ pushd /tmp
+ wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage
+ chmod +x appimage-builder-x86_64.AppImage
+ sudo mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
+ popd
+ # run appimage-builder
+ pushd appimage
+ sudo appimage-builder --skip-tests --recipe ./AppImageBuilder-x86_64.yml
+
+ - name: Publish appimage package
+ if: ${{ matrix.job.extra-build-features == 'appimage' }}
+ uses: softprops/action-gh-release@v1
+ with:
+ prerelease: true
+ tag_name: ${{ env.TAG_NAME }}
+ files: |
+ ./appimage/rustdesk-${{ env.VERSION }}-*.AppImage
+
- name: Publish fedora28/centos8 package
if: ${{ matrix.job.extra-build-features == '' }}
uses: softprops/action-gh-release@v1
diff --git a/Cargo.lock b/Cargo.lock
index 07d95ac50..8dfde0335 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -76,7 +76,7 @@ dependencies = [
"alsa-sys",
"bitflags",
"libc",
- "nix 0.23.1",
+ "nix 0.23.2",
]
[[package]]
@@ -175,11 +175,11 @@ dependencies = [
[[package]]
name = "async-channel"
-version = "1.7.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28"
+checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833"
dependencies = [
- "concurrent-queue 1.2.4",
+ "concurrent-queue",
"event-listener",
"futures-core",
]
@@ -192,7 +192,7 @@ checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b"
dependencies = [
"async-lock",
"async-task",
- "concurrent-queue 2.0.0",
+ "concurrent-queue",
"fastrand",
"futures-lite",
"slab",
@@ -200,13 +200,13 @@ dependencies = [
[[package]]
name = "async-io"
-version = "1.10.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7"
+checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794"
dependencies = [
"async-lock",
"autocfg 1.1.0",
- "concurrent-queue 1.2.4",
+ "concurrent-queue",
"futures-lite",
"libc",
"log",
@@ -215,7 +215,7 @@ dependencies = [
"slab",
"socket2 0.4.7",
"waker-fn",
- "winapi 0.3.9",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -230,20 +230,20 @@ dependencies = [
[[package]]
name = "async-process"
-version = "1.5.0"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c"
+checksum = "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4"
dependencies = [
"async-io",
+ "async-lock",
"autocfg 1.1.0",
"blocking",
"cfg-if 1.0.0",
"event-listener",
"futures-lite",
"libc",
- "once_cell",
"signal-hook",
- "winapi 0.3.9",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -265,9 +265,9 @@ checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524"
[[package]]
name = "async-trait"
-version = "0.1.58"
+version = "0.1.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c"
+checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364"
dependencies = [
"proc-macro2",
"quote",
@@ -438,16 +438,16 @@ dependencies = [
[[package]]
name = "blocking"
-version = "1.2.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc"
+checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8"
dependencies = [
"async-channel",
+ "async-lock",
"async-task",
"atomic-waker",
"fastrand",
"futures-lite",
- "once_cell",
]
[[package]]
@@ -495,15 +495,9 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
dependencies = [
- "serde 1.0.147",
+ "serde 1.0.149",
]
-[[package]]
-name = "cache-padded"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
-
[[package]]
name = "cairo-rs"
version = "0.15.12"
@@ -544,7 +538,7 @@ version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e"
dependencies = [
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -553,7 +547,7 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
dependencies = [
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -565,7 +559,7 @@ dependencies = [
"camino",
"cargo-platform",
"semver 1.0.14",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_json 1.0.89",
]
@@ -581,7 +575,7 @@ dependencies = [
"log",
"proc-macro2",
"quote",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_json 1.0.89",
"syn",
"tempfile",
@@ -643,7 +637,7 @@ dependencies = [
"js-sys",
"num-integer",
"num-traits 0.2.15",
- "time 0.1.44",
+ "time 0.1.45",
"wasm-bindgen",
"winapi 0.3.9",
]
@@ -733,7 +727,7 @@ dependencies = [
"cc",
"hbb_common",
"lazy_static",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"thiserror",
]
@@ -824,15 +818,6 @@ dependencies = [
"memchr",
]
-[[package]]
-name = "concurrent-queue"
-version = "1.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c"
-dependencies = [
- "cache-padded",
-]
-
[[package]]
name = "concurrent-queue"
version = "2.0.0"
@@ -848,7 +833,7 @@ version = "0.4.0"
source = "git+https://github.com/open-trade/confy#630cc28a396cb7d01eefdd9f3824486fe4d8554b"
dependencies = [
"directories-next",
- "serde 1.0.147",
+ "serde 1.0.149",
"thiserror",
"toml",
]
@@ -976,7 +961,7 @@ dependencies = [
"mach",
"ndk 0.6.0",
"ndk-glue 0.6.2",
- "nix 0.23.1",
+ "nix 0.23.2",
"oboe",
"parking_lot 0.11.2",
"stdweb",
@@ -1068,12 +1053,12 @@ dependencies = [
[[package]]
name = "ctrlc"
-version = "3.2.3"
+version = "3.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d91974fbbe88ec1df0c24a4f00f99583667a7e2e6272b2b92d294d81e462173"
+checksum = "1631ca6e3c59112501a9d87fd86f21591ff77acd31331e8a73f8d80a65bbdd71"
dependencies = [
- "nix 0.25.0",
- "winapi 0.3.9",
+ "nix 0.26.1",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -1084,9 +1069,9 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
[[package]]
name = "cxx"
-version = "1.0.82"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453"
+checksum = "bdf07d07d6531bfcdbe9b8b739b104610c6508dcc4d63b410585faf338241daf"
dependencies = [
"cc",
"cxxbridge-flags",
@@ -1096,9 +1081,9 @@ dependencies = [
[[package]]
name = "cxx-build"
-version = "1.0.82"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0"
+checksum = "d2eb5b96ecdc99f72657332953d4d9c50135af1bac34277801cc3937906ebd39"
dependencies = [
"cc",
"codespan-reporting",
@@ -1111,15 +1096,15 @@ dependencies = [
[[package]]
name = "cxxbridge-flags"
-version = "1.0.82"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71"
+checksum = "ac040a39517fd1674e0f32177648334b0f4074625b5588a64519804ba0553b12"
[[package]]
name = "cxxbridge-macro"
-version = "1.0.82"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470"
+checksum = "1362b0ddcfc4eb0a1f57b68bd77dd99f0e826958a96abd0ae9bd092e114ffed6"
dependencies = [
"proc-macro2",
"quote",
@@ -1332,8 +1317,7 @@ checksum = "f578e8e2c440e7297e008bb5486a3a8a194775224bbc23729b0dbdfaeebf162e"
[[package]]
name = "default-net"
version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05e70d471b0ba4e722c85651b3bb04b6880dfdb1224a43ade80c1295314db646"
+source = "git+https://github.com/Kingtous/default-net#bdaad8dd5b08efcba303e71729d3d0b1d5ccdb25"
dependencies = [
"libc",
"memalloc",
@@ -1458,7 +1442,7 @@ checksum = "7f3f119846c823f9eafcf953a8f6ffb6ed69bf6240883261a7f13b634579a51f"
dependencies = [
"lazy_static",
"regex",
- "serde 1.0.147",
+ "serde 1.0.149",
"strsim 0.10.0",
]
@@ -1481,7 +1465,7 @@ dependencies = [
"cc",
"hbb_common",
"lazy_static",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"thiserror",
]
@@ -1503,9 +1487,9 @@ checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
[[package]]
name = "embed-resource"
-version = "1.7.2"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ecc24ff8d764818e9ab17963b0593c535f077a513f565e75e4352d758bc4d8c0"
+checksum = "e62abb876c07e4754fae5c14cafa77937841f01740637e17d78dc04352f32a5e"
dependencies = [
"cc",
"rustc_version 0.4.0",
@@ -1534,7 +1518,7 @@ dependencies = [
"objc",
"pkg-config",
"rdev",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"tfc",
"unicode-segmentation",
@@ -1580,7 +1564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
dependencies = [
"enumflags2_derive",
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -1679,7 +1663,7 @@ source = "git+https://github.com/fufesou/evdev#cec616e37790293d2cd2aa54a96601ed6
dependencies = [
"bitvec",
"libc",
- "nix 0.23.1",
+ "nix 0.23.2",
]
[[package]]
@@ -1718,9 +1702,9 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.18"
+version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3"
+checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9"
dependencies = [
"cfg-if 1.0.0",
"libc",
@@ -1730,12 +1714,12 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.24"
+version = "1.0.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
dependencies = [
"crc32fast",
- "miniz_oxide 0.5.4",
+ "miniz_oxide 0.6.2",
]
[[package]]
@@ -1787,7 +1771,7 @@ dependencies = [
"pathdiff",
"quote",
"regex",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_yaml",
"structopt",
"syn",
@@ -2007,7 +1991,7 @@ version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
dependencies = [
- "gio-sys",
+ "gio-sys 0.15.10",
"glib-sys 0.15.10",
"gobject-sys 0.15.10",
"libc",
@@ -2022,7 +2006,7 @@ checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
- "gio-sys",
+ "gio-sys 0.15.10",
"glib-sys 0.15.10",
"gobject-sys 0.15.10",
"libc",
@@ -2078,7 +2062,7 @@ dependencies = [
"futures-channel",
"futures-core",
"futures-io",
- "gio-sys",
+ "gio-sys 0.15.10",
"glib 0.15.12",
"libc",
"once_cell",
@@ -2098,6 +2082,19 @@ dependencies = [
"winapi 0.3.9",
]
+[[package]]
+name = "gio-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229"
+dependencies = [
+ "glib-sys 0.16.3",
+ "gobject-sys 0.16.3",
+ "libc",
+ "system-deps 6.0.3",
+ "winapi 0.3.9",
+]
+
[[package]]
name = "glib"
version = "0.10.3"
@@ -2137,6 +2134,28 @@ dependencies = [
"thiserror",
]
+[[package]]
+name = "glib"
+version = "0.16.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cd04d150a2c63e6779f43aec7e04f5374252479b7bed5f45146d9c0e821f161"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys 0.16.3",
+ "glib-macros 0.16.3",
+ "glib-sys 0.16.3",
+ "gobject-sys 0.16.3",
+ "libc",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
[[package]]
name = "glib-macros"
version = "0.10.1"
@@ -2168,6 +2187,21 @@ dependencies = [
"syn",
]
+[[package]]
+name = "glib-macros"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e084807350b01348b6d9dbabb724d1a0bb987f47a2c85de200e98e12e30733bf"
+dependencies = [
+ "anyhow",
+ "heck 0.4.0",
+ "proc-macro-crate 1.2.1",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "glib-sys"
version = "0.10.1"
@@ -2188,6 +2222,16 @@ dependencies = [
"system-deps 6.0.3",
]
+[[package]]
+name = "glib-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65"
+dependencies = [
+ "libc",
+ "system-deps 6.0.3",
+]
+
[[package]]
name = "glob"
version = "0.3.0"
@@ -2216,6 +2260,17 @@ dependencies = [
"system-deps 6.0.3",
]
+[[package]]
+name = "gobject-sys"
+version = "0.16.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1"
+dependencies = [
+ "glib-sys 0.16.3",
+ "libc",
+ "system-deps 6.0.3",
+]
+
[[package]]
name = "gstreamer"
version = "0.16.7"
@@ -2382,7 +2437,7 @@ dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gdk-sys",
- "gio-sys",
+ "gio-sys 0.15.10",
"glib-sys 0.15.10",
"gobject-sys 0.15.10",
"libc",
@@ -2455,7 +2510,7 @@ dependencies = [
"quinn",
"rand 0.8.5",
"regex",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"serde_json 1.0.89",
"socket2 0.3.19",
@@ -2547,12 +2602,12 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "hwcodec"
version = "0.1.0"
-source = "git+https://github.com/21pages/hwcodec#f54d69b35251ade110373403ddefcb8b49c87305"
+source = "git+https://github.com/21pages/hwcodec#64f885b3787694b16dfcff08256750b0376b2eba"
dependencies = [
"bindgen 0.59.2",
"cc",
"log",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"serde_json 1.0.89",
]
@@ -2583,9 +2638,9 @@ dependencies = [
[[package]]
name = "hyper-rustls"
-version = "0.23.1"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59df7c4e19c950e6e0e868dcc0a300b09a9b88e9ec55bd879ca819087a77355d"
+checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c"
dependencies = [
"http",
"hyper",
@@ -2730,9 +2785,9 @@ dependencies = [
[[package]]
name = "ipnet"
-version = "2.5.1"
+version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745"
+checksum = "ec947b7a4ce12e3b87e353abae7ce124d025b6c7d6c5aea5cc0bcf92e9510ded"
[[package]]
name = "itertools"
@@ -2847,9 +2902,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.137"
+version = "0.2.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
[[package]]
name = "libdbus-sys"
@@ -2979,7 +3034,7 @@ version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b238e3235c8382b7653c6408ed1b08dd379bdb9fdf990fb0bbae3db2cc0ae963"
dependencies = [
- "nix 0.23.1",
+ "nix 0.23.2",
"winapi 0.3.9",
]
@@ -3004,7 +3059,7 @@ dependencies = [
[[package]]
name = "magnum-opus"
version = "0.4.0"
-source = "git+https://github.com/SoLongAndThanksForAllThePizza/magnum-opus#6247071a64af7b18e2d553e235729e6865f63ece"
+source = "git+https://github.com/rustdesk/magnum-opus#79be072c939168e907fe851690759dcfd6a326af"
dependencies = [
"bindgen 0.59.2",
"target_build_utils",
@@ -3104,6 +3159,15 @@ dependencies = [
"adler",
]
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
[[package]]
name = "mio"
version = "0.6.23"
@@ -3180,7 +3244,7 @@ dependencies = [
[[package]]
name = "mouce"
version = "0.2.1"
-source = "git+https://github.com/fufesou/mouce.git#aa18ba25bb47484282e972a4b95a8e1d753230b5"
+source = "git+https://github.com/fufesou/mouce.git#ed83800d532b95d70e39915314f6052aa433e9b9"
dependencies = [
"glob",
]
@@ -3330,9 +3394,9 @@ dependencies = [
[[package]]
name = "nix"
-version = "0.23.1"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6"
+checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
dependencies = [
"bitflags",
"cc",
@@ -3343,9 +3407,9 @@ dependencies = [
[[package]]
name = "nix"
-version = "0.24.2"
+version = "0.24.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc"
+checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
dependencies = [
"bitflags",
"cfg-if 1.0.0",
@@ -3355,9 +3419,9 @@ dependencies = [
[[package]]
name = "nix"
-version = "0.25.0"
+version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb"
+checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
dependencies = [
"autocfg 1.1.0",
"bitflags",
@@ -3367,6 +3431,18 @@ dependencies = [
"pin-utils",
]
+[[package]]
+name = "nix"
+version = "0.26.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46a58d1d356c6597d08cde02c2f09d785b09e28711837b1ed667dc652c08a694"
+dependencies = [
+ "bitflags",
+ "cfg-if 1.0.0",
+ "libc",
+ "static_assertions",
+]
+
[[package]]
name = "nom"
version = "7.1.1"
@@ -3592,9 +3668,9 @@ dependencies = [
[[package]]
name = "ordered-stream"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "034ce384018b245e8d8424bbe90577fbd91a533be74107e465e3474eb2285eef"
+checksum = "01ca8c99d73c6e92ac1358f9f692c22c0bfd9c4701fa086f5d365c0d4ea818ea"
dependencies = [
"futures-core",
"pin-project-lite",
@@ -3676,7 +3752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
"lock_api",
- "parking_lot_core 0.9.4",
+ "parking_lot_core 0.9.5",
]
[[package]]
@@ -3695,9 +3771,9 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0"
+checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
dependencies = [
"cfg-if 1.0.0",
"libc",
@@ -3732,9 +3808,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
-version = "2.4.1"
+version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8"
+checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0"
dependencies = [
"thiserror",
"ucd-trie",
@@ -3830,16 +3906,16 @@ dependencies = [
[[package]]
name = "polling"
-version = "2.4.0"
+version = "2.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2"
+checksum = "166ca89eb77fd403230b9c156612965a81e094ec6ec3aa13663d4c8b113fa748"
dependencies = [
"autocfg 1.1.0",
"cfg-if 1.0.0",
"libc",
"log",
"wepoll-ffi",
- "winapi 0.3.9",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -4205,11 +4281,10 @@ dependencies = [
[[package]]
name = "rayon"
-version = "1.6.0"
+version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b"
+checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
dependencies = [
- "crossbeam-deque",
"either",
"rayon-core",
]
@@ -4229,7 +4304,7 @@ dependencies = [
[[package]]
name = "rdev"
version = "0.5.0-2"
-source = "git+https://github.com/asur4s/rdev#3d6d413a9b2ab703edc22071acea31826b0efce3"
+source = "git+https://github.com/fufesou/rdev#1be26c7e8ed0d43cebdd8331d467bb61130a2e6e"
dependencies = [
"cocoa",
"core-foundation 0.9.3",
@@ -4240,12 +4315,13 @@ dependencies = [
"inotify",
"lazy_static",
"libc",
+ "log",
"mio 0.8.5",
"strum 0.24.1",
"strum_macros 0.24.3",
"widestring 1.0.2",
"winapi 0.3.9",
- "x11 2.20.0",
+ "x11 2.20.1",
]
[[package]]
@@ -4259,9 +4335,9 @@ dependencies = [
[[package]]
name = "realfft"
-version = "3.1.0"
+version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3052e66d6ebeff8049607775c41d39a58d1dfa91a2733e89f2b7816bce2ea4cc"
+checksum = "93d6b8e8f0c6d2234aa58048d7290c60bf92cd36fd2888cd8331c66ad4f2e1d2"
dependencies = [
"rustfft",
]
@@ -4347,7 +4423,7 @@ dependencies = [
"pin-project-lite",
"rustls",
"rustls-pemfile 1.0.1",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_json 1.0.89",
"serde_urlencoded",
"tokio",
@@ -4389,9 +4465,20 @@ dependencies = [
[[package]]
name = "rpassword"
-version = "7.1.0"
+version = "7.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20c9f5d2a0c3e2ea729ab3706d22217177770654c3ef5056b68b69d07332d3f5"
+checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322"
+dependencies = [
+ "libc",
+ "rtoolbox",
+ "winapi 0.3.9",
+]
+
+[[package]]
+name = "rtoolbox"
+version = "0.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a"
dependencies = [
"libc",
"winapi 0.3.9",
@@ -4475,6 +4562,7 @@ dependencies = [
"arboard",
"async-process",
"async-trait",
+ "backtrace",
"base64",
"bytes",
"cc",
@@ -4500,6 +4588,7 @@ dependencies = [
"flexi_logger",
"flutter_rust_bridge",
"flutter_rust_bridge_codegen",
+ "glib 0.16.5",
"gtk",
"hbb_common",
"hound",
@@ -4521,14 +4610,14 @@ dependencies = [
"rdev",
"repng",
"reqwest",
- "rpassword 7.1.0",
+ "rpassword 7.2.0",
"rubato",
"runas",
"rust-pulsectl",
"samplerate",
"sciter-rs",
"scrap",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"serde_json 1.0.89",
"sha2",
@@ -4705,7 +4794,7 @@ dependencies = [
"num_cpus",
"quest",
"repng",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_json 1.0.89",
"target_build_utils",
"tracing",
@@ -4767,7 +4856,7 @@ version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
dependencies = [
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -4787,18 +4876,18 @@ checksum = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af"
[[package]]
name = "serde"
-version = "1.0.147"
+version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+checksum = "256b9932320c590e707b94576e3cc1f7c9024d0ee6612dfbcf1cb106cbe8e055"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.147"
+version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"
+checksum = "b4eae9b04cbffdfd550eb462ed33bc6a1b68c935127d008b27444d08380f94e4"
dependencies = [
"proc-macro2",
"quote",
@@ -4825,7 +4914,7 @@ checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
dependencies = [
"itoa 1.0.4",
"ryu",
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -4848,7 +4937,7 @@ dependencies = [
"form_urlencoded",
"itoa 1.0.4",
"ryu",
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -4859,7 +4948,7 @@ checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
dependencies = [
"indexmap",
"ryu",
- "serde 1.0.147",
+ "serde 1.0.149",
"yaml-rust",
]
@@ -4893,7 +4982,7 @@ checksum = "ba8593196da75d9dc4f69349682bd4c2099f8cde114257d1ef7ef1b33d1aba54"
dependencies = [
"cfg-if 1.0.0",
"libc",
- "nix 0.23.1",
+ "nix 0.23.2",
"rand 0.8.5",
"win-sys",
]
@@ -4941,7 +5030,7 @@ version = "0.1.0"
dependencies = [
"confy",
"hbb_common",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_derive",
"walkdir",
]
@@ -5016,7 +5105,7 @@ dependencies = [
"ed25519",
"libc",
"libsodium-sys",
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -5124,9 +5213,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.103"
+version = "1.0.105"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
+checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
dependencies = [
"proc-macro2",
"quote",
@@ -5298,7 +5387,7 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
[[package]]
name = "tfc"
version = "0.6.1"
-source = "git+https://github.com/asur4s/The-Fat-Controller#48303c5dacded6ea1873bc5d69bdde3175cf336a"
+source = "git+https://github.com/fufesou/The-Fat-Controller#a5f13e6ef80327eb8d860aeb26b0af93eb5aee2b"
dependencies = [
"core-graphics 0.22.3",
"unicode-segmentation",
@@ -5348,9 +5437,9 @@ dependencies = [
[[package]]
name = "time"
-version = "0.1.44"
+version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
+checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
dependencies = [
"libc",
"wasi 0.10.0+wasi-snapshot-preview1",
@@ -5392,9 +5481,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
-version = "1.22.0"
+version = "1.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3"
+checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46"
dependencies = [
"autocfg 1.1.0",
"bytes",
@@ -5407,14 +5496,14 @@ dependencies = [
"signal-hook-registry",
"socket2 0.4.7",
"tokio-macros",
- "winapi 0.3.9",
+ "windows-sys 0.42.0",
]
[[package]]
name = "tokio-macros"
-version = "1.8.0"
+version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484"
+checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
dependencies = [
"proc-macro2",
"quote",
@@ -5472,7 +5561,7 @@ version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
dependencies = [
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -5558,9 +5647,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
[[package]]
name = "typenum"
-version = "1.15.0"
+version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
[[package]]
name = "ucd-trie"
@@ -5632,7 +5721,7 @@ dependencies = [
"form_urlencoded",
"idna",
"percent-encoding",
- "serde 1.0.147",
+ "serde 1.0.149",
]
[[package]]
@@ -5689,9 +5778,9 @@ dependencies = [
[[package]]
name = "vswhom-sys"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22025f6d8eb903ebf920ea6933b70b1e495be37e2cb4099e62c80454aaf57c39"
+checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18"
dependencies = [
"cc",
"libc",
@@ -5811,7 +5900,7 @@ dependencies = [
"bitflags",
"downcast-rs",
"libc",
- "nix 0.24.2",
+ "nix 0.24.3",
"scoped-tls",
"wayland-commons",
"wayland-scanner",
@@ -5824,7 +5913,7 @@ version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902"
dependencies = [
- "nix 0.24.2",
+ "nix 0.24.3",
"once_cell",
"smallvec",
"wayland-sys",
@@ -5836,7 +5925,7 @@ version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661"
dependencies = [
- "nix 0.24.2",
+ "nix 0.24.3",
"wayland-client",
"xcursor",
]
@@ -5915,9 +6004,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
-version = "0.22.5"
+version = "0.22.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be"
+checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
dependencies = [
"webpki",
]
@@ -6382,9 +6471,9 @@ dependencies = [
[[package]]
name = "x11"
-version = "2.20.0"
+version = "2.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f7ae97874a928d821b061fce3d1fc52f08071dd53c89a6102bc06efcac3b2908"
+checksum = "c2638d5b9c17ac40575fb54bb461a4b1d2a8d1b4ffcc4ff237d254ec59ddeb82"
dependencies = [
"libc",
"pkg-config",
@@ -6392,9 +6481,9 @@ dependencies = [
[[package]]
name = "x11-dl"
-version = "2.20.0"
+version = "2.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6"
+checksum = "b1536d6965a5d4e573c7ef73a2c15ebcd0b2de3347bdf526c34c297c00ac40f0"
dependencies = [
"lazy_static",
"libc",
@@ -6439,9 +6528,9 @@ dependencies = [
[[package]]
name = "zbus"
-version = "3.5.0"
+version = "3.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25ae891bd547674b368906552115143031c16c23a0f2f4b2f5f5436ab2e6a9f"
+checksum = "938ea6da98c75c2c37a86007bd17fd8e208cbec24e086108c87ece98e9edec0d"
dependencies = [
"async-broadcast",
"async-channel",
@@ -6460,11 +6549,11 @@ dependencies = [
"futures-sink",
"futures-util",
"hex",
- "nix 0.25.0",
+ "nix 0.25.1",
"once_cell",
"ordered-stream",
"rand 0.8.5",
- "serde 1.0.147",
+ "serde 1.0.149",
"serde_repr",
"sha1",
"static_assertions",
@@ -6478,9 +6567,9 @@ dependencies = [
[[package]]
name = "zbus_macros"
-version = "3.5.0"
+version = "3.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8aa37701ce7b3a43632d2b0ad9d4aef602b46be6bdd7fba3b7c5007f9f6eb2c2"
+checksum = "45066039ebf3330820e495e854f8b312abb68f0a39e97972d092bd72e8bb3e8e"
dependencies = [
"proc-macro-crate 1.2.1",
"proc-macro2",
@@ -6491,11 +6580,11 @@ dependencies = [
[[package]]
name = "zbus_names"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d69bb79b44e1901ed8b217e485d0f01991aec574479b68cb03415f142bc7ae67"
+checksum = "6c737644108627748a660d038974160e0cbb62605536091bdfa28fd7f64d43c8"
dependencies = [
- "serde 1.0.147",
+ "serde 1.0.149",
"static_assertions",
"zvariant",
]
@@ -6531,23 +6620,23 @@ dependencies = [
[[package]]
name = "zvariant"
-version = "3.8.0"
+version = "3.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c817f416f05fcbc833902f1e6064b72b1778573978cfeac54731451ccc9e207"
+checksum = "56f8c89c183461e11867ded456db252eae90874bc6769b7adbea464caa777e51"
dependencies = [
"byteorder",
"enumflags2",
"libc",
- "serde 1.0.147",
+ "serde 1.0.149",
"static_assertions",
"zvariant_derive",
]
[[package]]
name = "zvariant_derive"
-version = "3.8.0"
+version = "3.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdd24fffd02794a76eb10109de463444064c88f5adb9e9d1a78488adc332bfef"
+checksum = "155247a5d1ab55e335421c104ccd95d64f17cebbd02f50cdbc1c33385f9c4d81"
dependencies = [
"proc-macro-crate 1.2.1",
"proc-macro2",
diff --git a/Cargo.toml b/Cargo.toml
index cbf384a38..427fcd4e7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -47,7 +47,7 @@ libc = "0.2"
parity-tokio-ipc = { git = "https://github.com/open-trade/parity-tokio-ipc" }
flexi_logger = { version = "0.22", features = ["async", "use_chrono_for_offset"] }
runas = "0.2"
-magnum-opus = { git = "https://github.com/SoLongAndThanksForAllThePizza/magnum-opus" }
+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 }
@@ -59,11 +59,11 @@ base64 = "0.13"
sysinfo = "0.24"
num_cpus = "1.13"
bytes = { version = "1.2", features = ["serde"] }
-default-net = "0.11.0"
+default-net = { git = "https://github.com/Kingtous/default-net" }
wol-rs = "0.9.1"
flutter_rust_bridge = { git = "https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge", optional = true }
errno = "0.2.8"
-rdev = { git = "https://github.com/asur4s/rdev" }
+rdev = { git = "https://github.com/fufesou/rdev" }
url = { version = "2.1", features = ["serde"] }
reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls"], default-features=false }
@@ -118,6 +118,8 @@ dbus = "0.9"
dbus-crossroads = "0.5"
gtk = "0.15"
libappindicator = "0.7"
+glib = "0.16.5"
+backtrace = "0.3"
[target.'cfg(target_os = "android")'.dependencies]
android_logger = "0.11"
@@ -153,7 +155,7 @@ identifier = "com.carriez.rustdesk"
icon = ["res/32x32.png", "res/128x128.png", "res/128x128@2x.png"]
deb_depends = ["libgtk-3-0", "libxcb-randr0", "libxdo3", "libxfixes3", "libxcb-shape0", "libxcb-xfixes0", "libasound2", "libsystemd0", "curl", "libvdpau1", "libva2"]
osx_minimum_system_version = "10.14"
-resources = ["res/mac-tray-light.png","res/mac-tray-dark.png"]
+resources = ["res/mac-tray-light.png","res/mac-tray-dark.png", "res/mac-tray-light-x2.png","res/mac-tray-dark-x2.png"]
#https://github.com/johnthagen/min-sized-rust
[profile.release]
diff --git a/README.md b/README.md
index ad19edaa1..bc9bacf19 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,7 @@ Below are the servers you are using for free, it may change along the time. If y
| Germany | Codext | 4 vCPU / 8GB RAM |
| Finland (Helsinki) | 0x101 Cyber Security | 4 vCPU / 8GB RAM |
| USA (Ashburn) | 0x101 Cyber Security | 4 vCPU / 8GB RAM |
+| Ukraine (Kyiv) | dc.volia (2VM) | 2 vCPU / 4GB RAM |
## Dependencies
@@ -197,7 +198,7 @@ Please ensure that you are running these commands from the root of the RustDesk
- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Communicate with [rustdesk-server](https://github.com/rustdesk/rustdesk-server), wait for remote direct (TCP hole punching) or relayed connection
- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: platform specific code
- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for mobile
-- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: Javascript for Flutter web client
+- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: JavaScript for Flutter web client
## Snapshot
diff --git a/appimage/AppImageBuilder-aarch64.yml b/appimage/AppImageBuilder-aarch64.yml
new file mode 100644
index 000000000..f3cd8f568
--- /dev/null
+++ b/appimage/AppImageBuilder-aarch64.yml
@@ -0,0 +1,85 @@
+# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
+version: 1
+script:
+ - rm -rf ./AppDir || true
+ - bsdtar -zxvf ../rustdesk-1.2.0.deb
+ - tar -xvf ./data.tar.xz
+ - mkdir ./AppDir
+ - mv ./usr ./AppDir/usr
+ # 32x32 icon
+ - for i in {32,64,128}; do mkdir -p ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/; cp ../res/$i\x$i.png ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/rustdesk.png; done
+ # desktop file
+ # - sed -i "s/Icon=\/usr\/share\/rustdesk\/files\/rustdesk.png/Icon=rustdesk/g" ./AppDir/usr/share/applications/rustdesk.desktop
+ - rm -rf ./AppDir/usr/share/applications
+AppDir:
+ path: ./AppDir
+ app_info:
+ id: rustdesk
+ name: rustdesk
+ icon: rustdesk
+ version: 1.2.0
+ exec: usr/lib/rustdesk/rustdesk
+ exec_args: $@
+ apt:
+ arch:
+ - arm64
+ allow_unauthenticated: true
+ sources:
+ - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe multiverse
+ key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3b4fe6acc0b21f32'
+ - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
+ key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3b4fe6acc0b21f32'
+ - sourceline: deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
+ universe multiverse
+ key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3b4fe6acc0b21f32'
+ include:
+ - libc6
+ - libgtk-3-0
+ - libxcb-randr0
+ - libxdo3
+ - libxfixes3
+ - libxcb-shape0
+ - libxcb-xfixes0
+ - libasound2
+ - libsystemd0
+ - curl
+ - libva-drm2
+ - libva-x11-2
+ - libvdpau1
+ - libgstreamer-plugins-base1.0-0
+ exclude:
+ - humanity-icon-theme
+ - hicolor-icon-theme
+ - adwaita-icon-theme
+ - ubuntu-mono
+ files:
+ include: []
+ exclude:
+ - usr/share/man
+ - usr/share/doc/*/README.*
+ - usr/share/doc/*/changelog.*
+ - usr/share/doc/*/NEWS.*
+ - usr/share/doc/*/TODO.*
+ runtime:
+ env:
+ GIO_MODULE_DIR: $APPDIR/usr/lib/x86_64-linux-gnu/gio/modules/
+ GDK_BACKEND: x11
+ test:
+ fedora-30:
+ image: appimagecrafters/tests-env:fedora-30
+ command: ./AppRun
+ debian-stable:
+ image: appimagecrafters/tests-env:debian-stable
+ command: ./AppRun
+ archlinux-latest:
+ image: appimagecrafters/tests-env:archlinux-latest
+ command: ./AppRun
+ centos-7:
+ image: appimagecrafters/tests-env:centos-7
+ command: ./AppRun
+ ubuntu-xenial:
+ image: appimagecrafters/tests-env:ubuntu-xenial
+ command: ./AppRun
+AppImage:
+ arch: aarch64
+ update-information: guess
diff --git a/appimage/AppImageBuilder-x86_64.yml b/appimage/AppImageBuilder-x86_64.yml
new file mode 100644
index 000000000..59dd5164f
--- /dev/null
+++ b/appimage/AppImageBuilder-x86_64.yml
@@ -0,0 +1,88 @@
+# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
+version: 1
+script:
+ - rm -rf ./AppDir || true
+ - bsdtar -zxvf ../rustdesk-1.2.0.deb
+ - tar -xvf ./data.tar.xz
+ - mkdir ./AppDir
+ - mv ./usr ./AppDir/usr
+ # 32x32 icon
+ - for i in {32,64,128}; do mkdir -p ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/; cp ../res/$i\x$i.png ./AppDir/usr/share/icons/hicolor/$i\x$i/apps/rustdesk.png; done
+ # desktop file
+ # - sed -i "s/Icon=\/usr\/share\/rustdesk\/files\/rustdesk.png/Icon=rustdesk/g" ./AppDir/usr/share/applications/rustdesk.desktop
+ - rm -rf ./AppDir/usr/share/applications
+AppDir:
+ path: ./AppDir
+ app_info:
+ id: rustdesk
+ name: rustdesk
+ icon: rustdesk
+ version: 1.2.0
+ exec: usr/lib/rustdesk/rustdesk
+ exec_args: $@
+ apt:
+ arch:
+ - amd64
+ allow_unauthenticated: true
+ sources:
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic main restricted
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic universe
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates universe
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic multiverse
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-updates multiverse
+ - sourceline: deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted
+ universe multiverse
+ - sourceline: deb http://ppa.launchpad.net/pipewire-debian/pipewire-upstream/ubuntu
+ bionic main
+ include:
+ - libc6:amd64
+ - libgtk-3-0
+ - libxcb-randr0
+ - libxdo3
+ - libxfixes3
+ - libxcb-shape0
+ - libxcb-xfixes0
+ - libasound2
+ - libsystemd0
+ - curl
+ - libva-drm2
+ - libva-x11-2
+ - libvdpau1
+ - libgstreamer-plugins-base1.0-0
+ exclude:
+ - humanity-icon-theme
+ - hicolor-icon-theme
+ - adwaita-icon-theme
+ - ubuntu-mono
+ files:
+ include: []
+ exclude:
+ - usr/share/man
+ - usr/share/doc/*/README.*
+ - usr/share/doc/*/changelog.*
+ - usr/share/doc/*/NEWS.*
+ - usr/share/doc/*/TODO.*
+ runtime:
+ env:
+ GIO_MODULE_DIR: $APPDIR/usr/lib/x86_64-linux-gnu/gio/modules/
+ GDK_BACKEND: x11
+ test:
+ fedora-30:
+ image: appimagecrafters/tests-env:fedora-30
+ command: ./AppRun
+ debian-stable:
+ image: appimagecrafters/tests-env:debian-stable
+ command: ./AppRun
+ archlinux-latest:
+ image: appimagecrafters/tests-env:archlinux-latest
+ command: ./AppRun
+ centos-7:
+ image: appimagecrafters/tests-env:centos-7
+ command: ./AppRun
+ ubuntu-xenial:
+ image: appimagecrafters/tests-env:ubuntu-xenial
+ command: ./AppRun
+AppImage:
+ arch: x86_64
+ update-information: guess
diff --git a/build.py b/build.py
index 127469784..6b107ff4b 100755
--- a/build.py
+++ b/build.py
@@ -21,7 +21,7 @@ skip_cargo = False
def custom_os_system(cmd):
err = os._system(cmd)
if err != 0:
- print(f"Error occured when executing: {cmd}. Exiting.")
+ print(f"Error occurred when executing: {cmd}. Exiting.")
sys.exit(-1)
# replace prebuilt os.system
os._system = os.system
@@ -99,6 +99,11 @@ def make_parser():
action='store_true',
help='Build rustdesk libs with the flatpak feature enabled'
)
+ parser.add_argument(
+ '--appimage',
+ action='store_true',
+ help='Build rustdesk libs with the appimage feature enabled'
+ )
parser.add_argument(
'--skip-cargo',
action='store_true',
@@ -236,6 +241,8 @@ def get_features(args):
features.append('flutter')
if args.flatpak:
features.append('flatpak')
+ if args.appimage:
+ features.append('appimage')
print("features:", features)
return features
@@ -305,7 +312,8 @@ def build_flutter_deb(version, features):
def build_flutter_dmg(version, features):
if not skip_cargo:
- os.system(f'cargo build --features {features} --lib --release')
+ # set minimum osx build target, now is 10.14, which is the same as the flutter xcode project
+ os.system(f'MACOSX_DEPLOYMENT_TARGET=10.14 cargo build --features {features} --lib --release')
# copy dylib
os.system(
"cp target/release/liblibrustdesk.dylib target/release/librustdesk.dylib")
@@ -469,6 +477,7 @@ def main():
if pa:
os.system('''
# buggy: rcodesign sign ... path/*, have to sign one by one
+ # install rcodesign via cargo install apple-codesign
#rcodesign sign --p12-file ~/.p12/rustdesk-developer-id.p12 --p12-password-file ~/.p12/.cert-pass --code-signature-flags runtime ./target/release/bundle/osx/RustDesk.app/Contents/MacOS/rustdesk
#rcodesign sign --p12-file ~/.p12/rustdesk-developer-id.p12 --p12-password-file ~/.p12/.cert-pass --code-signature-flags runtime ./target/release/bundle/osx/RustDesk.app/Contents/MacOS/libsciter.dylib
#rcodesign sign --p12-file ~/.p12/rustdesk-developer-id.p12 --p12-password-file ~/.p12/.cert-pass --code-signature-flags runtime ./target/release/bundle/osx/RustDesk.app
@@ -481,9 +490,15 @@ def main():
version, 'rustdesk-%s.dmg' % version)
if pa:
os.system('''
+ # https://pyoxidizer.readthedocs.io/en/apple-codesign-0.14.0/apple_codesign.html
+ # https://pyoxidizer.readthedocs.io/en/stable/tugger_code_signing.html
+ # https://developer.apple.com/developer-id/
+ # goto xcode and login with apple id, manager certificates (Developer ID Application and/or Developer ID Installer) online there (only download and double click (install) cer file can not export p12 because no private key)
#rcodesign sign --p12-file ~/.p12/rustdesk-developer-id.p12 --p12-password-file ~/.p12/.cert-pass --code-signature-flags runtime ./rustdesk-{1}.dmg
codesign -s "Developer ID Application: {0}" --force --options runtime ./rustdesk-{1}.dmg
- # https://pyoxidizer.readthedocs.io/en/latest/apple_codesign_rcodesign.html
+ # https://appstoreconnect.apple.com/access/api
+ # https://gregoryszorc.com/docs/apple-codesign/0.16.0/apple_codesign_rcodesign.html#notarizing-and-stapling
+ # p8 file is generated when you generate api key, download and put it under ~/.private_keys/
rcodesign notarize --api-issuer {2} --api-key {3} --staple ./rustdesk-{1}.dmg
# verify: spctl -a -t exec -v /Applications/RustDesk.app
'''.format(pa, version, os.environ.get('api-issuer'), os.environ.get('api-key')))
diff --git a/build.rs b/build.rs
index 67e40752c..ade63f0bc 100644
--- a/build.rs
+++ b/build.rs
@@ -1,9 +1,16 @@
#[cfg(windows)]
fn build_windows() {
- cc::Build::new().file("src/windows.cc").compile("windows");
+ let file = "src/platform/windows.cc";
+ cc::Build::new().file(file).compile("windows");
println!("cargo:rustc-link-lib=WtsApi32");
- println!("cargo:rerun-if-changed=build.rs");
- println!("cargo:rerun-if-changed=windows.cc");
+ println!("cargo:rerun-if-changed={}", file);
+}
+
+#[cfg(target_os = "macos")]
+fn build_mac() {
+ let file = "src/platform/macos.mm";
+ cc::Build::new().file(file).compile("macos");
+ println!("cargo:rerun-if-changed={}", file);
}
#[cfg(all(windows, feature = "inline"))]
@@ -117,5 +124,8 @@ fn main() {
#[cfg(windows)]
build_windows();
#[cfg(target_os = "macos")]
+ build_mac();
+ #[cfg(target_os = "macos")]
println!("cargo:rustc-link-lib=framework=ApplicationServices");
+ println!("cargo:rerun-if-changed=build.rs");
}
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index f3165a684..31fd632e6 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -35,7 +35,7 @@ efforts from contributors on the same issue.
- Add tests relevant to the fixed bug or new feature.
-For specific git instructions, see [GitHub workflow 101](https://github.com/servo/servo/wiki/Github-workflow).
+For specific git instructions, see [GitHub workflow 101](https://github.com/servo/servo/wiki/GitHub-workflow).
## Conduct
diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt
index 966ad3df8..f78b3a20b 100644
--- a/fastlane/metadata/android/en-US/full_description.txt
+++ b/fastlane/metadata/android/en-US/full_description.txt
@@ -2,9 +2,9 @@ An open-source remote desktop application, the open source TeamViewer alternativ
Source code: https://github.com/rustdesk/rustdesk
Doc: https://rustdesk.com/docs/en/manual/mobile/
-In order for a remote device to control your Android device via mouse or touch, you need to allow RustDesk to use the "Accessibility" service, RustDesk uses AccessibilityService API to implement Addroid remote control.
+In order for a remote device to control your Android device via mouse or touch, you need to allow RustDesk to use the "Accessibility" service, RustDesk uses AccessibilityService API to implement Android remote control.
-In addtion to remote control, you can also transfer files between Android devices and PCs easily with RustDesk.
+In addition to remote control, you can also transfer files between Android devices and PCs easily with RustDesk.
You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, or self-hosting, or write your own rendezvous/relay server. Self-hosting server is free and open source: https://github.com/rustdesk/rustdesk-server
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
index 543fe8346..3668c7106 100644
Binary files a/fastlane/metadata/android/en-US/images/icon.png and b/fastlane/metadata/android/en-US/images/icon.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png
index 32e7b3554..e84ed4d21 100644
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png
index 0f9368545..5a83dc1f0 100644
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png
index b59279552..629631ac7 100644
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png differ
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png
index a4048ae69..39a15ba77 100644
Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png differ
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png
index 5d726ab36..5574ee7dc 100644
Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png differ
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/6.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/6.png
index 2c3fad113..8e0a83a6a 100644
Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/6.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/6.png differ
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/7.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/7.png
index 5873757f9..0618ae0b6 100644
Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/7.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/7.png differ
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/8.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/8.png
index faea2eb16..560902b03 100644
Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/8.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/8.png differ
diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt
new file mode 100644
index 000000000..effb820d6
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/full_description.txt
@@ -0,0 +1,11 @@
+Une application de bureau à distance open source, l'alternative open source à TeamViewer.
+Code source : https://github.com/rustdesk/rustdesk
+Doc : https://rustdesk.com/docs/en/manual/mobile/
+
+Pour qu'un appareil distant puisse contrôler votre appareil Android via la souris ou le toucher, vous devez autoriser RustDesk à utiliser le service "Accessibilité", RustDesk utilise l'API AccessibilityService pour implémenter la télécommande Addroid.
+
+En plus du contrôle à distance, vous pouvez également transférer facilement des fichiers entre des appareils Android et des PC avec RustDesk.
+
+Vous avez le contrôle total de vos données, sans aucun souci de sécurité. Vous pouvez utiliser notre serveur de rendez-vous/relais, ou l'auto-hébergement, ou écrire votre propre serveur de rendez-vous/relais. Le serveur auto-hébergé est gratuit et open source : https://github.com/rustdesk/rustdesk-server
+
+Veuillez télécharger et installer la version de bureau à partir de : https://rustdesk.com, vous pourrez alors accéder et contrôler votre bureau à partir de votre mobile, ou contrôler votre mobile à partir du bureau.
diff --git a/fastlane/metadata/android/fr-FR/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt
new file mode 100644
index 000000000..e1f4b4b0f
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/short_description.txt
@@ -0,0 +1 @@
+Une application de bureau à distance open source, l'alternative open source à TeamViewer.
diff --git a/flutter/.gitignore b/flutter/.gitignore
index 3cbfc0f54..9c7e52c12 100644
--- a/flutter/.gitignore
+++ b/flutter/.gitignore
@@ -54,3 +54,4 @@ lib/generated_bridge.freezed.dart
flutter_export_environment.sh
Flutter-Generated.xcconfig
key.jks
+macos/rustdesk.xcodeproj/project.xcworkspace/
diff --git a/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index b3dc255d5..d5d2c49c8 100644
Binary files a/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/flutter/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index f24291dbf..e30cc5019 100644
Binary files a/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/flutter/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 8a4e80f53..41ccba607 100644
Binary files a/flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/flutter/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 8bb8d570f..c10349d71 100644
Binary files a/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/flutter/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 2130526a6..52fde7830 100644
Binary files a/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/flutter/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/flutter/assets/kb_layout_iso.svg b/flutter/assets/kb_layout_iso.svg
new file mode 100644
index 000000000..69f0c96cb
--- /dev/null
+++ b/flutter/assets/kb_layout_iso.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/flutter/assets/kb_layout_not_iso.svg b/flutter/assets/kb_layout_not_iso.svg
new file mode 100644
index 000000000..09a055be3
--- /dev/null
+++ b/flutter/assets/kb_layout_not_iso.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/flutter/assets/logo.png b/flutter/assets/logo.png
index f854a1dc3..ede0e00c4 100644
Binary files a/flutter/assets/logo.png and b/flutter/assets/logo.png differ
diff --git a/flutter/build_android_deps.sh b/flutter/build_android_deps.sh
index f120346cf..a30abd154 100755
--- a/flutter/build_android_deps.sh
+++ b/flutter/build_android_deps.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# Build libyuv / opus / libvpx / oboe for Android
-# Required:
+# Build libyuv / opus / libvpx / oboe for Android
+# Required:
# 1. set VCPKG_ROOT / ANDROID_NDK path environment variables
# 2. vcpkg initialized
# 3. ndk, version: 22 (if ndk < 22 you need to change LD as `export LD=$TOOLCHAIN/bin/$NDK_LLVM_TARGET-ld`)
@@ -23,7 +23,7 @@ HOST_TAG="linux-x86_64" # current platform, set as `ls $ANDROID_NDK/toolchains/l
TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/$HOST_TAG
function build {
- ANDROID_ABI=$1
+ ANDROID_ABI=$1
VCPKG_TARGET=$2
NDK_LLVM_TARGET=$3
LIBVPX_TARGET=$4
@@ -111,15 +111,15 @@ patch -N -d build/oboe -p1 < ../src/oboe.patch
# x86_64-linux-android
# i686-linux-android
-# LIBVPX_TARGET :
-# arm64-android-gcc
-# armv7-android-gcc
+# LIBVPX_TARGET :
+# arm64-android-gcc
+# armv7-android-gcc
# x86_64-android-gcc
-# x86-android-gcc
+# x86-android-gcc
# args: ANDROID_ABI VCPKG_TARGET NDK_LLVM_TARGET LIBVPX_TARGET
build arm64-v8a arm64-android aarch64-linux-android arm64-android-gcc
-build armeabi-v7a arm-android arm-linux-androideabi armv7-android-gcc
+build armeabi-v7a arm-android arm-linux-androideabi armv7-android-gcc
# rm -rf build/libvpx
# rm -rf build/oboe
\ No newline at end of file
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
index d4ae9af18..c35862a8c 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
index 61c13f60b..900bd13fa 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
index ed67c27ad..5fc34ce9a 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
index f974850af..ab315a4c6 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
index ff419814d..6d69c01e1 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
index b3cdc7920..b6c8034cd 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
index 15b2e086d..cf6c7c775 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
index ed67c27ad..5fc34ce9a 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
index 94665b74e..6928a4e6d 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
index 3cf8a0dc2..a13129e15 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
index 3cf8a0dc2..a13129e15 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
index 6e21d8ee9..319e70f91 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
index 01047f4be..229bdf563 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
index ceb721793..caffb26a3 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
index e416e5517..751104548 100644
Binary files a/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/flutter/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart
index 0f5502f54..9faa06d36 100644
--- a/flutter/lib/common.dart
+++ b/flutter/lib/common.dart
@@ -46,7 +46,7 @@ var isWebDesktop = false;
var version = "";
int androidVersion = 0;
-/// only avaliable for Windows target
+/// only available for Windows target
int windowsBuildNumber = 0;
DesktopType? desktopType;
@@ -99,22 +99,28 @@ class IconFont {
class ColorThemeExtension extends ThemeExtension {
const ColorThemeExtension({
required this.border,
+ required this.highlight,
});
final Color? border;
+ final Color? highlight;
static const light = ColorThemeExtension(
border: Color(0xFFCCCCCC),
+ highlight: Color(0xFFE5E5E5),
);
static const dark = ColorThemeExtension(
border: Color(0xFF555555),
+ highlight: Color(0xFF3F3F3F),
);
@override
- ThemeExtension copyWith({Color? border}) {
+ ThemeExtension copyWith(
+ {Color? border, Color? highlight}) {
return ColorThemeExtension(
border: border ?? this.border,
+ highlight: highlight ?? this.highlight,
);
}
@@ -126,6 +132,7 @@ class ColorThemeExtension extends ThemeExtension {
}
return ColorThemeExtension(
border: Color.lerp(border, other.border, t),
+ highlight: Color.lerp(highlight, other.highlight, t),
);
}
}
@@ -223,7 +230,7 @@ class MyTheme {
bind.mainSetLocalOption(
key: kCommConfKeyTheme, value: mode.toShortString());
}
- bind.mainChangeTheme(dark: currentThemeMode().toShortString());
+ bind.mainChangeTheme(dark: mode.toShortString());
}
}
@@ -970,11 +977,13 @@ Future matchPeer(String searchText, Peer peer) async {
/// Get the image for the current [platform].
Widget getPlatformImage(String platform, {double size = 50}) {
- platform = platform.toLowerCase();
- if (platform == 'mac os') {
+ if (platform == kPeerPlatformMacOS) {
platform = 'mac';
- } else if (platform != 'linux' && platform != 'android') {
+ } else if (platform != kPeerPlatformLinux &&
+ platform != kPeerPlatformAndroid) {
platform = 'win';
+ } else {
+ platform = platform.toLowerCase();
}
return SvgPicture.asset('assets/$platform.svg', height: size, width: size);
}
@@ -1360,13 +1369,13 @@ connect(BuildContext context, String id,
}
}
-Future