aboutsummaryrefslogtreecommitdiffstats
path: root/TODO
blob: 89b136a002c7e62e4eea98bcf9c65852d70e13c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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.