From 01942823aeed0e8138dc16ef71f7e77b2af2215d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 5 May 2022 10:50:26 +0200 Subject: [PATCH 1/5] man: beef up o.fd.login1 page a bit and recommend busctl too gdbus is an external program, so it makes sense to recommend busctl. --- man/org.freedesktop.login1.xml | 38 +++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml index 8fc145d7717..aa8973b813a 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 <interfacename>org.freedesktop.login1.Manager</interfacename> on the bus + Introspect the logind manager on the bus $ gdbus introspect --system --dest org.freedesktop.login1 \ --object-path /org/freedesktop/login1 - - - Introspect <interfacename>org.freedesktop.login1.Seat</interfacename> 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 <interfacename>org.freedesktop.login1.User</interfacename> 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,6 +1463,11 @@ 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 + From e4239a34d75d212c44853c13951a7cd4ffe12523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 5 May 2022 10:53:29 +0200 Subject: [PATCH 2/5] man: deduplicate dbus versioning ref --- man/org.freedesktop.home1.xml | 7 +------ man/org.freedesktop.hostname1.xml | 7 +------ man/org.freedesktop.import1.xml | 7 +------ man/org.freedesktop.locale1.xml | 2 +- man/org.freedesktop.login1.xml | 7 +------ man/org.freedesktop.machine1.xml | 7 +------ man/org.freedesktop.network1.xml | 7 +------ man/org.freedesktop.oom1.xml | 7 +------ man/org.freedesktop.portable1.xml | 7 +------ man/org.freedesktop.resolve1.xml | 7 +------ man/org.freedesktop.systemd1.xml | 7 +------ man/org.freedesktop.timedate1.xml | 7 +------ 12 files changed, 12 insertions(+), 67 deletions(-) diff --git a/man/org.freedesktop.home1.xml b/man/org.freedesktop.home1.xml index 1f5c50f43b4..2ca97eff34c 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 ea9bd263382..8e63b7188ae 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 9558ee138f8..5be21dad6cd 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 1da386d6a7d..8e2ca810892 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 aa8973b813a..5be9c91fb97 100644 --- a/man/org.freedesktop.login1.xml +++ b/man/org.freedesktop.login1.xml @@ -1471,10 +1471,5 @@ node /org/freedesktop/login1/session/1 { - - 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 ac982a6ebf2..d35e8ec220e 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 2531a4737ba..a4b5385df98 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 ab0725e8674..838eb6738d8 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 10f7c213673..0007e0c2ded 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 72beffc2881..1dc6dcbd739 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 d47d916b76e..a1c3e00aaba 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 52efa68935d..54f4018c7b8 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 From 4a5f779f0ecda6e247c9f80812cdfe517b162cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 5 May 2022 11:02:24 +0200 Subject: [PATCH 3/5] TODO: add entry about boot entries on the bus Something like this is needed to allow integration with graphical envs and fully unprivileged operation. --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 7240d05d9ac..34d8c99edba 100644 --- a/TODO +++ b/TODO @@ -1390,6 +1390,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 + - 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 logind udev rules to top-level rule.d/ directory From 155078c835a00fed264a7b36b06f709d9b57cb1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 5 May 2022 11:42:24 +0200 Subject: [PATCH 4/5] meson: move udev rules to rules.d/ --- TODO | 2 - {src/login => rules.d}/70-power-switch.rules | 0 {src/login => rules.d}/70-uaccess.rules.in | 0 {src/login => rules.d}/71-seat.rules.in | 0 {src/login => rules.d}/73-seat-late.rules.in | 0 rules.d/meson.build | 109 +++++++++++-------- src/login/meson.build | 35 +++--- 7 files changed, 78 insertions(+), 68 deletions(-) rename {src/login => rules.d}/70-power-switch.rules (100%) rename {src/login => rules.d}/70-uaccess.rules.in (100%) rename {src/login => rules.d}/71-seat.rules.in (100%) rename {src/login => rules.d}/73-seat-late.rules.in (100%) diff --git a/TODO b/TODO index 34d8c99edba..b64ed92dd15 100644 --- a/TODO +++ b/TODO @@ -1394,8 +1394,6 @@ Features: to query the list of boot entry titles that bootctl / sd-boot would show. Currently we only expose their identifiers. -* move logind udev rules to top-level rule.d/ directory - * move multiseat vid/pid matches from logind udev rule to hwdb * logind: rework pam_logind to also do a bus call in case of invocation from 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/rules.d/meson.build b/rules.d/meson.build index f725e14d95d..a391390292c 100644 --- a/rules.d/meson.build +++ b/rules.d/meson.build @@ -4,54 +4,71 @@ 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 - -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, - command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'], - install : true, - install_dir : udevrulesdir) +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'], + + ['70-uaccess.rules', enable_logind and conf.get('HAVE_ACL') == 1], + ['71-seat.rules', enable_logind], + ['73-seat-late.rules', enable_logind], +] + +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 : want, + install_dir : udevrulesdir) + + if want + all_rules += rule + endif endforeach diff --git a/src/login/meson.build b/src/login/meson.build index bd350569d56..8be238254a9 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 ############################################################ From e8a5b13e458c0320aae3a9ca80cc27fa542d37c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 5 May 2022 11:45:42 +0200 Subject: [PATCH 5/5] meson: move vconsole rules to rules.d/ --- meson.build | 1 - {src/vconsole => rules.d}/90-vconsole.rules.in | 0 rules.d/meson.build | 2 ++ src/vconsole/meson.build | 9 --------- 4 files changed, 2 insertions(+), 10 deletions(-) rename {src/vconsole => rules.d}/90-vconsole.rules.in (100%) delete mode 100644 src/vconsole/meson.build diff --git a/meson.build b/meson.build index 582e33c9a73..69d2f97693c 100644 --- a/meson.build +++ b/meson.build @@ -2069,7 +2069,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/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 a391390292c..a582e4e922c 100644 --- a/rules.d/meson.build +++ b/rules.d/meson.build @@ -55,6 +55,8 @@ rules_in = [ ['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 diff --git a/src/vconsole/meson.build b/src/vconsole/meson.build deleted file mode 100644 index bb3c3c5a03b..00000000000 --- 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)