LM (Linux): adds pretty name

This commit is contained in:
Carter Li
2026-08-26 15:19:57 +08:00
committed by 李通洲
parent fb309134b5
commit 203cd7cbcf
3 changed files with 72 additions and 2 deletions
+1
View File
@@ -5,6 +5,7 @@
typedef struct FFLMResult {
FFstrbuf service;
FFstrbuf prettyName;
FFstrbuf version;
} FFLMResult;
+62
View File
@@ -418,6 +418,68 @@ const char* ffDetectLM(FFLMResult* result) {
return error;
}
switch (result->service.chars[0]) {
case 'a':
if (ffStrEqualsIgnCase(result->service.chars, "atrium")) {
ffStrbufSetStatic(&result->prettyName, "Atrium");
}
break;
case 'c':
if (ffStrEqualsIgnCase(result->service.chars, "cdm")) {
ffStrbufSetStatic(&result->prettyName, "CDM");
}
break;
case 'e':
if (ffStrEqualsIgnCase(result->service.chars, "entrance")) {
ffStrbufSetStatic(&result->prettyName, "Entrance");
}
break;
case 'g':
if (ffStrbufStartsWithIgnCaseS(&result->service, "gdm")) {
ffStrbufSetStatic(&result->prettyName, "GDM");
} else if (ffStrEqualsIgnCase(result->service.chars, "greetd")) {
ffStrbufSetStatic(&result->prettyName, "greetd");
}
break;
case 'l':
if (ffStrEqualsIgnCase(result->service.chars, "lemurs")) {
ffStrbufSetStatic(&result->prettyName, "Lemurs");
} else if (ffStrEqualsIgnCase(result->service.chars, "lightdm")) {
ffStrbufSetStatic(&result->prettyName, "LightDM");
} else if (ffStrEqualsIgnCase(result->service.chars, "lxdm")) {
ffStrbufSetStatic(&result->prettyName, "LXDM");
} else if (ffStrEqualsIgnCase(result->service.chars, "ly")) {
ffStrbufSetStatic(&result->prettyName, "Ly");
}
break;
case 'p':
if (ffStrEqualsIgnCase(result->service.chars, "plasmalogin")) {
ffStrbufSetStatic(&result->prettyName, "Plasma Login");
}
break;
case 's':
if (ffStrEqualsIgnCase(result->service.chars, "sddm")) {
ffStrbufSetStatic(&result->prettyName, "SDDM");
} else if (ffStrEqualsIgnCase(result->service.chars, "slim")) {
ffStrbufSetStatic(&result->prettyName, "SLiM");
}
break;
case 't':
if (ffStrEqualsIgnCase(result->service.chars, "tbsm")) {
ffStrbufSetStatic(&result->prettyName, "TBSM");
}
break;
case 'x':
if (ffStrEqualsIgnCase(result->service.chars, "xdm")) {
ffStrbufSetStatic(&result->prettyName, "XDM");
}
break;
}
if (result->prettyName.length == 0) {
ffStrbufSet(&result->prettyName, &result->service);
}
if (instance.config.general.detectVersion) {
if (ffStrbufStartsWithS(&result->service, "gdm")) {
getGdmVersion(&result->version);
+9 -2
View File
@@ -8,6 +8,7 @@ bool ffPrintLM(FFLMOptions* options) {
bool success = false;
FFLMResult result;
ffStrbufInit(&result.service);
ffStrbufInit(&result.prettyName);
ffStrbufInit(&result.version);
const char* error = ffDetectLM(&result);
@@ -23,7 +24,7 @@ bool ffPrintLM(FFLMOptions* options) {
if (options->moduleArgs.outputFormat.length == 0) {
ffPrintLogoAndKey(FF_MODULE_GET_DISPLAY_NAME(LM), 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT);
ffStrbufWriteTo(&result.service, stdout);
ffStrbufWriteTo(&result.prettyName, stdout);
if (result.version.length) {
printf(" %s", result.version.chars);
}
@@ -31,6 +32,7 @@ bool ffPrintLM(FFLMOptions* options) {
} else {
FF_PRINT_FORMAT_CHECKED(FF_MODULE_GET_DISPLAY_NAME(LM), 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, ((FFformatarg[]) {
FF_ARG(result.service, "service"),
FF_ARG(result.prettyName, "pretty-name"),
FF_ARG(result.version, "version"),
}));
}
@@ -38,6 +40,7 @@ bool ffPrintLM(FFLMOptions* options) {
exit:
ffStrbufDestroy(&result.service);
ffStrbufDestroy(&result.prettyName);
ffStrbufDestroy(&result.version);
return success;
@@ -63,6 +66,7 @@ bool ffGenerateLMJsonResult([[maybe_unused]] FFLMOptions* options, yyjson_mut_do
bool success = false;
FFLMResult result;
ffStrbufInit(&result.service);
ffStrbufInit(&result.prettyName);
ffStrbufInit(&result.version);
const char* error = ffDetectLM(&result);
@@ -78,11 +82,13 @@ bool ffGenerateLMJsonResult([[maybe_unused]] FFLMOptions* options, yyjson_mut_do
yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result");
yyjson_mut_obj_add_strbuf(doc, obj, "service", &result.service);
yyjson_mut_obj_add_strbuf(doc, obj, "prettyName", &result.prettyName);
yyjson_mut_obj_add_strbuf(doc, obj, "version", &result.version);
success = true;
exit:
ffStrbufDestroy(&result.service);
ffStrbufDestroy(&result.prettyName);
ffStrbufDestroy(&result.version);
return success;
@@ -128,7 +134,8 @@ FFModuleBaseInfo ffLMModuleInfo = {
.generateJsonResult = (void*) ffGenerateLMJsonResult,
.generateJsonConfig = (void*) ffGenerateLMJsonConfig,
.formatArgs = FF_FORMAT_ARG_LIST(((FFModuleFormatArg[]) {
{ "LM service", "service" },
{ "LM service / process name", "service" },
{ "LM pretty name", "pretty-name" },
{ "LM version", "version" },
})),
.defaultOrder = 20,