wdm-greeter

LOW
maintainer illuser 0 votes base wdm-wayland scanned 2026-08-19 03:41:13.749572
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: Joseph R. Quinn <quinn.josephr@protonmail.com>
2
3# The compositor and the reference greeter, which is the only one with no
4# toolkit dependency — so this package builds with nothing but the display
5# stack. The GTK, WebKitGTK and Qt greeters are separate AUR packages precisely
6# so that installing one does not make you build the others, and so that `wdm`
7# itself never drags GTK4, WebKitGTK or Qt 6 into a build chroot.
8# `wdm-wayland` rather than `wdm` because the AUR name `wdm` belongs to the
9# WINGs Display Manager. The binary, unit, and config paths are still `wdm`,
10# hence the provides/conflicts on the main package.
11pkgbase=wdm-wayland
12pkgname=('wdm-wayland' 'wdm-greeter')
13pkgver=0.10.0
14pkgrel=1
15pkgdesc='A Wayland display manager that is its own compositor'
16arch=('x86_64' 'aarch64')
17url='https://github.com/quinnjr/wdm'
18license=('MIT')
19makedepends=('cargo' 'libinput' 'seatd' 'systemd-libs' 'mesa' 'libdrm'
20 'libxkbcommon' 'pam')
21source=("wdm-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
22# The published tarball's checksum, not one computed from a local `git archive`:
23# GitHub's generated archives are not byte-reproducible from the repository, so
24# a locally derived value fails integrity checking for everyone else. All four
25# wdm packages build from this one tarball and share this one value. Regenerate
26# with `updpkgsums` after each tag, before publishing.
27#
28# Never SKIP. SKIP would let makepkg accept whatever arrives, which for a source
29# that is a URL is the wrong failure — a tarball substituted upstream would be
30# built and installed without a word.
31sha256sums=('94fbfae480ddd21b18e2c7e5472e135a5a5577dcb172ace989d520170622443b')
32
33# The tarball is the whole workspace whatever the pkgbase is, so the source
34# directory is named for the project rather than for this package.
35_src="wdm-$pkgver"
36
37prepare() {
38 cd "$_src"
39 export RUSTUP_TOOLCHAIN=stable
40 cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
41}
42
43build() {
44 cd "$_src"
45 export RUSTUP_TOOLCHAIN=stable
46 export CARGO_TARGET_DIR=target
47 # Only this package's crates. A bare `cargo build` would compile the GTK and
48 # WebKitGTK greeters too, which is what forced this package to build-depend on
49 # both toolkits before the AUR packaging was split.
50 #
51 # Not --all-targets: nothing installed here is a test, example or bench, and
52 # check() builds the test targets itself.
53 cargo build --frozen --release -p wdm -p wdm-greeter
54}
55
56check() {
57 cd "$_src"
58 export RUSTUP_TOOLCHAIN=stable
59 # Scoped for the same reason as build(); the toolkit greeters are tested by
60 # their own packages. wdm-protocol is here because both crates depend on it
61 # and nothing else in this package would exercise it.
62 #
63 # Tests are in-file unit tests; a few read the real passwd database and the
64 # session directories, and assert invariants rather than specific contents,
65 # so they are safe in a clean chroot.
66 cargo test --frozen --release -p wdm -p wdm-greeter -p wdm-protocol
67}
68
69package_wdm-wayland() {
70 # wdm needs *a* greeter, and each of the four provides the virtual, so pacman
71 # prompts for a choice when only `wdm-wayland` is requested. Three of the four now live
72 # in other AUR packages; pacman resolves a virtual regardless of which pkgbase
73 # provides it, and `wdm-greeter` below satisfies it with no toolkit at all.
74 # The greeters deliberately do not depend on wdm in return: that would make
75 # the pair circular.
76 #
77 # The virtual is declared only in the greeter package_*() functions, never at
78 # pkgbase level — a pkgbase provides= is inherited by every split package, and
79 # `unset provides` cannot be expressed in .SRCINFO, since makepkg emits no
80 # clearing line, so a helper resolving from .SRCINFO would see `wdm` providing
81 # the virtual it depends on and install no greeter at all.
82 #
83 # namcap reports "Split PKGBUILD needs additional makedepends
84 # ['wdm-greeter-implementation']" for the dependency below. It is a false
85 # positive — namcap does not resolve a virtual provided by a sibling package,
86 # and adding it to makedepends would make the package unbuildable, since
87 # nothing in the repositories provides it.
88 depends=('libinput' 'seatd' 'systemd-libs' 'mesa' 'libdrm' 'libxkbcommon'
89 'pam' 'wdm-greeter-implementation')
90 # conflicts and no provides: the AUR name `wdm` belongs to the unrelated
91 # WINGs Display Manager, which this package collides with on disk but is
92 # not a substitute for. Nothing in this project depends on the name either
93 # — the greeters depend on the virtual `wdm-greeter-implementation`.
94 conflicts=('wdm')
95 optdepends=('wdm-gtk-greeter: GTK4 greeter'
96 'wdm-webkit-greeter: WebKitGTK greeter, themed in HTML and CSS'
97 'wdm-plasma-greeter: Qt6/QML greeter, themed in QML')
98 backup=('etc/pam.d/wdm' 'etc/wdm/wdm.toml')
99 install=wdm.install
100
101 cd "$_src"
102
103 install -Dm755 target/release/wdm "$pkgdir/usr/bin/wdm"
104
105 # PAM is required, not optional: without it every login attempt fails with
106 # "Authentication failure".
107 install -Dm644 packaging/pam.d-wdm "$pkgdir/etc/pam.d/wdm"
108 install -Dm644 packaging/wdm.service "$pkgdir/usr/lib/systemd/system/wdm.service"
109
110 # The shipped example is a working configuration, so it is installed as the
111 # config rather than as documentation.
112 install -Dm644 packaging/wdm.toml.example "$pkgdir/etc/wdm/wdm.toml"
113
114 # wdm.service's Documentation= already points at man:wdm(1), so shipping the
115 # page is what makes `systemctl help wdm` resolve to something.
116 install -Dm644 packaging/wdm.1 "$pkgdir/usr/share/man/man1/wdm.1"
117
118 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
119 install -Dm644 CHANGELOG.md "$pkgdir/usr/share/doc/$pkgname/CHANGELOG.md"
120
121 # Shared with the deb and rpm packaging rather than written inline here, so
122 # the three cannot drift apart on who the greeter account is.
123 install -Dm644 packaging/wdm.sysusers "$pkgdir/usr/lib/sysusers.d/wdm.conf"
124 install -Dm644 packaging/wdm.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/wdm.conf"
125}
126
127package_wdm-greeter() {
128 pkgdesc='Reference greeter for wdm, software-rendered with no toolkit'
129 # Deliberately does not depend on wdm: wdm depends on the virtual this
130 # provides, and naming wdm here would make the pair circular.
131 depends=('libxkbcommon')
132 provides=('wdm-greeter-implementation')
133 backup=('etc/wdm/greeter.toml')
134
135 cd "$_src"
136 install -Dm755 target/release/wdm-greeter "$pkgdir/usr/lib/wdm/wdm-greeter"
137 # Fully commented out, so the defaults are also the documentation. In
138 # backup= above so pacman delivers a changed default as a .pacnew instead
139 # of clobbering an edited one.
140 install -Dm644 packaging/greeter.toml.example "$pkgdir/etc/wdm/greeter.toml"
141 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
142}
143

Changes since previous scan

--- PKGBUILD @ 2026-08-15 00:26
+++ PKGBUILD @ 2026-08-19 03:41
@@ -10,7 +10,7 @@
# hence the provides/conflicts on the main package.
pkgbase=wdm-wayland
pkgname=('wdm-wayland' 'wdm-greeter')
-pkgver=0.9.0
+pkgver=0.10.0
pkgrel=1
pkgdesc='A Wayland display manager that is its own compositor'
arch=('x86_64' 'aarch64')
@@ -28,7 +28,7 @@
# Never SKIP. SKIP would let makepkg accept whatever arrives, which for a source
# that is a URL is the wrong failure — a tarball substituted upstream would be
# built and installed without a word.
-sha256sums=('49e70b577665bf4fb7c78f5d9319febaf0a8268a80bdb8eb01ff95ed0db8b9f7')
+sha256sums=('94fbfae480ddd21b18e2c7e5472e135a5a5577dcb172ace989d520170622443b')
# The tarball is the whole workspace whatever the pkgbase is, so the source
# directory is named for the project rather than for this package.
@@ -68,7 +68,7 @@
package_wdm-wayland() {
# wdm needs *a* greeter, and each of the four provides the virtual, so pacman
- # prompts for a choice when only `wdm` is requested. Three of the four now live
+ # prompts for a choice when only `wdm-wayland` is requested. Three of the four now live
# in other AUR packages; pacman resolves a virtual regardless of which pkgbase
# provides it, and `wdm-greeter` below satisfies it with no toolkit at all.
# The greeters deliberately do not depend on wdm in return: that would make
@@ -87,7 +87,10 @@
# nothing in the repositories provides it.
depends=('libinput' 'seatd' 'systemd-libs' 'mesa' 'libdrm' 'libxkbcommon'
'pam' 'wdm-greeter-implementation')
- provides=('wdm')
+ # conflicts and no provides: the AUR name `wdm` belongs to the unrelated
+ # WINGs Display Manager, which this package collides with on disk but is
+ # not a substitute for. Nothing in this project depends on the name either
+ # — the greeters depend on the virtual `wdm-greeter-implementation`.
conflicts=('wdm')
optdepends=('wdm-gtk-greeter: GTK4 greeter'
'wdm-webkit-greeter: WebKitGTK greeter, themed in HTML and CSS'
@@ -127,9 +130,14 @@
# provides, and naming wdm here would make the pair circular.
depends=('libxkbcommon')
provides=('wdm-greeter-implementation')
+ backup=('etc/wdm/greeter.toml')
cd "$_src"
install -Dm755 target/release/wdm-greeter "$pkgdir/usr/lib/wdm/wdm-greeter"
+ # Fully commented out, so the defaults are also the documentation. In
+ # backup= above so pacman delivers a changed default as a .pacnew instead
+ # of clobbering an edited one.
+ install -Dm644 packaging/greeter.toml.example "$pkgdir/etc/wdm/greeter.toml"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

Scan history

Scanned at (UTC)SeverityRules
2026-08-19 03:41:13 Low 1
2026-08-15 00:26:13 Clean 2
2026-08-14 21:29:33 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