Current status

Detailed Description

We'd like to remove prefdm from the distribution. Instead of shipping a single prefdm.service which tries black magic to find out which DM to start, this information should be stored inside the packages themselves, and each package should ship its own service file which is symlinked to display-manager.service via "systemctl enable" commands.

We simplify the system this way and it is easier to add new display managers later on, as they don't need central registration. Selecting a window manager also becomes more uniform how we support selection of other services. And it also becomes more alike how things are done on other distributions.

We'll also be able to get rid of quite some ugly code in /etc/X11/prefdm. Information about Plymouth compatibility would then be maintained were it belongs, in the display manager packages themselves, and possibly even upstream.

Packages will make use of systemd presets so that spins have an easy way to select the window manager of their choice, simply by shipping a preset file.

We'd also like to explicitly configure all DMs to use VT1. The current mostly automatic approach doesn't work in a fully parallelized boot, simply because /dev/tty1 might appear busy because a status update is printed on it for another service that is starting. To avoid these prolems where /dev/tty1 might spuriously appear busy we should configure all DMs to explicitly bind to VT1.

Benefit to Fedora

Things generally become simple, easier and more modular. We will be more like other distros since we get rid of the Fedora-only prefdm logic, in favour of explicit unit files like they are used by other distros.

Scope

We need to make the following changes:

Update all display manager packages to include a display manager system unit file (e.g. /usr/lib/systemd/system/xyzdm.service), of the following contents:

[Unit]
Description=XYZ Display Manager
Documentation=man:xyzdm(8)
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service
# Add the following line only if the DM can do Plymouth internally
Conflicts=plymouth-quit.service
[Service]
ExecStart=/usr/bin/xyzdm -nofork
Restart=always
IgnoreSIGPIPE=no
# Add the following line only if your DM takes a name on the bus
BusName=org.freedesktop.XYZDisplayManager
[Install]
Alias=display-manager.service

Update systemd to remove the prefdm.service unit, and not longer ship the symlink /usr/lib/systemd/system/display-manager.service in the RPM. (fixed upstream)

Update systemd.rpm to include a default fedora preset file /usr/lib/systemd/system-preset/99-default.preset which includes the following lines (which makes gdm the default DM for fedora): (fixed in git)

enable gdm.service
disable *

(Optionally) Ask the various spin maintainers to include their own preset files in case they want to override gdm as default WM.

(Optionally) Patch systemd to parse /etc/sysconfig/desktop at upgrade time and generate a symlink from it that is stored in /etc/systemd/system/display-manager.service and ensures that the original display manager choice is kept. (fixed in git )

The display manager configuration files should be changed so that they explicitly bind to VT1 by default. The previous logic of allocating the first unallocated VT leaves the VT random, as due to the parallized bootup VT1 might appear in use at any time simple because a status update is printed at the same time as the dm started. The display manager configuration should hence override any automatism and forcibly bind to vt1.

Contingency Plan

If things don't work out we readd the old prefdm bits to initscripts and systemd, and change the preset files in systemd to not enable any DM unit files. That way we don't have to revert any work in the individual DM packages.

Documentation

Release Notes

Switching display managers is no longer done by editing /etc/sysconfig/desktop. Instead you "systemctl enable --force xyzdm.service" to enable the display manager of your choice, in case you have multiple installed.