Zbigniew Jędrzejewski-Szmek 708deb
From 3c56cab44150ad47323970cfadfb0257c6305a74 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 708deb
From: Ben Wolsieffer <benwolsieffer@gmail.com>
Zbigniew Jędrzejewski-Szmek 708deb
Date: Tue, 26 Aug 2014 22:08:02 +0200
Zbigniew Jędrzejewski-Szmek 708deb
Subject: [PATCH] logind: add HandleLidSwitchDocked= option to logind.conf +
Zbigniew Jędrzejewski-Szmek 708deb
 documentation
Zbigniew Jędrzejewski-Szmek 708deb
Zbigniew Jędrzejewski-Szmek 708deb
https://bugs.freedesktop.org/show_bug.cgi?id=82485
Zbigniew Jędrzejewski-Szmek 708deb
---
Zbigniew Jędrzejewski-Szmek 708deb
 man/logind.conf.xml          | 16 +++++++++++-----
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind-action.c    | 18 ------------------
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind-button.c    | 18 ++++++++++++++++--
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind-core.c      | 22 ++++++++++++++++++++++
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind-dbus.c      |  1 +
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind-gperf.gperf |  1 +
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind.c           |  7 +++++--
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind.conf        |  1 +
Zbigniew Jędrzejewski-Szmek 708deb
 src/login/logind.h           |  2 ++
Zbigniew Jędrzejewski-Szmek 708deb
 9 files changed, 59 insertions(+), 27 deletions(-)
Zbigniew Jędrzejewski-Szmek 708deb
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/man/logind.conf.xml b/man/logind.conf.xml
Zbigniew Jędrzejewski-Szmek 708deb
index f037da259b..8ba95230be 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/man/logind.conf.xml
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/man/logind.conf.xml
Zbigniew Jędrzejewski-Szmek 708deb
@@ -224,6 +224,7 @@
Zbigniew Jędrzejewski-Szmek 708deb
                                 <term><varname>HandleSuspendKey=</varname></term>
Zbigniew Jędrzejewski-Szmek 708deb
                                 <term><varname>HandleHibernateKey=</varname></term>
Zbigniew Jędrzejewski-Szmek 708deb
                                 <term><varname>HandleLidSwitch=</varname></term>
Zbigniew Jędrzejewski-Szmek 708deb
+                                <term><varname>HandleLidSwitchDocked=</varname></term>
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
                                 <listitem><para>Controls whether
Zbigniew Jędrzejewski-Szmek 708deb
                                 logind shall handle the system power
Zbigniew Jędrzejewski-Szmek 708deb
@@ -255,13 +256,18 @@
Zbigniew Jędrzejewski-Szmek 708deb
                                 and
Zbigniew Jędrzejewski-Szmek 708deb
                                 <varname>HandleLidSwitch=</varname>
Zbigniew Jędrzejewski-Szmek 708deb
                                 default to <literal>suspend</literal>.
Zbigniew Jędrzejewski-Szmek 708deb
+                                <varname>HandleLidSwitchDocked=</varname>
Zbigniew Jędrzejewski-Szmek 708deb
+                                defaults to <literal>ignore</literal>.
Zbigniew Jędrzejewski-Szmek 708deb
                                 <varname>HandleHibernateKey=</varname>
Zbigniew Jędrzejewski-Szmek 708deb
                                 defaults to
Zbigniew Jędrzejewski-Szmek 708deb
-                                <literal>hibernate</literal>. Note
Zbigniew Jędrzejewski-Szmek 708deb
-                                that the lid switch is ignored if the
Zbigniew Jędrzejewski-Szmek 708deb
-                                system is inserted in a docking
Zbigniew Jędrzejewski-Szmek 708deb
-                                station, or if more than one display
Zbigniew Jędrzejewski-Szmek 708deb
-                                is connected.</para></listitem>
Zbigniew Jędrzejewski-Szmek 708deb
+                                <literal>hibernate</literal>. If the
Zbigniew Jędrzejewski-Szmek 708deb
+                                system is inserted in a docking station,
Zbigniew Jędrzejewski-Szmek 708deb
+                                or if more than one display is connected,
Zbigniew Jędrzejewski-Szmek 708deb
+                                the action specified by
Zbigniew Jędrzejewski-Szmek 708deb
+                                <varname>HandleLidSwitchDocked=</varname>
Zbigniew Jędrzejewski-Szmek 708deb
+                                occurs; otherwise the
Zbigniew Jędrzejewski-Szmek 708deb
+                                <varname>HandleLidSwitch=</varname>
Zbigniew Jędrzejewski-Szmek 708deb
+                                action occurs.</para></listitem>
Zbigniew Jędrzejewski-Szmek 708deb
                         </varlistentry>
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
                         <varlistentry>
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind-action.c b/src/login/logind-action.c
Zbigniew Jędrzejewski-Szmek 708deb
index 36ee4418b8..0844df20a9 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind-action.c
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind-action.c
Zbigniew Jędrzejewski-Szmek 708deb
@@ -71,24 +71,6 @@ int manager_handle_action(
Zbigniew Jędrzejewski-Szmek 708deb
         }
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
         if (inhibit_key == INHIBIT_HANDLE_LID_SWITCH) {
Zbigniew Jędrzejewski-Szmek 708deb
-                int n;
Zbigniew Jędrzejewski-Szmek 708deb
-
Zbigniew Jędrzejewski-Szmek 708deb
-                /* If we are docked don't react to lid closing */
Zbigniew Jędrzejewski-Szmek 708deb
-                if (manager_is_docked(m)) {
Zbigniew Jędrzejewski-Szmek 708deb
-                        log_debug("Ignoring lid switch request, system is docked.");
Zbigniew Jędrzejewski-Szmek 708deb
-                        return 0;
Zbigniew Jędrzejewski-Szmek 708deb
-                }
Zbigniew Jędrzejewski-Szmek 708deb
-
Zbigniew Jędrzejewski-Szmek 708deb
-                /* If we have more than one display connected,
Zbigniew Jędrzejewski-Szmek 708deb
-                 * don't react to lid closing. */
Zbigniew Jędrzejewski-Szmek 708deb
-                n = manager_count_displays(m);
Zbigniew Jędrzejewski-Szmek 708deb
-                if (n < 0)
Zbigniew Jędrzejewski-Szmek 708deb
-                        log_warning("Display counting failed: %s", strerror(-n));
Zbigniew Jędrzejewski-Szmek 708deb
-                else if (n > 1) {
Zbigniew Jędrzejewski-Szmek 708deb
-                        log_debug("Ignoring lid switch request, %i displays connected.", n);
Zbigniew Jędrzejewski-Szmek 708deb
-                        return 0;
Zbigniew Jędrzejewski-Szmek 708deb
-                }
Zbigniew Jędrzejewski-Szmek 708deb
-
Zbigniew Jędrzejewski-Szmek 708deb
                 /* If the last system suspend or startup is too close,
Zbigniew Jędrzejewski-Szmek 708deb
                  * let's not suspend for now, to give USB docking
Zbigniew Jędrzejewski-Szmek 708deb
                  * stations some time to settle so that we can
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind-button.c b/src/login/logind-button.c
Zbigniew Jędrzejewski-Szmek 708deb
index 2561d13c67..57e619efe6 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind-button.c
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind-button.c
Zbigniew Jędrzejewski-Szmek 708deb
@@ -97,13 +97,27 @@ int button_set_seat(Button *b, const char *sn) {
Zbigniew Jędrzejewski-Szmek 708deb
         return 0;
Zbigniew Jędrzejewski-Szmek 708deb
 }
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
+static void button_lid_switch_handle_action(Manager *manager, bool is_edge) {
Zbigniew Jędrzejewski-Szmek 708deb
+        HandleAction handle_action;
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+        assert(manager);
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+        /* If we are docked, handle the lid switch differently */
Zbigniew Jędrzejewski-Szmek 708deb
+        if (manager_is_docked_or_multiple_displays(manager))
Zbigniew Jędrzejewski-Szmek 708deb
+                handle_action = manager->handle_lid_switch_docked;
Zbigniew Jędrzejewski-Szmek 708deb
+        else
Zbigniew Jędrzejewski-Szmek 708deb
+                handle_action = manager->handle_lid_switch;
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+        manager_handle_action(manager, INHIBIT_HANDLE_LID_SWITCH, handle_action, manager->lid_switch_ignore_inhibited, is_edge);
Zbigniew Jędrzejewski-Szmek 708deb
+}
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
 static int button_recheck(sd_event_source *e, void *userdata) {
Zbigniew Jędrzejewski-Szmek 708deb
         Button *b = userdata;
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
         assert(b);
Zbigniew Jędrzejewski-Szmek 708deb
         assert(b->lid_closed);
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
-        manager_handle_action(b->manager, INHIBIT_HANDLE_LID_SWITCH, b->manager->handle_lid_switch, b->manager->lid_switch_ignore_inhibited, false);
Zbigniew Jędrzejewski-Szmek 708deb
+        button_lid_switch_handle_action(b->manager, false);
Zbigniew Jędrzejewski-Szmek 708deb
         return 1;
Zbigniew Jędrzejewski-Szmek 708deb
 }
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
@@ -186,7 +200,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u
Zbigniew Jędrzejewski-Szmek 708deb
                                    NULL);
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
                         b->lid_closed = true;
Zbigniew Jędrzejewski-Szmek 708deb
-                        manager_handle_action(b->manager, INHIBIT_HANDLE_LID_SWITCH, b->manager->handle_lid_switch, b->manager->lid_switch_ignore_inhibited, true);
Zbigniew Jędrzejewski-Szmek 708deb
+                        button_lid_switch_handle_action(b->manager, true);
Zbigniew Jędrzejewski-Szmek 708deb
                         button_install_check_event_source(b);
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
                 } else if (ev.code == SW_DOCK) {
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind-core.c b/src/login/logind-core.c
Zbigniew Jędrzejewski-Szmek 708deb
index 053d2ed63e..ed7ea5da31 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind-core.c
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind-core.c
Zbigniew Jędrzejewski-Szmek 708deb
@@ -537,3 +537,25 @@ int manager_count_displays(Manager *m) {
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
         return n;
Zbigniew Jędrzejewski-Szmek 708deb
 }
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+bool manager_is_docked_or_multiple_displays(Manager *m) {
Zbigniew Jędrzejewski-Szmek 708deb
+        int n;
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+        /* If we are docked don't react to lid closing */
Zbigniew Jędrzejewski-Szmek 708deb
+        if (manager_is_docked(m)) {
Zbigniew Jędrzejewski-Szmek 708deb
+                log_debug("System is docked.");
Zbigniew Jędrzejewski-Szmek 708deb
+                return true;
Zbigniew Jędrzejewski-Szmek 708deb
+        }
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+        /* If we have more than one display connected,
Zbigniew Jędrzejewski-Szmek 708deb
+         * assume that we are docked. */
Zbigniew Jędrzejewski-Szmek 708deb
+        n = manager_count_displays(m);
Zbigniew Jędrzejewski-Szmek 708deb
+        if (n < 0)
Zbigniew Jędrzejewski-Szmek 708deb
+                log_warning("Display counting failed: %s", strerror(-n));
Zbigniew Jędrzejewski-Szmek 708deb
+        else if (n > 1) {
Zbigniew Jędrzejewski-Szmek 708deb
+                log_debug("Multiple (%i) displays connected.", n);
Zbigniew Jędrzejewski-Szmek 708deb
+                return true;
Zbigniew Jędrzejewski-Szmek 708deb
+        }
Zbigniew Jędrzejewski-Szmek 708deb
+
Zbigniew Jędrzejewski-Szmek 708deb
+        return false;
Zbigniew Jędrzejewski-Szmek 708deb
+}
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
Zbigniew Jędrzejewski-Szmek 708deb
index acef5119b1..0b2b7b5afe 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind-dbus.c
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind-dbus.c
Zbigniew Jędrzejewski-Szmek 708deb
@@ -1919,6 +1919,7 @@ const sd_bus_vtable manager_vtable[] = {
Zbigniew Jędrzejewski-Szmek 708deb
         SD_BUS_PROPERTY("HandleSuspendKey", "s", property_get_handle_action, offsetof(Manager, handle_suspend_key), SD_BUS_VTABLE_PROPERTY_CONST),
Zbigniew Jędrzejewski-Szmek 708deb
         SD_BUS_PROPERTY("HandleHibernateKey", "s", property_get_handle_action, offsetof(Manager, handle_hibernate_key), SD_BUS_VTABLE_PROPERTY_CONST),
Zbigniew Jędrzejewski-Szmek 708deb
         SD_BUS_PROPERTY("HandleLidSwitch", "s", property_get_handle_action, offsetof(Manager, handle_lid_switch), SD_BUS_VTABLE_PROPERTY_CONST),
Zbigniew Jędrzejewski-Szmek 708deb
+        SD_BUS_PROPERTY("HandleLidSwitchDocked", "s", property_get_handle_action, offsetof(Manager, handle_lid_switch_docked), SD_BUS_VTABLE_PROPERTY_CONST),
Zbigniew Jędrzejewski-Szmek 708deb
         SD_BUS_PROPERTY("IdleAction", "s", property_get_handle_action, offsetof(Manager, idle_action), SD_BUS_VTABLE_PROPERTY_CONST),
Zbigniew Jędrzejewski-Szmek 708deb
         SD_BUS_PROPERTY("IdleActionUSec", "t", NULL, offsetof(Manager, idle_action_usec), SD_BUS_VTABLE_PROPERTY_CONST),
Zbigniew Jędrzejewski-Szmek 708deb
         SD_BUS_PROPERTY("PreparingForShutdown", "b", property_get_preparing, 0, 0),
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind-gperf.gperf b/src/login/logind-gperf.gperf
Zbigniew Jędrzejewski-Szmek 708deb
index 006f7286c5..62460673b9 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind-gperf.gperf
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind-gperf.gperf
Zbigniew Jędrzejewski-Szmek 708deb
@@ -24,6 +24,7 @@ Login.HandlePowerKey,              config_parse_handle_action, 0, offsetof(Manag
Zbigniew Jędrzejewski-Szmek 708deb
 Login.HandleSuspendKey,            config_parse_handle_action, 0, offsetof(Manager, handle_suspend_key)
Zbigniew Jędrzejewski-Szmek 708deb
 Login.HandleHibernateKey,          config_parse_handle_action, 0, offsetof(Manager, handle_hibernate_key)
Zbigniew Jędrzejewski-Szmek 708deb
 Login.HandleLidSwitch,             config_parse_handle_action, 0, offsetof(Manager, handle_lid_switch)
Zbigniew Jędrzejewski-Szmek 708deb
+Login.HandleLidSwitchDocked,       config_parse_handle_action, 0, offsetof(Manager, handle_lid_switch_docked)
Zbigniew Jędrzejewski-Szmek 708deb
 Login.PowerKeyIgnoreInhibited,     config_parse_bool,          0, offsetof(Manager, power_key_ignore_inhibited)
Zbigniew Jędrzejewski-Szmek 708deb
 Login.SuspendKeyIgnoreInhibited,   config_parse_bool,          0, offsetof(Manager, suspend_key_ignore_inhibited)
Zbigniew Jędrzejewski-Szmek 708deb
 Login.HibernateKeyIgnoreInhibited, config_parse_bool,          0, offsetof(Manager, hibernate_key_ignore_inhibited)
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind.c b/src/login/logind.c
Zbigniew Jędrzejewski-Szmek 708deb
index 52e1c43a47..1f94a97bd0 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind.c
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind.c
Zbigniew Jędrzejewski-Szmek 708deb
@@ -55,6 +55,7 @@ Manager *manager_new(void) {
Zbigniew Jędrzejewski-Szmek 708deb
         m->handle_suspend_key = HANDLE_SUSPEND;
Zbigniew Jędrzejewski-Szmek 708deb
         m->handle_hibernate_key = HANDLE_HIBERNATE;
Zbigniew Jędrzejewski-Szmek 708deb
         m->handle_lid_switch = HANDLE_SUSPEND;
Zbigniew Jędrzejewski-Szmek 708deb
+        m->handle_lid_switch_docked = HANDLE_IGNORE;
Zbigniew Jędrzejewski-Szmek 708deb
         m->lid_switch_ignore_inhibited = true;
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
         m->idle_action_usec = 30 * USEC_PER_MINUTE;
Zbigniew Jędrzejewski-Szmek 708deb
@@ -232,7 +233,8 @@ static int manager_enumerate_buttons(Manager *m) {
Zbigniew Jędrzejewski-Szmek 708deb
         if (m->handle_power_key == HANDLE_IGNORE &&
Zbigniew Jędrzejewski-Szmek 708deb
             m->handle_suspend_key == HANDLE_IGNORE &&
Zbigniew Jędrzejewski-Szmek 708deb
             m->handle_hibernate_key == HANDLE_IGNORE &&
Zbigniew Jędrzejewski-Szmek 708deb
-            m->handle_lid_switch == HANDLE_IGNORE)
Zbigniew Jędrzejewski-Szmek 708deb
+            m->handle_lid_switch == HANDLE_IGNORE &&
Zbigniew Jędrzejewski-Szmek 708deb
+            m->handle_lid_switch_docked == HANDLE_IGNORE)
Zbigniew Jędrzejewski-Szmek 708deb
                 return 0;
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
         e = udev_enumerate_new(m->udev);
Zbigniew Jędrzejewski-Szmek 708deb
@@ -875,7 +877,8 @@ static int manager_connect_udev(Manager *m) {
Zbigniew Jędrzejewski-Szmek 708deb
         if (m->handle_power_key != HANDLE_IGNORE ||
Zbigniew Jędrzejewski-Szmek 708deb
             m->handle_suspend_key != HANDLE_IGNORE ||
Zbigniew Jędrzejewski-Szmek 708deb
             m->handle_hibernate_key != HANDLE_IGNORE ||
Zbigniew Jędrzejewski-Szmek 708deb
-            m->handle_lid_switch != HANDLE_IGNORE) {
Zbigniew Jędrzejewski-Szmek 708deb
+            m->handle_lid_switch != HANDLE_IGNORE ||
Zbigniew Jędrzejewski-Szmek 708deb
+            m->handle_lid_switch_docked != HANDLE_IGNORE) {
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
                 m->udev_button_monitor = udev_monitor_new_from_netlink(m->udev, "udev");
Zbigniew Jędrzejewski-Szmek 708deb
                 if (!m->udev_button_monitor)
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind.conf b/src/login/logind.conf
Zbigniew Jędrzejewski-Szmek 708deb
index 79f96ec05b..4608a2c0e2 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind.conf
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind.conf
Zbigniew Jędrzejewski-Szmek 708deb
@@ -18,6 +18,7 @@
Zbigniew Jędrzejewski-Szmek 708deb
 #HandleSuspendKey=suspend
Zbigniew Jędrzejewski-Szmek 708deb
 #HandleHibernateKey=hibernate
Zbigniew Jędrzejewski-Szmek 708deb
 #HandleLidSwitch=suspend
Zbigniew Jędrzejewski-Szmek 708deb
+#HandleLidSwitchDocked=ignore
Zbigniew Jędrzejewski-Szmek 708deb
 #PowerKeyIgnoreInhibited=no
Zbigniew Jędrzejewski-Szmek 708deb
 #SuspendKeyIgnoreInhibited=no
Zbigniew Jędrzejewski-Szmek 708deb
 #HibernateKeyIgnoreInhibited=no
Zbigniew Jędrzejewski-Szmek 708deb
diff --git a/src/login/logind.h b/src/login/logind.h
Zbigniew Jędrzejewski-Szmek 708deb
index 31353eff02..2f76572580 100644
Zbigniew Jędrzejewski-Szmek 708deb
--- a/src/login/logind.h
Zbigniew Jędrzejewski-Szmek 708deb
+++ b/src/login/logind.h
Zbigniew Jędrzejewski-Szmek 708deb
@@ -114,6 +114,7 @@ struct Manager {
Zbigniew Jędrzejewski-Szmek 708deb
         HandleAction handle_suspend_key;
Zbigniew Jędrzejewski-Szmek 708deb
         HandleAction handle_hibernate_key;
Zbigniew Jędrzejewski-Szmek 708deb
         HandleAction handle_lid_switch;
Zbigniew Jędrzejewski-Szmek 708deb
+        HandleAction handle_lid_switch_docked;
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
         bool power_key_ignore_inhibited;
Zbigniew Jędrzejewski-Szmek 708deb
         bool suspend_key_ignore_inhibited;
Zbigniew Jędrzejewski-Szmek 708deb
@@ -159,6 +160,7 @@ int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session);
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
 bool manager_is_docked(Manager *m);
Zbigniew Jędrzejewski-Szmek 708deb
 int manager_count_displays(Manager *m);
Zbigniew Jędrzejewski-Szmek 708deb
+bool manager_is_docked_or_multiple_displays(Manager *m);
Zbigniew Jędrzejewski-Szmek 708deb
 
Zbigniew Jędrzejewski-Szmek 708deb
 extern const sd_bus_vtable manager_vtable[];
Zbigniew Jędrzejewski-Szmek 708deb