← Back to team overview

ubuntu-multiseat team mailing list archive

[Blueprint multiseat] Basic Multiseat Support

 

Blueprint changed by Richard Hansen:

Whiteboard changed:
- The protocol for interacting with logind in a multiseat environment is
- described at [1].  I define "basic multiseat support" to be everything
- documented there except steps 1 and 2 of "complete porting".
- 
- Also see "Multiseat on Linux" [2].
- 
- [1] http://www.freedesktop.org/wiki/Software/systemd/writing-display-managers/
- [2] http://www.freedesktop.org/wiki/Software/systemd/multiseat/
- 
- = Background =
- 
- See: https://wiki.ubuntu.com/Multiseat
- 
- = Related future work =
- 
- The following are not considered to be part of this blueprint.  They
- should be tackled separately.
- 
-   - Steps 1 and 2 of "complete porting" in [1].  Those two steps are
-     required for automatic multiseat support (dynamically spawning and
-     terminating greeters as seats come and go).  See bug #1190581.
- 
-   - A tool to make it easier for users to assign devices to seats via
-     udev rules.
- 
-     Note that systemd's loginctl utility, available in Ubuntu since
-     13.04 raring, has an "attach" feature that is intended to make it
-     easier to assign devices to seats.  I have not tested this feature
-     to see how or even if it works.  Getting this utility to work with
-     Ubuntu, or improving its functionality, is out of scope for this
-     blueprint.
- 
-   - Fixing X so that the logind multiseat wrapper [3] can be replaced
-     with appropriate command-line arguments.
- 
- [3] http://cgit.freedesktop.org/systemd/systemd/tree/src/login/multi-
- seat-x.c?id=v206
- 
- = Requirements =
- 
-   - follow steps 1-4 of "minimal porting" and steps 3-4 of "complete
-     porting"
-   - support X, Mir, Wayland compositors, etc.
- 
- = Work Item descriptions =
- 
- == Package systemd-multi-seat-x ==
- 
- See bug #1214146.
- 
- == New setting: xdg-seat=<name> ==
- 
- The xdg-seat=<name> seat setting tells LightDM the name of the seat.
- The name defaults to "seat0".
- 
- This name is used:
-   - in the XDG_SEAT variable (for PAM)
-   - in the -seat argument to X (if the seat is an X seat and not Mir
-     or something else)
-   - to determine how to handle VTs
- 
- If the name is unset, set to the empty string, or set to seat0, then:
-   - LightDM switches to an automatically chosen VT
-   - 'vtXX' is passed to X (if the seat is an X seat) where XX is the
-     number of the chosen VT
-   - '-seat seat0' is passed to X (if the seat is an X seat)
- 
- If the name is set to something other than seat0, then:
-   - LightDM does NOT do any VT switching
-   - 'vtXX' is NOT passed to X (if the seat is an X seat)
-   - '-seat <name>' is passed to X (if the seat is an X seat)
-   - LightDM creates a temporary xorg config file with the following
-     contents:
- 
-         Section "ServerFlags"
-             Option "DontVTSwitch" "True"
-         EndSection
-         Section "InputClass"
-             Identifier "prevent input events from going to the console"
-             Option "GrabDevice" "True"
-         EndSection
- 
-   - '-config /path/to/above/config/file -sharevts' is passed to X (if
-     the seat is an X seat)
- 
- If lightdm.conf defines two or more seats with the same name, an error
- message is logged and the second and subsequent seats with that name are
- ignored.
- 
- == New setting:  use-vt=auto|true|false|<integer> ==
- 
- (this is not strictly required, but would be a nice feature in case
- anyone needs to control VT associations)
- 
- The use-vt=* seat setting tells LightDM which VT to associate with the
- display server (if any).
- 
-   - use-vt=true: Switch to an automatically chosen VT, pass vtXX to X,
-     and do not pass -sharevts to X.
-   - use-vt=false: Do not switch VTs, do not pass vtXX to X, do pass
-     -sharevts to X, and generate a X config with "DontVTSwitch" and
-     "GrabDevice" enabled.
-   - use-vt=auto (default): If the name of the seat is seat0, this is
-     the same as use-vt=true.  Otherwise (not seat0), this is the same
-     as use-vt=false.
-   - use-vt=<integer>: Same as use-vt=true, but use the specified VT.
- 
- == Write test cases ==
- 
- == Set can_switch appropriately ==
- 
-   - call set_seat_can_switch() with the value of the
-     org.freedesktop.login1.Seat.CanMultiSession dbus property
-   - bug that needs to be figured out:  If can_switch is true on a
-     seat, then when you log out LightDM won't respawn a greeter on
-     that seat.
+ The spec wiki page is more or less complete, but could use the following:
+   * more user stories
+   * test plan

-- 
Basic Multiseat Support
https://blueprints.launchpad.net/lightdm/+spec/multiseat