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 no other dependencies, yet supports multiple users/sessions and can start virtually any DE/WM.
A package is available in the AUR.
You can configure CDM by editing
/etc/cdmrc. It is fully documented and should be relatively easy to figure out.
At least these should be edited before you start using CDM:
wmbinlist=(awesome openbox-session startkde startxfce4 gnome-session) wmdisplist=(Awesome Openbox KDE Xfce Gnome)
Add whatever WM/DE you have.
If you typically start your WM from .xinitrc you can enable the usexinit option in
/etc/cdmrc. You can also start your WM from a script, by including the path in your binlist, like so:
/etc/inittab or /etc/rc.conf
After installing CDM and configuring it to your liking, you should edit
/etc/rc.conf to make sure no other display managers get started.
#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.
gdm (or kdm, or xdm, ...) should be disabled or removed from your DAEMONS array.
CDM itself will start automatically, hence there is no need for further configuration in this respect.
Themes are located in
/usr/share/cdm/themes, and can be switched via your
The theme syntax is fairly self explanatory, the best way to start a new theme would be to duplicate and edit an existing theme.
Login to the console and select your prefered session (or console, if allowed) from the menu.
Additional users may be logged in by switching to tty1 (ctrl+alt+f1). If the user is already logged in, CDM will automatically activate their pre-existing session.
If you want to add entries like shutdown which needs parameters you have to save the command in an executable script and add the script with full path to the wmbinlist array. E.g. shutdown:
#!/bin/bash shutdown -h now
wmbinlist=( ... /script/shutdown ... )