Merge pull request #23272 from keszybz/logind-man-and-rules
Logind man and rules
This commit is contained in:
@@ -1,15 +0,0 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
ACTION=="remove", GOTO="power_switch_end"
|
||||
|
||||
SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT_SWITCH}=="1", TAG+="power-switch"
|
||||
SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT_KEY}=="1", TAG+="power-switch"
|
||||
|
||||
LABEL="power_switch_end"
|
||||
@@ -1,99 +0,0 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
ACTION=="remove", GOTO="uaccess_end"
|
||||
ENV{MAJOR}=="", GOTO="uaccess_end"
|
||||
|
||||
# PTP/MTP protocol devices, cameras, portable media players
|
||||
SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="uaccess"
|
||||
|
||||
# Digicams with proprietary protocol
|
||||
ENV{ID_GPHOTO2}=="?*", TAG+="uaccess"
|
||||
|
||||
# SCSI and USB scanners
|
||||
ENV{libsane_matched}=="yes", TAG+="uaccess"
|
||||
|
||||
# HPLIP devices (necessary for ink level check and HP tool maintenance)
|
||||
ENV{ID_HPLIP}=="1", TAG+="uaccess"
|
||||
|
||||
# optical drives
|
||||
SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="uaccess"
|
||||
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", TAG+="uaccess"
|
||||
|
||||
# Sound devices
|
||||
SUBSYSTEM=="sound", TAG+="uaccess", \
|
||||
OPTIONS+="static_node=snd/timer", OPTIONS+="static_node=snd/seq"
|
||||
|
||||
# Webcams, frame grabber, TV cards
|
||||
SUBSYSTEM=="video4linux", TAG+="uaccess"
|
||||
SUBSYSTEM=="dvb", TAG+="uaccess"
|
||||
SUBSYSTEM=="media", TAG+="uaccess"
|
||||
|
||||
# industrial cameras, some webcams, camcorders, set-top boxes, TV sets, audio devices, and more
|
||||
SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_MIDI}=="1", TAG+="uaccess"
|
||||
SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_AUDIO}=="1", TAG+="uaccess"
|
||||
SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_VIDEO}=="1", TAG+="uaccess"
|
||||
|
||||
# DRI video devices
|
||||
SUBSYSTEM=="drm", KERNEL=="card*", TAG+="uaccess"
|
||||
{% if GROUP_RENDER_UACCESS %}
|
||||
# DRI render nodes
|
||||
SUBSYSTEM=="drm", KERNEL=="renderD*", TAG+="uaccess"
|
||||
{% endif %}
|
||||
{% if DEV_KVM_UACCESS %}
|
||||
# KVM
|
||||
SUBSYSTEM=="misc", KERNEL=="kvm", TAG+="uaccess"
|
||||
{% endif %}
|
||||
|
||||
# smart-card readers
|
||||
ENV{ID_SMARTCARD_READER}=="?*", TAG+="uaccess"
|
||||
|
||||
# (USB) authentication devices
|
||||
ENV{ID_SECURITY_TOKEN}=="?*", TAG+="uaccess"
|
||||
|
||||
# PDA devices
|
||||
ENV{ID_PDA}=="?*", TAG+="uaccess"
|
||||
|
||||
# Programmable remote control
|
||||
ENV{ID_REMOTE_CONTROL}=="1", TAG+="uaccess"
|
||||
|
||||
# joysticks
|
||||
SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}=="?*", TAG+="uaccess"
|
||||
|
||||
# color measurement devices
|
||||
ENV{COLOR_MEASUREMENT_DEVICE}=="?*", TAG+="uaccess"
|
||||
|
||||
# DDC/CI device, usually high-end monitors such as the DreamColor
|
||||
ENV{DDC_DEVICE}=="?*", TAG+="uaccess"
|
||||
|
||||
# media player raw devices (for user-mode drivers, Android SDK, etc.)
|
||||
SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="uaccess"
|
||||
|
||||
# software-defined radio communication devices
|
||||
ENV{ID_SOFTWARE_RADIO}=="?*", TAG+="uaccess"
|
||||
|
||||
# 3D printers, CNC machines, laser cutters, 3D scanners, etc.
|
||||
ENV{ID_MAKER_TOOL}=="?*", TAG+="uaccess"
|
||||
|
||||
# Protocol analyzers
|
||||
ENV{ID_SIGNAL_ANALYZER}=="?*", ENV{DEVTYPE}=="usb_device", TAG+="uaccess"
|
||||
|
||||
# rfkill / radio killswitches
|
||||
KERNEL=="rfkill", SUBSYSTEM=="misc", TAG+="uaccess"
|
||||
|
||||
# AV production controllers
|
||||
# Most of these devices use HID for the knobs, faders, buttons, encoders, and jog wheels.
|
||||
SUBSYSTEM=="hidraw", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess"
|
||||
|
||||
# Some devices use vendor defined protocols on USB Bulk endpoints for controllers.
|
||||
# Other devices transfer graphics to screens on the device through USB Bulk endpoints.
|
||||
# This also allows accessing HID devices with the libusb backend of hidapi.
|
||||
SUBSYSTEM=="usb", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess"
|
||||
|
||||
LABEL="uaccess_end"
|
||||
@@ -1,81 +0,0 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
ACTION=="remove", GOTO="seat_end"
|
||||
|
||||
TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat"
|
||||
SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat"
|
||||
SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat"
|
||||
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat"
|
||||
|
||||
# Assign keyboard and LCD backlights to the seat
|
||||
SUBSYSTEM=="leds", TAG+="seat"
|
||||
SUBSYSTEM=="backlight", TAG+="seat"
|
||||
|
||||
# Allow efifb / uvesafb to be a master if KMS is disabled
|
||||
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]", IMPORT{cmdline}="nomodeset", TAG+="master-of-seat"
|
||||
|
||||
# Allow any PCI graphics device to be a master and synthesize a seat if KMS
|
||||
# is disabled and the kernel doesn't have a driver that would work with this device.
|
||||
SUBSYSTEM=="pci", ENV{ID_PCI_CLASS_FROM_DATABASE}=="Display controller", \
|
||||
ENV{DRIVER}=="", IMPORT{cmdline}="nomodeset", TAG+="seat", TAG+="master-of-seat"
|
||||
|
||||
# Synthesize a seat for graphic devices without DRM and that fall back to fb
|
||||
# device instead. Such HWs are listed in hwdb.
|
||||
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", ATTRS{modalias}=="?*", IMPORT{builtin}="hwdb fb:$attr{modalias}"
|
||||
ENV{ID_TAG_MASTER_OF_SEAT}=="1", TAG+="master-of-seat"
|
||||
|
||||
SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat"
|
||||
|
||||
# Allow individual USB ports to be assigned to a seat
|
||||
SUBSYSTEM=="usb", ATTR{bDeviceClass}=="00", TAG+="seat"
|
||||
|
||||
# Allow USB hubs (and all downstream ports) to be assigned to a seat
|
||||
SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat"
|
||||
|
||||
# 'Plugable' USB hub, sound, network, graphics adapter
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1"
|
||||
|
||||
# qemu (version 2.4+) has a PCI-PCI bridge (-device pci-bridge-seat) to group
|
||||
# devices belonging to one seat. See:
|
||||
# http://git.qemu.org/?p=qemu.git;a=blob;f=docs/multiseat.txt
|
||||
SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", TAG+="seat", ENV{ID_AUTOSEAT}="1"
|
||||
|
||||
# Mimo 720, with integrated USB hub, displaylink graphics, and e2i
|
||||
# touchscreen. This device carries no proper VID/PID in the USB hub,
|
||||
# but it does carry good ID data in the graphics component, hence we
|
||||
# check it from the parent. There's a bit of a race here however,
|
||||
# given that the child devices might not exist yet at the time this
|
||||
# rule is executed. To work around this we'll trigger the parent from
|
||||
# the child if we notice that the parent wasn't recognized yet.
|
||||
|
||||
# Match parent
|
||||
{% raw -%}
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", \
|
||||
ATTR{%k.2/idVendor}=="17e9", ATTR{%k.2/idProduct}=="401a", ATTR{%k.2/product}=="mimo inc", \
|
||||
ENV{ID_AUTOSEAT}="1", ENV{ID_AVOID_LOOP}="1"
|
||||
{% endraw %}
|
||||
|
||||
# Match child, look for parent's ID_AVOID_LOOP
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
|
||||
ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
|
||||
IMPORT{parent}="ID_AVOID_LOOP"
|
||||
|
||||
# Match child, retrigger parent
|
||||
SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
|
||||
ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
|
||||
ENV{ID_AVOID_LOOP}=="", \
|
||||
RUN+="{{ROOTBINDIR}}/udevadm trigger --parent-match=%p/.."
|
||||
|
||||
TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
|
||||
TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
|
||||
|
||||
SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="{{ROOTBINDIR}}/loginctl lock-sessions"
|
||||
|
||||
LABEL="seat_end"
|
||||
@@ -1,20 +0,0 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
ACTION=="remove", GOTO="seat_late_end"
|
||||
|
||||
ENV{ID_SEAT}=="", ENV{ID_AUTOSEAT}=="1", ENV{ID_FOR_SEAT}!="", ENV{ID_SEAT}="seat-$env{ID_FOR_SEAT}"
|
||||
ENV{ID_SEAT}=="", IMPORT{parent}="ID_SEAT"
|
||||
|
||||
ENV{ID_SEAT}!="", TAG+="$env{ID_SEAT}"
|
||||
{% if HAVE_ACL %}
|
||||
TAG=="uaccess", ENV{MAJOR}!="", RUN{builtin}+="uaccess"
|
||||
{% endif %}
|
||||
|
||||
LABEL="seat_late_end"
|
||||
+15
-20
@@ -65,25 +65,22 @@ pam_systemd_sym = 'src/login/pam_systemd.sym'
|
||||
pam_systemd_c = files('pam_systemd.c')
|
||||
|
||||
enable_logind = conf.get('ENABLE_LOGIND') == 1
|
||||
in_files = [
|
||||
['logind.conf', pkgsysconfdir, enable_logind and install_sysconfdir_samples],
|
||||
['70-uaccess.rules', udevrulesdir, enable_logind and conf.get('HAVE_ACL') == 1],
|
||||
['71-seat.rules', udevrulesdir, enable_logind],
|
||||
['73-seat-late.rules', udevrulesdir, enable_logind],
|
||||
['systemd-user', pamconfdir, enable_logind]]
|
||||
|
||||
foreach tuple : in_files
|
||||
file = tuple[0]
|
||||
dir = tuple[1]
|
||||
install = (dir == pkgsysconfdir) ? install_sysconfdir_samples : (dir != 'no')
|
||||
custom_target(
|
||||
file,
|
||||
input : file + '.in',
|
||||
output: file,
|
||||
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
|
||||
install : tuple[2] and install,
|
||||
install_dir : dir)
|
||||
endforeach
|
||||
custom_target(
|
||||
'logind.conf',
|
||||
input : 'logind.conf.in',
|
||||
output : 'logind.conf',
|
||||
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
|
||||
install : enable_logind and install_sysconfdir_samples and pkgsysconfdir != 'no',
|
||||
install_dir : pkgsysconfdir)
|
||||
|
||||
custom_target(
|
||||
'systemd-user',
|
||||
input : 'systemd-user.in',
|
||||
output : 'systemd-user',
|
||||
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
|
||||
install : enable_logind and pamconfdir != 'no',
|
||||
install_dir : pamconfdir)
|
||||
|
||||
if enable_logind
|
||||
install_data('org.freedesktop.login1.conf',
|
||||
@@ -92,8 +89,6 @@ if enable_logind
|
||||
install_dir : dbussystemservicedir)
|
||||
install_data('org.freedesktop.login1.policy',
|
||||
install_dir : polkitpolicydir)
|
||||
install_data('70-power-switch.rules',
|
||||
install_dir : udevrulesdir)
|
||||
endif
|
||||
|
||||
############################################################
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation; either version 2.1 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# Each vtcon keeps its own state of fonts.
|
||||
#
|
||||
ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="{{ROOTLIBEXECDIR}}/systemd-vconsole-setup"
|
||||
@@ -1,9 +0,0 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
custom_target(
|
||||
'90-vconsole.rules',
|
||||
input : '90-vconsole.rules.in',
|
||||
output : '90-vconsole.rules',
|
||||
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
|
||||
install : conf.get('ENABLE_VCONSOLE') == 1,
|
||||
install_dir : udevrulesdir)
|
||||
Reference in New Issue
Block a user