modrinth-enhanced

LOW
maintainer Felitendo 0 votes scanned 2026-09-15 21:20:38.565393
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: Felitendo
2# This PKGBUILD is updated automatically:
3# https://github.com/Felitendo/PKGBUILDS
4
5pkgname=modrinth-enhanced
6pkgver=0.21.2
7pkgrel=2
8pkgdesc="Modrinth App without ads or telemetry, with offline and Ely.by accounts and Linux fixes"
9arch=('x86_64')
10url="https://github.com/Felitendo/Modrinth-Enhanced"
11license=('GPL-3.0-only')
12depends=('cairo' 'dbus' 'gdk-pixbuf2' 'glib2' 'glibc' 'gtk3' 'hicolor-icon-theme'
13 'libdrm' 'libgcc' 'libsoup3' 'webkit2gtk-4.1'
14 # loaded by Minecraft, not by the launcher
15 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm')
16# git replays the patches the way upstream's scripts/prepare.sh does; the JDK
17# builds the Java agent, whose Gradle toolchain asks for exactly 17
18makedepends=('cargo' 'git' 'jdk17-openjdk' 'node-gyp' 'nodejs>=24.15.0' 'npm' 'pnpm')
19optdepends=('xorg-xrandr: for older Minecraft versions')
20# the release profile carries no debug info, so a -debug package would be empty
21options=('!lto' '!debug')
22# Modrinth Enhanced holds no forked source, only patches. Its release tag
23# records the Modrinth App release it was built on (upstream.txt) and the one
24# the patches were exported against (patches/base.txt); pkg.sh reads both.
25# A new revision of the patches on the same release is tagged v0.21.2-2, which
26# pkgver spells 0.21.2.r2.
27_tag="v0.21.2"
28_upstream="v0.21.2"
29_base="v0.21.2"
30# With the NVIDIA driver WebKitGTK paces the app with a 60 fps timer whatever
31# the monitor's refresh rate. vblank-shim.c, preloaded by modrinth-enhanced.sh,
32# paces it at the monitor's rate instead and keeps the app on X11, the only
33# place that works; it is not part of upstream's release.
34source=("${pkgname}-${_tag}.tar.gz::https://github.com/Felitendo/Modrinth-Enhanced/archive/refs/tags/${_tag}.tar.gz"
35 "modrinth-code-${_upstream}.tar.gz::https://github.com/modrinth/code/archive/refs/tags/${_upstream}.tar.gz"
36 "vblank-shim.c"
37 "modrinth-enhanced.sh")
38noextract=("modrinth-code-${_upstream}.tar.gz")
39if [[ "$_base" != "$_upstream" ]]; then
40 source+=("modrinth-code-${_base}.tar.gz::https://github.com/modrinth/code/archive/refs/tags/${_base}.tar.gz")
41 noextract+=("modrinth-code-${_base}.tar.gz")
42fi
43sha256sums=('a87ddcef0a39ab4a2c56ece806e381c6b398c755da00a9734b0162abc377e5a6' '583e085cd7ae64a7020656af4ecc64ecfcc82fd97519f74cc3ab114d49574a5e' '0190921b8ff2fb1deec3209cba71c01541ca1f013e3ba41680f1636e185fd455' 'b24872f82645c52ee4804599cd678d138876fb193c754403fa9c5cf92bd745b9')
44
45prepare() {
46 # What upstream's scripts/prepare.sh does with two shallow tags: apply the
47 # patches to the release they were exported against, where they always fit,
48 # then rebase them onto the release this version was built on, so that a
49 # change upstream made near a patch is merged instead of failing to apply.
50 export GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_NOSYSTEM=1
51 export GIT_AUTHOR_NAME="Modrinth Enhanced" GIT_AUTHOR_EMAIL="patches@modrinth-enhanced.invalid"
52 export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
53
54 rm -rf app
55 mkdir app
56 cd app
57 git init -q
58 # reset --hard checks the tree out again with upstream's .gitattributes
59 # applied, as a clone of the tag would have it
60 bsdtar -xf "$srcdir/modrinth-code-${_base}.tar.gz" --strip-components 1
61 git add -Af
62 git commit -qm "Modrinth App ${_base}"
63 git reset -q --hard
64 git tag base
65 if [[ "$_base" != "$_upstream" ]]; then
66 git rm -rqf .
67 bsdtar -xf "$srcdir/modrinth-code-${_upstream}.tar.gz" --strip-components 1
68 git add -Af
69 git commit -qm "Modrinth App ${_upstream}"
70 git reset -q --hard
71 git tag upstream
72 git checkout -q -b enhanced base
73 fi
74 git am -q --3way --whitespace=nowarn "$srcdir/Modrinth-Enhanced-${_tag#v}/patches/"*.patch
75 if [[ "$_base" != "$_upstream" ]]; then
76 git rebase -q --onto upstream base enhanced
77 fi
78
79 # upstream's scripts/set-version.sh: the sources carry 1.0.0-local, the app
80 # reports the Modrinth App release it is built on
81 sed -i "s/1.0.0-local/${_upstream#v}/" \
82 apps/app/Cargo.toml packages/app-lib/Cargo.toml apps/app-frontend/package.json Cargo.lock
83
84 # the production API endpoints, as upstream's scripts/build.sh selects them
85 cp packages/app-lib/.env.prod packages/app-lib/.env
86
87 # node-gyp for the native modules
88 export NODE_PATH=/usr/lib/node_modules
89 export TURBO_TELEMETRY_DISABLED=1
90 pnpm install --frozen-lockfile
91
92 export RUSTUP_TOOLCHAIN=stable
93 cargo fetch --locked --target host-tuple
94}
95
96build() {
97 # GLib for its headers only: the shim looks GTK and GLib up at run time
98 gcc $CPPFLAGS $CFLAGS $LDFLAGS -shared -fPIC -o libwebkit-vblank-shim.so vblank-shim.c \
99 $(pkg-config --cflags glib-2.0) $(pkg-config --cflags --libs libdrm)
100
101 cd app
102
103 export RUSTUP_TOOLCHAIN=stable
104 export NODE_PATH=/usr/lib/node_modules
105 export TURBO_TELEMETRY_DISABLED=1
106 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
107 # keep Gradle's cache inside the build tree instead of ~/.gradle
108 export GRADLE_USER_HOME="$srcdir/gradle-home"
109
110 # Without tauri-release.conf.json, as upstream builds it: that config only
111 # adds Modrinth's own updater. app-lib's build script runs Gradle, which
112 # downloads itself and the agent's dependencies, so build() needs network.
113 pnpm --filter=@modrinth/app run tauri build --no-bundle
114}
115
116package() {
117 cd app
118
119 # the same files, under the same names, as modrinth-enhanced-bin: the binary
120 # sits behind the script that preloads the shim
121 install -Dm755 target/release/ModrinthEnhanced -t "$pkgdir/usr/lib/modrinth-enhanced/"
122 install -Dm755 "$srcdir/libwebkit-vblank-shim.so" -t "$pkgdir/usr/lib/modrinth-enhanced/"
123 install -Dm755 "$srcdir/modrinth-enhanced.sh" "$pkgdir/usr/bin/ModrinthEnhanced"
124 ln -s ModrinthEnhanced "$pkgdir/usr/bin/modrinth-enhanced"
125
126 install -Dm644 apps/app/icons/128x128.png \
127 "$pkgdir/usr/share/icons/hicolor/128x128/apps/ModrinthEnhanced.png"
128 install -Dm644 apps/app/icons/128x128@2x.png \
129 "$pkgdir/usr/share/icons/hicolor/256x256@2/apps/ModrinthEnhanced.png"
130
131 install -d "$pkgdir/usr/share/applications"
132 cat > "$pkgdir/usr/share/applications/Modrinth Enhanced.desktop" << EOF
133[Desktop Entry]
134Categories=Game;
135Exec=ModrinthEnhanced
136Icon=ModrinthEnhanced
137Name=Modrinth Enhanced
138Terminal=false
139Type=Application
140MimeType=application/x-modrinth-modpack+zip;x-scheme-handler/modrinth
141EOF
142}
143

Changes since previous scan

--- PKGBUILD @ 2026-09-15 19:20
+++ PKGBUILD @ 2026-09-15 21:20
@@ -4,13 +4,13 @@
pkgname=modrinth-enhanced
pkgver=0.21.2
-pkgrel=1
+pkgrel=2
pkgdesc="Modrinth App without ads or telemetry, with offline and Ely.by accounts and Linux fixes"
arch=('x86_64')
url="https://github.com/Felitendo/Modrinth-Enhanced"
license=('GPL-3.0-only')
depends=('cairo' 'dbus' 'gdk-pixbuf2' 'glib2' 'glibc' 'gtk3' 'hicolor-icon-theme'
- 'libgcc' 'libsoup3' 'webkit2gtk-4.1'
+ 'libdrm' 'libgcc' 'libsoup3' 'webkit2gtk-4.1'
# loaded by Minecraft, not by the launcher
'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm')
# git replays the patches the way upstream's scripts/prepare.sh does; the JDK
@@ -27,14 +27,20 @@
_tag="v0.21.2"
_upstream="v0.21.2"
_base="v0.21.2"
+# With the NVIDIA driver WebKitGTK paces the app with a 60 fps timer whatever
+# the monitor's refresh rate. vblank-shim.c, preloaded by modrinth-enhanced.sh,
+# paces it at the monitor's rate instead and keeps the app on X11, the only
+# place that works; it is not part of upstream's release.
source=("${pkgname}-${_tag}.tar.gz::https://github.com/Felitendo/Modrinth-Enhanced/archive/refs/tags/${_tag}.tar.gz"
- "modrinth-code-${_upstream}.tar.gz::https://github.com/modrinth/code/archive/refs/tags/${_upstream}.tar.gz")
+ "modrinth-code-${_upstream}.tar.gz::https://github.com/modrinth/code/archive/refs/tags/${_upstream}.tar.gz"
+ "vblank-shim.c"
+ "modrinth-enhanced.sh")
noextract=("modrinth-code-${_upstream}.tar.gz")
if [[ "$_base" != "$_upstream" ]]; then
source+=("modrinth-code-${_base}.tar.gz::https://github.com/modrinth/code/archive/refs/tags/${_base}.tar.gz")
noextract+=("modrinth-code-${_base}.tar.gz")
fi
-sha256sums=('a87ddcef0a39ab4a2c56ece806e381c6b398c755da00a9734b0162abc377e5a6' '583e085cd7ae64a7020656af4ecc64ecfcc82fd97519f74cc3ab114d49574a5e')
+sha256sums=('a87ddcef0a39ab4a2c56ece806e381c6b398c755da00a9734b0162abc377e5a6' '583e085cd7ae64a7020656af4ecc64ecfcc82fd97519f74cc3ab114d49574a5e' '0190921b8ff2fb1deec3209cba71c01541ca1f013e3ba41680f1636e185fd455' 'b24872f82645c52ee4804599cd678d138876fb193c754403fa9c5cf92bd745b9')
prepare() {
# What upstream's scripts/prepare.sh does with two shallow tags: apply the
@@ -88,6 +94,10 @@
}
build() {
+ # GLib for its headers only: the shim looks GTK and GLib up at run time
+ gcc $CPPFLAGS $CFLAGS $LDFLAGS -shared -fPIC -o libwebkit-vblank-shim.so vblank-shim.c \
+ $(pkg-config --cflags glib-2.0) $(pkg-config --cflags --libs libdrm)
+
cd app
export RUSTUP_TOOLCHAIN=stable
@@ -106,8 +116,11 @@
package() {
cd app
- # the same files, under the same names, as upstream's .deb
- install -Dm755 target/release/ModrinthEnhanced -t "$pkgdir/usr/bin/"
+ # the same files, under the same names, as modrinth-enhanced-bin: the binary
+ # sits behind the script that preloads the shim
+ install -Dm755 target/release/ModrinthEnhanced -t "$pkgdir/usr/lib/modrinth-enhanced/"
+ install -Dm755 "$srcdir/libwebkit-vblank-shim.so" -t "$pkgdir/usr/lib/modrinth-enhanced/"
+ install -Dm755 "$srcdir/modrinth-enhanced.sh" "$pkgdir/usr/bin/ModrinthEnhanced"
ln -s ModrinthEnhanced "$pkgdir/usr/bin/modrinth-enhanced"
install -Dm644 apps/app/icons/128x128.png \

Scan history

Scanned at (UTC)SeverityRules
2026-09-15 21:20:38 Low 1
2026-09-15 19:20: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