Skip to content

Commit 5374feb

Browse files
committed
Cursor (Linux): support hyprcursor detection
Fix: #776
1 parent 12ac0ac commit 5374feb

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
Features:
44
* Support weston-terminal (TerminalFont, Linux)
5+
* Support hyprcursor detection (Cursor, Linux)
56

67
# 2.9.0
78

src/detection/cursor/cursor_linux.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,19 @@ static bool detectCursorFromEnv(FFCursorResult* result)
6868
return true;
6969
}
7070

71+
static bool detectCursorHyprcursor(FFCursorResult* result)
72+
{
73+
const char* hyprcursor_theme = getenv("HYPRCURSOR_THEME");
74+
75+
if(!ffStrSet(hyprcursor_theme))
76+
return false;
77+
78+
ffStrbufAppendS(&result->theme, hyprcursor_theme);
79+
ffStrbufAppendS(&result->size, getenv("HYPRCURSOR_SIZE"));
80+
81+
return true;
82+
}
83+
7184
void ffDetectCursor(FFCursorResult* result)
7285
{
7386
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
@@ -80,6 +93,8 @@ void ffDetectCursor(FFCursorResult* result)
8093
detectCursorFromConfigFile("kcminputrc", "cursorTheme =", "Breeze", "cursorSize =", "24", result);
8194
else if(ffStrbufStartsWithIgnCaseS(&wmde->dePrettyName, FF_DE_PRETTY_LXQT))
8295
detectCursorFromConfigFile("lxqt/session.conf", "cursor_theme =", "Adwaita", "cursor_size =", "24", result);
96+
else if(ffStrbufIgnCaseEqualS(&wmde->wmPrettyName, FF_WM_PRETTY_HYPRLAND) && detectCursorHyprcursor(result))
97+
return;
8398
else if(
8499
!detectCursorGTK(result) &&
85100
!detectCursorFromEnv(result) &&

src/detection/displayserver/displayserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#define FF_WM_PRETTY_XFWM4 "Xfwm4"
2222
#define FF_WM_PRETTY_OPENBOX "Openbox"
2323
#define FF_WM_PRETTY_I3 "i3"
24+
#define FF_WM_PRETTY_HYPRLAND "Hyprland"
2425
#define FF_WM_PRETTY_WAYFIRE "Wayfire"
2526
#define FF_WM_PRETTY_SWAY "Sway"
2627
#define FF_WM_PRETTY_BSPWM "bspwm"

src/detection/displayserver/linux/wmde.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ static const char* parseEnv(void)
5252
if(getenv("TDE_FULL_SESSION") != NULL)
5353
return "Trinity";
5454

55+
if(getenv("HYPRLAND_CMD") != NULL)
56+
return "Hyprland";
57+
5558
#ifdef __linux__
5659
if(
5760
getenv("WAYLAND_DISPLAY") != NULL &&
@@ -116,6 +119,8 @@ static void applyPrettyNameIfWM(FFDisplayServerResult* result, const char* name)
116119
ffStrbufSetS(&result->wmPrettyName, FF_WM_PRETTY_ICEWM);
117120
else if(ffStrEqualsIgnCase(name, "dtwm"))
118121
ffStrbufSetS(&result->wmPrettyName, FF_WM_PRETTY_DTWM);
122+
else if(ffStrEqualsIgnCase(name, "hyprland"))
123+
ffStrbufSetS(&result->wmPrettyName, FF_WM_PRETTY_HYPRLAND);
119124
}
120125

121126
static void applyNameIfWM(FFDisplayServerResult* result, const char* processName)

0 commit comments

Comments
 (0)