From ArchWiki
Revision as of 19:50, 30 November 2012 by Bkcoffma (talk | contribs) ("doesn't have almost any dependencies" -> "has almost no dependencies")
Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end CDM is a minimalistic, yet full-featured replacement for login-managers like slim, kdm, gdm and qingy that provides a fast, dialog-based login system without the overhead of the X Window System or the instability of qingy. Written in pure bash, CDM has almost no dependencies, yet supports multiple users/sessions and can start virtually any DE/WM.


Install the cdm-gitAUR package which is available in the AUR.

After installing CDM you should edit /etc/inittab or /etc/rc.conf to make sure no other display managers get started.

  • /etc/inittab
#x:5:respawn:/usr/bin/xdm -nodaemon
#x:5:respawn:/usr/sbin/gdm -nodaemon
#x:5:respawn:/usr/bin/kdm -nodaemon
#x:5:respawn:/usr/bin/slim >& /dev/null

They should all be commented.

  • /etc/rc.conf
DAEMONS=(... !gdm)

gdm (or kdm, or xdm, ...) should be disabled or removed from your DAEMONS array.


To run cdm, use

$ cdm [RCFILE]

To autostart cdm when you log in your account, copy the following to the tail of your shell profile ($HOME/.profile, $HOME/.zlogin, etc.):

 if [[ "$(tty)" == /dev/tty* ]]; then
     [[ -n "$CDM_SPAWN" ]] && return
     [[ -z "$DISPLAY$SSH_TTY" ]] && exec cdm


You can configure CDM by editing /etc/cdmrc. It is fully documented and should be relatively easy to figure out. You can also have user specific config files by copying /etc/cdmrc to $HOME/.cdmrc.

Menu items

Menu items are configured using three arrays: binlist, namelist and flaglist. Order of items in these arrays is important, items with the same index describe the same menu item. binlist contains commands which are executed, namelist contains names which are shown in the menu and flaglist contains type of the programs specified in binlist, either 'X' for X sessions or 'C' for console programs. Basically X sessions are started using startx (the item in binlist is argument of startx command) and console programs are started using exec.

There is a sample configuration:

  "~/.xsession"                                   # Launch your X session,
  "/bin/bash --login"                           # or just execute your shell,
  "/usr/bin/fbterm"                             # or start a frame buffer console,
  "/usr/bin/cdm ~/.submenu.cdmrc"  # or go to a submenu :)
namelist=("X session" Console FBTerm "Sub menu")
flaglist=(X C C C)


Themes are located in /usr/share/cdm/themes, all you have to do is pass full path of the theme file to dialogrc variable in /etc/cdmrc, for example


The theme syntax is fairly self explanatory, the best way to start a new theme would be to duplicate and edit an existing theme.

Starting X

You can affect the process of starting X server in several ways - use of ConsoleKit is optional, you can specify on which tty the X server will be started (specify either number or 'keep' if you want to run X server on current tty), and finally you can specify custom X server arguments.

Custom commands for power operations

If you want to add entries for power operations, like shutdown, reboot etc., you can include them in binlist array.

ConsoleKit method

If you use ConsoleKit for session authentication, see ConsoleKit#Use_dbus_for_power_operations.

systemd method

If you use systemd, see Systemd#Power_Management.

More resources