From 8396f000e181bddcee2088f7a16c670f8d91537a Mon Sep 17 00:00:00 2001 From: Carter Li Date: Tue, 6 Aug 2024 16:34:01 +0800 Subject: [PATCH] DisplayServer (Linux): don't rely on `$XDG_SESSION_TYPE` for detecting wm protocol Fix #1162 --- src/detection/displayserver/linux/displayserver_linux.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/detection/displayserver/linux/displayserver_linux.c b/src/detection/displayserver/linux/displayserver_linux.c index d8336f3a9..de006c56b 100644 --- a/src/detection/displayserver/linux/displayserver_linux.c +++ b/src/detection/displayserver/linux/displayserver_linux.c @@ -46,9 +46,7 @@ static void getWMProtocolNameFromEnv(FFDisplayServerResult* result) void ffConnectDisplayServerImpl(FFDisplayServerResult* ds) { - getWMProtocolNameFromEnv(ds); - - if (!ffStrbufEqualS(&ds->wmProtocolName, FF_WM_PROTOCOL_TTY) &&instance.config.general.dsForceDrm == FF_DS_FORCE_DRM_TYPE_FALSE) + if (instance.config.general.dsForceDrm == FF_DS_FORCE_DRM_TYPE_FALSE) { //We try wayland as our preferred display server, as it supports the most features. //This method can't detect the name of our WM / DE @@ -96,6 +94,9 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds) } #endif + if (ds->wmProtocolName.length == 0) + getWMProtocolNameFromEnv(ds); + if(!ffStrbufEqualS(&ds->wmProtocolName, FF_WM_PROTOCOL_TTY)) { //This fills in missing information about WM / DE by using env vars and iterating processes