add more spacing
[personal-kdebase.git] / workspace / kdm / TODO
blob485028e3126b9c63a506b750612dac378a7f6b37
1 - too many too big repaints in themer
3 - fix strings & add KUIT
5 - allow theme to specify gui-style & color-scheme.
7 - themer: interpret altfile attribute to image nodes
9 - initialize theming 'mode' properly. need to adapt action menu construction.
10   problem: the modes do not cover certain kdmrc settings. (partial patch)
12 - do something about GreetString, i18n & theming. need some magic for the default.
14 - error labels use fixed color. fix needs support from QPalette.
16 - message after switching to text mode
17 - report critical startup errors to the console
18 - set LANGUAGE in the backend for i18n-capable PAM libs
20 - handle non-linux VTs:
21   on systems without VT_GETSTATE, try activating all consoles in turn to
22   find free ones. wow, this sucks so much.
23   - BSD: 1st: pcvt, /dev/ttyC[0] (OpenBSD), /dev/ttyv[0] (other),
24               also emulated by wscons on /dev/ttyE.
25          2nd: syscons, /dev/ttyv[0], fallback /dev/vga
26   - Lynx, /dev/atc[0]
27   - Solaris, /dev/vt[00]
28   - SVR4, /dev/vc[00] (ESIX), /dev/vt[00] (other)
29   - SCO, /dev/tty[00], query current with CONS_GETINFO, counts 0-based
30   ref: xorg/programs/Xserver/hw/xfree86/os-support/xf86_OSlib.h
31 - act on BSD_INIT
33 - possibly parse Xserver log to find failure cause. this is very hacky.
35 - try harder to get rid of processes, see X servers failure cleanup path
37 - make auto-re-login (& EchoPasswd) per-user option; save in .dmrc.
39 - add Xserver option set selection (#56329)
40 - add support for XRandR (#48602)
41 save these options to .dmrc?
43 - per-display sections in .dmrc. read-only, as far as kdm is concerned, as
44   otherwise the GUI would become insanely complex.
46 - make config position independent
47 - warn about conflicting {Static,Reserver}Servers settings. more sanity checks?
48 - parse /etc/kderc?
49 - merge multiple kdmrcs in the style of kconfig.
50   how to set section priorities? the included file is recessive to *any*
51   matching entry from the master file.
53 genkdmconf:
54 - config inherits paths that point directly into the previous installation:
55   LogoPixmap & Theme in kdmrc, Wallpaper & WallpaperList in backgroundrc -
56   to fix the latter, treat backgroundrc as an ini file, not as a text blob
57 - add proper quoting and dequoting to ini parser & writer
58 - determining *uid could use finding obviously valid uids (valid password,
59   maybe home paths) and rounding
61 - kcm: deal with NoPassUsers=*
62 - kcm: detach backgroundrc change status from kdmrc change status.
63 - write a separate configurator application, as kcontrol does not scale well
64   enough to cover all of kdm's options.
66 - write generic conversation plugin
67 - write modern conv plugin. or maybe this should be a parallel vs. serial
68   setting of the classic plugin? (#148110)
69 - change conversation plugin interface:
70   - make gplugActivity() and gplugChanged() signals
71     - how to handle the meta object? don't want a lib. probably include
72       in every plugin (build system for external plugins?)
73   - introduce signal userPresent() - equivalent to mouse motion. should
74     prevent unlocker from going away, possibly should make unlocker pop up
75     (would need to be emitted even if not running). should not prevent timed
76     login.
78 - actually implement the libpam_client support
80 - check if pam works before trying to authenticate
81 - test whether nis, kerberos4 & kerberos5 work
82 - sync BSD_AUTH from xdm, sync osfc2 from kcheckpass
84 - Move clock from greeter dialog to desktop
85 - add more clock types (#18178)
86 - make kdm use plasma?
87 - add icons to action menu. icon theme selection!
89 - make greeter accels use ctrl instead of alt
91 - make auto-completion in login field cope with case-insensitivity
93 - Add XDMCP _client_ to core (for remote login like in dtlogin).
94   Currently this is done by simply restarting the x-server with -query.
95   Can't be done without extending XDMCP, though.
97 - many simultaneously running choosers will torture the target servers
98   independently from each other.
100 - add login restrictions for reserve displays (#59353)
102 - possibly do the authentication for the reserve display on the display it
103   is launched from (relates #59353)
105 - remote-accessible command sockets for remote shutdown, etc.
106   or maybe implement it as an xdmcp extension?
107 - LoginMode=DirectQuery
109 - "XDMCP over FiFo" - or at least a "manage <dpy> [<xauth>]" command
110 - the per-display sockets are in fact nonsense; gdm's approach is better
111 - use dbus instead of command socket?
113 - add bgset to XDM_MANAGED
114   add socket command "background\t{inprogress,aborted,done}"
115 - actually, remove XDM_MANAGED and do everything via the socket.
117 - lilo boot option <default>, i.e., -R with no argument
118 - support lilo -A mode
120 - support suspend/hibernate/standby in the shutdown menu. should this be really
121   treated like a shutdown? (#33839)
123 - add language selection (export as LC_*). (#55379, #63804)
124 - add keymap selection (via xkb) (#51245, #64642)
125 for both, one would preset a list of available options and make one entry
126 the greeter's own setting. explicitly setting it sets it for both the greeter
127 and the session. .dmrc later affects only the session, not the greeter.
129 - handle failsafe internally, take care of focus. see #32973
131 - TryExec for "custom" session type. always show the entry, but disable it
132   if it is unavailable for the selected user.
134 - cursor theming support via Xcursor (#66829)
136 - add screensaver (#41941)
137 - support DPMS (#18597)
139 - add a minimalistic window manager to the greeter (#17716, #51039)
141 - Different logos for each session type (see #74500)
142 - User pictures in logo field
143 - display user's .plan/.project (or .person? .userinfo?) in the greeter?
144   text area/label would suck -> tooltip?
146 - allow disabling full names or login names in userview (#54110)
147 - user list loading in the background (after first few to get a reasonable
148   width estimate)
150 - faking session parameters (type, language, etc.) of nonexistent users based
151   on statistical analysis of actual users ... severe overkill!?
153 - export password to the startup/session scripts. somehow ... (#35396)
155 - maybe reset CapsLock in the greeter. there is some CapsLock vs. ShiftLock
156   confusion, though.
158 - maybe add kiosk mode: the user and his options are preset and locked in
159   the greeter. i doubt it's usefulness, though.
161 - make builtin xconsole hideable; it should free the device when invisible.
162   possibly auto-hide it on vt switch - see krunner_lock for the x event
163   handling.
165 - ssh-agent/gpg-agent integration (#44177, #65709)
167 - lbxproxy integration (tell ghakko)
169 - make shutdown an in-daemon function, not a pre-exit action.
170   displays need to wake up again if nothing happens, though - add
171   configurable shutdown timeout.
172 - when a shutdown is scheduled, don't remove all login possibilities.
173   instead, display a warning in the greeter. use SIGUSR1 to notify already
174   running greeters about changes.
175 - user notification about scheduled shutdown (and cancelled forced shutdown):
176   - wall
177   - greeter popup
178   - d-bus message. this would be best, particularly because screen savers
179     would need no special handling then.
180 - maybe bomb DefaultSdMode, save in state file instead. compare with ksmserver.
182 - gdm changelog indicates that PAM sometimes
183   - continues despite PAM_CONV_ERR
184   - asks user name twice
185 - gdm avoids the PAM_MESSAGE message box vs. prompt problem by displaying
186   everything in one "error area". all messages are simply appended; an empty
187   message clears the area.
188 - gdm stops cursor blinking on not used (remote) displays after 20 secs to
189   save bandwidth.
191 internal stuff:
192 - improve signal handling in the subdaemon, it's incredibly racy (SIGTERM, etc).
193   depends on proper main loop.
194 - greeter sometimes won't shutdown when killing kdm - prolly some race
195 - the process reaping from gClose should be in sync with the main loop.
196 - kill warning on AIX - see bug #13628 (really present?)
197 - xdmcp.c: make networkAddressToName use networkAddressToHostname?
198 - options for running the greeter and the core unprivileged. problem: xauth.
199 - make the openbsd _x11-user hack in auth.c sane
200 - rethink the coupling of the kdm components, particularily the config reader.
201   options:
202   - keep things basically as-is, make the Xaccess interface even more flexible,
203     add capability flags.
204   - as previous, but don't use #defines, but textual constants. even more
205     flexible, but slower, bigger, no compile-time checking, and the typing
206     system would have to be more core-based. keys in the rc are considered
207     invalid if they were not queried.
208   - completely opposite: no explicit queries, but hard-code everything. that
209     kills the idea of having one backend binary for multiple frontends, but
210     that's a BlueSkyDream anyway.
211     following that path, the config reader could be nuked at all. will have to
212     do this for performance reasons anyway if some some sort of call-back
213     mechanism for option values is added to allow some automation (depending
214     on boot options, for example). possible callbacks are KConfig-like [$e]
215     interpretation and an include statement that generates a config on the fly.
217 ralf says:
218 - put the kmenu sidebar image on the left of the greeter
219 - enable the clock by default
221 thoughts (not really todo):
222 - PAM sucks. big time.
223   historically, it is completely incapable of operating in event-driven contexts
224   when it comes to non-console authentication schemes. the module just hangs in
225   pam_sm_authenticate() (pam_authenticate() to the outside), waiting for input
226   from its device.
227   then came linux-pam 0.58, introducing PAM_BINARY_{MSG,PROMPT} to the
228   conversation function interface. no conversation function could handle the
229   binary prompts generically, of course. so came linux-pam 0.63 with a client
230   library that would add another layer of indirection, so the conversation
231   function could simply call into it and it would do whatever was configured
232   by the admin. and everbody was happy, right? wrong! i've yet to see a single
233   module (except for the demo module in linux-pam, of course) that actually
234   uses this feature. not to mention the non-existing portability (you don't
235   seriously expect TOG to extend the PAM standard within the next decade, do
236   you?). so we're right where we started from.
237   this imposes problems in two use cases:
238   - cancelling authentication alltogether. this happens when the user changes
239     the authentication method or when the greeter exits for some reason. if
240     the process waits in the conversation function, it can simply return
241     PAM_CONV_ABORT. if the module hangs, we're screwed.
242   - suspending authentication. this is needed for shutdowns that need auth.
243     if the module hangs, we're screwed, of course. if we're waiting in the
244     conversation function, we have three options: 1) just abort the auth
245     cycle and start a new one. this is what is done currently. 2) just open
246     a second pam handle and authenticate with it, all from within the "outer"
247     pam_authenticate(). if we're lucky, no involved modules use static variables
248     and things work out. 3) linux-pam 0.65 introduced the following: the
249     conversation function can return PAM_CONV_AGAIN. this in turn makes the
250     module and consequently libpam return PAM_INCOMPLETE, requesting the
251     application to call the resp. libpam function again. in theory this
252     guarantees that authentication with a second pam handle is safe. of course,
253     PAM_INCOMPLETE is just as popular and thus useful as PAM_BINARY_PROMPT.
254   we could just longjmp() out of hanging modules from a signal handler.
255   however, this might lead to resource leaks and even leave us with an unstable
256   libpam. killing the hanging process seems like the most viable solution.
257   however, for this we first need to make the greeter a child of the master
258   daemon. also, the display sub-daemon (which happens to do the main auth.)
259   is responsible for keeping the initial X connection open. killing it would
260   terminate the session according to the XDMCP spec. other issues are probable.
261 - multiple conv. plugins could be used in a row, each serving a pam module.
262   the plugins would have to detect that it's their turn by filtering messages
263   and prompts.
264 - consider making the menu an actions-only menu again and put an "options >>"
265   button somewhere. relates #63401, #61492
266 - pipe .xsession-errors through the daemon and put a size limit on it.
267   remove old logs in disk-full situation.
270 last sync with XFree86 HEAD: 2004-04-02