diff --git a/src/common/detectWMDE.c b/src/common/detectWMDE.c index 5d85a42a1..f2b0a4f2f 100644 --- a/src/common/detectWMDE.c +++ b/src/common/detectWMDE.c @@ -19,7 +19,8 @@ typedef enum DEHint FF_DE_HINT_GNOME, FF_DE_HINT_CINNAMON, FF_DE_HINT_XFCE4, - FF_DE_HINT_MATE + FF_DE_HINT_MATE, + FF_DE_HINT_LXQT } DEHint; typedef struct ProcData @@ -150,6 +151,8 @@ static bool applyDEHintIfDE(const FFstrbuf* processName, DEHint* deHint) *deHint = FF_DE_HINT_XFCE4; else if(ffStrbufIgnCaseCompS(processName, "mate-session") == 0) *deHint = FF_DE_HINT_MATE; + else if(ffStrbufIgnCaseCompS(processName, "lxqt-session") == 0) + *deHint = FF_DE_HINT_LXQT; return *deHint != FF_DE_HINT_UNKNOWN; } @@ -278,6 +281,25 @@ static void getXFCE4(FFinstance* instance, FFWMDEResult* result) } } +static void getLXQt(FFinstance* instance, FFWMDEResult* result) +{ + ffStrbufSetS(&result->deProcessName, "lxqt-session"); + ffStrbufSetS(&result->dePrettyName, "LXQt"); + + if(instance->config.allowSlowOperations) + { + //This is really, really, reaaaally slow. Thank you, LXQt developers + ffProcessAppendStdOut(&result->deVersion, (char* const[]){ + "lxqt-session", + "-v", + NULL + }); + + ffStrbufSubstrAfter(&result->deVersion, result->deProcessName.length); + ffStrbufSubstrBefore(&result->deVersion, 6); //X.XX.X + } +} + static inline void getDEFromHint(FFinstance* instance, FFWMDEResult* result, ProcData* procData) { getFromProcDir(result, procData, false); @@ -295,6 +317,8 @@ static inline void getDEFromHint(FFinstance* instance, FFWMDEResult* result, Pro getXFCE4(instance, result); else if(procData->deHint == FF_DE_HINT_MATE) getMate(instance, result); + else if(procData->deHint == FF_DE_HINT_LXQT) + getLXQt(instance, result); } static inline void getDE(FFinstance* instance, FFWMDEResult* result, ProcData* procData) @@ -320,6 +344,8 @@ static inline void getDE(FFinstance* instance, FFWMDEResult* result, ProcData* p getXFCE4(instance, result); else if(strcasecmp(result->sessionDesktop, "MATE") == 0 || strcasecmp(result->sessionDesktop, "X-MATE") == 0) getMate(instance, result); + else if(strcasecmp(result->sessionDesktop, "LXQt") == 0 || strcasecmp(result->sessionDesktop, "X-LXQT") == 0) + getLXQt(instance, result); else { ffStrbufSetS(&result->deProcessName, result->sessionDesktop);