- message after switching to text mode
- implement a "console mode" that is more adequate for linux

- maybe don't expect fixed vt numbers in Xservers. instead, allocate a free
  vt dynamically (lowest vt configurable) and force the Xserver on that.
  dragging this further, one could drop Xservers alltogether, but that gives
  problems with sessreg on BSD. see #56329

- possibly parse Xserver log to find the vt, whether the config is busted or
  the display is busy, etc.

- dealloc vt after reserve Xserver shutdown (#65346)

- try harder to get rid of processes, see X servers failure cleanup path

- make auto-re-login a per-user option; save in .dmrc.

- add Xserver option set selection (#56329)
- add support for XRandR (#48602)
save these options to .dmrc?

- per-display sections in .dmrc. read-only, as far as kdm is concerned, as
  otherwise the GUI would become insanely complex.

- merge sessreg into the core? take care of #47151 then.

- handle _all_ config changes on the fly, including xdmcp & fifo
- make config position independent
- parse /etc/kderc?
- genkdmconf: treat backgroundrc as an ini file, not as a text blob

- think of something extremely clever to solve the case of modules
  that simply hang in pam_authenticate waiting for data.
  theoretically they could make PAM return PAM_INCOMPLETE, so we should
  poll every second or so, but in practice no module i know does it.
  evaluate communication directly with the backend, particularily letting it
  spawn another process for the shutdown authentication.

- write generic conversation plugin
- write modern conv plugin. or maybe this should be a parallel vs. serial
  setting of the classic plugin?
- write samba conv plugin. supposedly the domain is coded into the user name.
  (tell Erik Weber <eweber@iqnet-ag.de>)

- actually implement the libpam_client support

- check if pam works before trying to authenticate
- test whether nis, kerberos4 & kerberos5 work
- sync BSD_AUTH from xdm, sync osfc2 from kcheckpass

- swap pam_setcred and pam_open_session order.
- check how the system specific functions like setpcred (AIX) and
  setusercontext (BSD) combine with pam_setcred.

- Move clock from greeter dialog to desktop
- add more clock types (#18178)

- merge ipv6 xdmcp support from xdm
- Add XDMCP _client_ to core (for remote login like in dtlogin).
  Currently this is simply done by restarting the x-server with -query.

- bidirectional command sockets for better integration with kde session.
  relates to #25304

- add login restrictions for reserve displays (#59353)

- possibly do the authentication for the reserve display on the display it
  is launched from (relates #59353)

- remote-accessible command sockets for remote shutdown, etc.
  or maybe implement it as an xdmcp extension?
- LoginMode=DirectQuery

- "XDMCP over FiFo" - or at least a "manage <dpy> [<xauth>]" command

- starting kdm while a kdm is running in the background in "console mode"
  would reactivate the greeter. this would require lots of magic (suid root
  (disable -config option or make audit!) and make it write the fifo).

- add bgset to XDM_MANAGED
  add FiFo command "background\t{inprogress,aborted,done}"

- export OS choices, for selection in ksmserver (#45322)

- support sleep/suspend in the shutdown menu. should this be really treated
  like a shutdown? (#33839)

- lilo boot option <default>, i.e., -R with no argument
- support lilo -A mode
- support grub (#63800)

- disable autologin if some modifier (shift, like lilo?) is pressed (#60111)

- set LC_ALL in the backend for i18n-capable PAM libs - does one exist?
  alternative hack: interpret PAM's messages. generalizing that to the
  non-PAM case, the V_* marshalling overhead would go away.

- add language selection (export as LC_*). kde should respect this until the
  language is explicitly configured. and later? option "use system setting"?
  (#55379, #63804)
- add keymap selection (via xkb) (#51245, #64642)
for both, one would preset a list of available options and make one entry
the greeter's own setting. explicitly setting it sets it for both the greeter
and the session. .dmrc later affects only the session, not the greeter.

- handle failsafe internally, take care of focus. see #32973
- handle setting up .xsession-errors internally. as a possible extreme
  measure, pipe it through the daemon and put a size limit on it.

- TryExec for "custom" session type. always show the entry, but disable it
  if it is unavailable for the selected user.

- merge $PATH from pam_env with {User,System}Path from kdmrc

- more differentiated & logically named scripts: SetupServer, PreGreet,
  PostGreet, PreSession, PostSession. maybe SetupServer should be called
  only _instead_ of PreGreet when no greeter is started? then there is the
  option not to introduce the *Greet scripts, but tell Setup and Startup
  via an argument whether the greeter is used.

- greeter theming support. possibly compatible to gdm. (#37349)

- cursor theming support via Xcursor (#66829)

- add screensaver (#41941)
- support DPMS (#18597)

- support groups in various user lists in kdmrc (#27559)

- add a minimalistic window manager to the greeter (#17716, #51039)

- make kdm kcontrol module invokable from greeter. depends on wm. security!?
- write a separate configurator application, as kcontrol does not scale well
  enough to cover all of kdm's options.

- Different logos for each session type
- User pictures in logo field
- display user's .plan/.project (or .person? .userinfo?) in the greeter?
  text area/label would suck -> tooltip?

- allow disabling full names or login names in userview (#54110)
- alternative to userview: make the "login" field a combobox
- user list loading in the background (after first few to get a reasonable
  width estimate)
- user name completion ("short automatic" mode) (#58092)

- faking session parameters (type, language, etc.) of nonexistent users based
  on statistical analysis of actual users ... severe overkill!?

- export password to the startup/session scripts. somehow ... (#35396)

- actually implement AuthComplain

- actually implement InteractiveSd (#65543, relates #25304)

- let krootimage run permanently; make slideshow and external progs work
  (#63806)

- maybe reset CapsLock in the greeter. there is some CapsLock vs. ShiftLock
  confusion, though.

- maybe add kiosk mode: the user and his options are preset and locked in
  the greeter. i doubt it's usefulness, though.

- make builtin xconsole hideable; it should free the device when invisible.
  possibly auto-hide it on vt switch - see kdesktop_lock for the x event
  handling.

- rethink the coupling of the kdm components, particularily the config reader.
  options:
  - keep things basically as-is, make the Xaccess and Xservers interfaces
    even more flexible, add capability flags.
  - as previous, but don't use #defines, but textual constants. even more
    flexible, but slower, bigger, no compile-time checking, and the typing
    system would have to be more core-based. keys in the rc are considered
    invalid if they were not queried.
  - completely opposite: no explicit queries, but hard-code everything (the
    code would have to be autogenerated). that kills the idea of having one
    backend binary for multiple frontends, but that's a BlueSkyDream anyway.
    following that path, the config reader could be nuked at all.

- ssh-agent/gpg-agent integration (#44177, #65709)

- lbxproxy integration (tell ghakko)

- speedup login by prefetching files with session-specific scripts (#63789)

internal stuff:
- pass FamilyBroadcast instead of hostname BROADCAST to chooser
- improve signal handling in the subdaemon, it's incredibly racy (GOpen/GClose).
  depends on proper main loop.
- alternative extreme measure: launch greeter from master daemon? problem:
  G_Verify communication overhead.
- the process reaping from GClose should be in sync with the main loop.
- config seems to be rescanned at exit even though it needn't to be.
  related: ReadAccessDatabase() should be called in some reasonable location.
  also related: reserve status change in Xservers is still wrong (userSess).
- kill warning on AIX - see bug #13628 (really present?)
- clean up OOM handling, particularily get rid of LogOutOfMem, and make sure
  an error is not masked by following functions (e.g., addStrArr).
- put %m support into dopr(), nuke SysErrorMsg().
- implement auto-re-login by keeping the display subdaemon alive instead
  of starting a new one and feeding it the old auth data.
- move OS selection code to the core. the greeter could finally run
  unprivileged then

ralf says:
- put the kmenu sidebar image on the left of the greeter
- enable the clock by default
- make PreselectUser=Previous & FocusPasswd=true the default

thoughts (not really todo):
- suspending authentication (for nested shutdown auth) could be done with
  PAM_CONV_AGAIN/PAM_INCOMPLETE, but this is not portable.
  actually suspending is not required at all if PAM is reentrant enough to
  run a complete auth cycle from within the conversation function.
- multiple plugins could be used in a row, each serving a pam module.
  the plugins would have to detect that it's their turn by filtering messages
  and prompts.
- versioned .desktop files? if the already installed Version is -1, never
  upgrade, otherwise update if the new Version is greater.
  this is relatively pointless, as customized session definitions can be put
  in a separate directory.
- consider making the menu an actions-only menu again and put an "options >>"
  button somewhere. relates #63401, #61492
