You are not logged in.

#1 2014-02-07 14:23:57

shillshocked
Member
Registered: 2014-02-07
Posts: 20

MATE and lightdm - Multiseat [Solved]

Has anyone successfully gotten multiseat to work on MATE and lightdm? I've checked some related threads but no definite info on how to get this configuration working in either the forums or the wiki.

I'm getting terminal information on both screens but X fails to start. I can switch to another terminal and startx on the right monitor, but I can't switch to startx on the left.

Here are my config files:

/etc/lightdm/lightdm.conf:

#
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
#
[LightDM]
#start-default-seat=true
greeter-user=lightdm
#minimum-display-number=0
minimum-vt=7
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
log-directory=/var/log/lightdm
run-directory=/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters

#
# Seat defaults
#
# type = Seat type (xlocal, xremote)
# xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xserver-layout = Layout to pass to X server
# xserver-config = Config file to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
# unity-compositor-timeout = Number of seconds to wait for compositor to start
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[SeatDefaults]
#type=xlocal
#xdg-seat=seat0
xserver-command=/usr/bin/X
#xserver-layout=
#xserver-config=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#unity-compositor-command=unity-system-compositor
#unity-compositor-timeout=60
greeter-session=lightdm-gtk-greeter
#greeter-hide-users=false
#greeter-allow-guest=true
greeter-show-manual-login=true
#greeter-show-remote-login=true
user-session=mate
#allow-guest=true
#guest-session=UNIMPLEMENTED
session-wrapper=/etc/lightdm/Xsession
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=UNIMPLEMENTED
pam-service=lightdm-autologin
exit-on-failure=true

#
# Seat configuration
#
# Each seat must start with "Seat:".
# Uses settings from [SeatDefaults], any of these can be overriden by setting them in this section.
#

[Seat:0]
xserver-command=/usr/bin/X :0
xserver-config=xorg_seat0.conf
#autologin-user=anthony
#autologin-user-timeout=5
#session-setup-script=/etc/lightdm/scripts/sound_start
#session-cleanup-script=/etc/lightdm/scripts/sound_stop
 
[Seat:1]
xserver-command=/usr/bin/X :1 -sharevts
xserver-config=xorg_seat1.conf
autologin-user=smaugles
autologin-user-timeout=15

#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn.  Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[XDMCPServer]
#enabled=false
#port=177
#key=

#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#width=1024
#height=768
#depth=8

/etc/X11/xorg_seat0.conf:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen         0  "Screen0" 0 0
    InputDevice    "kbd_0" "CoreKeyboard"
    InputDevice    "mouse_0" "CorePointer"
    Option         "AutoEnableDevices"     "false"
    Option         "AutoAddDevices"        "false"
    Option         "AllowEmptyInput"       "true"
    Option 	   "DontVTSwitch"          "true" 
EndSection

Section "Module"
#    Load           "dbe"
#    Load           "extmod"
#    Load           "type1"
#    Load           "freetype"
#    Load           "glx"
    Load 	   "dri2"
    Load 	   "glamoregl"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
    Option         "AutoAddGPU" "FALSE"
EndSection

Section "InputDevice"
    Identifier     "kbd_0"
    Driver 	   "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.6:1.0-event-kbd"
    Option         "GrabDevice"    "on"
    Option 	   "XkbRules" "xorg"
    Option 	   "XkbModel" "105"
    Option 	   "XkbLayout" "us"
    Option  	   "Protocol"      "Standard"
EndSection

Section "InputDevice"
    Identifier     "mouse_0"
    Driver         "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.5:1.0-event-mouse"
    Option         "GrabDevice"    "on"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option	   "VendorName" "ATI Proprietary Driver"
    Option	   "ModelName" "Generic Autodetecting Monitor"
    Option	   "DPMS" "true"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "radeon"
    Option 	   "AccelMethod" "glamor"
    VendorName     ""
    BoardName      ""
    BusID          "PCI:1:0:0"
    Screen          0
#    Option         "EXAVSync"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device     "Device0"
    Monitor    "Monitor0"
    DefaultDepth     24
    SubSection "Display"
    	Depth     24
    EndSubSection
EndSection

/etc/X11/xorg_seat1.conf:

Section "ServerLayout"
    Identifier     "Layout1"
    Screen         0  "Screen1" 0 0
    InputDevice    "kbd_1" "CoreKeyboard"
    InputDevice    "mouse_1" "CorePointer"
    Option         "AutoEnableDevices"     "false"
    Option         "AutoAddDevices"        "false"
    Option         "AllowEmptyInput"       "true"
    Option 	   "DontVTSwitch"          "true"
EndSection

Section "Module"
#    Load           "dbe"
#    Load           "extmod"
#    Load           "type1"
#    Load           "freetype"
#    Load           "glx"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
    Option         "AutoAddGPU" "FALSE"
EndSection

Section "InputDevice"
    Identifier     "kbd_1"
    Driver         "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:04:00.0-usb-0:1:1.0-event-kbd"
    Option         "GrabDevice"    "on"
    Option 	   "XkbRules" "xorg"
    Option 	   "XkbModel" "105"
    Option 	   "XkbLayout" "us"
    Option  	   "Protocol"      "Standard"
EndSection

Section "InputDevice"
    Identifier     "mouse_1"
    Driver         "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.3:1.0-event-mouse"
    Option         "GrabDevice"    "on"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option	   "VendorName" "Unknown"
    Option	   "ModelName" "Generic Autodetecting Monitor"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    VendorName     ""
    BoardName      ""
    BusID          "PCI:0:2:0"
    Screen          0
#    Option         "AccelMethod" "UXA"
#    Option         "TearFree" "1"
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Last edited by shillshocked (2014-10-11 23:39:10)

Offline

#2 2014-02-10 02:27:08

shillshocked
Member
Registered: 2014-02-07
Posts: 20

Re: MATE and lightdm - Multiseat [Solved]

I figured it out. I had to delete the .Xauthority file in each user's home directory. Now there is no problem doing multiseat. I also made some slight configuration changes. As a plus, in the new config I don't need to autologin (although I can if I uncomment user and timeout) as I sharevts with both seats.

/etc/lightdm/lightdm.conf:

#
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
#
[LightDM]
#start-default-seat=true
greeter-user=lightdm
#minimum-display-number=0
minimum-vt=1
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
log-directory=/var/log/lightdm
run-directory=/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters

#
# Seat defaults
#
# type = Seat type (xlocal, xremote)
# xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xserver-layout = Layout to pass to X server
# xserver-config = Config file to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
# unity-compositor-timeout = Number of seconds to wait for compositor to start
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[SeatDefaults]
#type=xlocal
#xdg-seat=seat0
xserver-command=/usr/bin/X
#xserver-layout=
#xserver-config=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#unity-compositor-command=unity-system-compositor
#unity-compositor-timeout=60
greeter-session=lightdm-gtk-greeter
#greeter-hide-users=false
#greeter-allow-guest=true
greeter-show-manual-login=true
#greeter-show-remote-login=true
user-session=mate
#allow-guest=true
#guest-session=UNIMPLEMENTED
session-wrapper=/etc/lightdm/Xsession
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
#autologin-user=
#autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=UNIMPLEMENTED
pam-service=lightdm-autologin
exit-on-failure=true

#
# Seat configuration
#
# Each seat must start with "Seat:".
# Uses settings from [SeatDefaults], any of these can be overriden by setting them in this section.
#

[Seat:0]
xserver-command=/usr/bin/X :0 -sharevts
xserver-layout=Layout0
#autologin-user=smaugles
#autologin-user-timeout=-1
#session-setup-script=/etc/lightdm/scripts/sound_start
#session-cleanup-script=/etc/lightdm/scripts/sound_stop
 
[Seat:1]
xserver-command=/usr/bin/X :1 -sharevts
xserver-layout=Layout1
#autologin-user=smaugles
#autologin-user-timeout=-1

#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn.  Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[XDMCPServer]
#enabled=false
#port=177
#key=

#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#width=1024
#height=768
#depth=8

I used one xorg.conf this time to simplify things a little bit.

/etc/X11/xorg.conf:

Section "ServerFlags"
    Option         "DefaultServerLayout" "Layout1"
#    Option         "AllowMouseOpenFail"  "true"
    Option         "AutoAddDevices"      "false"
    Option         "AutoEnableDevices"   "false"
    Option         "DontZap"             "false"
    Option         "Xinerama" "0"
    Option         "AutoAddGPU" "FALSE"
EndSection

Section "ServerLayout"
    Identifier     "Layout0"
    Screen         0  "Screen0" 0 0
    InputDevice    "kbd_0" "CoreKeyboard"
    InputDevice    "mouse_0" "CorePointer"
    Option         "AllowEmptyInput"       "true"
    Option 	   "DontVTSwitch"          "true" 
EndSection

Section "ServerLayout"
    Identifier     "Layout1"
    Screen         0  "Screen1" 0 0
    InputDevice    "kbd_1" "CoreKeyboard"
    InputDevice    "mouse_1" "CorePointer"
    Option         "AllowEmptyInput"       "true"
    Option 	   "DontVTSwitch"          "true"
EndSection

Section "Module"
#    Load           "dbe"
#    Load           "extmod"
#    Load           "type1"
#    Load           "freetype"
#    Load           "glx"
    Load 	   "dri2"
    Load 	   "glamoregl"
EndSection

Section "InputDevice"
    Identifier     "kbd_0"
    Driver 	   "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.6:1.0-event-kbd"
    Option         "GrabDevice"    "on"
    Option 	   "XkbRules" "xorg"
    Option 	   "XkbModel" "105"
    Option 	   "XkbLayout" "us"
    Option  	   "Protocol"      "Standard"
EndSection

Section "InputDevice"
    Identifier     "kbd_1"
    Driver         "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:04:00.0-usb-0:1:1.0-event-kbd"
    Option         "GrabDevice"    "on"
    Option 	   "XkbRules" "xorg"
    Option 	   "XkbModel" "105"
    Option 	   "XkbLayout" "us"
    Option  	   "Protocol"      "Standard"
EndSection

Section "InputDevice"
    Identifier     "mouse_0"
    Driver         "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.5:1.0-event-mouse"
    Option         "GrabDevice"    "on"
EndSection

Section "InputDevice"
    Identifier     "mouse_1"
    Driver         "evdev"
    Option         "Device"        "/dev/input/by-path/pci-0000:00:1a.0-usb-0:1.3:1.0-event-mouse"
    Option         "GrabDevice"    "on"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option	   "VendorName" "Unknown"
    Option	   "ModelName" "Generic Autodetecting Monitor"
#    Option	   "DPMS" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option	   "VendorName" "Unknown"
    Option	   "ModelName" "Generic Autodetecting Monitor"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "radeon"
    Option 	   "AccelMethod" "glamor"
#    Option 	   "AccelMethod" "EXA"
    VendorName     ""
    BoardName      ""
    BusID          "PCI:1:0:0"
    Screen          0
#    Option         "EXAVSync"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "intel"
    VendorName     ""
    BoardName      ""
    BusID          "PCI:0:2:0"
    Screen          0
#    Option         "AccelMethod" "UXA"
#    Option         "TearFree" "1"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device     "Device0"
    Monitor    "Monitor0"
    DefaultDepth     24
    SubSection "Display"
    	Depth     24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

In the new configuration, I can log in as the same user twice and share audio resources (so it is essentially system-wide) as ALSA allocates audio per user, not per session like PulseAudio. This works only with pulseaudio removed (except for libpulse which is needed by some software like VLC) and ALSA installed. Otherwise only the last logged in user will have audio access if the users are different.

/etc/asound.conf:

ctl.equal {
 type equal;
}

pcm.plugequal {
  type equal;
  # Modify the line below if you do not
  # want to use sound card 0.
  #slave.pcm "plughw:0,0";
  #by default we want to play from more sources at time:
  slave.pcm "plug:dmix";
}
#pcm.equal {
  # If you do not want the equalizer to be your
  # default soundcard comment the following
  # line and uncomment the above line. (You can
  # choose it as the output device by addressing
  # it with specific apps,eg mpg123 -a equal 06.Back_In_Black.mp3)
pcm.!default {
  type plug;
  slave.pcm plugequal;
}

Also included is software mixing. I also installed alsaequal so I could run a system-wide equalizer on the users. You could adjust this to hardware mixing or allocate specific cards or ports to certain displays if you wanted to.

Last edited by shillshocked (2014-02-10 02:46:53)

Offline

#3 2014-02-10 02:48:53

WonderWoofy
Member
From: Los Gatos, CA
Registered: 2012-05-19
Posts: 8,413

Re: MATE and lightdm - Multiseat [Solved]

Nice work shillshocked! 

Since you have found yourself a solution here, please mark your thread as [Solved] so that we can try to keep these forums tidy.  You can do this be editing the first post which will also allow you to edit the title.

Offline

#4 2014-10-11 23:41:46

shillshocked
Member
Registered: 2014-02-07
Posts: 20

Re: MATE and lightdm - Multiseat [Solved]

Thanks for the tip, WonderWoofy.

One more thing, the latest update to lightdm renders multiseat inoperable. The solution I found was to revert to lightdm-1:1.10.1-3-x86_64.pkg.tar.xz (or earlier)

You may have this in your /var/cache/pacman/pkg if you updated.

You can install it with sudo pacman -U lightdm-1:1.10.1-3-x86_64.pkg.tar.xz

Offline

Board footer

Powered by FluxBB