while I was at akademy, ossi took the time to explain kdm a bit. unfortunately my notes were in my backpack, so I’d better write down what I remember before it goes away. feel free to correct me on anything I may have mis-remembered. :)
kdm has a backend and a frontend. the backend is scary code that handles authentication and such. the frontend is the gui most people see when starting the computer.
the backend is kinda like a very complicated kcheckpass. or more accurately, kcheckpass is a subset of its functionality. apparently PAM authentication has four parts, and kcheckpass only does one of them, whereas kdm needs all four.
the frontend… is really better explained with a diagram.
kdm uses krootimage to draw a pretty background (kinda like plasma’s wallpaper plugins). the actual widgets in the middle (user list, login options, etc) are done by the greeter (like a plasmoid, but not really). the greeter loads a “greeter plugin” that provides the widgets for entering your name and password (I wonder if it’d work as a proxywidget?). I’ve never seen anything other than the default, but apparently there can be other fields there for more complicated authentication setups. there’s a set of authentication plugins for the backend to go with these greeter plugins, iirc.
the neat thing about the greeter plugins (imho anyways) is that they’re also used by the screensaver’s unlock dialog. it just passes the data to kcheckpass for authentication instead. :) hooray for code re-use.
the lock dialog also has user-switching stuff that I’ve never used myself, and I had some notes about that. hmm. the button to switch users brings up a list of existing sessions. you can then switch to one of those or click a ‘new session’ button. that button has a confirmation dialog (apparently some graphics cards don’t like multiple sessions) and then it’ll spawn a new kdm.
I think that’s everything I had written down on kdm. yay! :) now if only I remembered the rest of my notes that well…