New approach for nested-X-server multiseat support
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Light Display Manager |
Triaged
|
Wishlist
|
Unassigned |
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=
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.
Related branches
- Robert Ancell: Approve
-
Diff: 25 lines (+4/-4)1 file modifiedsrc/seat-xlocal.c (+4/-4)
Changed in lightdm: | |
status: | New → Triaged |
importance: | Undecided → Wishlist |
After inspecting files seat.c, seat-xlocal.c, and seat-unity.c, I've found a much simpler approach for item 1.
Instead of creating another seat module, we can introduce a new option "start- local-sessions" for existing seat modules. If this option is explicitly set to false, the seat in question will only start a bare X server (no greeter, no user sessions).
In order to keep compatibility with current code, setting option "xdmcp-manager" with a non-empty value should force "start- local-sessions= false".
I've uploaded a new branch with an implementation of "start- local-sessions" option:
lp:~ubuntu-multiseat/lightdm/option-start-local-sessions