From Fedora Project Wiki

New GDM

Summary

Update to new upstream Gnome Desktop Manager (gdm)

Owner

  • Name: RayStrode, JonMccann

Current status

  • Targeted release: Fedora 9
  • Last updated: 2008-04-09
  • Percentage of completion: 100%

gdm in rawhide is at 2.21.10.

Detailed Description

The GNOME display manager (gdm) is undergoing pretty thorough refactoring. The upstream effort is being lead by William Jon McCann (and he pulled this off almost entirely on his own). A lot of detail on the rewrite can be found at http://live.gnome.org/GDM and http://live.gnome.org/GDM/NewDesign. These pages also list a number of goals that we hope to achieve by the rewrite:

  • Better fast-user-switching support (bug #343539 etc)
  • Enable a smarter people chooser in the greeter
  • Better ConsoleKit integration (seat awareness, coordination etc)
  • Facilitate creating a new blingier greeter
  • Dynamically configure displays
  • Allow session agents to run in the greeter session (gnome-power-manager etc)
  • Have the ability to only run a single greeter per seat (currently gdmflexiserver will start any number of them)
  • Use PolicyKit for reboot etc authorization/handling
  • Use a better configuration mechanism that is more compatible with a hypothetical systemwide D-Bus based GConf
  • Provide a D-Bus API so that agents like fast-user-switch applet can be written more easily and operate more efficiently
  • Fix all the horrible non-reentrant POSIX signal handling and various race conditions in the current code (bug #336549 etc)
  • Make it easier to do "hot desking" type things
  • Use a more modern design to simplify maintence and enhance flexibility (use of GObject etc)
  • Use a more robust, secure, and flexible IPC

Discussion about the rewrite and current development is happening on the gdm mailing list , there is a TODO list for the rewrite at http://live.gnome.org/GDM/ToDo

Benefit to Fedora

A better display manager; some of the goals listed above have very concrete benefits for users, such as power management on the login screen.

Scope

This requires building the new gdm, and work on completing the rewrite towards the listed goals. Making some of the new features work well will require some additional changes:

  • Adding a location for system-wide non-default settings to gconf, and adding facilities for setting system-wide settings e.g. to the gnome-power-manager configuration dialog.
  • Setting up gconf lockdown for the gdm sandbox session so that it is not possible to e.g. mess up the g-p-m preferences from the login screen. This may need some work to ensure that all the configuration UI that can appear on the login screen actually respects readonly-ness of gconf keys. For some things it may be better to add extra gconf keys that suppress the configuration UI altogether.
  • Setting up url handlers in the gdm sandbox session so that browsers or mail clients cannot be brought up by e.g. clicking on links in about dialogs.
  • gnome-panel and the fast-user-switch-applet need to be adapted to the new gdm interfaces

Test Plan

  • Login screen functionality:
  • Verify that keynav works on the login screen
  • Test that the user list works as expected (narrowing down when a user is selected, then widening again on cancel)
  • Test that session/language/keyboard layout selection works and is remembered
  • Test that the MRU functionality of the lists work
  • Check that the ui does not expose unintended functionality (e.g. it must not be possible to launch a web browser from the about dialog of e.g. gnome-power-manager)
  • Test that power management and networking are operable on the login screen
  • Test that a11y features work on the login screen
  • Test that automatic login works
  • Test that the session combo works with other desktops (even if gnome is not installed)
  • Reboot:
  • Check that PolicyKit control for the Reboot/Shutdown buttons on the login screen and in the panel logout dialog works as intended. If PolicyKit says categorically no, do the buttons disappear or appear insensitive ?
  • Robustness:
  • No matter how you end the session, you should get back to the login screen when the session ended
  • If the greeter is somehow killed, it must come back
  • Check that the user list works with large amounts of users (in the order of 1000s)
  • User switching:
  • Check that the user switch applet works
  • Check that the applet works with large amounts of users (in the order of 1000s)
  • Verify that gdm cleans up correctly after a dynamically opened session is finished

User Experience

Notable improvements to the user experience that we hope to achieve are

  • a compositor on the login screen, for nice graphical effects (we ended up not doing this by default, there is a gconf key to turn it on)
  • power management and monitoring on the login screen, the laptop will hibernate or shutdown when the battery gets low
  • the user list will hopefully become a bit smarter and only show local users and users who have logged in recently (which should fix problems that people have with the user list on large installations with thousands of users)
  • keyboard layout selector on the login screen (we've punted this one as it is very tied to configuration problems)
  • easily configurable accessibility on the login screen

Dependencies

  • This feature depends on new ConsoleKit features that are being developed in parallel.
  • The fast-user-switch-applet needs to be rewritten to talk to the new gdm.
  • The panel needs to be patched to talk to ConsoleKit for reboot/shutdown.
  • KDE needs to be patched to talk to ConsoleKit for reboot/shutdown.

Contingency Plan

Revert back to the 2.20 branch of gdm, which is maintained by upstream for people who don't want to adjust to the new gdm yet. A number of distributions have already declared that they are staying with the 2.20 branch for now, so the branch will certainly continue to live.

Documentation


Release Notes

  • Mention the new features that are available on the login screen.
  • Explain that gdmsetup got replaced by a yet-to-be-written new configuration tool
  • Explain that PolicyKit can now be used to control shutdown/reboot privileges