Skip to content

Commit 7d92da8

Browse files
committed
Global (Android): enable X11 related stuff
1 parent 2f3a361 commit 7d92da8

15 files changed

+160
-100
lines changed

CMakeLists.txt

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,24 @@ include(CMakeDependentOption)
6060

6161
cmake_dependent_option(ENABLE_VULKAN "Enable vulkan" ON "LINUX OR APPLE OR FreeBSD OR OpenBSD OR NetBSD OR WIN32 OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
6262
cmake_dependent_option(ENABLE_WAYLAND "Enable wayland-client" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR GNU" OFF)
63-
cmake_dependent_option(ENABLE_XCB_RANDR "Enable xcb-randr" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
64-
cmake_dependent_option(ENABLE_XRANDR "Enable xrandr" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
63+
cmake_dependent_option(ENABLE_XCB_RANDR "Enable xcb-randr" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
64+
cmake_dependent_option(ENABLE_XRANDR "Enable xrandr" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
6565
cmake_dependent_option(ENABLE_DRM "Enable libdrm" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
6666
cmake_dependent_option(ENABLE_DRM_AMDGPU "Enable libdrm_amdgpu" ON "LINUX OR FreeBSD OR GNU" OFF)
67-
cmake_dependent_option(ENABLE_GIO "Enable gio-2.0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
68-
cmake_dependent_option(ENABLE_DCONF "Enable dconf" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
69-
cmake_dependent_option(ENABLE_DBUS "Enable dbus-1" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR Haiku OR GNU" OFF)
70-
cmake_dependent_option(ENABLE_XFCONF "Enable libxfconf-0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
67+
cmake_dependent_option(ENABLE_GIO "Enable gio-2.0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
68+
cmake_dependent_option(ENABLE_DCONF "Enable dconf" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
69+
cmake_dependent_option(ENABLE_DBUS "Enable dbus-1" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
70+
cmake_dependent_option(ENABLE_XFCONF "Enable libxfconf-0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
7171
cmake_dependent_option(ENABLE_SQLITE3 "Enable sqlite3" ON "LINUX OR FreeBSD OR APPLE OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
7272
cmake_dependent_option(ENABLE_RPM "Enable rpm" ON "LINUX OR GNU" OFF)
73-
cmake_dependent_option(ENABLE_IMAGEMAGICK7 "Enable imagemagick 7" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR APPLE OR WIN32 OR SunOS OR Haiku OR GNU" OFF)
73+
cmake_dependent_option(ENABLE_IMAGEMAGICK7 "Enable imagemagick 7" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR APPLE OR ANDROID OR WIN32 OR SunOS OR Haiku OR GNU" OFF)
7474
cmake_dependent_option(ENABLE_IMAGEMAGICK6 "Enable imagemagick 6" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR APPLE OR SunOS OR GNU" OFF)
7575
cmake_dependent_option(ENABLE_CHAFA "Enable chafa" ON "ENABLE_IMAGEMAGICK6 OR ENABLE_IMAGEMAGICK7" OFF)
7676
cmake_dependent_option(ENABLE_EGL "Enable egl" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR WIN32 OR SunOS OR Haiku OR GNU" OFF)
7777
cmake_dependent_option(ENABLE_GLX "Enable glx" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
7878
cmake_dependent_option(ENABLE_OPENCL "Enable opencl" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR WIN32 OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
7979
cmake_dependent_option(ENABLE_FREETYPE "Enable freetype" ON "ANDROID" OFF)
80-
cmake_dependent_option(ENABLE_PULSE "Enable pulse" ON "LINUX OR GNU" OFF)
80+
cmake_dependent_option(ENABLE_PULSE "Enable pulse" ON "LINUX OR ANDROID OR GNU" OFF)
8181
cmake_dependent_option(ENABLE_DDCUTIL "Enable ddcutil" ON "LINUX" OFF)
8282
cmake_dependent_option(ENABLE_DIRECTX_HEADERS "Enable DirectX headers for WSL" ON "LINUX" OFF)
8383
cmake_dependent_option(ENABLE_ELF "Enable libelf" ON "LINUX OR ANDROID OR DragonFly OR Haiku OR GNU" OFF)
@@ -515,6 +515,7 @@ if(LINUX)
515515
src/detection/physicalmemory/physicalmemory_linux.c
516516
src/detection/diskio/diskio_linux.c
517517
src/detection/displayserver/linux/displayserver_linux.c
518+
src/detection/displayserver/linux/common.c
518519
src/detection/displayserver/linux/drm.c
519520
src/detection/displayserver/linux/wayland/wayland.c
520521
src/detection/displayserver/linux/wayland/global-output.c
@@ -575,6 +576,7 @@ if(LINUX)
575576
)
576577
elseif(ANDROID)
577578
list(APPEND LIBFASTFETCH_SRC
579+
src/common/dbus.c
578580
src/common/io/io_unix.c
579581
src/common/netif/netif_linux.c
580582
src/common/networking/networking_linux.c
@@ -590,18 +592,24 @@ elseif(ANDROID)
590592
src/detection/chassis/chassis_nosupport.c
591593
src/detection/cpu/cpu_linux.c
592594
src/detection/cpucache/cpucache_linux.c
593-
src/detection/cursor/cursor_nosupport.c
595+
src/detection/cursor/cursor_linux.c
594596
src/detection/cpuusage/cpuusage_linux.c
595597
src/detection/disk/disk_linux.c
596598
src/detection/dns/dns_linux.c
597599
src/detection/physicaldisk/physicaldisk_linux.c
598600
src/detection/physicalmemory/physicalmemory_nosupport.c
599601
src/detection/diskio/diskio_linux.c
600602
src/detection/displayserver/displayserver_android.c
601-
src/detection/font/font_nosupport.c
603+
src/detection/displayserver/linux/common.c
604+
src/detection/displayserver/linux/wmde.c
605+
src/detection/displayserver/linux/xcb.c
606+
src/detection/displayserver/linux/xlib.c
607+
src/detection/gtk_qt/gtk.c
608+
src/detection/gtk_qt/qt.c
609+
src/detection/font/font_linux.c
602610
src/detection/gpu/gpu_android.c
603611
src/detection/host/host_android.c
604-
src/detection/icons/icons_nosupport.c
612+
src/detection/icons/icons_linux.c
605613
src/detection/initsystem/initsystem_linux.c
606614
src/detection/keyboard/keyboard_nosupport.c
607615
src/detection/libc/libc_android.c
@@ -610,7 +618,7 @@ elseif(ANDROID)
610618
src/detection/locale/locale_linux.c
611619
src/detection/localip/localip_linux.c
612620
src/detection/gamepad/gamepad_nosupport.c
613-
src/detection/media/media_nosupport.c
621+
src/detection/media/media_linux.c
614622
src/detection/memory/memory_linux.c
615623
src/detection/mouse/mouse_nosupport.c
616624
src/detection/netio/netio_linux.c
@@ -620,20 +628,21 @@ elseif(ANDROID)
620628
src/detection/packages/packages_nix.c
621629
src/detection/poweradapter/poweradapter_nosupport.c
622630
src/detection/processes/processes_linux.c
623-
src/detection/sound/sound_nosupport.c
631+
src/detection/sound/sound_linux.c
624632
src/detection/swap/swap_linux.c
625633
src/detection/terminalfont/terminalfont_android.c
634+
src/detection/terminalfont/terminalfont_linux.c
626635
src/detection/terminalshell/terminalshell_linux.c
627636
src/detection/terminalsize/terminalsize_linux.c
628-
src/detection/theme/theme_nosupport.c
637+
src/detection/theme/theme_linux.c
629638
src/detection/tpm/tpm_nosupport.c
630639
src/detection/uptime/uptime_linux.c
631640
src/detection/users/users_linux.c
632-
src/detection/wallpaper/wallpaper_nosupport.c
641+
src/detection/wallpaper/wallpaper_linux.c
633642
src/detection/wifi/wifi_android.c
634-
src/detection/wm/wm_nosupport.c
635-
src/detection/de/de_nosupport.c
636-
src/detection/wmtheme/wmtheme_nosupport.c
643+
src/detection/wm/wm_linux.c
644+
src/detection/de/de_linux.c
645+
src/detection/wmtheme/wmtheme_linux.c
637646
src/detection/camera/camera_android.c
638647
src/detection/zpool/zpool_nosupport.c
639648
src/util/platform/FFPlatform_unix.c
@@ -665,6 +674,7 @@ elseif(FreeBSD)
665674
src/detection/physicalmemory/physicalmemory_linux.c
666675
src/detection/diskio/diskio_bsd.c
667676
src/detection/displayserver/linux/displayserver_linux.c
677+
src/detection/displayserver/linux/common.c
668678
src/detection/displayserver/linux/drm.c
669679
src/detection/displayserver/linux/wayland/wayland.c
670680
src/detection/displayserver/linux/wayland/global-output.c
@@ -759,6 +769,7 @@ elseif(NetBSD)
759769
src/detection/physicalmemory/physicalmemory_linux.c
760770
src/detection/diskio/diskio_nbsd.c
761771
src/detection/displayserver/linux/displayserver_linux.c
772+
src/detection/displayserver/linux/common.c
762773
src/detection/displayserver/linux/drm.c
763774
src/detection/displayserver/linux/wayland/wayland.c
764775
src/detection/displayserver/linux/wayland/global-output.c
@@ -841,6 +852,7 @@ elseif(OpenBSD)
841852
src/detection/physicalmemory/physicalmemory_linux.c
842853
src/detection/diskio/diskio_obsd.c
843854
src/detection/displayserver/linux/displayserver_linux.c
855+
src/detection/displayserver/linux/common.c
844856
src/detection/displayserver/linux/drm.c
845857
src/detection/displayserver/linux/wayland/wayland.c
846858
src/detection/displayserver/linux/wayland/global-output.c
@@ -1069,6 +1081,7 @@ elseif(SunOS)
10691081
src/detection/physicalmemory/physicalmemory_linux.c
10701082
src/detection/diskio/diskio_sunos.c
10711083
src/detection/displayserver/linux/displayserver_linux.c
1084+
src/detection/displayserver/linux/common.c
10721085
src/detection/displayserver/linux/drm.c
10731086
src/detection/displayserver/linux/wayland/wayland.c
10741087
src/detection/displayserver/linux/wayland/global-output.c
@@ -1220,6 +1233,7 @@ elseif(GNU)
12201233
src/detection/physicalmemory/physicalmemory_nosupport.c
12211234
src/detection/diskio/diskio_nosupport.c
12221235
src/detection/displayserver/linux/displayserver_linux.c
1236+
src/detection/displayserver/linux/common.c
12231237
src/detection/displayserver/linux/drm.c
12241238
src/detection/displayserver/linux/wayland/wayland.c
12251239
src/detection/displayserver/linux/wayland/global-output.c

src/detection/displayserver/displayserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#define FF_WM_PROTOCOL_TTY "TTY"
4545
#define FF_WM_PROTOCOL_X11 "X11"
4646
#define FF_WM_PROTOCOL_WAYLAND "Wayland"
47+
#define FF_WM_PROTOCOL_SURFACEFLINGER "SurfaceFlinger"
4748

4849
typedef enum __attribute__((__packed__)) FFDisplayType {
4950
FF_DISPLAY_TYPE_UNKNOWN,

src/detection/displayserver/displayserver_android.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "displayserver.h"
22
#include "common/settings.h"
33
#include "common/processing.h"
4+
#include "linux/displayserver_linux.h"
45

56
#include <math.h>
67

@@ -147,10 +148,19 @@ static bool detectWithGetprop(FFDisplayServerResult* ds)
147148

148149
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
149150
{
151+
const char* error = ffdsConnectXcbRandr(ds);
152+
if (error)
153+
error = ffdsConnectXrandr(ds);
154+
if (!error)
155+
{
156+
ffdsDetectWMDE(ds);
157+
return;
158+
}
159+
150160
// https://source.android.com/docs/core/graphics/surfaceflinger-windowmanager
151161
ffStrbufSetStatic(&ds->wmProcessName, "system_server");
152162
ffStrbufSetStatic(&ds->wmPrettyName, "WindowManager"); // A system service managed by system_server
153-
ffStrbufSetStatic(&ds->wmProtocolName, "SurfaceFlinger");
163+
ffStrbufSetStatic(&ds->wmProtocolName, FF_WM_PROTOCOL_SURFACEFLINGER);
154164

155165
if (!detectWithGetprop(ds))
156166
detectWithDumpsys(ds);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include "displayserver_linux.h"
2+
#include "util/stringUtils.h"
3+
4+
FFDisplayType ffdsGetDisplayType(const char* name)
5+
{
6+
if(ffStrStartsWith(name, "eDP-") || ffStrStartsWith(name, "LVDS-"))
7+
return FF_DISPLAY_TYPE_BUILTIN;
8+
else if(ffStrStartsWith(name, "HDMI-") ||
9+
ffStrStartsWith(name, "DP-") ||
10+
ffStrStartsWith(name, "DisplayPort-") ||
11+
ffStrStartsWith(name, "DVI-") ||
12+
ffStrStartsWith(name, "VGA-"))
13+
return FF_DISPLAY_TYPE_EXTERNAL;
14+
15+
return FF_DISPLAY_TYPE_UNKNOWN;
16+
}

src/detection/displayserver/linux/displayserver_linux.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,3 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
9595
ffdsDetectWMDE(ds);
9696
}
9797
}
98-
99-
FFDisplayType ffdsGetDisplayType(const char* name)
100-
{
101-
if(ffStrStartsWith(name, "eDP-") || ffStrStartsWith(name, "LVDS-"))
102-
return FF_DISPLAY_TYPE_BUILTIN;
103-
else if(ffStrStartsWith(name, "HDMI-") ||
104-
ffStrStartsWith(name, "DP-") ||
105-
ffStrStartsWith(name, "DisplayPort-") ||
106-
ffStrStartsWith(name, "DVI-") ||
107-
ffStrStartsWith(name, "VGA-"))
108-
return FF_DISPLAY_TYPE_EXTERNAL;
109-
110-
return FF_DISPLAY_TYPE_UNKNOWN;
111-
}

src/detection/displayserver/linux/wmde.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ static const char* parseEnv(void)
6565
if(getenv("SWAYSOCK") != NULL)
6666
return "Sway";
6767

68-
#ifdef __linux__
68+
#if __linux__ && !__ANDROID__
6969
if(
7070
getenv("WAYLAND_DISPLAY") != NULL &&
7171
ffPathExists("/mnt/wslg/", FF_PATHTYPE_DIRECTORY)
@@ -433,6 +433,11 @@ static const char* getFromProcesses(FFDisplayServerResult* result)
433433

434434
void ffdsDetectWMDE(FFDisplayServerResult* result)
435435
{
436+
#if __ANDROID__
437+
if(ffStrbufIgnCaseEqualS(&result->wmProtocolName, FF_WM_PROTOCOL_SURFACEFLINGER))
438+
return; // Only supported when connected to X11
439+
#endif
440+
436441
const char* env = parseEnv();
437442

438443
if(result->wmProcessName.length > 0)

src/detection/font/font_linux.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const char* ffDetectFontImpl(FFFontResult* result)
2828
{
2929
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
3030

31-
if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY) == 0)
31+
if(ffStrbufIgnCaseEqualS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY))
3232
return "Font isn't supported in TTY";
3333

3434
FFfont qt;

src/detection/icons/icons_linux.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const char* ffDetectIcons(FFIconsResult* result)
77
{
88
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
99

10-
if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY) == 0)
10+
if(ffStrbufIgnCaseEqualS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY))
1111
return "Icons aren't supported in TTY";
1212

1313
const FFstrbuf* plasma = &ffDetectQt()->icons;

src/detection/terminalfont/terminalfont.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ static bool detectRio(FFTerminalFontResult* terminalFont)
266266
return true;
267267
}
268268

269-
void ffDetectTerminalFontPlatform(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont);
269+
bool ffDetectTerminalFontPlatform(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont);
270270

271271
static bool detectTerminalFontCommon(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont)
272272
{

src/detection/terminalfont/terminalfont_android.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313

1414
const char* detectTermux(FFTerminalFontResult* terminalFont)
1515
{
16+
if(!ffPathExists(FF_TERMUX_FONT_PATH, FF_PATHTYPE_FILE))
17+
{
18+
ffFontInitCopy(&terminalFont->font, "monospace");
19+
return NULL;
20+
}
21+
1622
#ifdef FF_HAVE_FREETYPE
1723

1824
FF_LIBRARY_LOAD(freetype, "dlopen libfreetype"FF_LIBRARY_EXTENSION " failed", "libfreetype"FF_LIBRARY_EXTENSION, 2)
@@ -53,19 +59,15 @@ const char* detectTermux(FFTerminalFontResult* terminalFont)
5359
#endif
5460
}
5561

56-
void ffDetectTerminalFontPlatform(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont)
62+
bool ffDetectTerminalFontPlatform(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont)
5763
{
58-
if(ffStrbufCompS(&terminal->processName, "com.termux") != 0)
64+
if(ffStrbufEqualS(&terminal->processName, "com.termux"))
65+
ffStrbufSetS(&terminalFont->error, detectTermux(terminalFont));
66+
else
5967
{
60-
ffStrbufSetS(&terminalFont->error, "Unsupported terminal");
61-
return;
62-
}
63-
64-
if(!ffPathExists(FF_TERMUX_FONT_PATH, FF_PATHTYPE_FILE))
65-
{
66-
ffFontInitCopy(&terminalFont->font, "monospace");
67-
return;
68+
bool ffDetectTerminalFontPlatformLinux(const FFTerminalResult* terminal, FFTerminalFontResult* terminalFont);
69+
return ffDetectTerminalFontPlatformLinux(terminal, terminalFont);
6870
}
6971

70-
ffStrbufSetS(&terminalFont->error, detectTermux(terminalFont));
72+
return true;
7173
}

0 commit comments

Comments
 (0)