ubuntu-multiseat team mailing list archive
-
ubuntu-multiseat team
-
Mailing list archive
-
Message #00103
[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