← Back to team overview

ubuntu-multiseat team mailing list archive

[Bug 1356332] Re: New approach for nested-X-server multiseat support

 

I need to take a step back to fully understand the requirements on this
one.

The simple case for this is:
- 1 processor
- 1 video card with two outputs
- Two keyboards/mice
On startup two login screens are displayed and two people can use this processor simultaneously and independently?

My first question is, can logind handle this case? Can it create two
seats and assign the input devices to each seat. Can it communicate to
an X server that it should only use one output?

If logind can't handle this case we should first investigate if we can
make it do so as that will make this a lot more consistent with the
other multi-seat cases.

If it's not possible/appropriate for logind to do this, then I think the
structure inside LightDM should be to have a "SeatManager" class that
decides how the seats are laid out. In this multi-head multi-seat case
we don't use the LogindSeatManager, instead we use a
MultiHeadSeatManager which starts and manages the parent X server. We
don't want to use the Seat class for something that is not a seat.

This feature sounds a bit borderline to me. If we can't implement this
cleanly, I think the answer will be "the supported method of multi-seat
is to have separate output devices".

-- 
You received this bug notification because you are a member of Ubuntu
Multiseat, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1356332

Title:
  New approach for nested-X-server multiseat support

Status in Light Display Manager:
  Triaged

Bug description:
  I'm opening this bug to discuss ideas for a new approach for
  supporting nested-X-server multiseat setups in LightDM, so we can
  easily configure e.g. 2 seats using a single dual-head graphics card.

  I have the following initial ideas:

  1. Provide a special "empty" seat module, which doesn't spawn
  greeters, doesn't handle sessions at all, etc. I will only start a
  host bare X server spanning all available monitors.

  1.1 [OPTIONAL] Set property "xdg-seat" for this seat to any invalid
  value (from logind's perpective), in order to ensure host X server
  will neither grab input devices (as a non-seat0 X server do) nor touch
  VTs (as a seat0 X server do). Xorg-server 1.16 or newer is required.
  Example: xdg-seat=__lightdm-fake-seat__

  2. Link this seat to a secondary DisplayManager object which will
  handle all other nested-X-server seats. When this secondary display
  manager is stopped, that host-X-server seat should be stopped, too.
  Set environment variables DISPLAY and XAUTHORITY before starting
  nested-X-server seats.

  2.1 [OPTIONAL] subscribe all nested-X-server seats to main
  DisplayManager object as well, so they can be registered in LightDM
  D-Bus API.

  3. Seats could gain a new boolean property "require-nesting" or
  something similar. If it's true, then the seat in question should wait
  until host X server is ready before starting itself. If no host X
  server is available, start a new one.

To manage notifications about this bug go to:
https://bugs.launchpad.net/lightdm/+bug/1356332/+subscriptions