tuxtalk-appimage
LOW
maintainer ronb1964
1 votes
scanned 2026-10-17 00:21:55.226236
Why flagged
The package installs a legitimate AppImage from the project's official GitHub repository; the flagged low vote count and recent upload are common for new or niche AUR packages and do not indicate malicious intent.
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 installs a legitimate AppImage from the project's official GitHub repository; the flagged low vote count and recent upload are common for new or niche AUR packages and do not indicate malicious intent.
PKGBUILD
1
# Maintainer: Ron Brand <ronb1964@gmail.com>
2
pkgname=tuxtalk-appimage
3
pkgver=0.15.1
4
pkgrel=1
5
pkgdesc="Voice dictation for Linux: hold a key, talk, and your words are typed for you"
6
arch=('x86_64')
7
url="https://github.com/ronb1964/TuxTalk"
8
license=('MIT')
9
# The AppImage itself bundles libayatana-appindicator3 with its dbusmenu
10
# libraries, and ydotool, ydotoold and wl-clipboard, so those depends are
11
# belt and braces. They stay until a clean Arch install has been tested
12
# without them. The AppImage needs fusermount to mount itself, which fuse2
13
# provides (fuse3's fusermount3 works too).
14
depends=('fuse2' 'ydotool' 'wl-clipboard' 'libayatana-appindicator')
15
optdepends=(
16
'pipewire-pulse: PipeWire audio support'
17
'pulseaudio: PulseAudio support'
18
)
19
# Called TalkType (talktype-appimage) until 0.15.0. replaces= lets pacman and
20
# AUR helpers swap the old package for this one; the AUR merge request moves
21
# the old package's votes and watchers here.
22
provides=('tuxtalk' 'talktype')
23
conflicts=('talktype' 'talktype-appimage')
24
replaces=('talktype-appimage')
25
options=('!strip')
26
source=("TuxTalk-v${pkgver}-x86_64.AppImage::https://github.com/ronb1964/TuxTalk/releases/download/v${pkgver}/TuxTalk-v${pkgver}-x86_64.AppImage"
27
"tuxtalk.desktop")
28
sha256sums=('be40dd581bd5db8cf871817b6c2b177df8339de8f5c2d8387ee7a78c1a1829da'
29
'SKIP')
30
noextract=("TuxTalk-v${pkgver}-x86_64.AppImage")
31
32
package() {
33
# Install AppImage
34
install -Dm755 "TuxTalk-v${pkgver}-x86_64.AppImage" "${pkgdir}/opt/tuxtalk/TuxTalk.AppImage"
35
# The path before the 0.15.0 rename: a TalkType launch-at-login entry
36
# still starts it at the first login after this update (TuxTalk rewrites
37
# the entry once it runs).
38
install -dm755 "${pkgdir}/opt/talktype"
39
ln -s /opt/tuxtalk/TuxTalk.AppImage "${pkgdir}/opt/talktype/TalkType.AppImage"
40
41
# Create wrapper script
42
install -dm755 "${pkgdir}/usr/bin"
43
cat > "${pkgdir}/usr/bin/tuxtalk" << 'EOF'
44
#!/bin/bash
45
exec /opt/tuxtalk/TuxTalk.AppImage "$@"
46
EOF
47
chmod 755 "${pkgdir}/usr/bin/tuxtalk"
48
# The command before the 0.15.0 rename, for old shortcuts and scripts.
49
ln -s tuxtalk "${pkgdir}/usr/bin/talktype"
50
51
# Install desktop file
52
install -Dm644 tuxtalk.desktop "${pkgdir}/usr/share/applications/tuxtalk.desktop"
53
54
# Extract and install icon from AppImage.
55
#
56
# The icon inside the AppImage is io.github.ronb1964.TuxTalk.png. It used
57
# to be talktype.png, and this step hardcoded that old name behind
58
# `2>/dev/null || true`, so after the rename it failed silently and the
59
# package shipped with no icon at all for several releases. Glob for any
60
# top-level PNG so a future rename cannot repeat that, and fail loudly if
61
# none is found rather than quietly producing a package without an icon.
62
cd "${srcdir}"
63
chmod +x "TuxTalk-v${pkgver}-x86_64.AppImage"
64
./"TuxTalk-v${pkgver}-x86_64.AppImage" --appimage-extract 'io.github.ronb1964.TuxTalk.png' >/dev/null 2>&1 || true
65
if [[ ! -f squashfs-root/io.github.ronb1964.TuxTalk.png ]]; then
66
# Fall back to a full extract in case the icon was renamed again.
67
./"TuxTalk-v${pkgver}-x86_64.AppImage" --appimage-extract >/dev/null 2>&1 || true
68
fi
69
70
_icon=$(find squashfs-root -maxdepth 1 -name '*.png' -print -quit 2>/dev/null)
71
if [[ -z "${_icon}" ]]; then
72
echo "ERROR: no icon found at the root of the AppImage." >&2
73
echo " Refusing to build a package with a missing icon." >&2
74
return 1
75
fi
76
77
# Installed as tuxtalk.png to match Icon=tuxtalk in tuxtalk.desktop.
78
install -Dm644 "${_icon}" "${pkgdir}/usr/share/pixmaps/tuxtalk.png"
79
80
rm -rf squashfs-root
81
}
82
Changes since previous scan
--- PKGBUILD @ 2026-10-16 00:12+++ PKGBUILD @ 2026-10-17 00:21@@ -1,6 +1,6 @@ # Maintainer: Ron Brand <ronb1964@gmail.com> pkgname=tuxtalk-appimage-pkgver=0.15.0+pkgver=0.15.1 pkgrel=1 pkgdesc="Voice dictation for Linux: hold a key, talk, and your words are typed for you" arch=('x86_64')@@ -25,7 +25,7 @@ options=('!strip') source=("TuxTalk-v${pkgver}-x86_64.AppImage::https://github.com/ronb1964/TuxTalk/releases/download/v${pkgver}/TuxTalk-v${pkgver}-x86_64.AppImage" "tuxtalk.desktop")-sha256sums=('b4ab940ab0d636b392133702fdbc977d06479a9432900e49c199dd3aab4307b9'+sha256sums=('be40dd581bd5db8cf871817b6c2b177df8339de8f5c2d8387ee7a78c1a1829da' 'SKIP') noextract=("TuxTalk-v${pkgver}-x86_64.AppImage") Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 03:14:05 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 03:18:50 | Low | 2 |