]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/login/71-seat.rules.in
Merge pull request #11827 from keszybz/pkgconfig-variables
[thirdparty/systemd.git] / src / login / 71-seat.rules.in
1 # SPDX-License-Identifier: LGPL-2.1+
2 #
3 # This file is part of systemd.
4 #
5 # systemd is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU Lesser General Public License as published by
7 # the Free Software Foundation; either version 2.1 of the License, or
8 # (at your option) any later version.
9
10 ACTION=="remove", GOTO="seat_end"
11
12 TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat"
13 SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat"
14 SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat"
15 SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat"
16 SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat"
17 SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat"
18
19 # 'Plugable' USB hub, sound, network, graphics adapter
20 SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1"
21
22 # qemu (version 2.4+) has a PCI-PCI bridge (-device pci-bridge-seat) to group
23 # devices belonging to one seat. See:
24 # http://git.qemu.org/?p=qemu.git;a=blob;f=docs/multiseat.txt
25 SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", TAG+="seat", ENV{ID_AUTOSEAT}="1"
26
27 # Video adapter of Parallels virtualization platform
28 # Seat should be synthesized for it. But there's no in-kernel driver for this
29 # device so matching by vid/pid.
30 SUBSYSTEM=="pci", ATTRS{vendor}=="0x1ab8", ATTRS{device}=="0x4005", TAG+="seat", TAG+="master-of-seat"
31
32 # Mimo 720, with integrated USB hub, displaylink graphics, and e2i
33 # touchscreen. This device carries no proper VID/PID in the USB hub,
34 # but it does carry good ID data in the graphics component, hence we
35 # check it from the parent. There's a bit of a race here however,
36 # given that the child devices might not exist yet at the time this
37 # rule is executed. To work around this we'll trigger the parent from
38 # the child if we notice that the parent wasn't recognized yet.
39
40 # Match parent
41 SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", \
42 ATTR{%k.2/idVendor}=="17e9", ATTR{%k.2/idProduct}=="401a", ATTR{%k.2/product}=="mimo inc", \
43 ENV{ID_AUTOSEAT}="1", ENV{ID_AVOID_LOOP}="1"
44
45 # Match child, look for parent's ID_AVOID_LOOP
46 SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
47 ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
48 IMPORT{parent}="ID_AVOID_LOOP"
49
50 # Match child, retrigger parent
51 SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
52 ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
53 ENV{ID_AVOID_LOOP}=="", \
54 RUN+="@rootbindir@/udevadm trigger --parent-match=%p/.."
55
56 TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
57 TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
58
59 SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="@rootbindir@/loginctl lock-sessions"
60
61 LABEL="seat_end"