cline-desktop

LOW
maintainer gmazza 0 votes scanned 2026-09-19 00:25:36.748935
View on AUR
Why flagged

The package builds from the official GitHub source of the project, disables in-app updates, and bundles only project-owned build artifacts; the flagged low votes and recent upload are metadata concerns, not security risks.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Low AI review llm_review

An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is LOW (confidence 90%): The package builds from the official GitHub source of the project, disables in-app updates, and bundles only project-owned build artifacts; the flagged low votes and recent upload are metadata concerns, not security risks.

PKGBUILD

1# Maintainer: Gianluca Mazza <info@gianlucamazza.it>
2#
3# Unofficial Linux package of Cline for Desktop (upstream: cline/cline).
4# Not affiliated with Cline. Upstream GitHub releases currently ship macOS and
5# Windows only (https://cline.bot/desktop); this PKGBUILD builds the same
6# tagged source (Tauri 2 + Bun sidecar) for Linux. In-app auto-update is
7# disabled so pacman/yay own upgrades.
8
9pkgname=cline-desktop
10pkgver=0.0.32
11pkgrel=1
12pkgdesc="Cline coding agent as a native desktop app (unofficial Linux build)"
13arch=('x86_64' 'aarch64')
14url="https://cline.bot/desktop"
15license=('Apache-2.0')
16depends=(
17 'cairo'
18 'gcc-libs'
19 'gdk-pixbuf2'
20 'glib2'
21 'glibc'
22 'gtk3'
23 'hicolor-icon-theme'
24 'libsoup3'
25 'openssl'
26 'webkit2gtk-4.1'
27)
28makedepends=(
29 'bun'
30 'cargo'
31 'git'
32 'pkgconf'
33 'python'
34)
35optdepends=(
36 'github-cli: pull-request status in the composer'
37 'libappindicator: system tray icon'
38 'libayatana-appindicator: system tray icon (Ayatana)'
39 'xdg-desktop-portal-gtk: native file picker on Wayland'
40)
41options=('!lto' '!debug')
42source=(
43 "$pkgname-$pkgver.tar.gz::https://github.com/cline/cline/archive/refs/tags/desktop-v$pkgver.tar.gz"
44 'cline-desktop.desktop'
45)
46sha256sums=(
47 '19199a217201750acb7d22dca6d6a43ae37616500bfa468d6201c6a2afac89cf'
48 'fe4591dabfdbe6a62389ed7c7ccc7041ab9f83d21a1cde0bd806d06fabc0ae33'
49)
50
51_srcdir="cline-desktop-v$pkgver"
52_appdir="apps/examples/desktop-app"
53
54prepare() {
55 cd "$srcdir/$_srcdir"
56
57 python - <<'PY'
58import json
59from pathlib import Path
60
61path = Path("apps/examples/desktop-app/src-tauri/tauri.conf.json")
62cfg = json.loads(path.read_text())
63cfg["mainBinaryName"] = "cline-desktop"
64cfg.setdefault("bundle", {})["targets"] = ["deb"]
65plugins = cfg.setdefault("plugins", {})
66updater = plugins.setdefault("updater", {})
67# Empty endpoints disable the in-app updater (see updates_enabled() in main.rs).
68updater["endpoints"] = []
69path.write_text(json.dumps(cfg, indent=2) + "\n")
70PY
71
72 bun install --frozen-lockfile
73
74 cd "$_appdir/src-tauri"
75 export CARGO_HOME="$srcdir/cargo-home"
76 export RUSTUP_TOOLCHAIN=stable
77 cargo fetch --locked --target "$(rustc -vV | sed -n 's/^host: //p')"
78}
79
80build() {
81 cd "$srcdir/$_srcdir"
82
83 export CARGO_HOME="$srcdir/cargo-home"
84 export RUSTUP_TOOLCHAIN=stable
85 export BUN_INSTALL_CACHE_DIR="$srcdir/bun-cache"
86
87 # Same order as .github/workflows/desktop-publish.yml: SDK packages (including
88 # @cline/shared/browser) must exist before Tauri's beforeBuildCommand builds @cline/ui.
89 bun run build:sdk
90
91 cd "$_appdir"
92 bun run build:binary -- --bundles deb
93}
94
95package() {
96 cd "$srcdir/$_srcdir"
97
98 local deb data
99 deb="$(find "$_appdir/src-tauri/target/release/bundle/deb" -maxdepth 1 -name '*.deb' -print -quit)"
100 if [[ -z "$deb" ]]; then
101 echo "error: Tauri did not produce a .deb under src-tauri/target/release/bundle/deb" >&2
102 return 1
103 fi
104
105 data="$(bsdtar -tf "$deb" | grep -E '^data\.tar\.' | head -1)"
106 if [[ -z "$data" ]]; then
107 echo "error: no data.tar.* inside $deb" >&2
108 return 1
109 fi
110 bsdtar -xOf "$deb" "$data" | bsdtar -x -C "$pkgdir"
111
112 # Stable launcher name, regardless of what the deb called the binary.
113 if [[ -x "$pkgdir/usr/bin/cline-desktop" ]]; then
114 :
115 elif [[ -x "$pkgdir/usr/bin/cline-app" ]]; then
116 mv "$pkgdir/usr/bin/cline-app" "$pkgdir/usr/bin/cline-desktop"
117 else
118 local bin
119 bin="$(find "$pkgdir/usr/bin" -type f -executable -print -quit)"
120 if [[ -z "$bin" ]]; then
121 echo "error: no executable installed under /usr/bin" >&2
122 return 1
123 fi
124 mv "$bin" "$pkgdir/usr/bin/cline-desktop"
125 fi
126
127 install -Dm644 "$srcdir/cline-desktop.desktop" \
128 "$pkgdir/usr/share/applications/cline-desktop.desktop"
129 find "$pkgdir/usr/share/applications" -name '*.desktop' ! -name 'cline-desktop.desktop' -delete
130
131 # Point leftover icon names at our desktop file if the bundler used another stem.
132 if [[ ! -e "$pkgdir/usr/share/icons/hicolor/128x128/apps/cline-desktop.png" ]]; then
133 local icon
134 icon="$(find "$pkgdir/usr/share/icons" -type f \( -name '*.png' -o -name '*.svg' \) -print -quit || true)"
135 if [[ -n "$icon" ]]; then
136 install -Dm644 "$icon" "$pkgdir/usr/share/icons/hicolor/128x128/apps/cline-desktop.png"
137 else
138 install -Dm644 "$_appdir/src-tauri/icons/128x128.png" \
139 "$pkgdir/usr/share/icons/hicolor/128x128/apps/cline-desktop.png"
140 install -Dm644 "$_appdir/src-tauri/icons/32x32.png" \
141 "$pkgdir/usr/share/icons/hicolor/32x32/apps/cline-desktop.png"
142 fi
143 fi
144
145 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
146 install -Dm644 "$_appdir/README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"
147}
148

Scan history

Scanned at (UTC)SeverityRules
2026-09-19 00:25:36 Low 2
2026-09-18 23:29:28 Low 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion