fluffychat-color-emoji
LOW
maintainer noahvogt
0 votes
scanned 2026-10-07 18:06:17.708834
Why flagged
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
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.
PKGBUILD
1
# Maintainer: Noah Vogt <noah@noahvogt.com>
2
# Based on the AUR fluffychat package by aur.chaotic.cx and
3
# The one with the braid <info@braid.business>
4
5
# Flutter's linux engine ignores fontconfig and only falls back to the font
6
# families named by the app. Its default fallback list lacks a color emoji
7
# font but contains DejaVu Sans, so emojis render as monochrome DejaVu glyphs.
8
# 0001-color-emoji-fallback.patch puts Noto Color Emoji in front of it.
9
10
: ${FVM_CACHE_PATH:=$SRCDEST/fvm-cache}
11
export FVM_CACHE_PATH
12
13
_pkgname="fluffychat"
14
pkgname="$_pkgname-color-emoji"
15
pkgver=2.10.0
16
pkgrel=1
17
pkgdesc="The cutest instant messenger in the [matrix] (with color emoji fallback)"
18
url="https://github.com/krille-chan/fluffychat"
19
license=('AGPL-3.0-only')
20
arch=('x86_64' 'aarch64')
21
22
depends=(
23
'gtk3'
24
'libpulse' # dlopened by flutter_webrtc's bundled libwebrtc
25
'libsecret' # flutter_secure_storage
26
'noto-fonts-emoji'
27
'openssl' # sqlite encryption
28
'webkit2gtk-4.1'
29
'xdg-user-dirs' # path_provider
30
)
31
makedepends=(
32
'clang'
33
'cmake'
34
'fvm'
35
'git'
36
'lld'
37
'llvm'
38
'ninja'
39
'patchelf'
40
'rust'
41
)
42
optdepends=(
43
'zenity: for flutter_file_picker'
44
'kdialog: for flutter_file_picker'
45
)
46
provides=("$_pkgname")
47
conflicts=("$_pkgname" "$_pkgname-bin")
48
49
options=('!lto' '!strip' '!debug')
50
51
_pkgsrc="$_pkgname-$pkgver"
52
_pkgext="tar.gz"
53
source=(
54
"$_pkgsrc.$_pkgext"::"$url/archive/refs/tags/v$pkgver.$_pkgext"
55
'0000-fix-wayland-gtk-csd.patch'
56
'0001-color-emoji-fallback.patch'
57
)
58
sha256sums=('e3176ad89c55f9d98a357d74936d339fcb40d5523bf6d870b6c629435643cfb3'
59
'04a373c2c25a9be1617ab1ccb19da48ae379ff392bb59a3938bcdec00ab82230'
60
'b35ccd4fdf32109ecbfd4979828a4b21ee66d38b67c1175c7ebe7ca90f2ecd1f')
61
62
prepare() (
63
for src in "${source[@]}"; do
64
src="${src%%::*}"
65
src="${src##*/}"
66
src="${src%.zst}"
67
if [[ $src == *.patch ]]; then
68
printf '\n\nApplying patch: %s\n' "$src"
69
patch -d "$_pkgsrc" -Np1 -F100 -i "${srcdir:?}/$src"
70
fi
71
done
72
)
73
74
build() {
75
local _units=$(OMP_NUM_THREADS=16 nproc --all)
76
export CARGO_PROFILE_RELEASE_LTO=false
77
export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=$_units
78
79
# cargokit builds dart-sys through rust's cc crate, which picks gcc and
80
# inherits CFLAGS. gcc has no -Wunused-but-set-global and rejects the
81
# -Wno-error= below outright, so pin both compilers to the clang the rest
82
# of the flutter build already uses.
83
export CC=clang
84
export CXX=clang++
85
86
export CFLAGS CXXFLAGS
87
CFLAGS+=" -Wno-error=deprecated-literal-operator"
88
CXXFLAGS+=" -Wno-error=deprecated-literal-operator"
89
90
# flutter builds the app and every plugin with -Wall -Werror, so clang 23's
91
# new -Wunused-but-set-global breaks flutter_webrtc over the parent_class
92
# variable glib's G_DEFINE_TYPE declares. Only the -Wno-error=<name> form
93
# survives the -Werror that cmake appends after these flags.
94
CFLAGS+=" -Wno-error=unused-but-set-global"
95
CXXFLAGS+=" -Wno-error=unused-but-set-global"
96
97
# fix missing include
98
export CXXFLAGS+=" -include cstdint"
99
100
# fix incompatible flags on ARM
101
if [ "${CARCH::1}" != "x" ]; then
102
local _unwanted=(
103
-fstack-protector-strong
104
-fstack-clash-protection
105
)
106
107
for i in "${_unwanted[@]}"; do
108
CFLAGS=$(sed -E -e "s&${i}&&g" -e 's&\s+& &g' <<< "$CFLAGS")
109
CXXFLAGS=$(sed -E -e "s&${i}&&g" -e 's&\s+& &g' <<< "$CXXFLAGS")
110
done
111
fi
112
113
# cargokit (flutter_vodozemac) insists on rustup; give it a stand-in that
114
# uses the system rust toolchain
115
mkdir -p "$srcdir/rustup-shim"
116
cat > "$srcdir/rustup-shim/rustup" << 'EOF'
117
#!/bin/sh
118
case "$1 $2" in
119
"toolchain list") echo "stable-$(rustc -vV | sed -n 's/^host: //p') (default)" ;;
120
"target list") rustc -vV | sed -n 's/^host: //p' ;;
121
"run "*) shift 2; exec "$@" ;;
122
*) exit 0 ;;
123
esac
124
EOF
125
chmod +x "$srcdir/rustup-shim/rustup"
126
export PATH="$srcdir/rustup-shim:$PATH"
127
128
cd "$_pkgsrc"
129
130
: ${_fvm_version=$(grep -Pom1 'flutter: \K[0-9\.]+' ".tool_versions.yaml")}
131
132
fvm install "$_fvm_version"
133
fvm use "$_fvm_version" --force
134
135
fvm flutter --disable-analytics
136
fvm flutter pub get
137
fvm flutter build linux --no-pub --release
138
}
139
140
package() {
141
pushd "$_pkgsrc"/build/linux/*/release
142
cmake -DCMAKE_INSTALL_PREFIX="/usr/lib/$_pkgname" .
143
DESTDIR="$pkgdir" cmake -P cmake_install.cmake
144
popd
145
146
# rpath
147
patchelf --set-rpath '$ORIGIN' "$pkgdir/usr/lib/$_pkgname/lib"/*.so
148
149
# symlink
150
install -dm755 "$pkgdir/usr/bin"
151
ln -s "/usr/lib/$_pkgname/$_pkgname" "$pkgdir/usr/bin/$_pkgname"
152
153
# license
154
install -Dm644 "$_pkgsrc/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname/"
155
156
# icon
157
install -Dm644 "$_pkgsrc/assets/logo/vector/logo_standalone.svg" "$pkgdir/usr/share/icons/hicolor/scalable/apps/$_pkgname.svg"
158
159
# launcher
160
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/$_pkgname.desktop" << END
161
[Desktop Entry]
162
Type=Application
163
Name=FluffyChat
164
Comment=$pkgdesc
165
Exec=$_pkgname
166
Icon=$_pkgname
167
SingleMainWindow=true
168
StartupWMClass=chat.fluffy.fluffychat
169
Terminal=false
170
StartupNotify=false
171
Categories=Network;InstantMessaging;Chat;MatrixClient
172
X-Purism-FormFactor=Workstation;Mobile;
173
END
174
}
175
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-07 18:06:17 | Low | 1 |