From 33860688ef77baa6712efd3f219cc9bdc26b7fb1 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:10:12 +0300 Subject: [PATCH 1/5] WIP AppImage CI --- .github/workflows/build_linux.yml | 50 ++++++++++++++++++++++++++++++ .gitignore | 20 ++++++++++++ ZeroTierIcon.png | Bin 29866 -> 22571 bytes pkg/AppImage/AppImage.sh | 34 ++++++++++++++++++++ pkg/git/PKGBUILD | 37 ++++++++++++++++++++++ 5 files changed, 141 insertions(+) create mode 100644 .github/workflows/build_linux.yml create mode 100755 pkg/AppImage/AppImage.sh create mode 100644 pkg/git/PKGBUILD diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml new file mode 100644 index 00000000..76f2dc1c --- /dev/null +++ b/.github/workflows/build_linux.yml @@ -0,0 +1,50 @@ +name: Build Arch Package & AppImage (Git) + +on: + workflow_dispatch: + +jobs: + build: + name: Build with makepkg + runs-on: ubuntu-latest + + container: + image: archlinux:latest + + steps: + - name: Install base dependencies + run: | + pacman -Syu --noconfirm archlinux-keyring + pacman -Syu --noconfirm base-devel git sudo wget zsync + + - name: Create build user + run: | + useradd -m builder + echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Fix permissions + run: chown -R builder:builder . + + - name: Build package (makepkg -si) + run: | + sudo -u builder bash <<'EOF' + set -e + cd pkg/git + makepkg -si --noconfirm + cp *.pkg.tar.zst ../AppImage/ + cd ../AppImage/ + tar -xvf $(ls *.pkg.tar.zst | grep -v debug) + chmod +x AppImage.sh + ./AppImage.sh + EOF + + - name: Upload package artifact + uses: actions/upload-artifact@v4 + with: + name: arch-package + path: | + pkg/GIT/*.pkg.tar.zst + pkg/AppImage/dist/*.AppImage diff --git a/.gitignore b/.gitignore index 42c3a894..18431afb 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,23 @@ *.exe *.deb .vscode/ +.kate-swp + +# git dir +pkg/git/*.tar.zst +pkg/git/pkg +pkg/git/src +pkg/git/cargo-home +pkg/git/DesktopUI + +# AppImage dir +pkg/AppImage/*.tar.zst +pkg/AppImage/.MTREE +pkg/AppImage/.PKGINFO +pkg/AppImage/.BUILDINFO +pkg/AppImage/usr/ +pkg/AppImage/AppDir/ +pkg/AppImage/quick-sharun + +# dist dir +pkg/AppImage/dist diff --git a/ZeroTierIcon.png b/ZeroTierIcon.png index b7f06d76ebfcbf835a0ee57f699590b1ce887f42..44c86c8cabb9b2f3d91dec45e164302524507628 100644 GIT binary patch literal 22571 zcmd3Og;!PI^Y*!y?rx+cr9-*|1f)YkI;2~=FI^HMO1HGMv~(#*cbC%L&F|dLcfJ3^ z%UUe%g?;wkGka$CGtbN=N=-!$3!NMt0068v@-i9#00mz{0aRr0$GO+!E%*cCsv#!@ znfuKa2);qIdZqjd0IK6L?oE-v_cZ468p;6R!w3MdPym3BhiwCZI~M@#ngD=s3ILEe zXEdvef`34BmVf680K^RNZ^#=B`eX2yC~j|*U!&|o2+?1lQwS|Af>Q!-WL~}Xn%`gY z^fKt3<3IM@v|rIm)^2SYY&FB2g`u&Z8$oHq_)Zf;69ke7Y5Z6caHY^~oTOl(YKC0T zprjvtD{I*GTRm;+9x`qo6O=J}t+aG}pDHjoqCMDSEk_o4t%i94y#MdNVr_$!xr9lx zv)QRq1Hw~;OAOh5DIf$xqJ~w_8W?d2c_I@gDOF6hq>$-oZFu=gzA>`vy_G^M`G(tE zp%{~ZuP_ja_l1}x6hiw_QW6!-;umu$%v2s#S@H!M0#pi(RLYt>lq)GT0S4nrN<^2E zB9#gW<-xRJX1IN7$Cr|)4GYc!u znXPys5W$!P%_)0sT=wy?QVSnf;T3sD%abZIk6-0bpf5>9Vi&w6p_#{GSnz*Q(%OIgBP^*!87*IW_i;Iafo1fY z6_PJze89;+9bQQ;pr=TJ!<4EvGT-xG1&o2$l!DBYft`?AG=JGi_^ZGLYh_tJU~wvN%o`Wsli}d*za)(hVS29 z_ffOViSRh}!y~tKYl0=S*Q8J@tQ_c0ZR0;U`P6tGPN!G4(sf;$0;FF ck#RTn(+ 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

DHcK#ub$QIt| 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 Q=l393nj_2_Og-=Y4>VzSC;$Ke literal 29866 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 diff --git a/pkg/AppImage/AppImage.sh b/pkg/AppImage/AppImage.sh new file mode 100755 index 00000000..daf05f28 --- /dev/null +++ b/pkg/AppImage/AppImage.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# You might need to restart your pc if sharun doesn't create `AppDir` in this directory (It should create dirs on its own) + +# Run git.yml and extract the pkg.tar.zst generated from that to the folder this .sh file is in. As a result a folder named `usr` should be in the same folder as this script. +set -eu + +ARCH="$(uname -m)" +SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/753b3ba3c77a573f8c2eeb0b397752df2d3235df/useful-tools/quick-sharun.sh" + +export ADD_HOOKS="self-updater.bg.hook" +#export UPINFO="gh-releases-zsync|${GITHUB_REPOSITORY%/*}|${GITHUB_REPOSITORY#*/}|latest|*$ARCH.AppImage.zsync" +export OUTNAME=zerotier-desktop-ui-anylinux-"$ARCH".AppImage +export DESKTOP=./usr/share/applications/zerotier-ui.desktop +export ICON=./usr/share/icons/hicolor/512x512/apps/zerotier.png +export OUTPATH=./dist +export DEPLOY_OPENGL=0 +export DEPLOY_VULKAN=0 +export DEPLOY_DOTNET=0 + +#Remove leftovers +rm -rf AppDir dist appinfo + +# ADD LIBRARIES +wget --retry-connrefused --tries=30 "$SHARUN" -O ./quick-sharun +chmod +x ./quick-sharun + +# Point to binaries +./quick-sharun ./usr/bin/zerotier_desktop_ui + +# Make AppImage +./quick-sharun --make-appimage + +echo "All Done!" diff --git a/pkg/git/PKGBUILD b/pkg/git/PKGBUILD new file mode 100644 index 00000000..c6b05771 --- /dev/null +++ b/pkg/git/PKGBUILD @@ -0,0 +1,37 @@ +# Maintainer: awumii + +: ${CARGO_HOME:=$SRCDEST/cargo-home} +: ${CARGO_TARGET_DIR:=target} +: ${RUSTUP_TOOLCHAIN:=stable} +export CARGO_HOME CARGO_TARGET_DIR RUSTUP_TOOLCHAIN + +pkgname=zerotier-desktop-ui-git +pkgver=1.8.4.r103.gb2a7a30 +pkgrel=1 +pkgdesc='Official ZeroTier Desktop Tray Application and UI' +url='https://github.com/zerotier/DesktopUI' +source=('git+https://github.com/zerotier/DesktopUI.git') +arch=('any') +license=('MPL2') +makedepends=('rust' 'meson' 'git' 'perl' 'nasm') +depends=('zerotier-one' 'libappindicator-gtk3' 'gtk3' 'glib2') +conflicts=('zerotier-desktop-ui') +options=('!lto') +sha256sums=(SKIP) + +build () { + cd DesktopUI + make official +} + +package() { + cd DesktopUI + install -Dm755 release/release/zerotier_desktop_ui "${pkgdir}/usr/bin/zerotier_desktop_ui" + install -Dm644 zerotier-ui.desktop "${pkgdir}/usr/share/applications/zerotier-ui.desktop" + install -Dm644 ZeroTierIcon.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/zerotier.png" +} + +pkgver() { + cd DesktopUI + git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' +} From 09996dc779cfc951527a459d6cfda0f08f5964cb Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:23:02 +0300 Subject: [PATCH 2/5] forgot to add this as dependency --- pkg/git/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/git/PKGBUILD b/pkg/git/PKGBUILD index c6b05771..93f2e562 100644 --- a/pkg/git/PKGBUILD +++ b/pkg/git/PKGBUILD @@ -14,7 +14,7 @@ source=('git+https://github.com/zerotier/DesktopUI.git') arch=('any') license=('MPL2') makedepends=('rust' 'meson' 'git' 'perl' 'nasm') -depends=('zerotier-one' 'libappindicator-gtk3' 'gtk3' 'glib2') +depends=('zerotier-one' 'libappindicator-gtk3' 'libayatana-appindicator' 'gtk3' 'glib2') conflicts=('zerotier-desktop-ui') options=('!lto') sha256sums=(SKIP) From 416e517b952193a28a5276e66bb0ec020a7b0c42 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:36:30 +0300 Subject: [PATCH 3/5] fix path --- .github/workflows/build_linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 76f2dc1c..dac2d9b5 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -46,5 +46,5 @@ jobs: with: name: arch-package path: | - pkg/GIT/*.pkg.tar.zst + pkg/git/*.pkg.tar.zst pkg/AppImage/dist/*.AppImage From 549a93a5bd7d721c616ad716aa13972aa8a44fd7 Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Tue, 20 Jan 2026 16:02:01 +0300 Subject: [PATCH 4/5] Misc fixes - Rename logo to make it fit standards + update fpm config for the name change - Make CI just use installed stuff (binary,icon,desktop file) + use latest sharun + remove leftovers - Fix mistake in .gitignore - Replace the email of the previous maintainer with mine - Add Network to .desktop file - Add StartupWMClass to the .desktop file so sharun stops complaining --- .fpm | 2 +- .github/workflows/build_linux.yml | 2 -- .gitignore | 2 +- pkg/AppImage/AppImage.sh | 11 ++++------- pkg/git/PKGBUILD | 6 +++--- zerotier-ui.desktop | 8 +++++--- ZeroTierIcon.png => zerotier.png | Bin 7 files changed, 14 insertions(+), 17 deletions(-) rename ZeroTierIcon.png => zerotier.png (100%) diff --git a/.fpm b/.fpm index c94efa12..25f71b4a 100644 --- a/.fpm +++ b/.fpm @@ -5,5 +5,5 @@ --url "https://www.zerotier.com" --maintainer "ZeroTier, Inc " -target/release/zerotier_desktop_ui=/usr/bin/zerotier_desktop_ui ZeroTierIcon.png=/usr/share/zerotier/ZeroTierIcon.png zerotier-ui.desktop=/usr/share/applications/zerotier-ui.desktop +target/release/zerotier_desktop_ui=/usr/bin/zerotier_desktop_ui zerotier.png=/usr/share/icons/hicolor/512x512/apps/zerotier.png zerotier-ui.desktop=/usr/share/applications/zerotier-ui.desktop diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index dac2d9b5..8e285fc7 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -34,9 +34,7 @@ jobs: set -e cd pkg/git makepkg -si --noconfirm - cp *.pkg.tar.zst ../AppImage/ cd ../AppImage/ - tar -xvf $(ls *.pkg.tar.zst | grep -v debug) chmod +x AppImage.sh ./AppImage.sh EOF diff --git a/.gitignore b/.gitignore index 18431afb..74f27d7a 100644 --- a/.gitignore +++ b/.gitignore @@ -13,7 +13,7 @@ *.exe *.deb .vscode/ -.kate-swp +*.kate-swp # git dir pkg/git/*.tar.zst diff --git a/pkg/AppImage/AppImage.sh b/pkg/AppImage/AppImage.sh index daf05f28..486ec80a 100755 --- a/pkg/AppImage/AppImage.sh +++ b/pkg/AppImage/AppImage.sh @@ -6,17 +6,14 @@ set -eu ARCH="$(uname -m)" -SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/753b3ba3c77a573f8c2eeb0b397752df2d3235df/useful-tools/quick-sharun.sh" +SHARUN="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/main/useful-tools/quick-sharun.sh" export ADD_HOOKS="self-updater.bg.hook" #export UPINFO="gh-releases-zsync|${GITHUB_REPOSITORY%/*}|${GITHUB_REPOSITORY#*/}|latest|*$ARCH.AppImage.zsync" export OUTNAME=zerotier-desktop-ui-anylinux-"$ARCH".AppImage -export DESKTOP=./usr/share/applications/zerotier-ui.desktop -export ICON=./usr/share/icons/hicolor/512x512/apps/zerotier.png +export DESKTOP=/usr/share/applications/zerotier-ui.desktop +export ICON=/usr/share/icons/hicolor/512x512/apps/zerotier.png export OUTPATH=./dist -export DEPLOY_OPENGL=0 -export DEPLOY_VULKAN=0 -export DEPLOY_DOTNET=0 #Remove leftovers rm -rf AppDir dist appinfo @@ -26,7 +23,7 @@ wget --retry-connrefused --tries=30 "$SHARUN" -O ./quick-sharun chmod +x ./quick-sharun # Point to binaries -./quick-sharun ./usr/bin/zerotier_desktop_ui +./quick-sharun /usr/bin/zerotier_desktop_ui # Make AppImage ./quick-sharun --make-appimage diff --git a/pkg/git/PKGBUILD b/pkg/git/PKGBUILD index 93f2e562..4e6d2c37 100644 --- a/pkg/git/PKGBUILD +++ b/pkg/git/PKGBUILD @@ -1,4 +1,4 @@ -# Maintainer: awumii +# Maintainer: twig : ${CARGO_HOME:=$SRCDEST/cargo-home} : ${CARGO_TARGET_DIR:=target} @@ -14,7 +14,7 @@ source=('git+https://github.com/zerotier/DesktopUI.git') arch=('any') license=('MPL2') makedepends=('rust' 'meson' 'git' 'perl' 'nasm') -depends=('zerotier-one' 'libappindicator-gtk3' 'libayatana-appindicator' 'gtk3' 'glib2') +depends=('zerotier-one' 'webkit2gtk' 'libappindicator-gtk3' 'libayatana-appindicator' 'gtk3' 'glib2') conflicts=('zerotier-desktop-ui') options=('!lto') sha256sums=(SKIP) @@ -28,7 +28,7 @@ package() { cd DesktopUI install -Dm755 release/release/zerotier_desktop_ui "${pkgdir}/usr/bin/zerotier_desktop_ui" install -Dm644 zerotier-ui.desktop "${pkgdir}/usr/share/applications/zerotier-ui.desktop" - install -Dm644 ZeroTierIcon.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/zerotier.png" + install -Dm644 zerotier.png "${pkgdir}/usr/share/icons/hicolor/512x512/apps/zerotier.png" } pkgver() { diff --git a/zerotier-ui.desktop b/zerotier-ui.desktop index 7b8ab03f..c0058543 100644 --- a/zerotier-ui.desktop +++ b/zerotier-ui.desktop @@ -2,6 +2,8 @@ Type=Application Encoding=UTF-8 Name=ZeroTier UI -Exec=/usr/bin/zerotier_desktop_ui -Icon=/usr/share/zerotier/ZeroTierIcon.png -Categories=System; +Exec=zerotier_desktop_ui +StartupWMClass=zerotier_desktop_ui +Terminal=false +Icon=zerotier +Categories=Network;System; diff --git a/ZeroTierIcon.png b/zerotier.png similarity index 100% rename from ZeroTierIcon.png rename to zerotier.png From 0b5f3bd3f4ae92fd7c5186884af69f10ca0fb52b Mon Sep 17 00:00:00 2001 From: Twig6943 <119701717+Twig6943@users.noreply.github.com> Date: Tue, 20 Jan 2026 16:53:04 +0300 Subject: [PATCH 5/5] Add in "StartupNotify=false" --- zerotier-ui.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/zerotier-ui.desktop b/zerotier-ui.desktop index c0058543..5eb655d9 100644 --- a/zerotier-ui.desktop +++ b/zerotier-ui.desktop @@ -3,6 +3,7 @@ Type=Application Encoding=UTF-8 Name=ZeroTier UI Exec=zerotier_desktop_ui +StartupNotify=false StartupWMClass=zerotier_desktop_ui Terminal=false Icon=zerotier