I did it. I’m somewhat bemused and in a way I still don’t believe it. But it works: Multiuser / Multiseat.
.
I first heard (read) about it right when I started with Linux (1999), you know, all those function keys that give you another terminal or even desktop environment. The knowledge that one can have even more than one monitor / keyboard / mouse running independently and in parallel came a little later.
From then I started collecting information and links on how to do it (see the end of this post). So I had hoarded e.g. an old xorg.conf from 2005 which fit my even older second monitor for the time when I would have something bigger than my old 700 Mhz Athlon with .5 GB of RAM.
I’m not entirely computer illiterate, but when I started there was no one to ask as it is (nearly?) entirely a windows environment here. While I’m not afraid to brazenly edit config-files as I think they might be edited (which is not always the way they should be edited *hrmph*) I have only one box at home. That is the machine my wife uses too. She does taxes, homebanking, recipes, lately her photos and whatnot on it. She is definitely not amused when I mess up that box. As a matter of fact she is still grumping about an Excel file which got, shall we say – mislaid, nearly 10 years ago (darn, and I was sure I had it backed up properly). In short, I have to tread carefully.
Still, I did it, during running operations, so to say.
I don’t think yet another howto is called for but I’ll name a few of the in retrospect most glaring pitfalls I had to circumvent (as one can’t surmount them, I believe). I’ll post the resources I used at the end of my ramblings. And my working xorg.conf with snatches from kdmrc. Oh yes, and did I tell you about that marvelous resource in the net, called LinuxQuestions.Org
? I don’t think I would have done it without them.
Hello reader
.
If you are going to try this too, here comes my counsel for what it is worth.
First, please keep in mind that X is a software not really beloved (and sometimes even understood) by some its past and present wardens. Why? Here is an example from the man page of xorg.conf reproduced verbatim:
Code:
VIDEOADAPTOR SECTION
Nobody wants to say how this works. Maybe nobody knows ...
See what I mean? This is what the maintainers write in the official documentation. It also means that you might get error messages which are simply – umm – not to the point? Wrong? Not understandable (at least by me)? More often than not you’ll also get NO message at all when something doesn’t work – or you’ll get a message that something was done four times in a row (seriously).
Then there is the parser for xorg.conf. You’d better not annoy it e.g. by using an editor of the microsoft ilk. Dos2unix and others won’t help you there, either. Type-again on your *ix system it is, or you’ll get e.g.
Code:
Parse error on line 1 of section InputClass in file /etc/X11/xorg.conf
"" is not a valid keyword in this section
or something comparable. This is highly irritating, even the more so since you (or rather I) haven’t got any section InputClass at all...
Another concern is the defaults in your system. They are set (from where?) in either /etc/X11/xorg.conf or in /etc/X11/xorg.conf.d/* which look a little like the udev rules files. All might interfere with your shiny new attempts in mainframe-setup
. I edited (after saving the original) /etc/X11/xorg.conf and renamed /etc/X11//etc/X11/xorg.conf.d – which promptly got re-created during the next boot (albeit with only a 90-keytable.conf in it).
There are (at least) three FontPaths hardwired into X. I consistently and always get
Code:
[ 15.348] (WW) The directory "/usr/share/fonts/TTF/" does not exist.
[ 15.348] Entry deleted from font path.
[ 15.348] (WW) The directory "/usr/share/fonts/OTF/" does not exist.
[ 15.348] Entry deleted from font path.
[ 15.348] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
even though I never defined those fonts in the Section InputFiles... On the other hand, I couldn’t identify any problems caused from this, but keep in mind that there might be other defaults on your system which might cause a scrambling of your settings.
Some options etc. I simply copied without understanding them, based on the reasoning that they worked in my old system(s) and probably were there due to (unknown by me) reasons. Now, wouldn’t it be great to have one comprehensive list of all sections and their possible options and what those do and in which sequence they are to put where? And no, you won’t get that by typing "man <something desperate>" in your console.
On the other hand, during the further development of x some options lately became redundant or even obsolete (cf.
http://wiki.debian.org/XStrikeForce/HowToRandR12). I have the nagging suspicion that some option or other I use even block(s) the <Ctrl><Alt><Keypad plus-or-minus> so I can’t change resolutions on the fly. Ah, well, maybe I’ll find out later.
When "X" complains about not having definitions for something, give it to that poor program
. In my wanderings through the x-country it once complained about not having any "Section Screen" for all three sockets of a graphics card. In retaliation it "ate" the one existing "Section Screen" for the DVI-0 socket and then grumbled that since there were no "Section Screen"s for the HDMI-0 and VGA-1 sockets it would use its inbuilt defaults ... all the while ignoring the monitor at VGA-1 and my imploring to get the DDC data (display data channel). I resolved this by assigning my "Section Screen" thrice – once to every socket. If you are interested, you can read up my meanderings and the exact procedure here:
http://www.linuxquestions.org/questi...tclass-865299/
"X" didn’t answer my call for a nice 96x96 dpi resolution. Ah, well. I outflanked it with this:
http://www.linuxquestions.org/questi...5/#post1309027. Serves it right.
What usually does help is a thorough look at the log file(s). It is time consuming but rewarding more often than not, since one can get at least a hint what went on in the background.
Here are some resources I used in no particular sequence, but I suggest you start with the first:
https://wiki.archlinux.org/index.php/Xorg_multiseat
http://wiki.c3sl.ufpr.br/multiseat/index.php/Mdm
http://cambuca.ldhs.cetuc.puc-rio.br/multiuser/
http://wiki.c3sl.ufpr.br/multiseat/index.php/Main_Page
http://wiki.open-slx.de/Multiseat
http://www.c3sl.ufpr.br/multiseat/index-en.php
http://blog.chris.tylers.info/index....11R6.97.0.html
http://www.ltsp.org/
http://userful.com/products/free-2-user
http://linuxgazette.net/124/smith.html
http://www.linuxtoys.org/multiseat/multiseat.html
https://help.ubuntu.com/community/MultiseatX
http://en.wikibooks.org/wiki/Multise...guration/evdev
http://linuxagora.com/vbforum/showthread.php?p=3710
http://www.ltn.lv/~aivils/
http://www.heise.de/newsticker/foren...15029462/read/
http://en.wikipedia.org/wiki/Multiterminal
http://en.wikibooks.org/wiki/Multiterminal_with_evdev
http://wpkg.org/Configuring_multiseat_X_workstation
http://www.tldp.org/HOWTO/XFree-Loca...WTO/index.html
http://www.linuxhq.com/ldp/howto/XFr...ti-user-HOWTO/
This is my xorg.conf (note that I bought a new second monitor):
Code:
# "man radeon" for more options
Section "Files"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/cyrillic"
FontPath "/usr/share/fonts/encodings"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/Speedo"
FontPath "/usr/share/fonts/truetype"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/URW"
FontPath "/usr/local/share/fonts"
EndSection
Section "DRI"
Group "video"
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "off"
EndSection
#### MODULES ####
Section "Module"
Load "DDC" # to read out monitor specs
Load "type1"
Load "freetype"
Load "speedo"
SubSection "extmod"
Option "Omit xfree86-dga"
EndSubSection
EndSection
### SERVERFLAGS ####
Section "ServerFlags"
Option "DontZap" "false"
Option "AutoAddDevices" "false"
Option "AutoEnableDevices" "false"
Option "AllowMouseOpenFail" "on"
Option "ZapWarning" "on"
Option "DefaultServerLayout" "Seat0"
Option "HandleSpecialKeys" "on" # Zapping on
Option "DontZoom" "false" # <Ctrl><Alt>resolution
Option "DRI2" "on"
EndSection
##### VIDEO CARDS #####
Section "Device"
Identifier "Sapphire AMD/ATI Radeon 5450"
Driver "radeon"
BusID "PCI:02:00:00" # change hexadecimal in decimal!
Option "MonitorLayout" "NONE, TMDS, NONE"
EndSection
Section "Device"
Identifier "AMD/ATI onboard graphics / integrated Radeon 4290"
Driver "radeon"
BusID "PCI:01:05:00" # change hexadecimal in decimal!
Option "MonitorLayout" "NONE, TMDS, NONE"
EndSection
##### MONITORS #####
Section "Monitor"
Identifier "MULTISYNC LCD2000"
VendorName "NEC"
ModelName "MULTISYNC LCD2000"
Option "DPMS" "on"
Option "CalcAlgorithm" "XServerPool"
DisplaySize 442 277 # in mm
Option "PreferredMode" "1680x1050"
EndSection
Section "Monitor"
Identifier "SyncMaster 2243DW (V5LU4S)"
VendorName "SAMSUNG"
ModelName "SyncMaster 2243DW (V5LU4S)"
Option "DPMS" "on"
Option "CalcAlgorithm" "XServerPool"
DisplaySize 442 277 # in mm
Option "PreferredMode" "1680x1050"
EndSection
##### SCREENS #####
Section "Screen"
Identifier "Screen0"
Device "AMD/ATI onboard graphics / integrated Radeon 4290"
Monitor "MULTISYNC LCD2000"
DefaultDepth 24
Option "DPI" "96x96"
SubSection "Display"
Viewport 0 0
Depth 15
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 32
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
EndSection
Section "Screen"
Identifier "Screen1"
Device "Sapphire AMD/ATI Radeon 5450"
Monitor "SyncMaster 2243DW (V5LU4S)"
DefaultDepth 24
Option "DPI" "96x96"
SubSection "Display"
Viewport 0 0
Depth 15
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 32
Modes "1680x1050" "1280x1024" "1152x864" "1024x768"
EndSubSection
EndSection
##### KEYBOARDS #####
Section "InputDevice"
Identifier "USBKeyboard"
Driver "evdev"
Option "Device" "/dev/input/by-path/pci-0000:04:07.0-usb-0:2:1.0-event-kbd"
Option "XkbModel" "evdev"
Option "XkbLayout" "de"
Option "Protocol" "Standard"
Option "XkbRules" "xfree86"
Option "XkbVariant" "nodeadkeys"
EndSection
Section "InputDevice"
Identifier "PS2Keyboard"
Driver "evdev"
Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
Option "XkbModel" "evdev"
Option "XkbLayout" "de"
Option "Protocol" "Standard"
Option "XkbRules" "xfree86"
Option "XkbVariant" "nodeadkeys"
EndSection
##### MICE #####
Section "InputDevice"
Identifier "USBMouse"
Driver "evdev" # help.ubuntu.com
Option "Device" "/dev/input/by-path/pci-0000:04:07.0-usb-0:1:1.0-event-mouse"
Option "GrabDevice" "on" # help.ubuntu.com
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
Option "Buttons" "5"
EndSection
Section "InputDevice"
Identifier "PS2Mouse"
Driver "evdev" # help.ubuntu.com
Option "Device" "/dev/input/by-path/pci-0000:00:13.0-usb-0:1:1.0-event-mouse"
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
Option "Buttons" "5"
EndSection
############# SEATS #############
Section "ServerLayout"
Identifier "Seat0"
Screen "Screen0" 0 0
InputDevice "USBMouse" "CorePointer"
InputDevice "USBKeyboard" "CoreKeyboard"
Option "Clone" "off"
Option "Xinerama" "off"
Option "AutoAddDevices" "off"
EndSection
Section "ServerLayout"
Identifier "Seat1"
Screen "Screen1" 0 0
InputDevice "PS2Keyboard" "CoreKeyboard"
InputDevice "PS2Mouse" "CorePointer"
Option "Clone" "off"
Option "Xinerama" "off"
Option "AutoAddDevices" "off"
EndSection
############# SEATS #############
This is my kdmrc:
Code:
[General]
ConfigVersion=2.4
ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
PidFile=/var/lock/kdm.pid
ReserveServers=:2,:3,:4,:5
SUSEConfigVersion=2
ServerVTs=-7
StaticServers=:0,:1
[Shutdown]
BootManager=None
HaltCmd=/sbin/halt
RebootCmd=/sbin/reboot
[X-*-Core]
AllowShutdown=None
AutoReLogin=false
ClientLogFile=.xsession-errors-%d
[X-*-Greeter]
AntiAliasing=true
ColorScheme=
FaceSource=AdminOnly
FailFont=Sans Serif,10,-1,5,75,0,0,0,0,0
ForgingSeed=1278466138
GUIStyle=
GreetFont=Serif,20,-1,5,50,0,0,0,0,0
GreetString=Welcome to %s at %n
GreeterPos=50,50
HiddenUsers=
Language=de
LogoArea=Logo
LogoPixmap=/usr/share/kde4/apps/kdm/pics/kdelogo.png
MaxShowUID=65000
MinShowUID=500
SelectedUsers=
ShowUsers=NotHidden
SortUsers=true
StdFont=Sans Serif,12,-1,5,50,0,0,0,0,0
Theme=/usr/share/kde4/apps/kdm/themes/oxygen
UseBackground=true
UseTheme=true
UserCompletion=false
UserList=true
[X-:*-Core]
AllowNullPasswd=true
AllowShutdown=All
NoPassEnable=false
NoPassUsers=
ServerArgsLocal=-nolisten tcp
ServerArgsRemote=-nolisten tcp
[X-:*-Greeter]
AllowClose=false
DefaultUser=matthias
FocusPasswd=true
LoginMode=LocalOnly
PreselectUser=Previous
[X-:0-Core]
AutoLoginEnable=false
AutoLoginLocked=false
AutoLoginUser=
ClientLogFile=.xsession-errors
ServerArgsLocal=-nolisten tcp -sharevts -keeptty -layout seat0 -isolateDevice PCI:02:00:00
ServerCmd=/usr/bin/X0
ServerVT=7
TerminateServer=true
[X-:1-Core]
ClientLogFile=.xsession-errors
ServerArgsLocal=-nolisten tcp -sharevts -keeptty -layout seat1 -isolateDevice PCI:01:05:00
ServerCmd=/usr/bin/X1
ServerVT=8
TerminateServer=true
[X-:93-Core]
TerminateServer=true
Good luck to those of you who’ll try it out, too. Have fun
.
<edit> Here
https://features.opensuse.org/310913 I requested a new feature for YAST for setting up a mulitiuser-multiseat machine. Feel free to support it on the Novell / SuSE site... </edit>