The current ldm for Ubuntu LTSP doesn't implement either language or session selection. This needs to be added, as it's available in gdm.


Users of thin clients need to be able to change languages. As well, if there are multiple desktops installed on the LTSP server (Gnome and KDE for example) you need to be able to select them.

Use cases

Oliver sits down at his thin client. A native German speaker, he drops down the language selector, and picks the German language option. Upon login, his languages and locale are set correctly.

Scotti, who prefers to run KDE, walks up to the thin client in the student computing lab. She drops down the desktop selector, and selects the KDE option, and logs in as normal.


  • Changes needed for ldm


Modifications to ldm to get its language and session information from the server.

  1. How to get the server's available sessions and languages into ldm?
  2. Use the existing ltspinfod from
  3. Enhance ltspinfod to provide the following two variables and run it on the ltsp-server
     SERVER_LANGS=$(locale -a|grep -v POSIX|grep -v ^C$)
     SERVER_SESSIONS=$(update-alternatives --list x-session-manager)
  4. The lines of SERVER_LANGS will be split at the dot (i.e. de_DE.UTF-8 becomes de_DE) and mapping to a descriptive name will be done by pulling out the matching name of /etc/locale.alias. The merged list of tupels is then provided to ldm (We could as well do all this without a network service, but in the future also selection of different ssh servers (i.e. for different departments) from ldm should be possible so we can't rely on the local chroot if we dont want to redo everything at that time)
  5. Make ldm ask on the ltspinfo port for the needed info
  6. ltspinfod needs to be packaged and needs to be a dependency of ltsp-server

Data preservation and migration

The new ldm should use the users .dmrc file in user $HOME as gdm/kdm do.

  • This will be done via a /etc/X11/Xsession.d/53ldm script contained in the ldm-serverscripts package that reads the environment variables LDM_SESSION and LDM_LANGUAGE and writes changes to the ~/.dmrc file if the variables differ from the entries. If they don't, it wont touch the file.

BoF agenda and discussion

Looked at gdm with gdm-ssh-session. Found it to be unusable for the following reasons:

  1. It forces the user to select which server they'd log into with a zenity text entry box. This would need to be reworked significantly.
  2. The gdm-ssh-session isn't translated into multiple languages.
  3. gdm uses a pam based authentication, then launches the session. The script gdm-ssh-session is launched *AFTER* the session is authenticated, which implies that the user is available for authentication on the local system, which in this case, is the local thin client. The thin client currently has no concept of a local user, and we'd have to implement full network authentication. This won't be ready, and an option to discuss, until at least edgy+1.

Review comments


LTSPLoginAndSessionHandling (last edited 2008-08-06 16:19:19 by localhost)