fluffychat-color-emoji

LOW
maintainer noahvogt 0 votes scanned 2026-10-07 18:06:17.708834
View on AUR
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}
11export FVM_CACHE_PATH
12
13_pkgname="fluffychat"
14pkgname="$_pkgname-color-emoji"
15pkgver=2.10.0
16pkgrel=1
17pkgdesc="The cutest instant messenger in the [matrix] (with color emoji fallback)"
18url="https://github.com/krille-chan/fluffychat"
19license=('AGPL-3.0-only')
20arch=('x86_64' 'aarch64')
21
22depends=(
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)
31makedepends=(
32 'clang'
33 'cmake'
34 'fvm'
35 'git'
36 'lld'
37 'llvm'
38 'ninja'
39 'patchelf'
40 'rust'
41)
42optdepends=(
43 'zenity: for flutter_file_picker'
44 'kdialog: for flutter_file_picker'
45)
46provides=("$_pkgname")
47conflicts=("$_pkgname" "$_pkgname-bin")
48
49options=('!lto' '!strip' '!debug')
50
51_pkgsrc="$_pkgname-$pkgver"
52_pkgext="tar.gz"
53source=(
54 "$_pkgsrc.$_pkgext"::"$url/archive/refs/tags/v$pkgver.$_pkgext"
55 '0000-fix-wayland-gtk-csd.patch'
56 '0001-color-emoji-fallback.patch'
57)
58sha256sums=('e3176ad89c55f9d98a357d74936d339fcb40d5523bf6d870b6c629435643cfb3'
59 '04a373c2c25a9be1617ab1ccb19da48ae379ff392bb59a3938bcdec00ab82230'
60 'b35ccd4fdf32109ecbfd4979828a4b21ee66d38b67c1175c7ebe7ca90f2ecd1f')
61
62prepare() (
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
74build() {
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
118case "$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 ;;
123esac
124EOF
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
140package() {
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]
162Type=Application
163Name=FluffyChat
164Comment=$pkgdesc
165Exec=$_pkgname
166Icon=$_pkgname
167SingleMainWindow=true
168StartupWMClass=chat.fluffy.fluffychat
169Terminal=false
170StartupNotify=false
171Categories=Network;InstantMessaging;Chat;MatrixClient
172X-Purism-FormFactor=Workstation;Mobile;
173END
174}
175

Scan history

Scanned at (UTC)SeverityRules
2026-10-07 18:06:17 Low 1

Report a package

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

0 / 4000
Your suggestion