diff --git a/TODO b/TODO
index 30f2d3d38a..62f569dd6a 100644
--- a/TODO
+++ b/TODO
@@ -1399,8 +1399,9 @@ Features:
- follow PropertiesChanged state more closely, to deal with quick logouts and
relogins
- (optionally?) spawn seat-manager@$SEAT.service whenever a seat shows up that as CanGraphical set
-
-* move logind udev rules to top-level rule.d/ directory
+ - expose details of boot entries on the bus. In particular, it should be possible
+ to query the list of boot entry titles that bootctl / sd-boot would show.
+ Currently we only expose their identifiers.
* move multiseat vid/pid matches from logind udev rule to hwdb
diff --git a/man/org.freedesktop.home1.xml b/man/org.freedesktop.home1.xml
index 1f5c50f43b..2ca97eff34 100644
--- a/man/org.freedesktop.home1.xml
+++ b/man/org.freedesktop.home1.xml
@@ -514,12 +514,7 @@ node /org/freedesktop/home1/home {
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
See Also
diff --git a/man/org.freedesktop.hostname1.xml b/man/org.freedesktop.hostname1.xml
index ea9bd26338..8e63b7188a 100644
--- a/man/org.freedesktop.hostname1.xml
+++ b/man/org.freedesktop.hostname1.xml
@@ -379,12 +379,7 @@ node /org/freedesktop/hostname1 {
name.
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
Examples
diff --git a/man/org.freedesktop.import1.xml b/man/org.freedesktop.import1.xml
index 9558ee138f..5be21dad6c 100644
--- a/man/org.freedesktop.import1.xml
+++ b/man/org.freedesktop.import1.xml
@@ -339,10 +339,5 @@ node /org/freedesktop/import1/transfer/_1 {
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.locale1.xml b/man/org.freedesktop.locale1.xml
index 1da386d6a7..8e2ca81089 100644
--- a/man/org.freedesktop.locale1.xml
+++ b/man/org.freedesktop.locale1.xml
@@ -179,7 +179,7 @@ $ gdbus introspect --system \
-
+
Versioning
These D-Bus interfaces follow
diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml
index 8fc145d771..5be9c91fb9 100644
--- a/man/org.freedesktop.login1.xml
+++ b/man/org.freedesktop.login1.xml
@@ -1415,27 +1415,46 @@ node /org/freedesktop/login1/session/1 {
Examples
- Introspect org.freedesktop.login1.Manager on the bus
+ Introspect the logind manager on the bus
$ gdbus introspect --system --dest org.freedesktop.login1 \
--object-path /org/freedesktop/login1
-
-
- Introspect org.freedesktop.login1.Seat on the bus
+ or
- $ gdbus introspect --system --dest org.freedesktop.login1 \
- --object-path /org/freedesktop/login1/seat/seat0
+ $ busctl introspect org.freedesktop.login1 /org/freedesktop/login1
- Introspect org.freedesktop.login1.User on the bus
+ Introspect the default seat on the bus
+
+ $ gdbus introspect --system --dest org.freedesktop.login1 \
+ --object-path /org/freedesktop/login1/seat/seat0
+
+
+ or
+
+ $ busctl introspect org.freedesktop.login1 /org/freedesktop/login1/seat/seat0
+
+
+ Seat seat0 is the default seat, so it'll be present unless local configuation
+ is made to reassign all devices to a different seat. The list of seats and users can be acquired with
+ loginctl list-sessions.
+
+
+
+ Introspect a single user on the bus
$ gdbus introspect --system --dest org.freedesktop.login1 \
--object-path /org/freedesktop/login1/user/_1000
+
+ or
+
+ $ busctl introspect org.freedesktop.login1 /org/freedesktop/login1/user/_1000
+
@@ -1444,13 +1463,13 @@ node /org/freedesktop/login1/session/1 {
$ gdbus introspect --system --dest org.freedesktop.login1 \
--object-path /org/freedesktop/login1/session/45
+
+ or
+
+ $ busctl introspect org.freedesktop.login1 /org/freedesktop/login1/session/45
+
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.machine1.xml b/man/org.freedesktop.machine1.xml
index ac982a6ebf..d35e8ec220 100644
--- a/man/org.freedesktop.machine1.xml
+++ b/man/org.freedesktop.machine1.xml
@@ -639,10 +639,5 @@ $ gdbus introspect --system \
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.network1.xml b/man/org.freedesktop.network1.xml
index 2531a4737b..a4b5385df9 100644
--- a/man/org.freedesktop.network1.xml
+++ b/man/org.freedesktop.network1.xml
@@ -498,10 +498,5 @@ $ gdbus introspect --system \
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.oom1.xml b/man/org.freedesktop.oom1.xml
index ab0725e867..838eb6738d 100644
--- a/man/org.freedesktop.oom1.xml
+++ b/man/org.freedesktop.oom1.xml
@@ -65,10 +65,5 @@ node /org/freedesktop/oom1 {
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.portable1.xml b/man/org.freedesktop.portable1.xml
index 10f7c21367..0007e0c2de 100644
--- a/man/org.freedesktop.portable1.xml
+++ b/man/org.freedesktop.portable1.xml
@@ -559,10 +559,5 @@ node /org/freedesktop/portable1 {
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.resolve1.xml b/man/org.freedesktop.resolve1.xml
index 72beffc288..1dc6dcbd73 100644
--- a/man/org.freedesktop.resolve1.xml
+++ b/man/org.freedesktop.resolve1.xml
@@ -891,10 +891,5 @@ $ gdbus introspect --system \
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.systemd1.xml b/man/org.freedesktop.systemd1.xml
index d47d916b76..a1c3e00aab 100644
--- a/man/org.freedesktop.systemd1.xml
+++ b/man/org.freedesktop.systemd1.xml
@@ -10656,10 +10656,5 @@ $ gdbus introspect --system --dest org.freedesktop.systemd1 \
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
diff --git a/man/org.freedesktop.timedate1.xml b/man/org.freedesktop.timedate1.xml
index 52efa68935..54f4018c7b 100644
--- a/man/org.freedesktop.timedate1.xml
+++ b/man/org.freedesktop.timedate1.xml
@@ -190,12 +190,7 @@ $ gdbus introspect --system \
-
- Versioning
-
- These D-Bus interfaces follow
- the usual interface versioning guidelines.
-
+
See also
diff --git a/meson.build b/meson.build
index a3f9e3b92d..051eea9aac 100644
--- a/meson.build
+++ b/meson.build
@@ -2068,7 +2068,6 @@ subdir('src/timedate')
subdir('src/timesync')
subdir('src/tmpfiles')
subdir('src/userdb')
-subdir('src/vconsole')
subdir('src/xdg-autostart-generator')
subdir('src/systemd')
diff --git a/src/login/70-power-switch.rules b/rules.d/70-power-switch.rules
similarity index 100%
rename from src/login/70-power-switch.rules
rename to rules.d/70-power-switch.rules
diff --git a/src/login/70-uaccess.rules.in b/rules.d/70-uaccess.rules.in
similarity index 100%
rename from src/login/70-uaccess.rules.in
rename to rules.d/70-uaccess.rules.in
diff --git a/src/login/71-seat.rules.in b/rules.d/71-seat.rules.in
similarity index 100%
rename from src/login/71-seat.rules.in
rename to rules.d/71-seat.rules.in
diff --git a/src/login/73-seat-late.rules.in b/rules.d/73-seat-late.rules.in
similarity index 100%
rename from src/login/73-seat-late.rules.in
rename to rules.d/73-seat-late.rules.in
diff --git a/src/vconsole/90-vconsole.rules.in b/rules.d/90-vconsole.rules.in
similarity index 100%
rename from src/vconsole/90-vconsole.rules.in
rename to rules.d/90-vconsole.rules.in
diff --git a/rules.d/meson.build b/rules.d/meson.build
index f725e14d95..a582e4e922 100644
--- a/rules.d/meson.build
+++ b/rules.d/meson.build
@@ -4,54 +4,73 @@ install_data(
'README',
install_dir : udevrulesdir)
-rules = files(
- '60-autosuspend.rules',
- '60-block.rules',
- '60-cdrom_id.rules',
- '60-drm.rules',
- '60-evdev.rules',
- '60-fido-id.rules',
- '60-input-id.rules',
- '60-persistent-alsa.rules',
- '60-persistent-input.rules',
- '60-persistent-storage.rules',
- '60-persistent-storage-tape.rules',
- '60-persistent-v4l.rules',
- '60-sensor.rules',
- '60-serial.rules',
- '70-camera.rules',
- '70-joystick.rules',
- '70-mouse.rules',
- '70-touchpad.rules',
- '75-net-description.rules',
- '75-probe_mtd.rules',
- '78-sound-card.rules',
- '80-net-setup-link.rules',
- '81-net-dhcp.rules')
+rules = [
+ [files('60-autosuspend.rules',
+ '60-block.rules',
+ '60-cdrom_id.rules',
+ '60-drm.rules',
+ '60-evdev.rules',
+ '60-fido-id.rules',
+ '60-input-id.rules',
+ '60-persistent-alsa.rules',
+ '60-persistent-input.rules',
+ '60-persistent-storage.rules',
+ '60-persistent-storage-tape.rules',
+ '60-persistent-v4l.rules',
+ '60-sensor.rules',
+ '60-serial.rules',
+ '70-camera.rules',
+ '70-joystick.rules',
+ '70-mouse.rules',
+ '70-touchpad.rules',
+ '75-net-description.rules',
+ '75-probe_mtd.rules',
+ '78-sound-card.rules',
+ '80-net-setup-link.rules',
+ '81-net-dhcp.rules',
+ )],
-if conf.get('HAVE_KMOD') == 1
- rules += files('80-drivers.rules')
-endif
+ [files('80-drivers.rules'),
+ conf.get('HAVE_KMOD') == 1],
-if dmi_arches.contains(host_machine.cpu_family())
- rules += files('70-memory.rules')
-endif
+ [files('70-memory.rules'),
+ dmi_arches.contains(host_machine.cpu_family())],
+]
-install_data(rules,
- install_dir : udevrulesdir)
+all_rules = []
-all_rules = rules
+foreach tuple : rules
+ if tuple.length() == 1 or tuple[1]
+ install_data(tuple[0],
+ install_dir : udevrulesdir)
+ all_rules += tuple[0]
+ endif
+endforeach
-rules_in = ['50-udev-default.rules',
- '64-btrfs.rules',
- '99-systemd.rules']
+rules_in = [
+ ['50-udev-default.rules'],
+ ['64-btrfs.rules'],
+ ['99-systemd.rules'],
-foreach file : rules_in
- all_rules += custom_target(
- file,
- input : file + '.in',
- output: file,
+ ['70-uaccess.rules', enable_logind and conf.get('HAVE_ACL') == 1],
+ ['71-seat.rules', enable_logind],
+ ['73-seat-late.rules', enable_logind],
+
+ ['90-vconsole.rules', conf.get('ENABLE_VCONSOLE') == 1],
+]
+
+foreach tuple : rules_in
+ want = tuple.length() == 1 or tuple[1]
+
+ rule = custom_target(
+ tuple[0],
+ input : tuple[0] + '.in',
+ output: tuple[0],
command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
- install : true,
+ install : want,
install_dir : udevrulesdir)
+
+ if want
+ all_rules += rule
+ endif
endforeach
diff --git a/src/login/meson.build b/src/login/meson.build
index bd350569d5..8be238254a 100644
--- a/src/login/meson.build
+++ b/src/login/meson.build
@@ -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
############################################################
diff --git a/src/vconsole/meson.build b/src/vconsole/meson.build
deleted file mode 100644
index bb3c3c5a03..0000000000
--- a/src/vconsole/meson.build
+++ /dev/null
@@ -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)