Announcement

Collapse
No announcement yet.

SystemD/Udev Multi-Seat Support For X.Org

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #21
    Originally posted by pingufunkybeat View Post
    So if I split xorg.conf into two files, one per seat, the peripherals will be tied to the right seat magically?

    I'll have to try that, thanks!
    If you get it working, could you message me with how? I want the exact same thing, but both of you seem to know a lot more about X than me.

    Comment


    • #22
      Originally posted by pingufunkybeat View Post
      So if I split xorg.conf into two files, one per seat, the peripherals will be tied to the right seat magically?

      I'll have to try that, thanks!
      Yep, as long as you're using the same settings for your InputClasses as your InputDevices (e.g. matching on a specific device path, and ignoring the rest). Good luck.

      Comment


      • #23
        Originally posted by daniels View Post
        Yep, as long as you're using the same settings for your InputClasses as your InputDevices (e.g. matching on a specific device path, and ignoring the rest). Good luck.
        Just checked. It doesn't work. And I can't see why it should.
        There is 05-evdev.conf in my xorg.conf.d which has InputClass sections for all common input devices. Since InputClass has implicit AutoServerLayout option, all input devices are attached to each xserver. Splitting configuration files doesn't make any sense. All files in xorg.conf.d are treated as parts of one big xorg.conf.
        What we need for multiseat is input device/class section which supports hotplugging and can be tied to ServerLayout section.

        Comment


        • #24
          Originally posted by chelobaka View Post
          Just checked. It doesn't work. And I can't see why it should.
          There is 05-evdev.conf in my xorg.conf.d which has InputClass sections for all common input devices. Since InputClass has implicit AutoServerLayout option, all input devices are attached to each xserver. Splitting configuration files doesn't make any sense. All files in xorg.conf.d are treated as parts of one big xorg.conf.
          What we need for multiseat is input device/class section which supports hotplugging and can be tied to ServerLayout section.
          If you use this:

          Section "InputClass"
          Identifier "non-HDTV"
          Option "Ignore" "on"
          EndSection

          Section "InputClass"
          Identifier "diNovo"
          MatchProduct "diNovo"
          Option "Ignore" "off"
          EndSection

          it will enable only specific device.
          And if you have a main seat that should use all other devices just add the specific devices with Ignore on to it like:

          Section "InputClass"
          Identifier "diNovo"
          MatchProduct "diNovo"
          Option "Ignore" "on"
          EndSection

          without the first InputClass

          Comment


          • #25
            InputClass cannot be tied to ServerLayout.

            Comment


            • #26
              I know this thread is a little old but I'm wanting to set up a multi-seat desktop and am unsure where to start or how to go about it.

              I'm running Fedora 16 / 64, 8 gig of ram, quad core 955 and a 9600GT with dual dvi.

              Can someone please point me in the right direction to implement a multiseat on my desktop.

              Thank you.

              Comment


              • #27
                If you have only one video card you should probably use ZapthodHeads option in xorg.conf to run 2 xservers on each head. Look here for details. Though you may experience problems with 3D acceleration (only my guess, you have to check it out).
                Also you will need display manager which can run several servers at once. GDM was "simplified" long ago by its devs, so you will need LightDM, or KDM in case you are a KDE user.
                After that you only need to edit xorg.conf and lightdm.conf (or KDM config). There are many config examples in the web (Ubuntu wiki)
                Sound and removable drives privileges have no generic solution, you should find a way to set them by yourself or just live with it like I do.

                P.S. Speaking of systemd, there is nothing to test yet. Somebody has to patch Xorg to honor udev "seat" tags introduced by systemd. And it looks like biggest part of work in creating multiseat with "human face".
                Last edited by chelobaka; 14 December 2011, 03:50 AM.

                Comment


                • #28
                  IS SystemmD in ubuntu 12.04 or is this something I have to patch

                  Comment


                  • #29
                    Update on udev

                    Recently I managed to reconfigure my Ubuntu 10.04 setup to use udev for input devices. I must admit I was too dump not to do it earlier.
                    Ok, here is it. Whole config should consists of three parts: custom udev rules for your input devices, several Xorg configuration files, one for each seat, and display manager config, for running xservers.

                    Part 1: udev
                    First of all, you have to disable mouse and keyboard autodetection in your xorg.conf.d directory. In Lucid Lynx there is no need for this, but I had to do it in Debian Wheezy.
                    Next, you have to make custom udev rules file, like this one:
                    Code:
                    # Apply these rules only to input devices
                    SUBSYSTEM!="input", GOTO="custom_input_end"
                    KERNEL=="input[0-9]*", GOTO="custom_input_end"
                    ACTION!="add|change", GOTO="custom_input_end"
                    
                    # Seat 0 
                    ATTRS{description}=="i8042 KBD port", ENV{ID_INPUT.tags}="seat0"
                    ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c01b", ENV{ID_INPUT.tags}="seat0"
                    ATTRS{name}=="Venus USB2.0 Camera", ENV{ID_INPUT.tags}="seat0"
                    
                    # Seat 1
                    ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c069", ENV{ID_INPUT.tags}="seat1"
                    ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c313", ENV{ID_INPUT.tags}="seat1"
                    ATTRS{product}=="Plantronics Wireless Audio", ENV{ID_INPUT.tags}="seat1"
                    
                    LABEL="custom_input_end"
                    I named it "99-multiseat.rules" and put in udev config directory. Entries are pretty self-explanatory.

                    Part 2: xorg.conf
                    Each seat will require separate config. Here is my seat0:
                    Code:
                    Section "ServerFlags"
                    	Option "DontZap" "false"
                    	Option "AllowEmptyInput" "true" 
                    EndSection
                    
                    Section "InputClass"
                            Identifier  "Generic input device"
                            MatchTag "seat0"
                    	Driver "evdev"
                    EndSection
                    
                    Section "Monitor"
                    	Identifier  "Samsung"
                    	Option	    "DPMS" "true"
                    EndSection
                    
                    Section "Device"
                    	Identifier  "Radeon HD 4290"
                    	Driver      "radeon"
                    	BusID       "PCI:1:5:0"
                    EndSection
                    
                    Section "Screen"
                    	Identifier "Left Screen"
                    	Device     "Radeon HD 4290"
                    	Monitor    "Samsung"
                    	DefaultDepth     24
                    	SubSection "Display"
                    		Viewport   0 0
                    		Depth     24
                    	EndSubSection
                    EndSection
                    
                    Section "ServerLayout"
                    	Identifier     "Seat0"	
                    	Screen      0  "Left Screen" 0 0
                    	Option         "SingleCard" "on"
                    EndSection
                    Adjust seat index and PCI ID for another seats. I copied these configs to /etc/X11/, but you can choose any directory.

                    Part 3: Display manager configuration
                    I have KDM, but you might have old GDM<=2.20, lightdm or something else.
                    Code:
                    [X-:0-Core]
                    AutoLoginAgain=false
                    AutoLoginDelay=0
                    AutoLoginEnable=false
                    AutoLoginLocked=false
                    AutoLoginUser=
                    ClientLogFile=.xsession-errors
                    ServerVT=7
                    ServerCmd=/usr/bin/X -config /etc/X11/seat0.conf -layout Seat0 -sharevts -keeptty
                    
                    [X-:1-Core]
                    AutoLoginAgain=false
                    AutoLoginEnable=false
                    AutoLoginLocked=false
                    ClientLogFile=.xsession-errors
                    ServerVT=9
                    ServerCmd=/usr/bin/X -config /etc/X11/seat1.conf -layout Seat1 -sharevts -keeptty -novtswitch
                    If you managed to repeat these steps on your system you should have working hotplug for input devices on each seat.

                    Comment


                    • #30
                      Hi,
                      Originally posted by chelobaka View Post
                      Part 1: udev
                      First of all, you have to disable mouse and keyboard autodetection in your xorg.conf.d directory. In Lucid Lynx there is no need for this, but I had to do it in Debian Wheezy.
                      Do you mean you added the line
                      Code:
                      Option "AutoAddDevices" "false"
                      to your Serverflags section in your xorg.conf ?

                      I use Debian Squeeze and multiseat without hotplug.

                      Thanks for your reply.

                      Comment

                      Working...
                      X