From 92be77cf882eb4bd584fd68ccf846c3070ed3ec5 Mon Sep 17 00:00:00 2001 From: kingtous Date: Tue, 19 Apr 2022 13:55:06 +0800 Subject: [PATCH 1/7] add: snap stage deps --- snap/snapcraft.yaml | 140 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 snap/snapcraft.yaml diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 000000000..e2bcfcb02 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,140 @@ +name: rustdesk +version: git +summary: rustdesk +description: | + rustdesk + +base: core18 +confinement: strict +grade: stable + +plugs: + gsettings: + gtk-3-themes: + interface: content + target: $SNAP/data-dir/themes + default-provider: gtk-common-themes + icon-themes: + interface: content + target: $SNAP/data-dir/icons + default-provider: gtk-common-themes + sound-themes: + interface: content + target: $SNAP/data-dir/sounds + default-provider: gtk-common-themes + +parts: + vcpkg-packages: + plugin: nil + build-packages: + - git + - curl + - unzip + - zip + - tar + build-environment: + - PATH: ${SNAPCRAFT_PART_SRC}/vcpkg:$PATH + override-pull: | + git clone https://github.com/Microsoft/vcpkg.git --depth=1 + ./vcpkg/bootstrap-vcpkg.sh + vcpkg install libyuv libvpx opus + + sciter-deps: + plugin: nil + build-packages: + - curl + override-pull: | + curl "https://file.kingtous.cn/index.php?user/publicLink&fid=bf25NxrI-o-SK99uC4xe6DZYXrfpDl981YbdQY1C0DmSqUPlNjgWS6EgQLhgD_1zPPtTbMhNWXr0U1jUTpZP95kAjhg0DXH3bQde8_0mBf405Ondp06D&file_name=/libsciter-gtk.so" -o libsciter-gtk.so + override-build: | + mkdir -p ${SNAPCRAFT_PART_INSTALL}/usr/lib/rustdesk/ + cp ${SNAPCRAFT_PART_SRC}/libsciter-gtk.so ${SNAPCRAFT_PART_INSTALL}/usr/lib/rustdesk/ + + rustdesk: + plugin: rust + source: . + build-environment: + - VCPKG_ROOT: ${SNAPCRAFT_PART_SRC}/../../vcpkg-packages/src/vcpkg + - PATH: ${SNAPCRAFT_PART_SRC}/../../vcpkg-packages/src/vcpkg:$PATH + rust-features: + - inline + build-packages: + - 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 + stage-packages: + - libssl1.1 + - libasound2 + - libpulse0 + - libatk-bridge2.0-0 + - libgtk-3-0 + - libxcb-randr0 + - libxdo3 + - libxfixes3 + - libxcb-shape0 + - libxcb-xfixes0 + - libxkbcommon0 + - adwaita-icon-theme + - libcanberra-gtk-module + - libgdk-pixbuf2.0-0 + - libglib2.0-bin + - xdg-user-dirs + - shared-mime-info + - light-themes + - dmz-cursor-theme + - gnome-themes-standard + - ttf-ubuntu-font-family + after: + - vcpkg-packages + + rustdesk-files: + plugin: nil + override-pull: | + mkdir -p ${SNAPCRAFT_PART_INSTALL}/usr/share/rustdesk/files/systemd/ + cp ${SNAPCRAFT_PART_SRC}/../../rustdesk/src/pynput_service.py ${SNAPCRAFT_PART_INSTALL}/usr/share/rustdesk/files/ + cp ${SNAPCRAFT_PART_SRC}/../../rustdesk/src/rustdesk.service ${SNAPCRAFT_PART_INSTALL}/usr/share/rustdesk/files/systemd/ + + python3-deps: + plugin: python + python-packages: + - pynput + +layout: + /usr/share/rustdesk: + bind: $SNAP/usr/share/rustdesk + /usr/lib/rustdesk: + bind: $SNAP/usr/lib/rustdesk + +apps: + rustdesk: + command: bin/rustdesk + plugs: + - network + - audio-playback + - audio-record + - home + - x11 + - opengl + - wayland + - desktop + - desktop-legacy + - pulseaudio + - gsettings + - unity7 + rustdesk-service: + command: bin/rustdesk --service + daemon: simple + From 8f4adab3c8f79f3cef94cd6544f1dec0b5f8ffb7 Mon Sep 17 00:00:00 2001 From: kingtous Date: Tue, 19 Apr 2022 14:46:18 +0800 Subject: [PATCH 2/7] feat: snapcraft files --- .github/workflows/snap-ci.yml | 30 ++++++++++++++++++++++++++++++ snap/gui/rustdesk.desktop | 20 ++++++++++++++++++++ snap/gui/rustdesk.png | Bin 0 -> 3042 bytes snap/snapcraft.yaml | 21 ++++++++++++++++++++- 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/snap-ci.yml create mode 100644 snap/gui/rustdesk.desktop create mode 100644 snap/gui/rustdesk.png diff --git a/.github/workflows/snap-ci.yml b/.github/workflows/snap-ci.yml new file mode 100644 index 000000000..a80b02f39 --- /dev/null +++ b/.github/workflows/snap-ci.yml @@ -0,0 +1,30 @@ +name: Snap CI + +on: + push: + branches: + - master + paths-ignore: + - README.md + tags: + - '*' + +jobs: + build-snap-master-package: + runs-on: ubuntu-18.04 + + steps: + - name: Check out Git repository + uses: actions/checkout@v2 + - name: Use Snapcraft + uses: snapcore/action-build@v1 + id: build + - uses: actions/upload-artifact@v2 + with: + name: rustdesk.snap + path: ${{ steps.build.outputs.snap }} + # - uses: snapcore/action-publish@v1 + # with: + # store_login: ${{ secrets.SNAP_TOKEN }} + # snap: ${{ steps.build.outputs.snap }} + # release: edge \ No newline at end of file diff --git a/snap/gui/rustdesk.desktop b/snap/gui/rustdesk.desktop new file mode 100644 index 000000000..c1e0aca1a --- /dev/null +++ b/snap/gui/rustdesk.desktop @@ -0,0 +1,20 @@ +[Desktop Entry] +Version=1.0 +Name=RustDesk +GenericName=Remote Desktop +Comment=Remote Desktop +Exec=rustdesk %u +Icon=${SNAP}/meta/gui/rustdesk.png +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Other; +Keywords=internet; +Actions=new-window; + +X-Desktop-File-Install-Version=0.23 + +[Desktop Action new-window] +Name=Open a New Window + diff --git a/snap/gui/rustdesk.png b/snap/gui/rustdesk.png new file mode 100644 index 0000000000000000000000000000000000000000..3da699f1d711a027e315d45dc5ada04bdfa2e114 GIT binary patch literal 3042 zcmb7`_dnH-ATYsJmXs0dftTV$m2vLltusLV@J!Yv~s*A?DY zT{GKF;ws5XlDs~B|Ag=3aUPH7`SJO~`QfD5TA$(K5aj>>fXl+%LtXQbS2dK{ z1|3U;#+Xp>OX%|kH1iF5*b7C!hLkfPgKX%0DP)ufwN688KOyEe)c6syD~7Z)A<7t( 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 Date: Tue, 19 Apr 2022 14:46:46 +0800 Subject: [PATCH 3/7] add: snap info --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index fe6520f7a..17a63417d 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,30 @@ target/release/rustdesk Please ensure that you are running these commands from the root of the RustDesk repository, otherwise the application may be unable to find the required resources. Also note that other cargo subcommands such as `install` or `run` are not currently supported via this method as they would install or run the program inside the container instead of the host. +## How to build and run with Snap + +Begin by cloning the repository and make sure snapcraft is installed in your Linux. + +```sh +git clone https://github.com/rustdesk/rustdesk +# if snapcraft is installed, please skip this +sudo snap install snapcraft --classic +# build rustdesk snap package +snapcraft --use-lxd +# install rustdesk snap package, `--dangerous` flag must exists if u manually build and install rustdesk +sudo snap install rustdesk_xxx.snap --dangerous +``` + +Note: Some of interfaces needed by RustDesk cannot automatically connected by Snap. Please **manually** connect them by executing: +```sh +# record system audio +snap connect rustdesk:audio-record +# observe loginctl session +snap connect rustdesk:system-observe +``` + +After steps above, RustDesk can be found in System App Menu. + ## File Structure - **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs functions for file transfer, and some other utility functions From 88107f342d766253ee5e0dac270b6158d55b65a7 Mon Sep 17 00:00:00 2001 From: kingtous Date: Tue, 19 Apr 2022 14:57:37 +0800 Subject: [PATCH 4/7] fix: change loginctl priviledge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 17a63417d..f3223c8cd 100644 --- a/README.md +++ b/README.md @@ -158,7 +158,7 @@ Note: Some of interfaces needed by RustDesk cannot automatically connected by Sn # record system audio snap connect rustdesk:audio-record # observe loginctl session -snap connect rustdesk:system-observe +snap connect rustdesk:login-session-observe ``` After steps above, RustDesk can be found in System App Menu. From f000d0c4ca8d1deaaab343661d1d5973d9de8c9f Mon Sep 17 00:00:00 2001 From: kingtous Date: Tue, 19 Apr 2022 15:10:15 +0800 Subject: [PATCH 5/7] fix: override pull to inline sciter --- snap/snapcraft.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 6e95bf5e3..c2627f23d 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -44,7 +44,7 @@ parts: build-packages: - curl override-pull: | - curl "https://file.kingtous.cn/index.php?user/publicLink&fid=bf25NxrI-o-SK99uC4xe6DZYXrfpDl981YbdQY1C0DmSqUPlNjgWS6EgQLhgD_1zPPtTbMhNWXr0U1jUTpZP95kAjhg0DXH3bQde8_0mBf405Ondp06D&file_name=/libsciter-gtk.so" -o libsciter-gtk.so + curl "https://github.com/c-smile/sciter-sdk/raw/master/bin.lnx/x64/libsciter-gtk.so" -o libsciter-gtk.so override-build: | mkdir -p ${SNAPCRAFT_PART_INSTALL}/usr/lib/rustdesk/ cp ${SNAPCRAFT_PART_SRC}/libsciter-gtk.so ${SNAPCRAFT_PART_INSTALL}/usr/lib/rustdesk/ @@ -55,6 +55,9 @@ parts: build-environment: - VCPKG_ROOT: ${SNAPCRAFT_PART_SRC}/../../vcpkg-packages/src/vcpkg - PATH: ${SNAPCRAFT_PART_SRC}/../../vcpkg-packages/src/vcpkg:$PATH + override-pull: | + snapcraftctl pull + python3 inline-sciter.py rust-features: - inline build-packages: @@ -75,6 +78,7 @@ parts: - libasound2-dev - libpulse-dev - cmake + - python3 stage-packages: - libssl1.1 - libasound2 From 11086ffa495c04e5eea8477732ff48dd6dc9563c Mon Sep 17 00:00:00 2001 From: kingtous Date: Tue, 19 Apr 2022 15:18:52 +0800 Subject: [PATCH 6/7] fix: libsciter download url --- snap/snapcraft.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index c2627f23d..4b9a82005 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -44,7 +44,7 @@ parts: build-packages: - curl override-pull: | - curl "https://github.com/c-smile/sciter-sdk/raw/master/bin.lnx/x64/libsciter-gtk.so" -o libsciter-gtk.so + curl "https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so" -o libsciter-gtk.so override-build: | mkdir -p ${SNAPCRAFT_PART_INSTALL}/usr/lib/rustdesk/ cp ${SNAPCRAFT_PART_SRC}/libsciter-gtk.so ${SNAPCRAFT_PART_INSTALL}/usr/lib/rustdesk/ From fef8b0f246da6efe2d865bd0bd4577720f372161 Mon Sep 17 00:00:00 2001 From: kingtous Date: Tue, 19 Apr 2022 16:45:03 +0800 Subject: [PATCH 7/7] opt: README.md snap connect pulseaudio --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f3223c8cd..657488be0 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,7 @@ Note: Some of interfaces needed by RustDesk cannot automatically connected by Sn ```sh # record system audio snap connect rustdesk:audio-record +snap connect rustdesk:pulseaudio # observe loginctl session snap connect rustdesk:login-session-observe ```