satur8

LOW
maintainer nasir91 1 votes scanned 2026-11-06 00:21:40.447623
View on AUR
Why flagged

The package builds from a verifiable source tarball hosted on the project's official GitHub, applies necessary compatibility patches, and installs only the project's own binaries and assets; the low severity is due to few votes and recent upload, not malicious content.

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 95%): The package builds from a verifiable source tarball hosted on the project's official GitHub, applies necessary compatibility patches, and installs only the project's own binaries and assets; the low severity is due to few votes and recent upload, not malicious content.

PKGBUILD

1# Maintainer: Nasir A. <112448715+NasirA1991@users.noreply.github.com>
2pkgname=satur8
3pkgver=0.3.3
4pkgrel=2
5pkgdesc="Per-game digital vibrance for Linux: compositor/scanout saturation boost, never injected into the game"
6arch=('x86_64')
7url="https://github.com/NtrpyDev/satur8"
8license=('GPL-3.0-or-later')
9depends=('fontconfig' 'gcc-libs' 'glibc' 'hicolor-icon-theme')
10# The KWin effect plugin is built against the local KWin/Qt ABI at build time.
11# kwin>=6.8.0 is required for the OffscreenEffect::drawWindow signature patched
12# in prepare() below.
13makedepends=('rust' 'cmake' 'kwin>=6.8.0' 'qt6-base' 'qt6-declarative' 'kcoreaddons' 'kconfig')
14optdepends=('kwin: KDE Plasma Wayland backend (saturation effect)'
15 'gnome-shell: GNOME Wayland backend (Shell extension)'
16 'gamescope: universal fallback backend for niche compositors'
17 'nvidia-settings: NVIDIA X11 Digital Vibrance backend')
18source=("$pkgname-v$pkgver-source.tar.gz::$url/releases/download/v$pkgver/$pkgname-v$pkgver-source.tar.gz")
19sha256sums=('9edc70b28e6a02e8c46790a56068745e10b624752ea818003f8a91f5c206f797')
20
21prepare() {
22 cd "$pkgname-$pkgver"
23
24 # KWin 6.8 changed OffscreenEffect::drawWindow to return bool. Apply the
25 # compatibility change only while upstream still declares the old signature,
26 # so a future upstream fix is not patched twice.
27 if grep -q '^void Satur8Effect::drawWindow(' assets/kwin-effect/satur8_effect.cpp; then
28 sed -i 's/^ void drawWindow(/ bool drawWindow(/' assets/kwin-effect/satur8_effect.h
29 sed -i 's/^void Satur8Effect::drawWindow(/bool Satur8Effect::drawWindow(/' assets/kwin-effect/satur8_effect.cpp
30 sed -i 's/^ KWin::OffscreenEffect::drawWindow(\(.*\));$/ return KWin::OffscreenEffect::drawWindow(\1);/' \
31 assets/kwin-effect/satur8_effect.cpp
32 fi
33
34 # KWin 6.8 headers include <qqmlregistration.h>; add Qt6 Qml's include path.
35 if ! grep -q 'COMPONENTS Core Gui DBus Qml' assets/kwin-effect/CMakeLists.txt; then
36 sed -i 's/find_package(Qt6 REQUIRED COMPONENTS Core Gui DBus)/find_package(Qt6 REQUIRED COMPONENTS Core Gui DBus Qml)/' \
37 assets/kwin-effect/CMakeLists.txt
38 sed -i 's/^ Qt6::DBus$/ Qt6::DBus\n Qt6::Qml/' assets/kwin-effect/CMakeLists.txt
39 fi
40
41 # KWin 6.x refuses to load a script package whose metadata.json lacks
42 # KPackageStructure, logging "does not match requested format KWin/Script".
43 # Without the focus forwarder, per-game profiles never follow focus.
44 if ! grep -q '"KPackageStructure"' assets/kwin-script/metadata.json; then
45 sed -i 's/^ "X-Plasma-API": "javascript",$/ "KPackageStructure": "KWin\/Script",\n "X-Plasma-API": "javascript",/' \
46 assets/kwin-script/metadata.json
47 fi
48}
49
50
51build() {
52 cd "$pkgname-$pkgver"
53 cargo build --release --locked
54 cmake -S assets/kwin-effect -B build-kwin -DCMAKE_BUILD_TYPE=Release \
55 -DVIBRANCE_PLUGIN_INSTALL_DIR="/usr/lib/qt6/plugins/kwin/effects/plugins"
56 cmake --build build-kwin
57}
58
59package() {
60 cd "$pkgname-$pkgver"
61
62 install -Dm755 target/release/satur8 "$pkgdir/usr/bin/satur8"
63 install -Dm755 target/release/satur8-daemon "$pkgdir/usr/bin/satur8-daemon"
64 install -Dm755 target/release/satur8-tray "$pkgdir/usr/bin/satur8-tray"
65 install -Dm755 target/release/satur8-gui "$pkgdir/usr/bin/satur8-gui"
66
67 # KWin effect (system Qt plugin path, where KWin scans).
68 install -Dm755 build-kwin/satur8.so \
69 "$pkgdir/usr/lib/qt6/plugins/kwin/effects/plugins/satur8.so"
70
71 # KWin focus-forwarder script.
72 install -d "$pkgdir/usr/share/kwin/scripts/satur8-focus"
73 cp -r assets/kwin-script/. "$pkgdir/usr/share/kwin/scripts/satur8-focus/"
74
75 # GNOME Shell extension.
76 install -d "$pkgdir/usr/share/gnome-shell/extensions/satur8@satur8.github.io"
77 cp -r assets/gnome-extension/satur8@satur8.github.io/. \
78 "$pkgdir/usr/share/gnome-shell/extensions/satur8@satur8.github.io/"
79
80 # gamescope fallback shader.
81 install -Dm644 assets/gamescope/Satur8.fx \
82 "$pkgdir/usr/share/gamescope/reshade/Shaders/Satur8.fx"
83
84 # The shipped unit targets the per-user tarball install (~/.local/bin); for
85 # the packaged install the daemon binary is in /usr/bin, so rewrite ExecStart.
86 install -d "$pkgdir/usr/lib/systemd/user"
87 sed 's|%h/.local/bin/satur8-daemon|/usr/bin/satur8-daemon|' \
88 packaging/satur8-daemon.service \
89 > "$pkgdir/usr/lib/systemd/user/satur8-daemon.service"
90 install -Dm644 packaging/satur8.desktop "$pkgdir/usr/share/applications/satur8.desktop"
91 install -Dm644 crates/satur8-gui/ui/icon.png \
92 "$pkgdir/usr/share/icons/hicolor/256x256/apps/satur8.png"
93 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
94}
95

Scan history

Scanned at (UTC)SeverityRules
2026-11-06 00:21:40 Low 2
2026-11-06 00:11:05 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