1Xdmx(1) General Commands Manual Xdmx(1)
2
3
4
6 Xdmx - Distributed Multi-head X server
7
9 Xdmx [:display] [option ...]
10
12 Xdmx is a proxy X server that uses one or more other X servers as its
13 display devices. It provides multi-head X functionality for displays
14 that might be located on different machines. Xdmx functions as a
15 front-end X server that acts as a proxy to a set of back-end X servers.
16 All of the visible rendering is passed to the back-end X servers.
17 Clients connect to the Xdmx front-end, and everything appears as it
18 would in a regular multi-head configuration. If Xinerama is enabled
19 (e.g., with +xinerama on the command line), the clients see a single
20 large screen.
21
22 Xdmx communicates to the back-end X servers using the standard X11 pro‐
23 tocol, and standard and/or commonly available X server extensions.
24
26 In addition to the normal X server options described in the Xserver(1)
27 manual page, Xdmx accepts the following command line switches:
28
29 -display display-name
30 This specifies the name(s) of the back-end X server display(s)
31 to connect to. This option may be specified multiple times to
32 connect to more than one back-end display. The first is used
33 as screen 0, the second as screen 1, etc. If this option is
34 omitted, the $DISPLAY environment variable is used as the sin‐
35 gle back-end X server display.
36
37
38 -xinput input-source
39 This specifies the source to use for XInput extension devices.
40 The choices are the same as for -input , described below,
41 except that core devices on backend servers cannot be treated
42 as XInput extension devices. (Although extension devices on
43 backend and console servers are supported as extension devices
44 under Xdmx).
45
46
47 -input input-source
48 This specifies the source to use for the core input devices.
49 The choices are:
50
51 dummy
52 A set of dummy core input drivers are used. These never
53 generate any input events.
54
55
56 local
57 The raw keyboard and pointer from the local computer are
58 used. A comma-separated list of driver names can be
59 appended. For example, to select the example Linux key‐
60 board and PS/2 mouse driver use: -input local,kbd,ps2. The
61 following drivers have been implemented for Linux: kbd, ms
62 (a two-button Microsoft mouse driver), ps2 (a PS/2 mouse
63 driver), usb-mou (a USB mouse driver), usb-kbd (a USB key‐
64 board driver), and usb-oth (a USB non-keyboard, non-mouse
65 driver). Additional drivers may be implemented in the
66 future. Appropriate defaults will be used if no comma-sep‐
67 arated list is provided.
68
69
70 display-name
71 If the display-name is a back-end server, then core input
72 events are taken from the server specified. Otherwise, a
73 console window will be opened on the specified display.
74
75 If the display-name is followed by ",xi" then XInput exten‐
76 sion devices on the display will be used as Xdmx XInput
77 extension devices. If the display-name is followed by
78 ",noxi" then XInput extension devices on the display will
79 not be used as Xdmx XInput extension devices. Currently,
80 the default is ",xi".
81
82 If the display-name is followed by ",console" and the dis‐
83 play-name refers to a display that is used as a backend
84 display, then a console window will be opened on that dis‐
85 play and that display will be treated as a backend display.
86 Otherwise (or if ",noconsole" is used), the display will be
87 treated purely as a backend or a console display, as
88 described above.
89
90 If the display-name is followed by ",windows", then out‐
91 lines of the windows on the backend will be displayed
92 inside the console window. Otherwise (or if ",nowindows"
93 is used), the console window will not display the outlines
94 of backend windows. (This option only applies to console
95 input.)
96
97 If the display-name is followed by ",xkb", then the next 1
98 to 3 comma-separated parameters will specify the keycodes,
99 symbols, and geometry of the keyboard for this input
100 device. For example, ",xkb,xfree86,pc104" will specify
101 that the "xfree86" keycodes and the "pc104" symbols should
102 be used to initialize the keyboard. For an SGI keyboard,
103 ",xkb,sgi/indy(pc102)" might be useful. A list of key‐
104 codes, symbols, and geometries can be found in
105 /usr/X11R6/lib/X11/xkb. If this option is not specified,
106 the input device will be queried, perhaps using the XKEY‐
107 BOARD extension.
108
109 If this option isn't specified, the default input source is the
110 first back-end server (the one used for screen 0). The console
111 window shows the layout of the back-end display(s) and pointer
112 movements and key presses within the console window will be
113 used as core input devices.
114
115 Several special function keys are active, depending on the
116 input source:
117
118 Ctrl-Alt-q will terminate the Xdmx server in all modes.
119
120 Ctrl-Alt-g will toggle a server grab in console mode (a
121 special cursor, currently a spider, is used to indicate
122 an active server grab).
123
124 Ctrl-Alt-f will toggle fine-grain motion in console mode
125 (a special cursor, currently a cross hair, is used to
126 indicate this mode). If this mode is combined with a
127 server grab, then the cursor will have 4 lines instead
128 of only 2.
129
130 Ctrl-Alt-F1 through Ctrl-Alt-F12 will switch to another
131 VC in local (raw) mode.
132
133
134 -shadowfb
135 This option turns on (legacy) support for the shadow frame buf‐
136 fer.
137
138
139 -noshadowfb
140 This option turns off (legacy) support for the shadow frame
141 buffer. Note that this option has been deprecated and will be
142 removed in the next release.
143
144
145 -nomulticursor
146 This option turns off support for displaying multiple cursors
147 on overlapped back-end displays. This option is available for
148 testing and benchmarking purposes.
149
150
151 -fontpath
152 This option sets the Xdmx server's default font path. This
153 option can be specified multiple times to accommodate multiple
154 font paths. See the FONT PATHS section below for very impor‐
155 tant information regarding setting the default font path.
156
157
158 -configfile filename
159 Specify the configuration file that should be read. Note that
160 if the -display command-line option is used, then the configu‐
161 ration file will be ignored.
162
163
164 -config name
165 Specify a configuration to use. The name will be the name fol‐
166 lowing the virtual keyword in the configuration file.
167
168
169 -stat interval screens
170 This option enables the display of performance statistics. The
171 interval is in seconds. The screens is a count of the number
172 of back-end screens for which data is printed each interval.
173 Specifying 0 for screens will display data for all screens.
174
175 For each screen, the following information is printed: the
176 screen number, an absolute count of the number of XSync() calls
177 made (SyncCount), the rate of these calls during the previous
178 interval (Sync/s), the average round-trip time (in microsec‐
179 onds) of the last 10 XSync() calls (avSync), the maximum round-
180 trip time (in microseconds) of the last 10 XSync calls
181 (mxSync), the average number of XSync() requests that were
182 pending but not yet processed for each of the last 10 processed
183 XSync() calls, the maximum number of XSync() requests that were
184 pending but not yet processed for each of the last 10 processed
185 XSync() calls, and a histogram showing the distribution of the
186 times of all of the XSync() calls that were made during the
187 previous interval.
188
189 (The length of the moving average and the number and value of
190 histogram bins are configurable at compile time in the dmxs‐
191 tat.h header file.)
192
193
194 -syncbatch interval
195 This option sets the interval in milliseconds for XSync()
196 batching. An interval less than or equal to 0 will disable
197 XSync() batching. The default interval is 100 ms.
198
199
200 -nooffscreenopt
201 This option disables the offscreen optimization. Since the
202 lazy window creation optimization requires the offscreen opti‐
203 mization to be enabled, this option will also disable the lazy
204 window creation optimization.
205
206
207 -nowindowopt
208 This option disables the lazy window creation optimization.
209
210
211 -nosubdivprims
212 This option disables the primitive subdivision optimization.
213
214
215 -noxkb Disable use of the XKB extension for communication with the
216 back end displays. (Combine with -kb to disable all use of
217 XKB.)
218
219
220 -depth int
221 This option sets the root window's default depth. When choos‐
222 ing a default visual from those available on the back-end X
223 server, the first visual with that matches the depth specified
224 is used.
225
226 This option can be combined with the -cc option, which speci‐
227 fies the default color visual class, to force the use of a spe‐
228 cific depth and color class for the root window.
229
230
231 -norender
232 This option disables the RENDER extension.
233
234
235 -noglxproxy
236 This option disables GLX proxy -- the build-in GLX extension
237 implementation that is DMX aware.
238
239
240 -noglxswapgroup
241 This option disables the swap group and swap barrier extensions
242 in GLX proxy.
243
244
245 -glxsyncswap
246 This option enables synchronization after a swap buffers call
247 by waiting until all X protocol has been processed. When a
248 client issues a glXSwapBuffers request, Xdmx relays that
249 request to each back-end X server, and those requests are
250 buffered along with all other protocol requests. However, in
251 systems that have large network buffers, this buffering can
252 lead to the set of back-end X servers handling the swap buffers
253 request asynchronously. With this option, an XSync() request
254 is issued to each back-end X server after sending the swap buf‐
255 fers request. The XSync() requests will flush all buffered
256 protocol (including the swap buffers requests) and wait until
257 the back-end X servers have processed those requests before
258 continuing. This option does not wait until all GL commands
259 have been processed so there might be previously issued com‐
260 mands that are still being processed in the GL pipe when the
261 XSync() request returns. See the -glxfinishswap option below
262 if Xdmx should wait until the GL commands have been processed.
263
264
265 -glxfinishswap
266 This option enables synchronization after a swap buffers call
267 by waiting until all GL commands have been completed. It is
268 similar to the -glxsyncswap option above; however, instead of
269 issuing an XSync(), it issues a glFinish() request to each
270 back-end X server after sending the swap buffers requests. The
271 glFinish() request will flush all buffered protocol requests,
272 process both X and GL requests, and wait until all previously
273 called GL commands are complete before returning.
274
275
276 -ignorebadfontpaths
277 This option ignores font paths that are not available on all
278 back-end servers by removing the bad font path(s) from the
279 default font path list. If no valid font paths are left after
280 removing the bad paths, an error to that effect is printed in
281 the log.
282
283
284 -addremovescreens
285 This option enables the dynamic addition and removal of
286 screens, which is disabled by default. Note that GLXProxy and
287 Render do not yet support dynamic addition and removal of
288 screens, and must be disabled via the -noglxproxy and -norender
289 command line options described above.
290
291
292 -param This option specifies parameters on the command line. Cur‐
293 rently, only parameters dealing with XKEYBOARD configuration
294 are supported. These parameters apply only to the core key‐
295 board. Parameter values are installation-dependent. Please
296 see /usr/X11R6/lib/X11/xkb or a similar directory for complete
297 information.
298
299 XkbRules
300 Defaults to "xfree86". Other values may include "sgi"
301 and "sun".
302
303
304 XkbModel
305 Defaults to "pc101". When used with "xfree86" rules,
306 other values may include "pc102", "pc104", "pc105",
307 "microsoft", and many others. When used with "sun"
308 rules, other values may include "type4" and "type5".
309
310
311 XkbLayout
312 Defaults to "us". Other country codes and "dvorak" are
313 usually available.
314
315
316 XkbVariant
317 Defaults to "".
318
319
320 XkbOptions
321 Defaults to "".
322
324 The following words and tokens are reserved:
325 virtual display wall option param { } ; #
326
327 Comments start with a # mark and extend to the end of the line. They
328 may appear anywhere. If a configuration file is read into xdmxconfig,
329 the comments in that file will be preserved, but will not be editable.
330
331 The grammar is as follows:
332 virtual-list ::= [ virtual-list ] | virtual
333
334 virtual ::= virtual [ name ] [ dim ] { dw-list }
335
336 dw-list ::= [ dw-list ] | dw
337
338 dw ::= display | wall | option
339
340 display ::= display name [ geometry ] [ / geometry ] [ origin ]
341 ;
342
343 wall ::= wall [ dim ] [ dim ] name-list ;
344
345 option ::= option name-list ;
346
347 param ::= param name-list ;
348
349 param ::= param { param-list }
350
351 param-list ::= [ param-list ] | name-list ;
352
353 name-list ::= [ name-list ] | name
354
355 name ::= string | double-quoted-string
356
357 dim ::= integer x integer
358
359 geometry ::= [ integer x integer ] [ signed-integer signed-inte‐
360 ger ]
361
362 origin ::= @ integer x integer
363
364 The name following virtual is used as an identifier for the configura‐
365 tion, and may be passed to Xdmx using the -config command line option.
366 The name of a display should be standard X display name, although no
367 checking is performed (e.g., "machine:0").
368
369 For names, double quotes are optional unless the name is reserved or
370 contains spaces.
371
372 The first dimension following wall is the dimension for tiling (e.g.,
373 2x4 or 4x4). The second dimension following wall is the dimension of
374 each display in the wall (e.g., 1280x1024).
375
376 The first geometry following display is the geometry of the screen win‐
377 dow on the backend server. The second geometry, which is always pre‐
378 ceeded by a slash, is the geometry of the root window. By default, the
379 root window has the same geometry as the screen window.
380
381 The option line can be used to specify any command-line options (e.g.,
382 -input). (It cannot be used to specify the name of the front-end dis‐
383 play.) The option line is processed once at server startup, just line
384 command line options. This behavior may be unexpected.
385
387 Two displays being used for a desktop may be specified in any of the
388 following formats:
389 virtual example0 {
390 display d0:0 1280x1024 @0x0;
391 display d1:0 1280x1024 @1280x0;
392 }
393
394 virtual example1 {
395 display d0:0 1280x1024;
396 display d1:0 @1280x0;
397 }
398
399 virtual example2 {
400 display "d0:0";
401 display "d1:0" @1280x0;
402 }
403
404 virtual example3 { wall 2x1 d0:0 d1:0; }
405 A 4x4 wall of 16 total displays could be specified as follows (if no
406 tiling dimension is specified, an approximate square is used):
407 virtual example4 {
408 wall d0:0 d1:0 d2:0 d3:0
409 d4:0 d5:0 d6:0 d7:0
410 d8:0 d9:0 da:0 db:0
411 dc:0 dd:0 de:0 df:0;
412 }
413
415 The font path used by the Xdmx front-end server will be propagated to
416 each back-end server,which requires that each back-end server have
417 access to the exact same font paths as the front-end server. This can
418 be most easily handled by either using a font server (e.g., xfs) or by
419 remotely mounting the font paths on each back-end server, and then set‐
420 ting the Xdmx server's default font path with the -I "-fontpath" com‐
421 mand line option described above.
422
423 For example, if you specify a font path with the following command
424 line:
425 Xdmx :1 -display d0:0 -fontpath /usr/fonts/75dpi/ -fontpath
426 /usr/fonts/Type1/ +xinerama
427 Then, /usr/fonts/75dpi/ and /usr/fonts/Type1/ must be valid font paths
428 on the Xdmx server and all back-end server, which is d0 in this exam‐
429 ple.
430
431 Font servers can also be specified with the -fontpath option. For
432 example, let's assume that a properly configured font server is running
433 on host d0. Then, the following command line
434 Xdmx :1 -display d0:0 -display d1:0 -fontpath tcp/d0:7100 +xin‐
435 erama
436 will initialize the front-end Xdmx server and each of the back-end
437 servers to use the font server on d0.
438
439 Some fonts might not be supported by either the front-end or the back-
440 end servers. For example, let's assume the front-end Xdmx server
441 includes support Type1 fonts, but one of the back-end servers does not.
442 Let's also assume that the default font path for Xdmx includes Type1
443 fonts in its font path. Then, when Xdmx initializes the default font
444 path to load the default font, the font path that includes Type1 fonts
445 (along with the other default font paths that are used by the Xdmx
446 server) is sent to the back-end server that cannot handle Type1 fonts.
447 That back-end server then rejects the font path and sends an error back
448 to the Xdmx server. Xdmx then prints an error message and exits
449 because it failed to set the default font path and was unable load the
450 default font.
451
452 To fix this error, the offending font path must be removed from the
453 default font path by using a different -fontpath command line option.
454
455 The -fontpath option can also be added to the configuration file as
456 described above.
457
459 The back-end machines are d0 and d1, core input is from the pointer and
460 keyboard attached to d0, clients will refer to :1 when opening windows:
461 Xdmx :1 -display d0:0 -display d1:0 +xinerama
462
463 As above, except with core input from d1:
464 Xdmx :1 -display d0:0 -display d1:0 -input d1:0 +xinerama
465
466 As above, except with core input from a console window on the local
467 display:
468 Xdmx :1 -display d0:0 -display d1:0 -input :0 +xinerama
469
470 As above, except with core input from the local keyboard and mouse:
471 Xdmx :1 -display d0:0 -display d1:0 -input local,kbd,ps2 +xin‐
472 erama
473 Note that local input can be used under Linux while another X session
474 is running on :0 (assuming the user can access the Linux console tty
475 and mouse devices): a new (blank) VC will be used for keyboard input on
476 the local machine and the Ctrl-Alt-F* sequence will be available to
477 change to another VC (possibly back to another X session running on the
478 local machine). Using Ctrl-Alt-Backspace on the blank VC will termi‐
479 nate the Xdmx session and return to the original VC.
480
481 This example uses the configuration file shown in the previous section:
482 Xdmx :1 -input :0 +xinerama -configfile filename -config exam‐
483 ple2
484 With this configuration file line:
485 option -input :0 +xinerama;
486 the command line can be shortened to:
487 Xdmx :1 -configfile filename -config example2
488
490 The USB device drivers use the devices called /dev/input/event0,
491 /dev/input/event1, etc. under Linux. These devices are driven using
492 the evdev Linux kernel module, which is part of the hid suite. Please
493 note that if you load the mousedev or kbddev Linux kernel modules, then
494 USB devices will appear as core Linux input devices and you will not be
495 able to select between using the device only as an Xdmx core device or
496 an Xdmx XInput extension device. Further, you may be unable to unload
497 the mousedev Linux kernel module if XFree86 is configured to use
498 /dev/input/mice as an input device (this is quite helpful for laptop
499 users and is set up by default under some Linux distributions, but
500 should be changed if USB devices are to be used with Xdmx).
501
502 The USB device drivers search through the Linux devices for the first
503 mouse, keyboard, or non-mouse-non-keyboard Linux device and use that
504 device.
505
507 If Xdmx was invoked with -xkb or was not compiled to use the XKEYBOARD
508 extension, then a keyboard on a backend or console will be initialized
509 using the map that the host X server provides.
510
511 If the XKEYBOARD extension is used for both Xdmx and the host X server
512 for the keyboard (i.e., the backend or console X server), then the type
513 of the keyboard will be obtained from the host X server and the key‐
514 board under Xdmx will be initialized with that information. Otherwise,
515 the default type of keyboard will be initialized. In both cases, the
516 map from the host X server will not be used. This means that different
517 initial behavior may be noted with and without XKEYBOARD. Consistent
518 and expected results will be obtained by running XKEYBOARD on all
519 servers and by avoiding the use of xmodmap on the backend or console X
520 servers prior to starting Xdmx.
521
522 If -xkbmap is specified on the Xdmx command line, then that map will
523 currently be used for all keyboards.
524
526 X was not designed to support multiple core keyboards. However, Xdmx
527 provides some support for multiple core keyboards. Best results will
528 be obtained if all of the keyboards are of the same type and are using
529 the same keyboard map. Because the X server passes raw key code infor‐
530 mation to the X client, key symbols for keyboards with different key
531 maps would be different if the key code for each keyboard was sent
532 without translation to the client. Therefore, Xdmx will attempt to
533 translate the key code from a core keyboard to the key code for the key
534 with the same key symbol of the first core keyboard that was loaded.
535 If the key symbol appears in both maps, the results will be expected.
536 Otherwise, the second core keyboard will return a NoSymbol key symbol
537 for some keys that would have been translated if it was the first core
538 keyboard.
539
541 DMX(3X), X(7), Xserver(1), xdmxconfig(1), vdltodmx(1), xfs(1), xkb‐
542 comp(1)
543
545 Kevin E. Martin <kem@redhat.com>, David H. Dawes <dawes@xfree86.org>,
546 and Rickard E. (Rik) Faith <faith@redhat.com>.
547
548 Portions of Xdmx are based on code from The XFree86 Project
549 (http://www.xfree86.org) and X.Org (http://www.x.org).
550
551
552
553X Version 11 xorg-server 1.9.5 Xdmx(1)