xtool-studio
The Windows installer is downloaded from storage.atomm.com (a non-standard CDN, not the official xtool.com domain) and a prebuilt binary 'algo-server-linux-x64' is bundled locally with no upstream URL — both are unverifiable artifacts that could be silently swapped; however checksums are provided for all sources, reducing (but not eliminating) the supply-chain risk from the unofficial CDN host.
Triggered rules
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:56
"$_installer::https://storage.atomm.com/efficacy/atomm-package/packages/109/afffecbb-38d7-40ed-8bba-7e7acee5c18c/$_installer"
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
llm_review
An AI model (anthropic/claude-sonnet-4.6) reviewed this and agrees it is MEDIUM (confidence 65%): The Windows installer is downloaded from storage.atomm.com (a non-standard CDN, not the official xtool.com domain) and a prebuilt binary 'algo-server-linux-x64' is bundled locally with no upstream URL — both are unverifiable artifacts that could be silently swapped; however checksums are provided for all sources, reducing (but not eliminating) the supply-chain risk from the unofficial CDN host.
PKGBUILD
1 offending line(s) highlighted# Maintainer: crazykay <mail@crazykay.dev>
#
# xTool Studio is a proprietary Electron application that upstream ships for
# Windows and macOS only. This package repacks the *official* Windows installer
# (downloaded at build time, never redistributed here) into a native Linux
# application and applies the port patches kept in build.sh / tools/:
#
# * runs the app on the official Electron 36.2.0 Linux runtime (bundled, so
# the exact tested combination is guaranteed)
# * swaps the two Windows-only native modules for their published Linux
# N-API prebuilds and replaces the private @atomm-studio/system-rs addon
# with a pure-JS implementation of the same API
# * makes forked service workers tolerant of stdio EPIPE
# * fixes the vendored kill-port helper, which otherwise SIGKILLs the
# discover worker (and with it device discovery) on Linux
# * runs the closed-source algorithm worker (toolpath generation) under Wine,
# bridged from the AF_UNIX socket the app expects to a Win32 named pipe
# * pins GTK 3, because Chromium 136 initialises GTK4 next to GTK3 and aborts
#
# See README.md in the packaging repository for the full analysis.
pkgname=xtool-studio
pkgver=1.9.11
pkgrel=1
pkgdesc='Design and control software for xTool laser machines (Linux port of the official Windows build)'
keywords=('xtool' 'xsc' 'laser' 'engraver' 'cutter')
arch=('x86_64')
url='https://www.xtool.com/pages/software'
license=('LicenseRef-proprietary')
depends=(
# resolved from the bundled Electron binary's DT_NEEDED set
'alsa-lib' 'at-spi2-core' 'cairo' 'dbus' 'expat' 'glib2' 'gtk3' 'libcups'
'libx11' 'libxcb' 'libxcomposite' 'libxdamage' 'libxext' 'libxfixes'
'libxkbcommon' 'libxrandr' 'mesa' 'nspr' 'nss' 'pango'
# libudev for the usb prebuild (libusb itself is statically linked into it)
'systemd-libs'
# toolpaths are generated by the Windows-only algorithm worker under Wine
'wine'
)
optdepends=(
'xdg-utils: open links and reveal exported files'
'pipewire: WebRTC desktop sharing under Wayland'
)
makedepends=('7zip' 'asar' 'nodejs' 'npm' 'mingw-w64-gcc' 'python' 'unzip' 'curl' 'imagemagick')
install="$pkgname.install"
options=('!strip' '!debug')
_electron="electron-v36.2.0-linux-x64.zip"
_usb="usb-2.18.0.tgz"
_serialport="serialport-bindings-cpp-13.0.0.tgz"
# scoped packages: the registry tarball is named after the package, not the scope
_serialport_url="https://registry.npmjs.org/@serialport/bindings-cpp/-/bindings-cpp-13.0.0.tgz"
_installer="xTool-Studio-x64-${pkgver}.exe"
source=(
"$_installer::https://storage.atomm.com/efficacy/atomm-package/packages/109/afffecbb-38d7-40ed-8bba-7e7acee5c18c/$_installer"
"$_electron::https://github.com/electron/electron/releases/download/v36.2.0/$_electron"
"$_usb::https://registry.npmjs.org/usb/-/$_usb"
"$_serialport::$_serialport_url"
'build.sh'
'algo-ipc-bridge.c'
'algo-server-linux-x64'
'worker-stdio-guard.js'
'xtool-studio.desktop'
'system-rs-index.js'
'system-rs-index.d.ts'
'xtool-studio.install'
)
sha256sums=(
'3a2436980a9a6cfea6b7c75ffb34b2f4f8b8ed1966880e8cfb0002573954ac41'
'013dface80733221d4153aaf538e8969b93f50d68798d7de2425d5e758e6956b'
'3c3cf0f22f33bbbb7f1a5239224c0920fadb43a05ded293c89e12c60aae437aa'
'68bc2ce6a4b3be82d76d708d1467c6adf2be878fefe09c499017b6273c3f024d'
'33cc8c373bf036be5cea61ee0935a0e26dda144ad43f8c571566b52e62f834c9'
'4f1c5c9e287137d87604c69f623613f062f478030a4c24ea675cc9444904b423'
'4f276f4873aaf83c619d1d2652d5f90c8b01e0b328c3d2e3508805a56b3b0e8a'
'ef4cd570d5bf5b3014cf064c14bd7b2230199700c322ec7836ec34fb6d677d47'
'54768ec658e1cc182ea0e3e4c27af2de0b0ace8d8a9da4644c88a792500f0de2'
'5eab99f2f881d204ec8b6c2a692d133bc1a3e2614c6fa6b83938d7f13bc67e44'
'e7874a7c1c538749c3bf73942b7f70f8a44f8abb0a1e1ae7183fd370325b4881'
'3996455eb6d0d4de4f410aba36841dbd1c3276268e5ad2d0fa11003d580223ac'
)
build() {
# build.sh expects <root>/{build.sh,tools/} plus the four upstream archives.
cd "$srcdir"
APP_VER="$pkgver" \
INSTALLER="$srcdir/$_installer" \
ELECTRON_ZIP_PATH="$srcdir/$_electron" \
USB_TGZ="$srcdir/$_usb" \
SERIALPORT_TGZ="$srcdir/$_serialport" \
bash "$srcdir/build.sh"
}
package() {
install -d "$pkgdir/usr/lib"
cp -a "$srcdir/dist/xtool-studio" "$pkgdir/usr/lib/$pkgname"
# Chromium's setuid sandbox helper; the launcher only passes --no-sandbox
# when this is not setuid root.
chmod 4755 "$pkgdir/usr/lib/$pkgname/chrome-sandbox"
chown root:root "$pkgdir/usr/lib/$pkgname/chrome-sandbox"
install -d "$pkgdir/usr/bin"
ln -s "/usr/lib/$pkgname/xtool-studio-launcher" "$pkgdir/usr/bin/$pkgname"
install -Dm644 "$srcdir/xtool-studio.desktop" \
"$pkgdir/usr/share/applications/$pkgname.desktop"
install -Dm644 "$srcdir/dist/xtool-studio/xtool-studio.png" \
"$pkgdir/usr/share/pixmaps/$pkgname.png"
install -d "$pkgdir/usr/share/licenses/$pkgname"
install -m644 "$srcdir/dist/xtool-studio/LICENSE" \
"$srcdir/dist/xtool-studio/LICENSES.chromium.html" \
"$pkgdir/usr/share/licenses/$pkgname/"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-21 19:37:49 | Medium | 3 |
| 2026-10-21 19:33:05 | Medium | 3 |