From 2ed6211cc3a93e8605c008ad944ad24ec6910838 Mon Sep 17 00:00:00 2001
From: Martin Dosch <martin@mdosch.de>
Date: Fri, 11 Aug 2023 13:04:08 +0200
Subject: [PATCH] Don't use xscreensaver on wayland.

Fixes #1874.
---
 src/ui/core.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/ui/core.c b/src/ui/core.c
index feb428fce..ba75a32d5 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -107,7 +107,11 @@ ui_init(void)
     notifier_initialise();
     cons_about();
 #ifdef HAVE_LIBXSS
-    display = XOpenDisplay(0);
+    char* x11_display = getenv("DISPLAY");
+    char* wayland_display = getenv("WAYLAND_DISPLAY");
+    if (x11_display && !wayland_display) {
+        display = XOpenDisplay(0);
+    }
 #endif
     ui_idle_time = g_timer_new();
     inp_size = 0;
@@ -150,15 +154,17 @@ ui_get_idle_time(void)
 {
 // if compiled with libxss, get the x sessions idle time
 #ifdef HAVE_LIBXSS
-    XScreenSaverInfo* info = XScreenSaverAllocInfo();
-    if (info && display) {
-        XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
-        unsigned long result = info->idle;
-        XFree(info);
-        return result;
-    }
-    if (info) {
-        XFree(info);
+    if (display) {
+        XScreenSaverInfo* info = XScreenSaverAllocInfo();
+        if (info && display) {
+            XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);
+            unsigned long result = info->idle;
+            XFree(info);
+            return result;
+        }
+        if (info) {
+            XFree(info);
+        }
     }
 // if no libxss or xss idle time failed, use profanity idle time
 #endif
