Cursor (Linux): support hyprcursor detection

Fix: #776
This commit is contained in:
李通洲
2024-04-07 20:08:41 +08:00
parent 12ac0ac7a9
commit 5374feb24b
4 changed files with 22 additions and 0 deletions
+1
View File
@@ -2,6 +2,7 @@
Features:
* Support weston-terminal (TerminalFont, Linux)
* Support hyprcursor detection (Cursor, Linux)
# 2.9.0
+15
View File
@@ -68,6 +68,19 @@ static bool detectCursorFromEnv(FFCursorResult* result)
return true;
}
static bool detectCursorHyprcursor(FFCursorResult* result)
{
const char* hyprcursor_theme = getenv("HYPRCURSOR_THEME");
if(!ffStrSet(hyprcursor_theme))
return false;
ffStrbufAppendS(&result->theme, hyprcursor_theme);
ffStrbufAppendS(&result->size, getenv("HYPRCURSOR_SIZE"));
return true;
}
void ffDetectCursor(FFCursorResult* result)
{
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
@@ -80,6 +93,8 @@ void ffDetectCursor(FFCursorResult* result)
detectCursorFromConfigFile("kcminputrc", "cursorTheme =", "Breeze", "cursorSize =", "24", result);
else if(ffStrbufStartsWithIgnCaseS(&wmde->dePrettyName, FF_DE_PRETTY_LXQT))
detectCursorFromConfigFile("lxqt/session.conf", "cursor_theme =", "Adwaita", "cursor_size =", "24", result);
else if(ffStrbufIgnCaseEqualS(&wmde->wmPrettyName, FF_WM_PRETTY_HYPRLAND) && detectCursorHyprcursor(result))
return;
else if(
!detectCursorGTK(result) &&
!detectCursorFromEnv(result) &&
@@ -21,6 +21,7 @@
#define FF_WM_PRETTY_XFWM4 "Xfwm4"
#define FF_WM_PRETTY_OPENBOX "Openbox"
#define FF_WM_PRETTY_I3 "i3"
#define FF_WM_PRETTY_HYPRLAND "Hyprland"
#define FF_WM_PRETTY_WAYFIRE "Wayfire"
#define FF_WM_PRETTY_SWAY "Sway"
#define FF_WM_PRETTY_BSPWM "bspwm"
+5
View File
@@ -52,6 +52,9 @@ static const char* parseEnv(void)
if(getenv("TDE_FULL_SESSION") != NULL)
return "Trinity";
if(getenv("HYPRLAND_CMD") != NULL)
return "Hyprland";
#ifdef __linux__
if(
getenv("WAYLAND_DISPLAY") != NULL &&
@@ -116,6 +119,8 @@ static void applyPrettyNameIfWM(FFDisplayServerResult* result, const char* name)
ffStrbufSetS(&result->wmPrettyName, FF_WM_PRETTY_ICEWM);
else if(ffStrEqualsIgnCase(name, "dtwm"))
ffStrbufSetS(&result->wmPrettyName, FF_WM_PRETTY_DTWM);
else if(ffStrEqualsIgnCase(name, "hyprland"))
ffStrbufSetS(&result->wmPrettyName, FF_WM_PRETTY_HYPRLAND);
}
static void applyNameIfWM(FFDisplayServerResult* result, const char* processName)