From Fedora Project Wiki
(Release Notes)
Line 100: Line 100:
== Release Notes ==
== Release Notes ==
Switching display managers is no longer done by editing /etc/sysconfig/desktop.  
Switching display managers is no longer done by editing /etc/sysconfig/desktop. Instead you "systemctl install --force xyzdm.service" to enable the display manager of your choice, in case you have multiple installed.
== Comments and Discussion ==
== Comments and Discussion ==

Revision as of 20:00, 27 June 2012

Display Manager Infrastructure Rework


We'd like to remove the prefdm logic. Instead we propose to use systemd's own symlink management to select a display manager.

At the same time we'd also like to make all display managers bind explicitly to vt1, instead of allocating the first free VT.


Current status

  • Targeted release: Fedora 18
  • Last updated: 2012-06-27
  • Percentage of completion: 10%

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 install" 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.


We need to make the following changes:

  1. Update all display manager packages to include a display manager unit file, of the following contents:
    Description=XYZ Display Manager
    After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service
    # Add the following line only if the DM can do Plymouth internally
    ExecStart=/usr/bin/xyzdm -nofork
  2. Update all display manager packages to make use of the new systemd packaging macros to install the unit files, see FPC ticket #190:
  3. Patch livesys-late.service to include Before=display-manager.service (currently there is an After=livesys-late.service, but this really should live in livesys and hence be reversed).
  4. Update initscripts to remove the prefdm script.
  5. Update systemd to remove the prefdm.service unit, and not longer ship the symlink /usr/lib/systemd/system/display-manager.service in the RPM.
  6. Update fedora-release.rpm to include a default fedora preset file /usr/lib/systemd/system-preset/99-default.preset which includes the following lines (which make gdm the default DM for fedora):
    enable gdm.service
    disable *
  7. Ask the various spin maintainers to include their own preset files in case they want to override gdm as default WM.
  8. (Optionally) Patch initscripts to parse /etc/sysconfig/desktop at upgrade time and generate a preset file from it that is stored in /etc/systemd/system-preset/ and ensures that the original display manager choice is kept.
  9. 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.

The following display managers are currently available in Fedora and need to be patched: xorg-x11-xdm, gdm, ldm, lxdm, cdm, kdm, slim.

We will file bugs against all display managers in question as well as the other three packages, each with detailed explanations what to do. If possible and OK'ed we will make the necessary changes to the packages on our own. We will create a tracker bug to keep track of all created bugs.

How To Test

The right display manager should come up as normal on the various distributions.

The following command should work to change the default display manager for the next reboot:

systemctl install --force xyzdm.service

User Experience

Not much. "systemctl install" can now be used to enable and switch specific DMs.


Needs changes in all 7 display managers we currently have in the distribution, plus in initscripts, fedora-release and systemd.

FPC needs to accept ticket #190:

Contingency Plan

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

Documentation explains the preset logic.

Release Notes

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

Comments and Discussion