chiark / gitweb /
inhibit: allow filtering --list by mode
[elogind.git] / src / login / logind-core.c
index 053d2ed63e189df1cfec0c53e8d3093deb672ca7..ed7ea5da31cd9ba45aaeb6838e6b78824cd186cb 100644 (file)
@@ -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;
+}