I think some servers are not properly initialised after reexec documentation: Make sure everything uses active voice Make sure mood is consistent Texinfo manual should use declarative mood Source code documentation should use imperative mood Missing servers: xmds wmds mmds mdsx mdsw mdsm hwgamma swgamma hwcursor swcursor cursorgamma coopgamma host remote fb kbd keytrans kkbdrate rat compositor crtc seat dri drag cursorshadow kill focus dither state screensaver Extra servers: kbdbind ratbind gestures dcvs decorator tile stack workspace tray retro-crt kbd2rat multikey keystick posmem nest mds meta keybounce slowkey keycue ratbarrier desktop endomon a speech-to-keyboard server some server that hides the cursor when appropriate, such as when the user starts typing some server for drawing on the screen some server for delaying video output from programs (used if a video is not in sync with its audio, and is ahead) cinerama: combines multiple output to one single output transform: like xkeystone and xrandr --transform, should transform the rat cursor too kbdautorelease: server that automatically relases selected keys when pressed, emulating the feature found on the most keyboards for the pause-key. This is primarily intended for keyboards that do not have this feature on the pause-key. ratrot: rotate input of pointer device. Should be able do be monitor dependent and be able to follow the rotation of that monitor's output. converge: displace subpixels to correct for bad colour convergence on CRT:s ratautohide: automatically hide the rat when it has not been in use for a few seconds. pinkeye: translate everything to sRGB red. gamut: sRGB to screen specific RGB converter. (not all modern monitors actually use sRGB.) change colors to make it easier for people with defective colour vision to distinguished between certain (selectable) colours. Missing commands: reg clip screenshot slay chvt conf Command line interface for reconfiguring servers Need testing: registry clipboard kkbd kkbd, on a SPARC vt colour Security features: The server should authenticate itself for the clients This will require that the display server is not identified by an index by instead by the PID of the kernel, and that the master server passes file descriptors to the kernel and let the kernel sent its credentials to the client to prove that it is the correct server. Sockets cannot be hijacked so the server does not need to send its credentials to the kernel Clients should send their credentials upon connection. Sockets cannot be hijacked so the credentials are valid forever. The server should insert the credentials of each client a message pass through and why the the message passed through that client, and whether the message was modified. Clients should be able to tell the server who is allowed to see a message (all that can see are allowed to modify) based on PID, UID, GID, the permissions, owner and group of the executable, and the path of the executable, and possibly other attributes. Stability features: On failed re-execution, execute back to the old version. This is done by opening /proc/self/exe before preexecuting and execute back to that file descriptor on upgrade failure and close that file descriptor on successful upgrade Full introspection may be useful for debugging. Fast lanes Optimise use of mutexe by replace them with rwlocks (where appropriate) Listen for `Command: reregister` Register protocols A facility is needed to lookup available compose sequences to any character, it would be useful in character map programs so one can easier learn the compose sequences for character that one uses often Servers should be stored in LIBEXECDIR. Implement reconnect_to_display() Something is up with the test, it does not exit on Control+C Make sure it is possible and easy to change window manager and desktop environment online. IPA keyboard layout Add support for SIGINFO mds-registry mds-server If getpgrp() == tcgetpgrp(STDOUT_FILENO), a graphical program should be able to commandeer a window (in particular a terminal emulator) and return it when exiting. How do we best avoid that hung clients freeze the display. mds-hwgamma and mds-swgamma should be able to limit the gamma ramps' convergence to help ensure that the screen is always readable (optional feature). Soft limits are set in argv, hard limits are set via #define:s at compile-time. Perhaps (at least later): rewrite multithreaded servers to use epoll, especially mds-server Non-sRGB support, we need to take a step towards wider gamuts.