On Sun, Jan 20, 2019 at 08:37:15PM +0100, Michael Meskes wrote: > > So I think this aspect of this bug should be reassigned to acpi- > > support. I will > > try and prepare a patch and then clone the bug. acpi-support > > maintainers, are > > you OK with that? > > Sure. Thanks.
Michael Thanks very much. A quick summary: acpi-support and elogind should not to attempt to manage the same events (lid, power button, shutdown and suspend). acpi-support already detects systemd and cedes control of these to it. Support for this could helpfully be extended to elogind. I have prepared a suggested patch which is based on the following premises: - systemd-shim is no longer in the repository - testing for an org.freedesktop.login1.Manager method should be successful for systemd, elogind or any future logind implementation. - rename the function to reflect its new purpose. Mark diff --git a/debian/addons/lib/policy-funcs b/debian/addons/lib/policy-funcs index 4214175..9302c12 100644 --- a/debian/addons/lib/policy-funcs +++ b/debian/addons/lib/policy-funcs @@ -45,16 +45,14 @@ DBusSend() { fi } -# Check if systemd-logind will be able to call org.freedesktop.systemd1.Manager -# interface provided by systemd running as PID 1 or by systemd-shim -HasLogindAndSystemd1Manager() { - pidof -x "/lib/systemd/systemd-logind" > /dev/null && +# Check if org.freedesktop.login1.Manager interface is available +HasDBusLogin1() { test -x /usr/bin/dbus-send && - # shutdown.target used as a representative of power management calls class + # CanHalt used as a representative of login1 methods dbus-send --print-reply --system --type=method_call \ - --dest=org.freedesktop.systemd1 \ - /org/freedesktop/systemd1 \ - org.freedesktop.systemd1.Manager.GetUnitFileState string:shutdown.target \ + --dest=org.freedesktop.login1 \ + /org/freedesktop/login1 \ + org.freedesktop.login1.Manager.CanHalt \ > /dev/null 2>&1 } diff --git a/debian/addons/scripts/lid.sh b/debian/addons/scripts/lid.sh index 600f5d1..7dc507b 100644 --- a/debian/addons/scripts/lid.sh +++ b/debian/addons/scripts/lid.sh @@ -8,7 +8,7 @@ test -f /usr/share/acpi-support/state-funcs || exit 0 [ -x /etc/acpi/local/lid.sh.pre ] && /etc/acpi/local/lid.sh.pre -if { CheckPolicy || HasLogindAndSystemd1Manager; }; then +if { CheckPolicy || HasDBusLogin1; }; then exit fi diff --git a/debian/addons/scripts/powerbtn-acpi-support.sh b/debian/addons/scripts/powerbtn-acpi-support.sh index ec66597..7c8723e 100644 --- a/debian/addons/scripts/powerbtn-acpi-support.sh +++ b/debian/addons/scripts/powerbtn-acpi-support.sh @@ -15,7 +15,7 @@ fi . /usr/share/acpi-support/policy-funcs -if { CheckPolicy || HasLogindAndSystemd1Manager; }; then +if { CheckPolicy || HasDBusLogin1; }; then exit 0 fi diff --git a/debian/addons/scripts/sleep_suspend.sh b/debian/addons/scripts/sleep_suspend.sh index 71152e6..6beb3b8 100644 --- a/debian/addons/scripts/sleep_suspend.sh +++ b/debian/addons/scripts/sleep_suspend.sh @@ -13,7 +13,7 @@ test -f /usr/share/acpi-support/key-constants || exit 0 . /etc/default/acpi-support . /usr/share/acpi-support/policy-funcs -if { CheckPolicy || HasLogindAndSystemd1Manager; }; then +if { CheckPolicy || HasDBusLogin1; }; then exit fi diff --git a/debian/addons/scripts/sleep_suspendbtn.sh b/debian/addons/scripts/sleep_suspendbtn.sh index fbd6d6b..11d77d1 100644 --- a/debian/addons/scripts/sleep_suspendbtn.sh +++ b/debian/addons/scripts/sleep_suspendbtn.sh @@ -13,7 +13,7 @@ test -f /usr/share/acpi-support/key-constants || exit 0 . /usr/share/acpi-support/policy-funcs -if { CheckPolicy || HasLogindAndSystemd1Manager; }; then +if { CheckPolicy || HasDBusLogin1; }; then # If a power management daemon is running, generate the X "sleep/suspend" # key. The daemons will handle that keypress according to their settings.