You are not logged in.
NOTE: This thread is not open to opinions regarding X11 or Wayland. Please refrain from such.
I'm curious if any fellow forum folk have yet built a pure Wayland Gnome DE without support for an X11 session nor Xwayland? This is now possible as of Gnome 47.
I don't see anything in the AUR, hence this thread topic. That's understandable tho given it could be a burden to maintain due to user issues.
Not to be outdone by our friends over at Fedora, I'm thinking of giving it a go (locally, not for the AUR).
I'm in no way advocating for this to be the de facto standard for Arch. Xwayland is under active development.
With Gnome 46 and 47 I've been building mutter with meson_options: xwayland=false. Dead simple and mostly functionally equivalent. But, it leaves all the X11-related dependency bits laying around.
Seems the goal of the thread title could be achieved by modifying just 4 packages (gdm, gnome-session, gnome-shell, mutter)?
Last edited by tekstryder (2024-11-02 23:33:03)
Offline
I'll edit this post with the various PKGBUILD diffs and a couple other changes required, but I've removed the dependency on Xwayland after logging into my rebuilt Gnome 47.1 environment:
$ sudo pacman -Rns xorg-xwayland
checking dependencies...
Package (8) Old Version Net Change
libfontenc 1.1.8-1 -0.03 MiB
libxcvt 0.1.2-2 -0.04 MiB
libxfont2 2.0.7-1 -0.23 MiB
xorg-fonts-encodings 1.1.0-1 -0.61 MiB
xorg-server-common 21.1.14-1 -0.12 MiB
xorg-setxkbmap 1.3.4-2 -0.03 MiB
xorg-xkbcomp 1.4.7-1 -0.21 MiB
xorg-xwayland 24.1.4-1 -2.19 MiB
Total Removed Size: 3.47 MiB
:: Do you want to remove these packages? [Y/n]
:: Processing package changes...
(1/8) removing xorg-xwayland [########################################################################################################################] 100%
(2/8) removing xorg-server-common [########################################################################################################################] 100%
(3/8) removing xorg-xkbcomp [########################################################################################################################] 100%
(4/8) removing xorg-setxkbmap [########################################################################################################################] 100%
(5/8) removing libxfont2 [########################################################################################################################] 100%
(6/8) removing libfontenc [########################################################################################################################] 100%
(7/8) removing xorg-fonts-encodings [########################################################################################################################] 100%
(8/8) removing libxcvt [########################################################################################################################] 100%
:: Running post-transaction hooks...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating fontconfig cache...
(3/3) Updating the desktop file MIME type cache...
EDIT #1: gdm
NOTE: I added a required patch that has since landed after gdm 47.0 was tagged
--- PKGBUILD-GDM-ARCH 2024-11-02 14:47:37.106557798 -0400
+++ PKGBUILD-GDM-MFM 2024-11-02 12:06:58.392470129 -0400
@@ -8,7 +8,7 @@
libgdm
)
pkgver=47.0
-pkgrel=1
+pkgrel=1.1
pkgdesc="Display manager and login screen"
url="https://gitlab.gnome.org/GNOME/gdm"
arch=(x86_64)
@@ -28,10 +28,6 @@
keyutils
libcanberra
libgudev
- libx11
- libxau
- libxcb
- libxdmcp
pam
systemd
systemd-libs
@@ -46,28 +42,22 @@
meson
plymouth
yelp-tools
- xorg-server
- xorg-xhost
- xorg-xrdb
-)
-optdepends=(
- 'xorg-server: X session support'
- 'xorg-xhost: X session support'
- 'xorg-xrdb: X session support'
)
+
checkdepends=(check)
source=(
"git+https://gitlab.gnome.org/GNOME/gdm.git#tag=${pkgver/[a-z]/.&}"
- 0001-Xsession-Don-t-start-ssh-agent-by-default.patch
+ 088a2af5ffe8c817d64cea020698a58d1059e4ae.patch
)
b2sums=('68e4833abdeb0c1f6bf64ddf35b725b06d379e26e7c4f757e5a958786803605bc072e1a224d7249f00bdf752e7db91bb95f81ca792f5a71f428a906a09457d12'
- 'f7e868fdd7cc121433de1572583eb728f4d186cd4f52c6d6c8f2ccf4a3cf781144ff71f704f13571ddb97a1ff4ec55cfa3df25d38737ad19da21e84ddc2d3ee4')
+ 'SKIP')
prepare() {
cd gdm
- # Don't start ssh-agent by default
- git apply -3 ../0001-Xsession-Don-t-start-ssh-agent-by-default.patch
+ # daemon: Don't check for installed XWayland if Wayland-only
+ # https://gitlab.gnome.org/GNOME/gdm/-/commit/088a2af5ffe8c817d64cea020698a58d1059e4ae
+ git apply -3 ../088a2af5ffe8c817d64cea020698a58d1059e4ae.patch
}
build() {
@@ -75,7 +65,8 @@
-D dbus-sys="/usr/share/dbus-1/system.d"
-D default-pam-config=arch
-D default-path="/usr/local/bin:/usr/local/sbin:/usr/bin"
- -D gdm-xsession=true
+ -D gdm-xsession=false
+ -D x11-support=false
-D ipv6=true
-D run-dir=/run/gdm
-D selinux=disabled
@@ -105,7 +96,6 @@
backup=(
etc/gdm/PostSession/Default
etc/gdm/PreSession/Default
- etc/gdm/Xsession
etc/gdm/custom.conf
etc/pam.d/gdm-autologin
etc/pam.d/gdm-fingerprint
EDIT #2: gnome-session
NOTE: I pulled in a patch that has since landed after gnome-session 47.0.1 was tagged. Not required.
--- PKGBUILD-GNOME-SESSION-ARCH 2024-11-02 14:56:58.590490409 -0400
+++ PKGBUILD-GNOME-SESSION-MFM 2024-11-02 12:14:58.718977371 -0400
@@ -3,7 +3,7 @@
pkgname=gnome-session
pkgver=47.0.1
-pkgrel=1
+pkgrel=1.1
pkgdesc="The GNOME Session Handler"
url="https://gitlab.gnome.org/GNOME/gnome-session"
arch=(x86_64)
@@ -23,9 +23,6 @@
libgl
libice
libsm
- libx11
- libxcomposite
- libxtst
systemd
systemd-libs
xdg-desktop-portal-gnome
@@ -42,14 +39,25 @@
xtrans
)
groups=(gnome)
-source=("git+https://gitlab.gnome.org/GNOME/gnome-session.git#tag=${pkgver/[a-z]/.&}")
-b2sums=('66034808c7c395c6c8fd9285dd6cc8602c0f1a65b4b0fd980b3bd4192420b25dc076d69e71a1be79247670504132734bc71e8b05ef5419294e4913d42bb1ff9e')
+source=(
+ "git+https://gitlab.gnome.org/GNOME/gnome-session.git#tag=${pkgver/[a-z]/.&}"
+ 6452b8b4f8bb674726ffc547b018be5a4998c7f3.patch
+)
+b2sums=('66034808c7c395c6c8fd9285dd6cc8602c0f1a65b4b0fd980b3bd4192420b25dc076d69e71a1be79247670504132734bc71e8b05ef5419294e4913d42bb1ff9e'
+ 'SKIP')
prepare() {
cd $pkgname
+
+ # gnome-session wrapper: Avoid running as a subprocess
+ # https://gitlab.gnome.org/GNOME/gnome-session/-/commit/6452b8b4f8bb674726ffc547b018be5a4998c7f3
+ git apply -3 ../6452b8b4f8bb674726ffc547b018be5a4998c7f3.patch
}
build() {
+ local meson_options=(
+ -D x11=false
+ )
arch-meson $pkgname build
meson compile -C build
}
EDIT #3: mutter
NOTE: Added build-time dependency on (libxcvt). The cvt binary is used by src/backends/native/gen-default-modes.py at build time to generate a header file containing a list of display modes (drmModeModeInfo).
--- PKGBUILD-MUTTER-ARCH 2024-11-02 15:05:39.720280547 -0400
+++ PKGBUILD-MUTTER-MFM 2024-11-02 15:10:00.338501516 -0400
@@ -9,7 +9,7 @@
mutter-docs
)
pkgver=47.1
-pkgrel=1
+pkgrel=1.1
pkgdesc="Window manager and compositor for GNOME"
url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64)
@@ -46,21 +46,6 @@
libsm
libsysprof-capture
libwacom
- libx11
- libxau
- libxcb
- libxcomposite
- libxcursor
- libxdamage
- libxext
- libxfixes
- libxi
- libxinerama
- libxkbcommon
- libxkbcommon-x11
- libxkbfile
- libxrandr
- libxtst
mesa
pango
pipewire
@@ -69,7 +54,6 @@
startup-notification
systemd-libs
wayland
- xorg-xwayland
)
makedepends=(
egl-wayland
@@ -77,6 +61,7 @@
git
glib2-devel
gobject-introspection
+ libxcvt
meson
sysprof
wayland-protocols
@@ -101,6 +86,8 @@
-D libdisplay_info=enabled
-D tests=disabled
-D wayland_eglstream=true
+ -D xwayland=false
+ -D x11=false
)
CFLAGS="${CFLAGS/-O2/-O3} -fno-semantic-interposition"
EDIT #4: gnome-shell
--- PKGBUILD-GNOME-SHELL-ARCH 2024-11-02 15:16:36.307269156 -0400
+++ PKGBUILD-GNOME-SHELL-MFM 2024-11-02 14:45:04.389595871 -0400
@@ -9,7 +9,7 @@
gnome-shell-docs
)
pkgver=47.1
-pkgrel=1
+pkgrel=1.1
epoch=1
pkgdesc="Next generation desktop shell"
url="https://gitlab.gnome.org/GNOME/gnome-shell"
@@ -50,8 +50,6 @@
libpulse
libsecret
libsoup3
- libx11
- libxfixes
mutter
pango
polkit
Please let me know if you spot any issues, or have suggestions for improvement!
I'll give it a few days for feedback before marking as solved.
Last edited by tekstryder (2024-11-02 22:24:55)
Offline
$ pactree --sync --reverse --depth 1 libx11 | grep gnome
├─gnome-applets
├─gnome-control-center
├─gnome-flashback
├─gnome-mplayer
├─gnome-panel
├─gnome-session
├─gnome-settings-daemon
├─gnome-shell
├─gnome-terminal
├─xdg-desktop-portal-gnome
$
you covered gnome-shell, but not the other packages. Maybe settle for gnome without xwayland for now ?
Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.
clean chroot building not flexible enough ?
Try clean chroot manager by graysky
Offline
you covered gnome-shell, but not the other packages. Maybe settle for gnome without xwayland for now ?
Remove that | grep gnome and you'll see why I did not pursue libx11 as a whole.
I'll adjust the phrasing of my OP/goal slightly. There is no longer an X11 session available with the packages I built. This is in parity with the current Fedora 41 release.
The other packages you listed I've either not got installed and/or have no requirement of an X11 or Xwayland session.
$ pactree --reverse --depth 1 libx11 | grep gnome
├─gnome-control-center
├─gnome-settings-daemon
├─xdg-desktop-portal-gnome
They're all happy in native Wayland. As mentioned in the OP I've been running an Xwayland-less native Wayland session for a couple years now (during Gnome 44 and 45 I used the --no-X11 startup option to block Xwayland in the session... then began building mutter myself for 46 and 47 with meson option).
Also note no more xorg-server*:
$ pacman -Qs xorg
local/xorg-xmessage 1.0.7-1
Display a message or query in a window
local/xorg-xprop 1.2.7-1 (xorg-apps xorg)
Property displayer for X
local/xorg-xrdb 1.2.2-2 (xorg-apps xorg)
X server resource database utility
local/xorg-xset 1.2.5-2 (xorg-apps xorg)
User preference utility for X
local/xorgproto 2024.1-2
combined X.Org X11 Protocol headers
EDIT1: Clarified thread title and OP to better reflect goal. Thanks!
EDIT2: A few more snippets regarding package/dependency changes (kinda the whole point of the thread).
Last edited by tekstryder (2024-11-03 01:55:26)
Offline