summaryrefslogtreecommitdiff
path: root/src/login/logind-core.c
diff options
context:
space:
mode:
authorBen Wolsieffer <benwolsieffer@gmail.com>2014-08-26 22:08:02 +0200
committerLennart Poettering <lennart@poettering.net>2014-08-26 22:08:02 +0200
commit3c56cab44150ad47323970cfadfb0257c6305a74 (patch)
treec03589bf880d471a08ba2bbe1b36e3ff9e6ed724 /src/login/logind-core.c
parent36202fd2bc252616966166c98ccb0e0e5ece1fc9 (diff)
logind: add HandleLidSwitchDocked= option to logind.conf + documentation
https://bugs.freedesktop.org/show_bug.cgi?id=82485
Diffstat (limited to 'src/login/logind-core.c')
-rw-r--r--src/login/logind-core.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/login/logind-core.c b/src/login/logind-core.c
index 053d2ed63e..ed7ea5da31 100644
--- a/src/login/logind-core.c
+++ b/src/login/logind-core.c
@@ -537,3 +537,25 @@ int manager_count_displays(Manager *m) {
return n;
}
+
+bool manager_is_docked_or_multiple_displays(Manager *m) {
+ int n;
+
+ /* If we are docked don't react to lid closing */
+ if (manager_is_docked(m)) {
+ log_debug("System is docked.");
+ return true;
+ }
+
+ /* If we have more than one display connected,
+ * assume that we are docked. */
+ n = manager_count_displays(m);
+ if (n < 0)
+ log_warning("Display counting failed: %s", strerror(-n));
+ else if (n > 1) {
+ log_debug("Multiple (%i) displays connected.", n);
+ return true;
+ }
+
+ return false;
+}