Features/DisplayManagerRework

From FedoraProject

< Features
Revision as of 19:48, 27 June 2012 by Lennart (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Important.png
Set a Page Watch
Make sure you click watch on your new page so that you are notified of changes to it by others, including the Feature Wrangler

Contents

Display Manager Infrastructure Rework

Summary

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.

Owner

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.

Benefit to Fedora

Things generally become simple, easier and more modular. We will be more like other distros.

Scope

We need to make the following changes:

1. Update all display manager packages to include a display manager unit file, 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

[Install]
Alias=display-manager.service
2. Update all display manager packages to make use of the new systemd packaging macros to install the unit files, see FPC ticket #190: https://fedorahosted.org/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.

Dependencies

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: https://fedorahosted.org/fpc/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

http://www.freedesktop.org/software/systemd/man/systemd.preset.html explains the preset logic.

Release Notes

Switching display managers is no longer done by editing /etc/sysconfig/desktop.

Comments and Discussion