Global: make FFinstance instance a global variable

As discussed in https://github.com/fastfetch-cli/fastfetch/discussions/473
This commit is contained in:
李通洲
2023-06-24 10:59:53 +08:00
parent 48b01c9665
commit d0f093c567
255 changed files with 2020 additions and 2064 deletions
+1 -1
View File
@@ -17,6 +17,6 @@ typedef struct BatteryResult
double temperature;
} BatteryResult;
const char* ffDetectBattery(FFinstance* instance, FFBatteryOptions* options, FFlist* results);
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results);
#endif
+1 -1
View File
@@ -7,7 +7,7 @@
#define FF_TERMUX_API_PATH FASTFETCH_TARGET_DIR_ROOT "/libexec/termux-api"
#define FF_TERMUX_API_PARAM "BatteryStatus"
const char* ffDetectBattery(FF_MAYBE_UNUSED FFinstance* instance, FFBatteryOptions* options, FFlist* results)
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results)
{
FF_STRBUF_AUTO_DESTROY buffer = ffStrbufCreate();
+2 -2
View File
@@ -5,7 +5,7 @@
#include <IOKit/IOKitLib.h>
static double detectBatteryTemp()
static double detectBatteryTemp(void)
{
FF_LIST_AUTO_DESTROY temps = ffListCreate(sizeof(FFTempValue));
@@ -27,7 +27,7 @@ static double detectBatteryTemp()
return result;
}
const char* ffDetectBattery(FF_MAYBE_UNUSED FFinstance* instance, FFBatteryOptions* options, FFlist* results)
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results)
{
CFMutableDictionaryRef matchDict = IOServiceMatching("AppleSmartBattery");
if (matchDict == NULL)
+1 -1
View File
@@ -7,7 +7,7 @@
#include <sys/fcntl.h>
#include <unistd.h>
const char* ffDetectBattery(FF_MAYBE_UNUSED FFinstance* instance, FF_MAYBE_UNUSED FFBatteryOptions* options, FFlist* results)
const char* ffDetectBattery(FF_MAYBE_UNUSED FFBatteryOptions* options, FFlist* results)
{
//https://www.freebsd.org/cgi/man.cgi?acpi_battery(4)
//https://gitlab.xfce.org/panel-plugins/xfce4-battery-plugin/-/blob/master/panel-plugin/libacpi.c
+1 -1
View File
@@ -68,7 +68,7 @@ static void parseBattery(FFstrbuf* dir, FFlist* results)
result->temperature = FF_BATTERY_TEMP_UNSET;
}
const char* ffDetectBattery(FF_MAYBE_UNUSED FFinstance* instance, FFBatteryOptions* options, FFlist* results)
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results)
{
FF_STRBUF_AUTO_DESTROY baseDir = ffStrbufCreateA(64);
+2 -2
View File
@@ -1,8 +1,8 @@
#include "fastfetch.h"
#include "battery.h"
const char* ffDetectBattery(FFinstance* instance, FFBatteryOptions* options, FFlist* results)
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results)
{
FF_UNUSED(instance, options, results)
FF_UNUSED(options, results)
return "Not supported on this platform";
}
+2 -2
View File
@@ -30,9 +30,9 @@ static inline void wrapSetupDiDestroyDeviceInfoList(HDEVINFO* hdev)
SetupDiDestroyDeviceInfoList(*hdev);
}
const char* ffDetectBattery(FFinstance* instance, FFBatteryOptions* options, FFlist* results)
const char* ffDetectBattery(FFBatteryOptions* options, FFlist* results)
{
if(instance->config.allowSlowOperations)
if(instance.config.allowSlowOperations)
{
//https://learn.microsoft.com/en-us/windows/win32/power/enumerating-battery-devices
HDEVINFO hdev __attribute__((__cleanup__(wrapSetupDiDestroyDeviceInfoList))) =
+1 -1
View File
@@ -14,6 +14,6 @@ typedef struct FFBluetoothDevice
bool connected;
} FFBluetoothDevice;
const char* ffDetectBluetooth(const FFinstance* instance, FFlist* devices /* FFBluetoothDevice */);
const char* ffDetectBluetooth(FFlist* devices /* FFBluetoothDevice */);
#endif
+1 -1
View File
@@ -2,7 +2,7 @@
#import <IOBluetooth/IOBluetooth.h>
const char* ffDetectBluetooth(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* FFBluetoothDevice */)
const char* ffDetectBluetooth(FFlist* devices /* FFBluetoothDevice */)
{
NSArray<IOBluetoothDevice*>* ioDevices = IOBluetoothDevice.pairedDevices;
if(!ioDevices)
+4 -5
View File
@@ -167,10 +167,10 @@ static void detectBluetoothRoot(FFlist* devices, FFDBusData* dbus, DBusMessageIt
}
}
static const char* detectBluetooth(const FFinstance* instance, FFlist* devices)
static const char* detectBluetooth(FFlist* devices)
{
FFDBusData dbus;
const char* error = ffDBusLoadData(instance, DBUS_BUS_SYSTEM, &dbus);
const char* error = ffDBusLoadData(DBUS_BUS_SYSTEM, &dbus);
if(error)
return error;
@@ -193,12 +193,11 @@ static const char* detectBluetooth(const FFinstance* instance, FFlist* devices)
#endif
const char* ffDetectBluetooth(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* FFBluetoothDevice */)
const char* ffDetectBluetooth(FFlist* devices /* FFBluetoothDevice */)
{
#ifdef FF_HAVE_DBUS
return detectBluetooth(instance, devices);
return detectBluetooth(devices);
#else
FF_UNUSED(instance);
return "Fastfetch was compiled without DBus support";
#endif
}
@@ -1,6 +1,6 @@
#include "bluetooth.h"
const char* ffDetectBluetooth(FF_MAYBE_UNUSED const FFinstance* instance, FF_MAYBE_UNUSED FFlist* devices /* FFBluetoothDevice */)
const char* ffDetectBluetooth(FF_MAYBE_UNUSED FFlist* devices /* FFBluetoothDevice */)
{
return "Not supported on this platform";
}
+1 -1
View File
@@ -7,7 +7,7 @@
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpointer-sign"
const char* ffDetectBluetooth(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* FFBluetoothDevice */)
const char* ffDetectBluetooth(FFlist* devices /* FFBluetoothDevice */)
{
BLUETOOTH_DEVICE_SEARCH_PARAMS btsp = {
.fReturnConnected = TRUE,
+1 -1
View File
@@ -52,5 +52,5 @@ extern "C"
const char* ffDetectChassis(FFChassisResult* result)
{
return detectWithRegistry(result);
// TODO: if (instance->config.allowSlowOperations) detectWithWmi(result);
// TODO: if (instance.config.allowSlowOperations) detectWithWmi(result);
}
+3 -3
View File
@@ -1,11 +1,11 @@
#include "cpu.h"
#include "detection/internal.h"
const char* ffDetectCPUImpl(const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu);
const char* ffDetectCPUImpl(const FFCPUOptions* options, FFCPUResult* cpu);
const char* ffDetectCPU(const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu)
const char* ffDetectCPU(const FFCPUOptions* options, FFCPUResult* cpu)
{
const char* error = ffDetectCPUImpl(instance, options, cpu);
const char* error = ffDetectCPUImpl(options, cpu);
if (error) return error;
const char* removeStrings[] = {
+1 -1
View File
@@ -22,6 +22,6 @@ typedef struct FFCPUResult
double temperature;
} FFCPUResult;
const char* ffDetectCPU(const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu);
const char* ffDetectCPU(const FFCPUOptions* options, FFCPUResult* cpu);
#endif
+1 -1
View File
@@ -40,7 +40,7 @@ static double detectCpuTemp(const FFstrbuf* cpuName)
return result;
}
const char* ffDetectCPUImpl(FF_MAYBE_UNUSED const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu)
const char* ffDetectCPUImpl(const FFCPUOptions* options, FFCPUResult* cpu)
{
if (ffSysctlGetString("machdep.cpu.brand_string", &cpu->name) != NULL)
return "sysctlbyname(machdep.cpu.brand_string) failed";
+1 -1
View File
@@ -2,7 +2,7 @@
#include "common/sysctl.h"
#include "detection/temps/temps_bsd.h"
const char* ffDetectCPUImpl(FF_MAYBE_UNUSED const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu)
const char* ffDetectCPUImpl(const FFCPUOptions* options, FFCPUResult* cpu)
{
if (ffSysctlGetString("hw.model", &cpu->name))
return "sysctlbyname(hw.model) failed";
+1 -1
View File
@@ -104,7 +104,7 @@ static void parseIsa(FFstrbuf* cpuIsa)
}
}
const char* ffDetectCPUImpl(FF_MAYBE_UNUSED const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu)
const char* ffDetectCPUImpl(const FFCPUOptions* options, FFCPUResult* cpu)
{
cpu->temperature = options->temp ? detectCPUTemp() : FF_CPU_TEMP_UNSET;
+1 -1
View File
@@ -3,7 +3,7 @@
#include "util/windows/registry.h"
#include "util/mallocHelper.h"
const char* ffDetectCPUImpl(FF_MAYBE_UNUSED const FFinstance* instance, const FFCPUOptions* options, FFCPUResult* cpu)
const char* ffDetectCPUImpl(const FFCPUOptions* options, FFCPUResult* cpu)
{
{
DWORD length = 0;
+1 -1
View File
@@ -9,7 +9,7 @@ const char* ffGetCpuUsageInfo(uint64_t* inUseAll, uint64_t* totalAll);
static uint64_t inUseAll1, totalAll1;
void ffPrepareCPUUsage()
void ffPrepareCPUUsage(void)
{
ffGetCpuUsageInfo(&inUseAll1, &totalAll1);
}
+1 -1
View File
@@ -12,6 +12,6 @@ typedef struct FFCursorResult
FFstrbuf error;
} FFCursorResult;
void ffDetectCursor(const FFinstance* instance, FFCursorResult* result);
void ffDetectCursor(FFCursorResult* result);
#endif
+2 -2
View File
@@ -17,10 +17,10 @@ static void appendColor(FFstrbuf* str, NSDictionary* color)
ffStrbufAppendF(str, "#%02X%02X%02X%02X", r, g, b, a);
}
void ffDetectCursor(const FFinstance* instance, FFCursorResult* result)
void ffDetectCursor(FFCursorResult* result)
{
NSError* error;
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/com.apple.universalaccess.plist", instance->state.platform.homeDir.chars];
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/com.apple.universalaccess.plist", instance.state.platform.homeDir.chars];
NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
error:&error];
if(error)
+18 -19
View File
@@ -9,15 +9,15 @@
#include <stdlib.h>
static bool detectCursorGTK(const FFinstance* instance, FFCursorResult* result)
static bool detectCursorGTK(FFCursorResult* result)
{
const FFGTKResult* gtk = ffDetectGTK4(instance);
const FFGTKResult* gtk = ffDetectGTK4();
if(gtk->cursor.length == 0)
gtk = ffDetectGTK3(instance);
gtk = ffDetectGTK3();
if(gtk->cursor.length == 0)
gtk = ffDetectGTK2(instance);
gtk = ffDetectGTK2();
if(gtk->cursor.length == 0)
return false;
@@ -27,9 +27,9 @@ static bool detectCursorGTK(const FFinstance* instance, FFCursorResult* result)
return true;
}
static void detectCursorFromConfigFile(const FFinstance* instance, const char* relativeFilePath, const char* themeStart, const char* themeDefault, const char* sizeStart, const char* sizeDefault, FFCursorResult* result)
static void detectCursorFromConfigFile(const char* relativeFilePath, const char* themeStart, const char* themeDefault, const char* sizeStart, const char* sizeDefault, FFCursorResult* result)
{
if(ffParsePropFileConfigValues(instance, relativeFilePath, 2, (FFpropquery[]) {
if(ffParsePropFileConfigValues(relativeFilePath, 2, (FFpropquery[]) {
{themeStart, &result->theme},
{sizeStart, &result->size}
})) {
@@ -45,9 +45,9 @@ static void detectCursorFromConfigFile(const FFinstance* instance, const char* r
ffStrbufAppendF(&result->error, "Couldn't find cursor in %s", relativeFilePath);
}
static bool detectCursorFromXResources(const FFinstance* instance, FFCursorResult* result)
static bool detectCursorFromXResources(FFCursorResult* result)
{
ffParsePropFileHomeValues(instance, ".Xresources", 2, (FFpropquery[]) {
ffParsePropFileHomeValues(".Xresources", 2, (FFpropquery[]) {
{"Xcursor.theme :", &result->theme},
{"Xcursor.size :", &result->size}
});
@@ -55,9 +55,8 @@ static bool detectCursorFromXResources(const FFinstance* instance, FFCursorResul
return result->theme.length > 0;
}
static bool detectCursorFromEnv(const FFinstance* instance, FFCursorResult* result)
static bool detectCursorFromEnv(FFCursorResult* result)
{
FF_UNUSED(instance);
const char* xcursor_theme = getenv("XCURSOR_THEME");
if(!ffStrSet(xcursor_theme))
@@ -69,23 +68,23 @@ static bool detectCursorFromEnv(const FFinstance* instance, FFCursorResult* resu
return true;
}
void ffDetectCursor(const FFinstance* instance, FFCursorResult* result)
void ffDetectCursor(FFCursorResult* result)
{
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
if(ffStrbufCompS(&wmde->wmPrettyName, FF_WM_PRETTY_WSLG) == 0)
ffStrbufAppendS(&result->error, "WSLg uses native windows cursor");
else if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY) == 0)
ffStrbufAppendS(&result->error, "Cursor isn't supported in TTY");
else if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_PLASMA) == 0)
detectCursorFromConfigFile(instance, "kcminputrc", "cursorTheme =", "Breeze", "cursorSize =", "24", result);
detectCursorFromConfigFile("kcminputrc", "cursorTheme =", "Breeze", "cursorSize =", "24", result);
else if(ffStrbufStartsWithIgnCaseS(&wmde->dePrettyName, FF_DE_PRETTY_LXQT))
detectCursorFromConfigFile(instance, "lxqt/session.conf", "cursor_theme =", "Adwaita", "cursor_size =", "24", result);
detectCursorFromConfigFile("lxqt/session.conf", "cursor_theme =", "Adwaita", "cursor_size =", "24", result);
else if(
!detectCursorGTK(instance, result) &&
!detectCursorFromEnv(instance, result) &&
!ffParsePropFileHome(instance, ".icons/default/index.theme", "Inherits =", &result->theme) &&
!detectCursorFromXResources(instance, result) &&
!ffParsePropFileData(instance, "icons/default/index.theme", "Inherits =", &result->theme)
!detectCursorGTK(result) &&
!detectCursorFromEnv(result) &&
!ffParsePropFileHome(".icons/default/index.theme", "Inherits =", &result->theme) &&
!detectCursorFromXResources(result) &&
!ffParsePropFileData("icons/default/index.theme", "Inherits =", &result->theme)
) ffStrbufAppendS(&result->error, "Couldn't find cursor");
}
+1 -2
View File
@@ -1,7 +1,6 @@
#include "cursor.h"
void ffDetectCursor(const FFinstance* instance, FFCursorResult* result)
void ffDetectCursor(FF_MAYBE_UNUSED FFCursorResult* result)
{
FF_UNUSED(instance, result);
ffStrbufInitS(&result->error, "Not supported on this platform");
}
+1 -3
View File
@@ -2,10 +2,8 @@
#include "util/windows/registry.h"
void ffDetectCursor(const FFinstance* instance, FFCursorResult* result)
void ffDetectCursor(FFCursorResult* result)
{
FF_UNUSED(instance);
FF_HKEY_AUTO_DESTROY hKey;
if(ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Control Panel\\Cursors", &hKey, &result->error))
{
+1 -3
View File
@@ -4,10 +4,8 @@
#include <time.h>
const FFDateTimeResult* ffDetectDateTime(const FFinstance* instance)
const FFDateTimeResult* ffDetectDateTime(void)
{
FF_UNUSED(instance); //We may need it later for additional configuration
static FFDateTimeResult result;
static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER;
static bool init = false;
+1 -1
View File
@@ -30,6 +30,6 @@ typedef struct FFDateTimeResult
FFstrbuf secondPretty; //37
} FFDateTimeResult;
const FFDateTimeResult* ffDetectDateTime(const FFinstance* instance);
const FFDateTimeResult* ffDetectDateTime();
#endif
+3 -3
View File
@@ -30,11 +30,11 @@ bool ffdsAppendDisplay(
return true;
}
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* instance);
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds);
const FFDisplayServerResult* ffConnectDisplayServer(const FFinstance* instance)
const FFDisplayServerResult* ffConnectDisplayServer()
{
FF_DETECTION_INTERNAL_GUARD(FFDisplayServerResult,
ffConnectDisplayServerImpl(&result, instance);
ffConnectDisplayServerImpl(&result);
);
}
+1 -1
View File
@@ -71,7 +71,7 @@ typedef struct FFDisplayServerResult
FFlist displays; //List of FFDisplayResult
} FFDisplayServerResult;
const FFDisplayServerResult* ffConnectDisplayServer(const FFinstance* instance);
const FFDisplayServerResult* ffConnectDisplayServer();
bool ffdsAppendDisplay(
FFDisplayServerResult* result,
@@ -100,15 +100,13 @@ static void detectWMPlugin(FFstrbuf* name)
}
}
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* instance)
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
{
FF_UNUSED(instance);
ffStrbufInitS(&ds->wmProcessName, "WindowServer");
ffStrbufInitS(&ds->wmPrettyName, "Quartz Compositor");
ffStrbufInit(&ds->wmProtocolName);
if(instance->config.allowSlowOperations)
if(instance.config.allowSlowOperations)
{
FF_STRBUF_AUTO_DESTROY name;
ffStrbufInit(&name);
@@ -1,9 +1,7 @@
#include "displayserver.h"
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* instance)
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
{
FF_UNUSED(instance);
ffStrbufInit(&ds->wmProcessName);
ffStrbufInit(&ds->wmPrettyName);
ffStrbufInit(&ds->wmProtocolName);
@@ -131,7 +131,7 @@ static void detectDisplays(FFDisplayServerResult* ds)
}
}
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* instance)
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
{
BOOL enabled;
if(SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled == TRUE)
@@ -153,7 +153,7 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* ins
detectDisplays(ds);
//https://github.com/hykilpikonna/hyfetch/blob/master/neofetch#L2067
const FFOSResult* os = ffDetectOS(instance);
const FFOSResult* os = ffDetectOS();
if(
ffStrbufEqualS(&os->version, "11") ||
ffStrbufEqualS(&os->version, "10") ||
@@ -64,7 +64,7 @@ static void parseDRM(FFDisplayServerResult* result)
closedir(dirp);
}
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* instance)
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
{
ffStrbufInit(&ds->wmProcessName);
ffStrbufInit(&ds->wmPrettyName);
@@ -76,23 +76,23 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* ins
//We try wayland as our prefered display server, as it supports the most features.
//This method can't detect the name of our WM / DE
ffdsConnectWayland(instance, ds);
ffdsConnectWayland(ds);
//Try the x11 libs, from most feature rich to least.
//We use the display list to detect if a connection is needed.
//They respect wmProtocolName, and only detect display if it is set.
if(ds->displays.length == 0)
ffdsConnectXcbRandr(instance, ds);
ffdsConnectXcbRandr(ds);
if(ds->displays.length == 0)
ffdsConnectXrandr(instance, ds);
ffdsConnectXrandr(ds);
if(ds->displays.length == 0)
ffdsConnectXcb(instance, ds);
ffdsConnectXcb(ds);
if(ds->displays.length == 0)
ffdsConnectXlib(instance, ds);
ffdsConnectXlib(ds);
//This display detection method is display server independent.
//Use it if all connections failed
@@ -100,5 +100,5 @@ void ffConnectDisplayServerImpl(FFDisplayServerResult* ds, const FFinstance* ins
parseDRM(ds);
//This fills in missing information about WM / DE by using env vars and iterating processes
ffdsDetectWMDE(instance, ds);
ffdsDetectWMDE(ds);
}
@@ -5,14 +5,14 @@
#include "detection/displayserver/displayserver.h"
void ffdsConnectWayland(const FFinstance* instance, FFDisplayServerResult* result);
void ffdsConnectWayland(FFDisplayServerResult* result);
void ffdsConnectXcbRandr(const FFinstance* instance, FFDisplayServerResult* result);
void ffdsConnectXcb(const FFinstance* instance, FFDisplayServerResult* result);
void ffdsConnectXcbRandr(FFDisplayServerResult* result);
void ffdsConnectXcb(FFDisplayServerResult* result);
void ffdsConnectXrandr(const FFinstance* instance, FFDisplayServerResult* result);
void ffdsConnectXlib(const FFinstance* instance, FFDisplayServerResult* result);
void ffdsConnectXrandr(FFDisplayServerResult* result);
void ffdsConnectXlib(FFDisplayServerResult* result);
void ffdsDetectWMDE(const FFinstance* instance, FFDisplayServerResult* result);
void ffdsDetectWMDE(FFDisplayServerResult* result);
#endif
+4 -6
View File
@@ -201,9 +201,9 @@ static void waylandGlobalAddListener(void* data, struct wl_registry* registry, u
waylandOutputHandler(wldata, registry, name, version);
}
bool detectWayland(const FFinstance* instance, FFDisplayServerResult* result)
bool detectWayland(FFDisplayServerResult* result)
{
FF_LIBRARY_LOAD(wayland, &instance->config.libWayland, false, "libwayland-client" FF_LIBRARY_EXTENSION, 1)
FF_LIBRARY_LOAD(wayland, &instance.config.libWayland, false, "libwayland-client" FF_LIBRARY_EXTENSION, 1)
FF_LIBRARY_LOAD_SYMBOL(wayland, wl_display_connect, false)
FF_LIBRARY_LOAD_SYMBOL(wayland, wl_display_get_fd, false)
@@ -255,17 +255,15 @@ bool detectWayland(const FFinstance* instance, FFDisplayServerResult* result)
}
#endif
void ffdsConnectWayland(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectWayland(FFDisplayServerResult* result)
{
//Wayland requires this to be set
if(getenv("XDG_RUNTIME_DIR") == NULL)
return;
#ifdef FF_HAVE_WAYLAND
if(detectWayland(instance, result))
if(detectWayland(result))
return;
#else
FF_UNUSED(instance);
#endif
const char* xdgSessionType = getenv("XDG_SESSION_TYPE");
+38 -38
View File
@@ -11,7 +11,7 @@
#include <unistd.h>
#include <dirent.h>
static const char* parseEnv()
static const char* parseEnv(void)
{
const char* env;
@@ -126,7 +126,7 @@ static void applyBetterWM(FFDisplayServerResult* result, const char* processName
ffStrbufAppend(&result->wmPrettyName, &result->wmProcessName);
}
static void getKDE(const FFinstance* instance, FFDisplayServerResult* result)
static void getKDE(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "plasmashell");
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_PLASMA);
@@ -135,9 +135,9 @@ static void getKDE(const FFinstance* instance, FFDisplayServerResult* result)
{"X-KDE-PluginInfo-Version =", &result->deVersion}
});
if(result->deVersion.length == 0)
ffParsePropFileData(instance, "xsessions/plasma.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
ffParsePropFileData("xsessions/plasma.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
if(result->deVersion.length == 0)
ffParsePropFileData(instance, "xsessions/plasma5.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
ffParsePropFileData("xsessions/plasma5.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
if(result->deVersion.length == 0)
{
ffParsePropFileValues("/usr/share/wayland-sessions/plasma.desktop", 1, (FFpropquery[]) {
@@ -145,11 +145,11 @@ static void getKDE(const FFinstance* instance, FFDisplayServerResult* result)
});
}
if(result->deVersion.length == 0)
ffParsePropFileData(instance, "wayland-sessions/plasmawayland.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
ffParsePropFileData("wayland-sessions/plasmawayland.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
if(result->deVersion.length == 0)
ffParsePropFileData(instance, "wayland-sessions/plasmawayland5.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
ffParsePropFileData("wayland-sessions/plasmawayland5.desktop", "X-KDE-PluginInfo-Version =", &result->deVersion);
if(result->deVersion.length == 0 && instance->config.allowSlowOperations)
if(result->deVersion.length == 0 && instance.config.allowSlowOperations)
{
if (ffProcessAppendStdOut(&result->deVersion, (char* const[]){
"plasmashell",
@@ -163,7 +163,7 @@ static void getKDE(const FFinstance* instance, FFDisplayServerResult* result)
applyBetterWM(result, getenv("KDEWM"));
}
static void getGnome(const FFinstance* instance, FFDisplayServerResult* result)
static void getGnome(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "gnome-shell");
const char* sessionMode = getenv("GNOME_SHELL_SESSION_MODE");
@@ -172,7 +172,7 @@ static void getGnome(const FFinstance* instance, FFDisplayServerResult* result)
else
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_GNOME);
ffParsePropFileData(instance, "gnome-shell/org.gnome.Extensions", "version :", &result->deVersion);
ffParsePropFileData("gnome-shell/org.gnome.Extensions", "version :", &result->deVersion);
if (result->deVersion.length == 0)
{
@@ -185,14 +185,14 @@ static void getGnome(const FFinstance* instance, FFDisplayServerResult* result)
}
}
static void getCinnamon(const FFinstance* instance, FFDisplayServerResult* result)
static void getCinnamon(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "cinnamon");
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_CINNAMON);
ffParsePropFileData(instance, "applications/cinnamon.desktop", "X-GNOME-Bugzilla-Version =", &result->deVersion);
ffParsePropFileData("applications/cinnamon.desktop", "X-GNOME-Bugzilla-Version =", &result->deVersion);
}
static void getMate(const FFinstance* instance, FFDisplayServerResult* result)
static void getMate(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "mate-session");
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_MATE);
@@ -201,7 +201,7 @@ static void getMate(const FFinstance* instance, FFDisplayServerResult* result)
FF_STRBUF_AUTO_DESTROY minor = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY micro = ffStrbufCreate();
ffParsePropFileDataValues(instance, "mate-about/mate-version.xml", 3, (FFpropquery[]) {
ffParsePropFileDataValues("mate-about/mate-version.xml", 3, (FFpropquery[]) {
{"<platform>", &major},
{"<minor>", &minor},
{"<micro>", &micro}
@@ -209,7 +209,7 @@ static void getMate(const FFinstance* instance, FFDisplayServerResult* result)
ffParseSemver(&result->deVersion, &major, &minor, &micro);
if(result->deVersion.length == 0 && instance->config.allowSlowOperations)
if(result->deVersion.length == 0 && instance.config.allowSlowOperations)
{
ffProcessAppendStdOut(&result->deVersion, (char* const[]){
"mate-session",
@@ -222,13 +222,13 @@ static void getMate(const FFinstance* instance, FFDisplayServerResult* result)
}
}
static void getXFCE4(const FFinstance* instance, FFDisplayServerResult* result)
static void getXFCE4(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "xfce4-session");
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_XFCE4);
ffParsePropFileData(instance, "gtk-doc/html/libxfce4ui/index.html", "<div><p class=\"releaseinfo\">Version", &result->deVersion);
ffParsePropFileData("gtk-doc/html/libxfce4ui/index.html", "<div><p class=\"releaseinfo\">Version", &result->deVersion);
if(result->deVersion.length == 0 && instance->config.allowSlowOperations)
if(result->deVersion.length == 0 && instance.config.allowSlowOperations)
{
//This is somewhat slow
ffProcessAppendStdOut(&result->deVersion, (char* const[]){
@@ -243,18 +243,18 @@ static void getXFCE4(const FFinstance* instance, FFDisplayServerResult* result)
}
}
static void getLXQt(const FFinstance* instance, FFDisplayServerResult* result)
static void getLXQt(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "lxqt-session");
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_LXQT);
ffParsePropFileData(instance, "gconfig/lxqt.pc", "Version:", &result->deVersion);
ffParsePropFileData("gconfig/lxqt.pc", "Version:", &result->deVersion);
if(result->deVersion.length == 0)
ffParsePropFileData(instance, "cmake/lxqt/lxqt-config.cmake", "set ( LXQT_VERSION", &result->deVersion);
ffParsePropFileData("cmake/lxqt/lxqt-config.cmake", "set ( LXQT_VERSION", &result->deVersion);
if(result->deVersion.length == 0)
ffParsePropFileData(instance, "cmake/lxqt/lxqt-config-version.cmake", "set ( PACKAGE_VERSION", &result->deVersion);
ffParsePropFileData("cmake/lxqt/lxqt-config-version.cmake", "set ( PACKAGE_VERSION", &result->deVersion);
if(result->deVersion.length == 0 && instance->config.allowSlowOperations)
if(result->deVersion.length == 0 && instance.config.allowSlowOperations)
{
//This is really, really, really slow. Thank you, LXQt developers
ffProcessAppendStdOut(&result->deVersion, (char* const[]){
@@ -269,39 +269,39 @@ static void getLXQt(const FFinstance* instance, FFDisplayServerResult* result)
FF_STRBUF_AUTO_DESTROY wmProcessNameBuffer = ffStrbufCreate();
ffParsePropFileConfig(instance, "lxqt/session.conf", "window_manager =", &wmProcessNameBuffer);
ffParsePropFileConfig("lxqt/session.conf", "window_manager =", &wmProcessNameBuffer);
applyBetterWM(result, wmProcessNameBuffer.chars);
}
static void getBudgie(const FFinstance* instance, FFDisplayServerResult* result)
static void getBudgie(FFDisplayServerResult* result)
{
ffStrbufSetS(&result->deProcessName, "budgie-desktop");
ffStrbufSetS(&result->dePrettyName, FF_DE_PRETTY_BUDGIE);
ffParsePropFileData(instance, "budgie/budgie-version.xml", "<str>", &result->deVersion);
ffParsePropFileData("budgie/budgie-version.xml", "<str>", &result->deVersion);
}
static void applyPrettyNameIfDE(const FFinstance* instance, FFDisplayServerResult* result, const char* name)
static void applyPrettyNameIfDE(FFDisplayServerResult* result, const char* name)
{
if(!ffStrSet(name))
return;
else if(strcasestr(name, "plasma") != NULL)
getKDE(instance, result);
getKDE(result);
else if(
strcasecmp(name, "polkit-gnome") != 0 &&
strcasecmp(name, "gnome-keyring") != 0 &&
strcasestr(name, "gnome") != NULL
)
getGnome(instance, result);
getGnome(result);
else if(strcasestr(name, "cinnamon") != NULL)
getCinnamon(instance, result);
getCinnamon(result);
else if(strcasestr(name, "xfce") != NULL)
getXFCE4(instance, result);
getXFCE4(result);
else if(strcasestr(name, "mate") != NULL)
getMate(instance, result);
getMate(result);
else if(strcasestr(name, "lxqt") != NULL)
getLXQt(instance, result);
getLXQt(result);
else if(strcasestr(name, "budgie") != NULL)
getBudgie(instance, result);
getBudgie(result);
}
static void getWMProtocolNameFromEnv(FFDisplayServerResult* result)
@@ -337,7 +337,7 @@ static void getWMProtocolNameFromEnv(FFDisplayServerResult* result)
}
}
static void getFromProcDir(const FFinstance* instance, FFDisplayServerResult* result)
static void getFromProcDir(FFDisplayServerResult* result)
{
DIR* proc = opendir("/proc");
if(proc == NULL)
@@ -382,7 +382,7 @@ static void getFromProcDir(const FFinstance* instance, FFDisplayServerResult* re
ffStrbufSubstrBefore(&procPath, procPathLength);
if(result->dePrettyName.length == 0)
applyPrettyNameIfDE(instance, result, processName.chars);
applyPrettyNameIfDE(result, processName.chars);
if(result->wmPrettyName.length == 0)
applyNameIfWM(result, processName.chars);
@@ -394,7 +394,7 @@ static void getFromProcDir(const FFinstance* instance, FFDisplayServerResult* re
closedir(proc);
}
void ffdsDetectWMDE(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsDetectWMDE(FFDisplayServerResult* result)
{
//If all connections failed, use the environment variables to detect protocol name
if(result->wmProtocolName.length == 0)
@@ -423,7 +423,7 @@ void ffdsDetectWMDE(const FFinstance* instance, FFDisplayServerResult* result)
//Connecting to a display server only gives WM results, not DE results.
//If we find it in the environment, use that.
applyPrettyNameIfDE(instance, result, env);
applyPrettyNameIfDE(result, env);
//If WM was found by connection to the sever, and DE in the environment, we can return
//This way we never call getFromProcDir(), which has slow initalization time
@@ -431,7 +431,7 @@ void ffdsDetectWMDE(const FFinstance* instance, FFDisplayServerResult* result)
return;
//Get missing WM / DE from processes.
getFromProcDir(instance, result);
getFromProcDir(result);
//Return if both wm and de are set, or if env doesn't contain anything
if(
+8 -8
View File
@@ -96,9 +96,9 @@ static void xcbDetectWMfromEWMH(XcbPropertyData* data, xcb_connection_t* connect
free(wmName);
}
void ffdsConnectXcb(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXcb(FFDisplayServerResult* result)
{
FF_LIBRARY_LOAD(xcb, &instance->config.libXcb, , "libxcb" FF_LIBRARY_EXTENSION, 2)
FF_LIBRARY_LOAD(xcb, &instance.config.libXcb, , "libxcb" FF_LIBRARY_EXTENSION, 2)
FF_LIBRARY_LOAD_SYMBOL(xcb, xcb_connect,)
FF_LIBRARY_LOAD_SYMBOL(xcb, xcb_get_setup,)
FF_LIBRARY_LOAD_SYMBOL(xcb, xcb_setup_roots_iterator,)
@@ -142,10 +142,10 @@ void ffdsConnectXcb(const FFinstance* instance, FFDisplayServerResult* result)
#else
void ffdsConnectXcb(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXcb(FFDisplayServerResult* result)
{
//Do nothing. There are other implementations coming
FF_UNUSED(instance, result)
FF_UNUSED(result)
}
#endif
@@ -383,9 +383,9 @@ static void xcbRandrHandleScreen(XcbRandrData* data, xcb_screen_t* screen)
);
}
void ffdsConnectXcbRandr(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXcbRandr(FFDisplayServerResult* result)
{
FF_LIBRARY_LOAD(xcbRandr, &instance->config.libXcbRandr, , "libxcb-randr" FF_LIBRARY_EXTENSION, 1)
FF_LIBRARY_LOAD(xcbRandr, &instance.config.libXcbRandr, , "libxcb-randr" FF_LIBRARY_EXTENSION, 1)
FF_LIBRARY_LOAD_SYMBOL(xcbRandr, xcb_connect,)
FF_LIBRARY_LOAD_SYMBOL(xcbRandr, xcb_get_setup,)
FF_LIBRARY_LOAD_SYMBOL(xcbRandr, xcb_setup_roots_iterator,)
@@ -440,10 +440,10 @@ void ffdsConnectXcbRandr(const FFinstance* instance, FFDisplayServerResult* resu
#else
void ffdsConnectXcbRandr(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXcbRandr(FFDisplayServerResult* result)
{
//Do nothing. There are other implementations coming
FF_UNUSED(instance, result)
FF_UNUSED(result)
}
#endif
+8 -8
View File
@@ -58,9 +58,9 @@ static void x11DetectWMFromEWMH(X11PropertyData* data, Display* display, FFDispl
data->ffXFree(wmWindow);
}
void ffdsConnectXlib(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXlib(FFDisplayServerResult* result)
{
FF_LIBRARY_LOAD(x11, &instance->config.libX11, , "libX11" FF_LIBRARY_EXTENSION, 7, "libX11-xcb" FF_LIBRARY_EXTENSION, 2)
FF_LIBRARY_LOAD(x11, &instance.config.libX11, , "libX11" FF_LIBRARY_EXTENSION, 7, "libX11-xcb" FF_LIBRARY_EXTENSION, 2)
FF_LIBRARY_LOAD_SYMBOL(x11, XOpenDisplay,)
FF_LIBRARY_LOAD_SYMBOL(x11, XCloseDisplay,)
@@ -99,10 +99,10 @@ void ffdsConnectXlib(const FFinstance* instance, FFDisplayServerResult* result)
#else
void ffdsConnectXlib(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXlib(FFDisplayServerResult* result)
{
//Do nothing. WM / DE detection will use environment vars to detect as much as possible.
FF_UNUSED(instance, result);
FF_UNUSED(result);
}
#endif //FF_HAVE_X11
@@ -286,9 +286,9 @@ static void xrandrHandleScreen(XrandrData* data, Screen* screen)
);
}
void ffdsConnectXrandr(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXrandr(FFDisplayServerResult* result)
{
FF_LIBRARY_LOAD(xrandr, &instance->config.libXrandr, , "libXrandr" FF_LIBRARY_EXTENSION, 3)
FF_LIBRARY_LOAD(xrandr, &instance.config.libXrandr, , "libXrandr" FF_LIBRARY_EXTENSION, 3)
FF_LIBRARY_LOAD_SYMBOL(xrandr, XOpenDisplay,)
FF_LIBRARY_LOAD_SYMBOL(xrandr, XCloseDisplay,)
@@ -331,10 +331,10 @@ void ffdsConnectXrandr(const FFinstance* instance, FFDisplayServerResult* result
#else
void ffdsConnectXrandr(const FFinstance* instance, FFDisplayServerResult* result)
void ffdsConnectXrandr(FFDisplayServerResult* result)
{
//Do nothing here. There are more x11 implementaions to come.
FF_UNUSED(instance, result);
FF_UNUSED(result);
}
#endif // FF_HAVE_XRANDR
+3 -3
View File
@@ -1,11 +1,11 @@
#include "font.h"
#include "detection/internal.h"
const char* ffDetectFontImpl(const FFinstance* instance, FFFontResult* font);
const char* ffDetectFontImpl(FFFontResult* font);
const char* ffDetectFont(const FFinstance* instance, FFFontResult* font)
const char* ffDetectFont(FFFontResult* font)
{
const char* error = ffDetectFontImpl(instance, font);
const char* error = ffDetectFontImpl(font);
if(error) return error;
+1 -1
View File
@@ -19,6 +19,6 @@ typedef struct FFFontResult
FFstrbuf display;
} FFFontResult;
const char* ffDetectFont(const FFinstance* instance, FFFontResult* font);
const char* ffDetectFont(FFFontResult* font);
#endif
+1 -1
View File
@@ -21,7 +21,7 @@ static void generateString(FFFontResult* font)
}
}
const char* ffDetectFontImpl(FF_MAYBE_UNUSED const FFinstance* instance, FFFontResult* result)
const char* ffDetectFontImpl(FFFontResult* result)
{
ffStrbufAppendS(&result->fonts[0], [NSFont systemFontOfSize:12].familyName.UTF8String);
ffStrbufAppendS(&result->fonts[1], [NSFont userFontOfSize:12].familyName.UTF8String);
+6 -6
View File
@@ -24,30 +24,30 @@ static void generateString(FFFontResult* font)
ffParseGTK(&font->display, &font->fonts[1], &font->fonts[2], &font->fonts[3]);
}
const char* ffDetectFontImpl(const FFinstance* instance, FFFontResult* result)
const char* ffDetectFontImpl(FFFontResult* result)
{
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY) == 0)
return "Font isn't supported in TTY";
FFfont qt;
ffFontInitQt(&qt, ffDetectQt(instance)->font.chars);
ffFontInitQt(&qt, ffDetectQt()->font.chars);
ffStrbufAppend(&result->fonts[0], &qt.pretty);
ffFontDestroy(&qt);
FFfont gtk2;
ffFontInitPango(&gtk2, ffDetectGTK2(instance)->font.chars);
ffFontInitPango(&gtk2, ffDetectGTK2()->font.chars);
ffStrbufAppend(&result->fonts[1], &gtk2.pretty);
ffFontDestroy(&gtk2);
FFfont gtk3;
ffFontInitPango(&gtk3, ffDetectGTK3(instance)->font.chars);
ffFontInitPango(&gtk3, ffDetectGTK3()->font.chars);
ffStrbufAppend(&result->fonts[2], &gtk3.pretty);
ffFontDestroy(&gtk3);
FFfont gtk4;
ffFontInitPango(&gtk4, ffDetectGTK4(instance)->font.chars);
ffFontInitPango(&gtk4, ffDetectGTK4()->font.chars);
ffStrbufAppend(&result->fonts[3], &gtk4.pretty);
ffFontDestroy(&gtk4);
+2 -2
View File
@@ -1,8 +1,8 @@
#include "fastfetch.h"
#include "font.h"
const char* ffDetectFontImpl(const FFinstance* instance, FFFontResult* result)
const char* ffDetectFontImpl(FF_MAYBE_UNUSED FFFontResult* result)
{
FF_UNUSED(instance, result);
FF_UNUSED(result);
return "Not supported on this platform";
}
+1 -1
View File
@@ -23,7 +23,7 @@ static void generateString(FFFontResult* font)
ffStrbufAppendC(&font->display, ']');
}
const char* ffDetectFontImpl(FF_MAYBE_UNUSED const FFinstance* instance, FFFontResult* result)
const char* ffDetectFontImpl(FFFontResult* result)
{
NONCLIENTMETRICSW info = { .cbSize = sizeof(info) };
if(!SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0))
+1 -1
View File
@@ -11,6 +11,6 @@ typedef struct FFGamepadDevice
FFstrbuf name;
} FFGamepadDevice;
const char* ffDetectGamepad(const FFinstance* instance, FFlist* devices /* List of FFGamepadDevice */);
const char* ffDetectGamepad(FFlist* devices /* List of FFGamepadDevice */);
#endif
+1 -1
View File
@@ -15,7 +15,7 @@ static void enumSet(const void* value, void *context)
ffCfStrGetString(product, &device->name);
}
const char* ffDetectGamepad(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* List of FFGamepadDevice */)
const char* ffDetectGamepad(FFlist* devices /* List of FFGamepadDevice */)
{
IOHIDManagerRef FF_CFTYPE_AUTO_RELEASE manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
if (IOHIDManagerOpen(manager, kIOHIDOptionsTypeNone) != kIOReturnSuccess)
+1 -1
View File
@@ -8,7 +8,7 @@
#define MAX_UHID_JOYS 64
const char* ffDetectGamepad(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* List of FFGamepadDevice */)
const char* ffDetectGamepad(FFlist* devices /* List of FFGamepadDevice */)
{
char path[16];
for (int i = 0; i < MAX_UHID_JOYS; i++)
+1 -1
View File
@@ -5,7 +5,7 @@
#include <dirent.h>
#include <ctype.h>
const char* ffDetectGamepad(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* List of FFGamepadDevice */)
const char* ffDetectGamepad(FFlist* devices /* List of FFGamepadDevice */)
{
DIR* dirp = opendir("/sys/class/input/");
if(dirp == NULL)
+1 -1
View File
@@ -1,6 +1,6 @@
#include "gamepad.h"
const char* ffDetectGamepad(FF_MAYBE_UNUSED const FFinstance* instance, FF_MAYBE_UNUSED FFlist* devices /* List of FFGamepadDevice */)
const char* ffDetectGamepad(FF_MAYBE_UNUSED FFlist* devices /* List of FFGamepadDevice */)
{
return "Not supported on this platform";
}
+1 -1
View File
@@ -87,7 +87,7 @@ static const char* detectKnownGamepad(uint32_t vendorId, uint32_t productId)
}
}
const char* ffDetectGamepad(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* List of FFGamepadDevice */)
const char* ffDetectGamepad(FFlist* devices /* List of FFGamepadDevice */)
{
UINT nDevices = 0;
if (GetRawInputDeviceList(NULL, &nDevices, sizeof(RAWINPUTDEVICELIST)))
+3 -3
View File
@@ -30,14 +30,14 @@ const char* ffGetGPUVendorString(unsigned vendorId)
return NULL;
}
const char* ffDetectGPU(const FFinstance* instance, const FFGPUOptions* options, FFlist* result)
const char* ffDetectGPU(const FFGPUOptions* options, FFlist* result)
{
if (!options->forceVulkan)
{
const char* error = ffDetectGPUImpl(instance, options, result);
const char* error = ffDetectGPUImpl(options, result);
if (!error) return NULL;
}
FFVulkanResult* vulkan = ffDetectVulkan(instance);
FFVulkanResult* vulkan = ffDetectVulkan();
if (vulkan->error) return "GPU detection failed";
ffListDestroy(result);
ffListInitMove(result, &vulkan->gpus);
+2 -2
View File
@@ -33,8 +33,8 @@ typedef struct FFGPUResult
uint32_t vulkanDeviceId; // Only used for vulkan
} FFGPUResult;
const char* ffDetectGPU(const FFinstance* instance, const FFGPUOptions* options, FFlist* result);
const char* ffDetectGPUImpl(const FFinstance* instance, const FFGPUOptions* options, FFlist* gpus);
const char* ffDetectGPU(const FFGPUOptions* options, FFlist* result);
const char* ffDetectGPUImpl(const FFGPUOptions* options, FFlist* gpus);
const char* ffGetGPUVendorString(unsigned vendorId);
+1 -1
View File
@@ -38,7 +38,7 @@ static double detectGpuTemp(const FFstrbuf* gpuName)
return result;
}
const char* ffDetectGPUImpl(FF_MAYBE_UNUSED const FFinstance* instance, const FFGPUOptions* options, FFlist* gpus)
const char* ffDetectGPUImpl(const FFGPUOptions* options, FFlist* gpus)
{
CFMutableDictionaryRef matchDict = IOServiceMatching(kIOAcceleratorClassName);
io_iterator_t iterator;
+12 -12
View File
@@ -44,7 +44,7 @@ static void pciDetectVendorName(FFGPUResult* gpu, PCIData* pci, struct pci_dev*
ffStrbufSetS(&gpu->vendor, FF_GPU_VENDOR_NAME_NVIDIA);
}
static void drmDetectDeviceName(const FFinstance* instance, FFGPUResult* gpu, PCIData* pci, struct pci_dev* device)
static void drmDetectDeviceName(FFGPUResult* gpu, PCIData* pci, struct pci_dev* device)
{
u8 revId = 0;
bool revIdSet = false;
@@ -65,7 +65,7 @@ static void drmDetectDeviceName(const FFinstance* instance, FFGPUResult* gpu, PC
}
FF_STRBUF_AUTO_DESTROY query = ffStrbufCreateF("%X, %X,", device->device_id, revId);
ffParsePropFileData(instance, "libdrm/amdgpu.ids", query.chars, &gpu->name);
ffParsePropFileData("libdrm/amdgpu.ids", query.chars, &gpu->name);
const char* removeStrings[] = {
"AMD ", "ATI ",
@@ -75,11 +75,11 @@ static void drmDetectDeviceName(const FFinstance* instance, FFGPUResult* gpu, PC
ffStrbufRemoveStringsA(&gpu->name, sizeof(removeStrings) / sizeof(removeStrings[0]), removeStrings);
}
static void pciDetectDeviceName(const FFinstance* instance, FFGPUResult* gpu, PCIData* pci, struct pci_dev* device)
static void pciDetectDeviceName(FFGPUResult* gpu, PCIData* pci, struct pci_dev* device)
{
if(ffStrbufCompS(&gpu->vendor, FF_GPU_VENDOR_NAME_AMD) == 0)
{
drmDetectDeviceName(instance, gpu, pci, device);
drmDetectDeviceName(gpu, pci, device);
if(gpu->name.length > 0)
return;
}
@@ -171,7 +171,7 @@ static void detectType(FFGPUResult* gpu, const PCIData* pci, struct pci_dev* dev
gpu->type = FF_GPU_TYPE_INTEGRATED;
}
static void pciHandleDevice(const FFinstance* instance, FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* results, PCIData* pci, struct pci_dev* device)
static void pciHandleDevice(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* results, PCIData* pci, struct pci_dev* device)
{
pci->ffpci_fill_info(device, PCI_FILL_CLASS);
@@ -196,7 +196,7 @@ static void pciHandleDevice(const FFinstance* instance, FF_MAYBE_UNUSED const FF
pciDetectVendorName(gpu, pci, device);
ffStrbufInit(&gpu->name);
pciDetectDeviceName(instance, gpu, pci, device);
pciDetectDeviceName(gpu, pci, device);
ffStrbufInit(&gpu->driver);
pciDetectDriverName(gpu, pci, device);
@@ -237,11 +237,11 @@ static void handlePciWarning(FF_MAYBE_UNUSED char *msg, ...)
// noop
}
static const char* pciDetectGPUs(const FFinstance* instance, const FFGPUOptions* options, FFlist* gpus)
static const char* pciDetectGPUs(const FFGPUOptions* options, FFlist* gpus)
{
PCIData pci;
FF_LIBRARY_LOAD(libpci, &instance->config.libPCI, "dlopen libpci.so failed", "libpci" FF_LIBRARY_EXTENSION, 4);
FF_LIBRARY_LOAD(libpci, &instance.config.libPCI, "dlopen libpci.so failed", "libpci" FF_LIBRARY_EXTENSION, 4);
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libpci, pci_alloc);
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libpci, pci_init);
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libpci, pci_scan_bus);
@@ -270,7 +270,7 @@ static const char* pciDetectGPUs(const FFinstance* instance, const FFGPUOptions*
struct pci_dev* device = pci.access->devices;
while(device != NULL)
{
pciHandleDevice(instance, options, gpus, &pci, device);
pciHandleDevice(options, gpus, &pci, device);
device = device->next;
}
@@ -280,12 +280,12 @@ static const char* pciDetectGPUs(const FFinstance* instance, const FFGPUOptions*
#endif
const char* ffDetectGPUImpl(const FFinstance* instance, const FFGPUOptions* options, FFlist* gpus)
const char* ffDetectGPUImpl(const FFGPUOptions* options, FFlist* gpus)
{
#ifdef FF_HAVE_LIBPCI
return pciDetectGPUs(instance, options, gpus);
return pciDetectGPUs(options, gpus);
#else
FF_UNUSED(instance, options, gpus);
FF_UNUSED(options, gpus);
return "fastfetch is built without libpci support";
#endif
}
+2 -2
View File
@@ -1,7 +1,7 @@
#include "gpu.h"
const char* ffDetectGPUImpl(const FFinstance* instance, const FFGPUOptions* options, FFlist* gpus)
const char* ffDetectGPUImpl(const FFGPUOptions* options, FFlist* gpus)
{
FF_UNUSED(instance, options, gpus);
FF_UNUSED(options, gpus);
return "Not supported on this platform";
}
+1 -1
View File
@@ -4,7 +4,7 @@
#include <inttypes.h>
const char* ffDetectGPUImpl(FF_MAYBE_UNUSED const FFinstance* instance, const FF_MAYBE_UNUSED FFGPUOptions* options, FFlist* gpus)
const char* ffDetectGPUImpl(FF_MAYBE_UNUSED const FFGPUOptions* options, FFlist* gpus)
{
DISPLAY_DEVICEW displayDevice = {.cb = sizeof(displayDevice) };
wchar_t regKey[MAX_PATH] = L"SYSTEM\\CurrentControlSet\\Control\\Video\\{";
+34 -34
View File
@@ -34,7 +34,7 @@ static inline void applyGTKSettings(FFGTKResult* result, const char* themeName,
ffStrbufAppendS(&result->wallpaper, wallpaper);
}
static void detectGTKFromSettings(const FFinstance* instance, FFGTKResult* result)
static void detectGTKFromSettings(FFGTKResult* result)
{
static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER;
@@ -58,36 +58,36 @@ static void detectGTKFromSettings(const FFinstance* instance, FFGTKResult* resul
init = true;
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_XFCE4) == 0)
{
themeName = ffSettingsGetXFConf(instance, "xsettings", "/Net/ThemeName", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGetXFConf(instance, "xsettings", "/Net/IconThemeName", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGetXFConf(instance, "xsettings", "/Gtk/FontName", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGetXFConf(instance, "xsettings", "/Gtk/CursorThemeName", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGetXFConf(instance, "xsettings", "/Gtk/CursorThemeSize", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGetXFConf(instance, "xfce4-desktop", "/backdrop/screen0/monitor0/workspace0/last-image", FF_VARIANT_TYPE_STRING).strValue;
themeName = ffSettingsGetXFConf("xsettings", "/Net/ThemeName", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGetXFConf("xsettings", "/Net/IconThemeName", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGetXFConf("xsettings", "/Gtk/FontName", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGetXFConf("xsettings", "/Gtk/CursorThemeName", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGetXFConf("xsettings", "/Gtk/CursorThemeSize", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGetXFConf("xfce4-desktop", "/backdrop/screen0/monitor0/workspace0/last-image", FF_VARIANT_TYPE_STRING).strValue;
if (!wallpaper) // FIXME: find a way to enumerate possible properties
wallpaper = ffSettingsGetXFConf(instance, "xfce4-desktop", "/backdrop/screen0/monitoreDP-1/workspace0/last-image", FF_VARIANT_TYPE_STRING).strValue;
wallpaper = ffSettingsGetXFConf("xfce4-desktop", "/backdrop/screen0/monitoreDP-1/workspace0/last-image", FF_VARIANT_TYPE_STRING).strValue;
}
else if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_CINNAMON) == 0)
{
themeName = ffSettingsGet(instance, "/org/cinnamon/desktop/interface/gtk-theme", "org.cinnamon.desktop.interface", NULL, "gtk-theme", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGet(instance, "/org/cinnamon/desktop/interface/icon-theme", "org.cinnamon.desktop.interface", NULL, "icon-theme", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGet(instance, "/org/cinnamon/desktop/interface/font-name", "org.cinnamon.desktop.interface", NULL, "font-name", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGet(instance, "/org/cinnamon/desktop/interface/cursor-theme", "org.cinnamon.desktop.interface", NULL, "cursor-theme", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGet(instance, "/org/cinnamon/desktop/interface/cursor-size", "org.cinnamon.desktop.interface", NULL, "cursor-size", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGet(instance, "/org/cinnamon/desktop/background/picture-uri", "org.cinnamon.desktop.background", NULL, "picture-uri", FF_VARIANT_TYPE_STRING).strValue;
themeName = ffSettingsGet("/org/cinnamon/desktop/interface/gtk-theme", "org.cinnamon.desktop.interface", NULL, "gtk-theme", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGet("/org/cinnamon/desktop/interface/icon-theme", "org.cinnamon.desktop.interface", NULL, "icon-theme", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGet("/org/cinnamon/desktop/interface/font-name", "org.cinnamon.desktop.interface", NULL, "font-name", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGet("/org/cinnamon/desktop/interface/cursor-theme", "org.cinnamon.desktop.interface", NULL, "cursor-theme", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGet("/org/cinnamon/desktop/interface/cursor-size", "org.cinnamon.desktop.interface", NULL, "cursor-size", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGet("/org/cinnamon/desktop/background/picture-uri", "org.cinnamon.desktop.background", NULL, "picture-uri", FF_VARIANT_TYPE_STRING).strValue;
}
else if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_MATE) == 0)
{
themeName = ffSettingsGet(instance, "/org/mate/interface/gtk-theme", "org.mate.interface", NULL, "gtk-theme", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGet(instance, "/org/mate/interface/icon-theme", "org.mate.interface", NULL, "icon-theme", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGet(instance, "/org/mate/interface/font-name", "org.mate.interface", NULL, "font-name", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGet(instance, "/org/mate/peripherals-mouse/cursor-theme", "org.mate.peripherals-mouse", NULL, "cursor-theme", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGet(instance, "/org/mate/peripherals-mouse/cursor-size", "org.mate.peripherals-mouse", NULL, "cursor-size", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGet(instance, "/org/mate/desktop/background", "org.mate.background", NULL, "picture-filename", FF_VARIANT_TYPE_STRING).strValue;
themeName = ffSettingsGet("/org/mate/interface/gtk-theme", "org.mate.interface", NULL, "gtk-theme", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGet("/org/mate/interface/icon-theme", "org.mate.interface", NULL, "icon-theme", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGet("/org/mate/interface/font-name", "org.mate.interface", NULL, "font-name", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGet("/org/mate/peripherals-mouse/cursor-theme", "org.mate.peripherals-mouse", NULL, "cursor-theme", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGet("/org/mate/peripherals-mouse/cursor-size", "org.mate.peripherals-mouse", NULL, "cursor-size", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGet("/org/mate/desktop/background", "org.mate.background", NULL, "picture-filename", FF_VARIANT_TYPE_STRING).strValue;
}
else if(
ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_GNOME) == 0 ||
@@ -95,12 +95,12 @@ static void detectGTKFromSettings(const FFinstance* instance, FFGTKResult* resul
ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_UNITY) == 0 ||
ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_BUDGIE) == 0
) {
themeName = ffSettingsGet(instance, "/org/gnome/desktop/interface/gtk-theme", "org.gnome.desktop.interface", NULL, "gtk-theme", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGet(instance, "/org/gnome/desktop/interface/icon-theme", "org.gnome.desktop.interface", NULL, "icon-theme", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGet(instance, "/org/gnome/desktop/interface/font-name", "org.gnome.desktop.interface", NULL, "font-name", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGet(instance, "/org/gnome/desktop/interface/cursor-theme", "org.gnome.desktop.interface", NULL, "cursor-theme", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGet(instance, "/org/gnome/desktop/interface/cursor-size", "org.gnome.desktop.interface", NULL, "cursor-size", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGet(instance, "/org/gnome/desktop/background/picture-uri", "org.gnome.desktop.background", NULL, "picture-uri", FF_VARIANT_TYPE_STRING).strValue;
themeName = ffSettingsGet("/org/gnome/desktop/interface/gtk-theme", "org.gnome.desktop.interface", NULL, "gtk-theme", FF_VARIANT_TYPE_STRING).strValue;
iconsName = ffSettingsGet("/org/gnome/desktop/interface/icon-theme", "org.gnome.desktop.interface", NULL, "icon-theme", FF_VARIANT_TYPE_STRING).strValue;
fontName = ffSettingsGet("/org/gnome/desktop/interface/font-name", "org.gnome.desktop.interface", NULL, "font-name", FF_VARIANT_TYPE_STRING).strValue;
cursorTheme = ffSettingsGet("/org/gnome/desktop/interface/cursor-theme", "org.gnome.desktop.interface", NULL, "cursor-theme", FF_VARIANT_TYPE_STRING).strValue;
cursorSize = ffSettingsGet("/org/gnome/desktop/interface/cursor-size", "org.gnome.desktop.interface", NULL, "cursor-size", FF_VARIANT_TYPE_INT).intValue;
wallpaper = ffSettingsGet("/org/gnome/desktop/background/picture-uri", "org.gnome.desktop.background", NULL, "picture-uri", FF_VARIANT_TYPE_STRING).strValue;
}
ffThreadMutexUnlock(&mutex);
@@ -157,18 +157,18 @@ static void detectGTKFromConfigDir(FFstrbuf* configDir, const char* version, FFG
ffStrbufSubstrBefore(configDir, configDirLength);
}
static void detectGTK(const FFinstance* instance, const char* version, FFGTKResult* result)
static void detectGTK(const char* version, FFGTKResult* result)
{
//Mate, Cinnamon, Gnome, Unity, Budgie use dconf to save theme config
//On other DEs, this will do nothing
detectGTKFromSettings(instance, result);
detectGTKFromSettings(result);
if(allPropertiesSet(result))
return;
//We need to do this because we use multiple threads on configDirs
FF_STRBUF_AUTO_DESTROY baseDir = ffStrbufCreateA(64);
FF_LIST_FOR_EACH(FFstrbuf, configDir, instance->state.platform.configDirs)
FF_LIST_FOR_EACH(FFstrbuf, configDir, instance.state.platform.configDirs)
{
ffStrbufSet(&baseDir, configDir);
detectGTKFromConfigDir(&baseDir, version, result);
@@ -193,21 +193,21 @@ static void detectGTK(const FFinstance* instance, const char* version, FFGTKResu
ffStrbufInit(&result.cursor); \
ffStrbufInit(&result.cursorSize); \
ffStrbufInit(&result.wallpaper); \
detectGTK(instance, #version, &result); \
detectGTK(#version, &result); \
ffThreadMutexUnlock(&mutex); \
return &result;
const FFGTKResult* ffDetectGTK2(const FFinstance* instance)
const FFGTKResult* ffDetectGTK2(void)
{
FF_DETECT_GTK_IMPL(2)
}
const FFGTKResult* ffDetectGTK3(const FFinstance* instance)
const FFGTKResult* ffDetectGTK3(void)
{
FF_DETECT_GTK_IMPL(3)
}
const FFGTKResult* ffDetectGTK4(const FFinstance* instance)
const FFGTKResult* ffDetectGTK4(void)
{
FF_DETECT_GTK_IMPL(4)
}
+4 -4
View File
@@ -24,9 +24,9 @@ typedef struct FFQtResult
FFstrbuf wallpaper;
} FFQtResult;
const FFGTKResult* ffDetectGTK2(const FFinstance* instance);
const FFGTKResult* ffDetectGTK4(const FFinstance* instance);
const FFGTKResult* ffDetectGTK3(const FFinstance* instance);
const FFQtResult* ffDetectQt(const FFinstance* instance);
const FFGTKResult* ffDetectGTK2(void);
const FFGTKResult* ffDetectGTK4(void);
const FFGTKResult* ffDetectGTK3(void);
const FFQtResult* ffDetectQt(void);
#endif
+9 -9
View File
@@ -81,14 +81,14 @@ static bool detectPlasmaFromFile(const char* filename, FFQtResult* result)
return true;
}
static void detectPlasma(const FFinstance* instance, FFQtResult* result)
static void detectPlasma(FFQtResult* result)
{
bool foundAFile = false;
//We need to do this because we use multiple threads on configDirs
FF_STRBUF_AUTO_DESTROY baseDir = ffStrbufCreateA(64);
FF_LIST_FOR_EACH(FFstrbuf, configDir, instance->state.platform.configDirs)
FF_LIST_FOR_EACH(FFstrbuf, configDir, instance.state.platform.configDirs)
{
ffStrbufSet(&baseDir, configDir);
ffStrbufAppendS(&baseDir, "kdeglobals");
@@ -123,18 +123,18 @@ static void detectPlasma(const FFinstance* instance, FFQtResult* result)
ffStrbufAppendS(&result->font, "Noto Sans, 10");
}
static void detectLXQt(const FFinstance* instance, FFQtResult* result)
static void detectLXQt(FFQtResult* result)
{
ffParsePropFileConfigValues(instance, "lxqt/lxqt.conf", 3, (FFpropquery[]) {
ffParsePropFileConfigValues("lxqt/lxqt.conf", 3, (FFpropquery[]) {
{"style = ", &result->widgetStyle},
{"icon_theme = ", &result->icons},
{"font = ", &result->font}
});
ffParsePropFileConfig(instance, "pcmanfm-qt/lxqt/settings.conf", "Wallpaper=", &result->wallpaper);
ffParsePropFileConfig("pcmanfm-qt/lxqt/settings.conf", "Wallpaper=", &result->wallpaper);
}
const FFQtResult* ffDetectQt(const FFinstance* instance)
const FFQtResult* ffDetectQt(void)
{
static FFQtResult result;
@@ -154,12 +154,12 @@ const FFQtResult* ffDetectQt(const FFinstance* instance)
ffStrbufInit(&result.font);
ffStrbufInit(&result.wallpaper);
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_PLASMA) == 0)
detectPlasma(instance, &result);
detectPlasma(&result);
else if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_LXQT) == 0)
detectLXQt(instance, &result);
detectLXQt(&result);
ffThreadMutexUnlock(&mutex);
return &result;
+1 -1
View File
@@ -5,6 +5,6 @@
#include "fastfetch.h"
const char* ffDetectIcons(const FFinstance* instance, FFstrbuf* result);
const char* ffDetectIcons(FFstrbuf* result);
#endif
+6 -6
View File
@@ -3,17 +3,17 @@
#include "detection/gtk_qt/gtk_qt.h"
#include "detection/displayserver/displayserver.h"
const char* ffDetectIcons(const FFinstance* instance, FFstrbuf* result)
const char* ffDetectIcons(FFstrbuf* result)
{
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
if(ffStrbufIgnCaseCompS(&wmde->wmProtocolName, FF_WM_PROTOCOL_TTY) == 0)
return "Icons aren't supported in TTY";
const FFstrbuf* plasma = &ffDetectQt(instance)->icons;
const FFstrbuf* gtk2 = &ffDetectGTK2(instance)->icons;
const FFstrbuf* gtk3 = &ffDetectGTK3(instance)->icons;
const FFstrbuf* gtk4 = &ffDetectGTK4(instance)->icons;
const FFstrbuf* plasma = &ffDetectQt()->icons;
const FFstrbuf* gtk2 = &ffDetectGTK2()->icons;
const FFstrbuf* gtk3 = &ffDetectGTK3()->icons;
const FFstrbuf* gtk4 = &ffDetectGTK4()->icons;
if(plasma->length == 0 && gtk2->length == 0 && gtk3->length == 0 && gtk4->length == 0)
return "No icons could be found";
+1 -1
View File
@@ -1,6 +1,6 @@
#include "icons.h"
const char* ffDetectIcons(FF_MAYBE_UNUSED const FFinstance* instance, FF_MAYBE_UNUSED FFstrbuf* result)
const char* ffDetectIcons(FF_MAYBE_UNUSED FFstrbuf* result)
{
return "Not supported on this platform";
}
+1 -1
View File
@@ -1,7 +1,7 @@
#include "icons.h"
#include "util/windows/registry.h"
const char* ffDetectIcons(FF_MAYBE_UNUSED const FFinstance* instance, FFstrbuf* result)
const char* ffDetectIcons(FFstrbuf* result)
{
FF_HKEY_AUTO_DESTROY hKey = NULL;
if(!ffRegOpenKeyForRead(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\ClassicStartMenu", &hKey, NULL))
+3 -3
View File
@@ -1,9 +1,9 @@
#include "media.h"
#include "detection/internal.h"
void ffDetectMediaImpl(const FFinstance* instance, FFMediaResult* media);
void ffDetectMediaImpl(FFMediaResult* media);
const FFMediaResult* ffDetectMedia(const FFinstance* instance)
const FFMediaResult* ffDetectMedia(void)
{
FF_DETECTION_INTERNAL_GUARD(FFMediaResult,
ffStrbufInit(&result.error);
@@ -15,7 +15,7 @@ const FFMediaResult* ffDetectMedia(const FFinstance* instance)
ffStrbufInit(&result.url);
ffStrbufInit(&result.status);
ffDetectMediaImpl(instance, &result);
ffDetectMediaImpl(&result);
if(result.song.length == 0 && result.error.length == 0)
ffStrbufAppendS(&result.error, "No media found");
+1 -1
View File
@@ -17,6 +17,6 @@ typedef struct FFMediaResult
FFstrbuf status;
} FFMediaResult;
const FFMediaResult* ffDetectMedia(const FFinstance* instance);
const FFMediaResult* ffDetectMedia();
#endif
+1 -1
View File
@@ -77,7 +77,7 @@ static const char* getMedia(FFMediaResult* result)
return error;
}
void ffDetectMediaImpl(const FFinstance* instance, FFMediaResult* media)
void ffDetectMediaImpl(FFMediaResult* media)
{
FF_UNUSED(instance)
const char* error = getMedia(media);
+6 -7
View File
@@ -152,17 +152,17 @@ static void getBestBus(FFDBusData* data, FFMediaResult* result)
data->lib->ffdbus_message_unref(reply);
}
static const char* getMedia(const FFinstance* instance, FFMediaResult* result)
static const char* getMedia(FFMediaResult* result)
{
FFDBusData data;
const char* error = ffDBusLoadData(instance, DBUS_BUS_SESSION, &data);
const char* error = ffDBusLoadData(DBUS_BUS_SESSION, &data);
if(error != NULL)
return error;
// FIXME: This is shared for both player and media module.
// However it uses an option in one specific module
if(instance->config.playerName.length > 0)
getCustomBus(&data, &instance->config.playerName, result);
if(instance.config.playerName.length > 0)
getCustomBus(&data, &instance.config.playerName, result);
else
getBestBus(&data, result);
@@ -171,13 +171,12 @@ static const char* getMedia(const FFinstance* instance, FFMediaResult* result)
#endif
void ffDetectMediaImpl(const FFinstance* instance, FFMediaResult* media)
void ffDetectMediaImpl(FFMediaResult* media)
{
#ifdef FF_HAVE_DBUS
const char* error = getMedia(instance, media);
const char* error = getMedia(media);
ffStrbufAppendS(&media->error, error);
#else
FF_UNUSED(instance);
ffStrbufAppendS(&media->error, "Fastfetch was compiled without DBus support");
#endif
}
+1 -2
View File
@@ -1,7 +1,6 @@
#include "media.h"
void ffDetectMediaImpl(const FFinstance* instance, FFMediaResult* media)
void ffDetectMediaImpl(FFMediaResult* media)
{
FF_UNUSED(instance);
ffStrbufAppendS(&media->error, "Not supported on this platform");
}
+3 -5
View File
@@ -63,13 +63,13 @@ static const char* openCLHandleData(OpenCLData* data, FFOpenCLResult* result)
#endif // defined(FF_HAVE_OPENCL) || defined(__APPLE__)
const char* ffDetectOpenCL(FFinstance* instance, FFOpenCLResult* result)
const char* ffDetectOpenCL(FFOpenCLResult* result)
{
#ifdef FF_HAVE_OPENCL
OpenCLData data;
FF_LIBRARY_LOAD(opencl, &instance->config.libOpenCL, "dlopen libOpenCL"FF_LIBRARY_EXTENSION" failed",
FF_LIBRARY_LOAD(opencl, &instance.config.libOpenCL, "dlopen libOpenCL"FF_LIBRARY_EXTENSION" failed",
#ifdef _WIN32
"OpenCL"FF_LIBRARY_EXTENSION, -1,
#endif
@@ -83,8 +83,6 @@ const char* ffDetectOpenCL(FFinstance* instance, FFOpenCLResult* result)
#elif defined(__APPLE__) // FF_HAVE_OPENCL
FF_UNUSED(instance);
OpenCLData data;
data.ffclGetPlatformIDs = clGetPlatformIDs;
data.ffclGetDeviceIDs = clGetDeviceIDs;
@@ -94,7 +92,7 @@ const char* ffDetectOpenCL(FFinstance* instance, FFOpenCLResult* result)
#else
FF_UNUSED(instance, result);
FF_UNUSED(result);
return "Fastfetch was build without OpenCL support";
#endif // FF_HAVE_OPENCL
+1 -1
View File
@@ -12,6 +12,6 @@ typedef struct FFOpenCLResult
FFstrbuf vendor;
} FFOpenCLResult;
const char* ffDetectOpenCL(FFinstance* instance, FFOpenCLResult* result);
const char* ffDetectOpenCL(FFOpenCLResult* result);
#endif
+1 -1
View File
@@ -13,6 +13,6 @@ typedef struct FFOpenGLResult
FFstrbuf slv;
} FFOpenGLResult;
const char* ffDetectOpenGL(FFinstance* instance, FFOpenGLResult* result);
const char* ffDetectOpenGL(FFOpenGLResult* result);
#endif
+1 -3
View File
@@ -35,10 +35,8 @@ static const char* cglHandlePixelFormat(FFOpenGLResult* result, CGLPixelFormatOb
return error;
}
const char* ffDetectOpenGL(FFinstance* instance, FFOpenGLResult* result)
const char* ffDetectOpenGL(FFOpenGLResult* result)
{
FF_UNUSED(instance);
CGLPixelFormatObj pixelFormat;
CGLPixelFormatAttribute attrs[] = {
kCGLPFAOpenGLProfile, (CGLPixelFormatAttribute) kCGLOGLPVersion_3_2_Core,
+16 -16
View File
@@ -118,11 +118,11 @@ static const char* eglHandleData(FFOpenGLResult* result, EGLData* data)
return error;
}
static const char* eglPrint(FFinstance* instance, FFOpenGLResult* result)
static const char* eglPrint(FFOpenGLResult* result)
{
EGLData eglData;
FF_LIBRARY_LOAD(egl, &instance->config.libEGL, "dlopen egl failed", "libEGL" FF_LIBRARY_EXTENSION, 1);
FF_LIBRARY_LOAD(egl, &instance.config.libEGL, "dlopen egl failed", "libEGL" FF_LIBRARY_EXTENSION, 1);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(egl, eglData, eglGetProcAddress);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(egl, eglData, eglGetDisplay);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(egl, eglData, eglInitialize);
@@ -235,11 +235,11 @@ static const char* glxHandleData(FFOpenGLResult* result, GLXData* data)
return error;
}
static const char* glxPrint(FFinstance* instance, FFOpenGLResult* result)
static const char* glxPrint(FFOpenGLResult* result)
{
GLXData data;
FF_LIBRARY_LOAD(glx, &instance->config.libGLX, "dlopen glx failed", "libGLX" FF_LIBRARY_EXTENSION, 1);
FF_LIBRARY_LOAD(glx, &instance.config.libGLX, "dlopen glx failed", "libGLX" FF_LIBRARY_EXTENSION, 1);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(glx, data, glXGetProcAddress);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(glx, data, XOpenDisplay);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(glx, data, glXChooseVisual);
@@ -299,11 +299,11 @@ static const char* osMesaHandleData(FFOpenGLResult* result, OSMesaData* data)
return error;
}
static const char* osMesaPrint(FFinstance* instance, FFOpenGLResult* result)
static const char* osMesaPrint(FFOpenGLResult* result)
{
OSMesaData data;
FF_LIBRARY_LOAD(osmesa, &instance->config.libOSMesa, "dlopen osmesa failed", "libOSMesa" FF_LIBRARY_EXTENSION, 8);
FF_LIBRARY_LOAD(osmesa, &instance.config.libOSMesa, "dlopen osmesa failed", "libOSMesa" FF_LIBRARY_EXTENSION, 8);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(osmesa, data, OSMesaGetProcAddress);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(osmesa, data, OSMesaCreateContext);
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(osmesa, data, OSMesaMakeCurrent);
@@ -314,32 +314,32 @@ static const char* osMesaPrint(FFinstance* instance, FFOpenGLResult* result)
#endif //FF_HAVE_OSMESA
const char* ffDetectOpenGL(FFinstance* instance, FFOpenGLResult* result)
const char* ffDetectOpenGL(FFOpenGLResult* result)
{
#if FF_HAVE_GL
if(instance->config.openGL.library == FF_OPENGL_LIBRARY_GLX)
if(instance.config.openGL.library == FF_OPENGL_LIBRARY_GLX)
{
#ifdef FF_HAVE_GLX
return glxPrint(instance, result);
return glxPrint(result);
#else
return "fastfetch was compiled without glx support";
#endif
}
if(instance->config.openGL.library == FF_OPENGL_LIBRARY_EGL)
if(instance.config.openGL.library == FF_OPENGL_LIBRARY_EGL)
{
#ifdef FF_HAVE_EGL
return eglPrint(instance, result);
return eglPrint(result);
#else
return "fastfetch was compiled without egl support";
#endif
}
if(instance->config.openGL.library == FF_OPENGL_LIBRARY_OSMESA)
if(instance.config.openGL.library == FF_OPENGL_LIBRARY_OSMESA)
{
#ifdef FF_HAVE_OSMESA
return osMesaPrint(instance, result);
return osMesaPrint(result);
#else
return "fastfetch was compiled without osmesa support";
#endif
@@ -348,12 +348,12 @@ const char* ffDetectOpenGL(FFinstance* instance, FFOpenGLResult* result)
const char* error = ""; // not NULL dummy value
#ifdef FF_HAVE_EGL
error = eglPrint(instance, result);
error = eglPrint(result);
#endif
#ifdef FF_HAVE_GLX
if(error != NULL)
error = glxPrint(instance, result);
error = glxPrint(result);
#endif
//We don't use osmesa in auto mode here, because it is a software implementation,
@@ -363,7 +363,7 @@ const char* ffDetectOpenGL(FFinstance* instance, FFOpenGLResult* result)
#else
FF_UNUSED(instance, result);
FF_UNUSED(result);
return "Fastfetch was built without gl support.";
#endif //FF_HAVE_GL
+1 -3
View File
@@ -82,10 +82,8 @@ LRESULT CALLBACK wglHandleWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM
}
}
const char* ffDetectOpenGL(FFinstance* instance, FFOpenGLResult* result)
const char* ffDetectOpenGL(FFOpenGLResult* result)
{
FF_UNUSED(instance);
MSG msg = {0};
WNDCLASSW wc = {
.lpfnWndProc = wglHandleWndProc,
+3 -3
View File
@@ -1,11 +1,11 @@
#include "os.h"
#include "detection/internal.h"
void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance);
void ffDetectOSImpl(FFOSResult* os);
const FFOSResult* ffDetectOS(const FFinstance* instance)
const FFOSResult* ffDetectOS(void)
{
FF_DETECTION_INTERNAL_GUARD(FFOSResult,
ffDetectOSImpl(&result, instance)
ffDetectOSImpl(&result)
);
}
+1 -1
View File
@@ -19,6 +19,6 @@ typedef struct FFOSResult
FFstrbuf buildID;
} FFOSResult;
const FFOSResult* ffDetectOS(const FFinstance* instance);
const FFOSResult* ffDetectOS();
#endif
+1 -3
View File
@@ -1,10 +1,8 @@
#include "os.h"
#include "common/settings.h"
void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
void ffDetectOSImpl(FFOSResult* os)
{
FF_UNUSED(instance);
ffStrbufInitS(&os->name, "Android");
ffStrbufInitS(&os->prettyName, "Android");
+1 -3
View File
@@ -96,10 +96,8 @@ static void parseOSXSoftwareLicense(FFOSResult* os)
fclose(rtf);
}
void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
void ffDetectOSImpl(FFOSResult* os)
{
FF_UNUSED(instance);
ffStrbufInit(&os->name);
ffStrbufInit(&os->version);
ffStrbufInit(&os->buildID);
+6 -6
View File
@@ -94,15 +94,15 @@ static void getUbuntuFlavour(FFOSResult* result)
}
}
static void detectOS(FFOSResult* os, const FFinstance* instance)
static void detectOS(FFOSResult* os)
{
if(instance->config.osFile.length > 0)
if(instance.config.osFile.length > 0)
{
parseFile(instance->config.osFile.chars, os);
parseFile(instance.config.osFile.chars, os);
return;
}
if(instance->config.escapeBedrock && parseFile(FASTFETCH_TARGET_DIR_ROOT"/bedrock"FASTFETCH_TARGET_DIR_ETC"/bedrock-release", os))
if(instance.config.escapeBedrock && parseFile(FASTFETCH_TARGET_DIR_ROOT"/bedrock"FASTFETCH_TARGET_DIR_ETC"/bedrock-release", os))
{
if(os->id.length == 0)
ffStrbufAppendS(&os->id, "bedrock");
@@ -127,7 +127,7 @@ static void detectOS(FFOSResult* os, const FFinstance* instance)
parseFile(FASTFETCH_TARGET_DIR_ETC"/lsb-release", os);
}
void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
void ffDetectOSImpl(FFOSResult* os)
{
ffStrbufInit(&os->name);
ffStrbufInit(&os->prettyName);
@@ -140,7 +140,7 @@ void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
ffStrbufInit(&os->codename);
ffStrbufInit(&os->buildID);
detectOS(os, instance);
detectOS(os);
if(ffStrbufIgnCaseCompS(&os->id, "ubuntu") == 0)
getUbuntuFlavour(os);
+1 -3
View File
@@ -44,10 +44,8 @@ static const char* getOsNameByWinbrand(FFstrbuf* osName)
}
extern "C"
void ffDetectOSImpl(FFOSResult* os, const FFinstance* instance)
void ffDetectOSImpl(FFOSResult* os)
{
FF_UNUSED(instance);
ffStrbufInit(&os->name);
ffStrbufInit(&os->prettyName);
ffStrbufInit(&os->id);
+3 -3
View File
@@ -3,11 +3,11 @@
#include <stddef.h>
void ffDetectPackagesImpl(const FFinstance* instance, FFPackagesResult* result);
void ffDetectPackagesImpl(FFPackagesResult* result);
const char* ffDetectPackages(const FFinstance* instance, FFPackagesResult* result)
const char* ffDetectPackages(FFPackagesResult* result)
{
ffDetectPackagesImpl(instance, result);
ffDetectPackagesImpl(result);
for(uint32_t i = 0; i < offsetof(FFPackagesResult, all) / sizeof(uint32_t); ++i)
result->all += ((uint32_t *)result)[i];
+1 -1
View File
@@ -32,6 +32,6 @@ typedef struct FFPackagesResult
FFstrbuf pacmanBranch;
} FFPackagesResult;
const char* ffDetectPackages(const FFinstance* instance, FFPackagesResult* result);
const char* ffDetectPackages(FFPackagesResult* result);
#endif
+1 -2
View File
@@ -68,9 +68,8 @@ static uint32_t getMacPortsPackages()
return countMacPortsPackages(FASTFETCH_TARGET_DIR_ROOT"/opt/local");
}
void ffDetectPackagesImpl(const FFinstance* instance, FFPackagesResult* result)
void ffDetectPackagesImpl(FFPackagesResult* result)
{
FF_UNUSED(instance);
getBrewPackages(result);
result->port = getMacPortsPackages();
}
+17 -17
View File
@@ -74,11 +74,11 @@ static uint32_t getNumStrings(FFstrbuf* baseDir, const char* filename, const cha
return num_elements;
}
static uint32_t getSQLite3Int(const FFinstance* instance, FFstrbuf* baseDir, const char* dbPath, const char* query)
static uint32_t getSQLite3Int(FFstrbuf* baseDir, const char* dbPath, const char* query)
{
uint32_t baseDirLength = baseDir->length;
ffStrbufAppendS(baseDir, dbPath);
uint32_t num_elements = (uint32_t) ffSettingsGetSQLite3Int(instance, baseDir->chars, query);
uint32_t num_elements = (uint32_t) ffSettingsGetSQLite3Int(baseDir->chars, query);
ffStrbufSubstrBefore(baseDir, baseDirLength);
return num_elements;
}
@@ -221,9 +221,9 @@ static uint32_t getFlatpak(FFstrbuf* baseDir, const char* dirname)
#include <rpm/rpmdb.h>
#include <rpm/rpmlog.h>
static uint32_t getRpmFromLibrpm(const FFinstance* instance)
static uint32_t getRpmFromLibrpm(void)
{
FF_LIBRARY_LOAD(rpm, &instance->config.librpm, 0, "librpm" FF_LIBRARY_EXTENSION, 12)
FF_LIBRARY_LOAD(rpm, &instance.config.librpm, 0, "librpm" FF_LIBRARY_EXTENSION, 12)
FF_LIBRARY_LOAD_SYMBOL(rpm, rpmReadConfigFiles, 0)
FF_LIBRARY_LOAD_SYMBOL(rpm, rpmtsCreate, 0)
FF_LIBRARY_LOAD_SYMBOL(rpm, rpmtsInitIterator, 0)
@@ -259,7 +259,7 @@ static uint32_t getRpmFromLibrpm(const FFinstance* instance)
#endif //FF_HAVE_RPM
static void getPackageCounts(const FFinstance* instance, FFstrbuf* baseDir, FFPackagesResult* packageCounts)
static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts)
{
packageCounts->apk += getNumStrings(baseDir, "/lib/apk/db/installed", "C:Q");
packageCounts->dpkg += getNumStrings(baseDir, "/var/lib/dpkg/status", "Status: ");
@@ -269,17 +269,17 @@ static void getPackageCounts(const FFinstance* instance, FFstrbuf* baseDir, FFPa
packageCounts->nixDefault += getNixPackages(baseDir, "/nix/var/nix/profiles/default");
packageCounts->nixSystem += getNixPackages(baseDir, "/run/current-system");
packageCounts->pacman += getNumElements(baseDir, "/var/lib/pacman/local", DT_DIR);
packageCounts->pkg += getSQLite3Int(instance, baseDir, "/var/db/pkg/local.sqlite", "SELECT count(id) FROM packages");
packageCounts->rpm += getSQLite3Int(instance, baseDir, "/var/lib/rpm/rpmdb.sqlite", "SELECT count(blob) FROM Packages");
packageCounts->pkg += getSQLite3Int(baseDir, "/var/db/pkg/local.sqlite", "SELECT count(id) FROM packages");
packageCounts->rpm += getSQLite3Int(baseDir, "/var/lib/rpm/rpmdb.sqlite", "SELECT count(blob) FROM Packages");
packageCounts->snap += getSnap(baseDir);
packageCounts->xbps += getXBPS(baseDir, "/var/db/xbps");
packageCounts->brewCask += getNumElements(baseDir, "/home/linuxbrew/.linuxbrew/Caskroom", DT_DIR);
packageCounts->brew += getNumElements(baseDir, "/home/linuxbrew/.linuxbrew/Cellar", DT_DIR);
}
static void getPackageCountsRegular(const FFinstance* instance, FFstrbuf* baseDir, FFPackagesResult* packageCounts)
static void getPackageCountsRegular(FFstrbuf* baseDir, FFPackagesResult* packageCounts)
{
getPackageCounts(instance, baseDir, packageCounts);
getPackageCounts(baseDir, packageCounts);
uint32_t baseDirLength = baseDir->length;
ffStrbufAppendS(baseDir, FASTFETCH_TARGET_DIR_ETC"/pacman-mirrors.conf");
@@ -288,7 +288,7 @@ static void getPackageCountsRegular(const FFinstance* instance, FFstrbuf* baseDi
ffStrbufSubstrBefore(baseDir, baseDirLength);
}
static void getPackageCountsBedrock(const FFinstance* instance, FFstrbuf* baseDir, FFPackagesResult* packageCounts)
static void getPackageCountsBedrock(FFstrbuf* baseDir, FFPackagesResult* packageCounts)
{
uint32_t baseDirLength = baseDir->length;
@@ -313,7 +313,7 @@ static void getPackageCountsBedrock(const FFinstance* instance, FFstrbuf* baseDi
continue;
ffStrbufAppendS(baseDir, entry->d_name);
getPackageCounts(instance, baseDir, packageCounts);
getPackageCounts(baseDir, packageCounts);
ffStrbufSubstrBefore(baseDir, baseDirLength2);
}
@@ -321,25 +321,25 @@ static void getPackageCountsBedrock(const FFinstance* instance, FFstrbuf* baseDi
ffStrbufSubstrBefore(baseDir, baseDirLength);
}
void ffDetectPackagesImpl(const FFinstance* instance, FFPackagesResult* result)
void ffDetectPackagesImpl(FFPackagesResult* result)
{
FF_STRBUF_AUTO_DESTROY baseDir = ffStrbufCreateA(512);
ffStrbufAppendS(&baseDir, FASTFETCH_TARGET_DIR_ROOT);
if(ffStrbufIgnCaseEqualS(&ffDetectOS(instance)->id, "bedrock"))
getPackageCountsBedrock(instance, &baseDir, result);
if(ffStrbufIgnCaseEqualS(&ffDetectOS()->id, "bedrock"))
getPackageCountsBedrock(&baseDir, result);
else
getPackageCountsRegular(instance, &baseDir, result);
getPackageCountsRegular(&baseDir, result);
// If SQL failed, we can still try with librpm.
// This is needed on openSUSE, which seems to use a proprietary database file
// This method doesn't work on bedrock, so we do it here.
#ifdef FF_HAVE_RPM
if(result->rpm == 0)
result->rpm = getRpmFromLibrpm(instance);
result->rpm = getRpmFromLibrpm();
#endif
ffStrbufSet(&baseDir, &instance->state.platform.homeDir);
ffStrbufSet(&baseDir, &instance.state.platform.homeDir);
result->nixUser = getNixPackages(&baseDir, "/.nix-profile");
result->flatpakUser = getFlatpak(&baseDir, "/.local/share/flatpak");
}
+8 -8
View File
@@ -32,7 +32,7 @@ static uint32_t getNumElements(const char* searchPath /* including `\*` suffix *
return counter;
}
static void detectScoop(const FFinstance* instance, FFPackagesResult* result)
static void detectScoop(FFPackagesResult* result)
{
FF_STRBUF_AUTO_DESTROY scoopPath = ffStrbufCreateA(MAX_PATH + 3);
@@ -44,13 +44,13 @@ static void detectScoop(const FFinstance* instance, FFPackagesResult* result)
}
else
{
ffStrbufAppendS(&scoopPath, instance->state.platform.homeDir.chars);
ffStrbufAppendS(&scoopPath, instance.state.platform.homeDir.chars);
ffStrbufAppendS(&scoopPath, "/scoop/apps/*");
}
result->scoop = getNumElements(scoopPath.chars, FILE_ATTRIBUTE_DIRECTORY, "scoop");
}
static void detectChoco(FF_MAYBE_UNUSED const FFinstance* instance, FFPackagesResult* result)
static void detectChoco(FF_MAYBE_UNUSED FFPackagesResult* result)
{
const char* chocoInstall = getenv("ChocolateyInstall");
if(!chocoInstall || chocoInstall[0] == '\0')
@@ -62,7 +62,7 @@ static void detectChoco(FF_MAYBE_UNUSED const FFinstance* instance, FFPackagesRe
result->choco = getNumElements(chocoPath, FILE_ATTRIBUTE_DIRECTORY, "choco");
}
static void detectPacman(FF_MAYBE_UNUSED const FFinstance* instance, FFPackagesResult* result)
static void detectPacman(FF_MAYBE_UNUSED FFPackagesResult* result)
{
const char* msystemPrefix = getenv("MSYSTEM_PREFIX");
if(!msystemPrefix)
@@ -75,9 +75,9 @@ static void detectPacman(FF_MAYBE_UNUSED const FFinstance* instance, FFPackagesR
result->pacman = getNumElements(pacmanPath, FILE_ATTRIBUTE_DIRECTORY, NULL);
}
void ffDetectPackagesImpl(const FFinstance* instance, FFPackagesResult* result)
void ffDetectPackagesImpl(FFPackagesResult* result)
{
detectScoop(instance, result);
detectChoco(instance, result);
detectPacman(instance, result);
detectScoop(result);
detectChoco(result);
detectPacman(result);
}
+1 -1
View File
@@ -14,7 +14,7 @@ typedef struct PowerAdapterResult
int watts;
} PowerAdapterResult;
const char* ffDetectPowerAdapterImpl(FFinstance* instance, FFlist* results);
const char* ffDetectPowerAdapterImpl(FFlist* results);
#define FF_POWERADAPTER_UNSET -2
#define FF_POWERADAPTER_NOT_CONNECTED -1
@@ -4,10 +4,8 @@
#include <IOKit/IOKitLib.h>
const char* ffDetectPowerAdapterImpl(FFinstance* instance, FFlist* results)
const char* ffDetectPowerAdapterImpl(FFlist* results)
{
FF_UNUSED(instance);
CFMutableDictionaryRef matchDict = IOServiceMatching("AppleSmartBattery");
if (matchDict == NULL)
return "IOServiceMatching(\"AppleSmartBattery\") failed";
@@ -1,7 +1,7 @@
#include "fastfetch.h"
const char* ffDetectPowerAdapterImpl(FFinstance* instance, FFlist* results)
const char* ffDetectPowerAdapterImpl(FFlist* results)
{
FF_UNUSED(instance, results);
FF_UNUSED(results);
return "Not supported on this platform";
}
+1 -1
View File
@@ -16,6 +16,6 @@ typedef struct FFSoundDevice
bool active;
} FFSoundDevice;
const char* ffDetectSound(const FFinstance* instance, FFlist* devices /* List of FFSoundDevice */);
const char* ffDetectSound(FFlist* devices /* List of FFSoundDevice */);
#endif
+1 -1
View File
@@ -8,7 +8,7 @@
#define kAudioObjectPropertyElementMain kAudioObjectPropertyElementMaster
#endif
const char* ffDetectSound(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* devices /* List of FFSoundDevice */)
const char* ffDetectSound(FFlist* devices /* List of FFSoundDevice */)
{
AudioDeviceID mainDeviceId;
UInt32 dataSize = sizeof(mainDeviceId);
+5 -5
View File
@@ -36,9 +36,9 @@ static void paServerInfoCallback(pa_context *c, const pa_server_info *i, void *u
}
}
static const char* detectSound(const FFinstance* instance, FFlist* devices)
static const char* detectSound(FFlist* devices)
{
FF_LIBRARY_LOAD(pulse, &instance->config.libPulse, "Failed to load libpulse" FF_LIBRARY_EXTENSION, "libpulse" FF_LIBRARY_EXTENSION, 0)
FF_LIBRARY_LOAD(pulse, &instance.config.libPulse, "Failed to load libpulse" FF_LIBRARY_EXTENSION, "libpulse" FF_LIBRARY_EXTENSION, 0)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(pulse, pa_mainloop_new)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(pulse, pa_mainloop_get_api)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(pulse, pa_mainloop_iterate)
@@ -119,12 +119,12 @@ static const char* detectSound(const FFinstance* instance, FFlist* devices)
#endif // FF_HAVE_PULSE
const char* ffDetectSound(const FFinstance* instance, FFlist* devices)
const char* ffDetectSound(FFlist* devices)
{
#ifdef FF_HAVE_PULSE
return detectSound(instance, devices);
return detectSound(devices);
#else
FF_UNUSED(instance, devices);
FF_UNUSED(devices);
return "Fastfetch was built without libpulse support";
#endif
}
+1 -1
View File
@@ -1,6 +1,6 @@
#include "sound.h"
const char* ffDetectSound(FF_MAYBE_UNUSED const FFinstance* instance, FF_MAYBE_UNUSED FFlist* devices /* List of FFSoundDevice */)
const char* ffDetectSound(FF_MAYBE_UNUSED FFlist* devices /* List of FFSoundDevice */)
{
return "Not supported on this platform";
}
+1 -1
View File
@@ -9,7 +9,7 @@ extern "C" {
#include <endpointvolume.h>
#include <functiondiscoverykeys_devpkey.h>
const char* ffDetectSound(FF_MAYBE_UNUSED const FFinstance* instance, FF_MAYBE_UNUSED FFlist* devices /* List of FFSoundDevice */)
const char* ffDetectSound(FFlist* devices /* List of FFSoundDevice */)
{
const char* error = ffInitCom();
if (error)
+1 -1
View File
@@ -41,7 +41,7 @@ static bool parseHwmonDir(FFstrbuf* dir, FFTempValue* value)
return value->name.length > 0 || value->deviceClass > 0;
}
const FFTempsResult* ffDetectTemps()
const FFTempsResult* ffDetectTemps(void)
{
static FFTempsResult result;
static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER;
+22 -22
View File
@@ -4,7 +4,7 @@
#include "detection/internal.h"
#include "detection/terminalshell/terminalshell.h"
static void detectAlacritty(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectAlacritty(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate();
@@ -15,11 +15,11 @@ static void detectAlacritty(const FFinstance* instance, FFTerminalFontResult* te
};
// alacritty parses config files in this order
ffParsePropFileConfigValues(instance, "alacritty/alacritty.yml", 2, fontQuery);
ffParsePropFileConfigValues("alacritty/alacritty.yml", 2, fontQuery);
if(fontName.length == 0 || fontSize.length == 0)
ffParsePropFileConfigValues(instance, "alacritty.yml", 2, fontQuery);
ffParsePropFileConfigValues("alacritty.yml", 2, fontQuery);
if(fontName.length == 0 || fontSize.length == 0)
ffParsePropFileConfigValues(instance, ".alacritty.yml", 2, fontQuery);
ffParsePropFileConfigValues(".alacritty.yml", 2, fontQuery);
//by default alacritty uses its own font called alacritty
if(fontName.length == 0)
@@ -238,7 +238,7 @@ static void detectFromWindowsTeriminal(const FFstrbuf* terminalExe, FFTerminalFo
#endif //defined(_WIN32) || defined(__linux__)
FF_MAYBE_UNUSED static bool detectKitty(const FFinstance* instance, FFTerminalFontResult* result)
FF_MAYBE_UNUSED static bool detectKitty(FFTerminalFontResult* result)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate();
@@ -248,7 +248,7 @@ FF_MAYBE_UNUSED static bool detectKitty(const FFinstance* instance, FFTerminalFo
{"font_size ", &fontSize},
};
if(!ffParsePropFileConfigValues(instance, "kitty/kitty.conf", 2, fontQuery))
if(!ffParsePropFileConfigValues("kitty/kitty.conf", 2, fontQuery))
return false;
if(fontName.length == 0)
@@ -261,7 +261,7 @@ FF_MAYBE_UNUSED static bool detectKitty(const FFinstance* instance, FFTerminalFo
return true;
}
static void detectTerminator(const FFinstance* instance, FFTerminalFontResult* result)
static void detectTerminator(FFTerminalFontResult* result)
{
FF_STRBUF_AUTO_DESTROY useSystemFont = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
@@ -271,7 +271,7 @@ static void detectTerminator(const FFinstance* instance, FFTerminalFontResult* r
{"font =", &fontName},
};
if(!ffParsePropFileConfigValues(instance, "terminator/config", 2, fontQuery))
if(!ffParsePropFileConfigValues("terminator/config", 2, fontQuery))
{
ffStrbufAppendS(&result->error, "Couldn't read Terminator config file");
return;
@@ -289,7 +289,7 @@ static void detectTerminator(const FFinstance* instance, FFTerminalFontResult* r
ffFontInitPango(&result->font, fontName.chars);
}
static bool detectWezterm(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminalFontResult* result)
static bool detectWezterm(FFTerminalFontResult* result)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
@@ -316,7 +316,7 @@ static bool detectWezterm(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminal
return true;
}
static bool detectTabby(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminalFontResult* result)
static bool detectTabby(FFTerminalFontResult* result)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate();
@@ -326,7 +326,7 @@ static bool detectTabby(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminalFo
{"fontSize: ", &fontSize},
};
if(!ffParsePropFileConfigValues(instance, "tabby/config.yaml", 2, fontQuery))
if(!ffParsePropFileConfigValues("tabby/config.yaml", 2, fontQuery))
return false;
if(fontName.length == 0)
@@ -339,24 +339,24 @@ static bool detectTabby(FF_MAYBE_UNUSED const FFinstance* instance, FFTerminalFo
return true;
}
void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont);
void ffDetectTerminalFontPlatform(const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont);
static bool detectTerminalFontCommon(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
static bool detectTerminalFontCommon(const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
{
if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "alacritty"))
detectAlacritty(instance, terminalFont);
detectAlacritty(terminalFont);
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "terminator"))
detectTerminator(instance, terminalFont);
detectTerminator(terminalFont);
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "wezterm-gui"))
detectWezterm(instance, terminalFont);
detectWezterm(terminalFont);
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "tabby"))
detectTabby(instance, terminalFont);
detectTabby(terminalFont);
#ifndef _WIN32
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalExe, "/dev/pts/"))
ffStrbufAppendS(&terminalFont->error, "Terminal font detection is not supported on PTS");
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "kitty"))
detectKitty(instance, terminalFont);
detectKitty(terminalFont);
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalExe, "/dev/tty"))
detectTTY(terminalFont);
#endif
@@ -374,15 +374,15 @@ static bool detectTerminalFontCommon(const FFinstance* instance, const FFTermina
return true;
}
bool ffDetectTerminalFont(const FFinstance* instance, FFTerminalFontResult* result)
bool ffDetectTerminalFont(FFTerminalFontResult* result)
{
const FFTerminalShellResult* terminalShell = ffDetectTerminalShell(instance);
const FFTerminalShellResult* terminalShell = ffDetectTerminalShell();
if(terminalShell->terminalProcessName.length == 0)
ffStrbufAppendS(&result->error, "Terminal font needs successful terminal detection");
else if(!detectTerminalFontCommon(instance, terminalShell, result))
ffDetectTerminalFontPlatform(instance, terminalShell, result);
else if(!detectTerminalFontCommon(terminalShell, result))
ffDetectTerminalFontPlatform(terminalShell, result);
if(result->error.length == 0 && result->font.pretty.length == 0)
ffStrbufAppendF(&result->error, "Unknown terminal: %s", terminalShell->terminalProcessName.chars);
+1 -1
View File
@@ -12,6 +12,6 @@ typedef struct FFTerminalFontResult
FFfont font;
} FFTerminalFontResult;
bool ffDetectTerminalFont(const FFinstance* instance, FFTerminalFontResult* result);
bool ffDetectTerminalFont(FFTerminalFontResult* result);
#endif
@@ -11,11 +11,11 @@
#define FF_TERMUX_FONT_PATH FASTFETCH_TARGET_DIR_HOME "/.termux/font.ttf"
const char* detectTermux(const FFinstance* instance, FFTerminalFontResult* terminalFont)
const char* detectTermux(FFTerminalFontResult* terminalFont)
{
#ifdef FF_HAVE_FREETYPE
FF_LIBRARY_LOAD(freetype, &instance->config.libfreetype, "dlopen libfreetype"FF_LIBRARY_EXTENSION " failed", "libfreetype"FF_LIBRARY_EXTENSION, 2)
FF_LIBRARY_LOAD(freetype, &instance.config.libfreetype, "dlopen libfreetype"FF_LIBRARY_EXTENSION " failed", "libfreetype"FF_LIBRARY_EXTENSION, 2)
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(freetype, FT_Init_FreeType);
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(freetype, FT_New_Face);
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(freetype, FT_Done_Face);
@@ -53,7 +53,7 @@ exit:
#endif
}
void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
void ffDetectTerminalFontPlatform(const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
{
if(ffStrbufCompS(&terminalShell->terminalProcessName, "Termux") != 0)
{
@@ -67,5 +67,5 @@ void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalSh
return;
}
ffStrbufSetS(&terminalFont->error, detectTermux(instance, terminalFont));
ffStrbufSetS(&terminalFont->error, detectTermux(terminalFont));
}
@@ -7,7 +7,7 @@
#include <string.h>
#import <Foundation/Foundation.h>
static void detectIterm2(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectIterm2(FFTerminalFontResult* terminalFont)
{
const char* profile = getenv("ITERM_PROFILE");
if (profile == NULL)
@@ -17,7 +17,7 @@ static void detectIterm2(const FFinstance* instance, FFTerminalFontResult* termi
}
NSError* error;
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/com.googlecode.iterm2.plist", instance->state.platform.homeDir.chars];
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/com.googlecode.iterm2.plist", instance.state.platform.homeDir.chars];
NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
error:&error];
if(error)
@@ -58,10 +58,10 @@ static void detectAppleTerminal(FFTerminalFontResult* terminalFont)
ffFontInitWithSpace(&terminalFont->font, font.chars);
}
static void detectWarpTerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectWarpTerminal(FFTerminalFontResult* terminalFont)
{
NSError* error;
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/dev.warp.Warp-Stable.plist", instance->state.platform.homeDir.chars];
NSString* fileName = [NSString stringWithFormat:@"file://%s/Library/Preferences/dev.warp.Warp-Stable.plist", instance.state.platform.homeDir.chars];
NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:fileName]
error:&error];
if(error)
@@ -83,13 +83,13 @@ static void detectWarpTerminal(const FFinstance* instance, FFTerminalFontResult*
ffFontInitValues(&terminalFont->font, fontName.UTF8String, fontSize.UTF8String);
}
void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
void ffDetectTerminalFontPlatform(const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
{
if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "iterm.app") == 0 ||
ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "iTermServer-"))
detectIterm2(instance, terminalFont);
detectIterm2(terminalFont);
else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "Apple_Terminal") == 0)
detectAppleTerminal(terminalFont);
else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "WarpTerminal") == 0)
detectWarpTerminal(instance, terminalFont);
detectWarpTerminal(terminalFont);
}
+34 -34
View File
@@ -7,29 +7,29 @@
#include "util/mallocHelper.h"
#include "util/stringUtils.h"
static const char* getSystemMonospaceFont(const FFinstance* instance)
static const char* getSystemMonospaceFont(void)
{
const FFDisplayServerResult* wmde = ffConnectDisplayServer(instance);
const FFDisplayServerResult* wmde = ffConnectDisplayServer();
if(ffStrbufIgnCaseEqualS(&wmde->dePrettyName, "Cinnamon"))
{
const char* systemMonospaceFont = ffSettingsGet(instance, "/org/cinnamon/desktop/interface/monospace-font-name", "org.cinnamon.desktop.interface", NULL, "monospace-font-name", FF_VARIANT_TYPE_STRING).strValue;
const char* systemMonospaceFont = ffSettingsGet("/org/cinnamon/desktop/interface/monospace-font-name", "org.cinnamon.desktop.interface", NULL, "monospace-font-name", FF_VARIANT_TYPE_STRING).strValue;
if(ffStrSet(systemMonospaceFont))
return systemMonospaceFont;
}
else if(ffStrbufIgnCaseEqualS(&wmde->dePrettyName, "Mate"))
{
const char* systemMonospaceFont = ffSettingsGet(instance, "/org/mate/interface/monospace-font-name", "org.mate.interface", NULL, "monospace-font-name", FF_VARIANT_TYPE_STRING).strValue;
const char* systemMonospaceFont = ffSettingsGet("/org/mate/interface/monospace-font-name", "org.mate.interface", NULL, "monospace-font-name", FF_VARIANT_TYPE_STRING).strValue;
if(ffStrSet(systemMonospaceFont))
return systemMonospaceFont;
}
return ffSettingsGet(instance, "/org/gnome/desktop/interface/monospace-font-name", "org.gnome.desktop.interface", NULL, "monospace-font-name", FF_VARIANT_TYPE_STRING).strValue;
return ffSettingsGet("/org/gnome/desktop/interface/monospace-font-name", "org.gnome.desktop.interface", NULL, "monospace-font-name", FF_VARIANT_TYPE_STRING).strValue;
}
static void detectFromGSettings(const FFinstance* instance, const char* profilePath, const char* profileList, const char* profile, const char* defaultProfileKey, FFTerminalFontResult* terminalFont)
static void detectFromGSettings(const char* profilePath, const char* profileList, const char* profile, const char* defaultProfileKey, FFTerminalFontResult* terminalFont)
{
FF_AUTO_FREE const char* defaultProfile = ffSettingsGetGSettings(instance, profileList, NULL, defaultProfileKey, FF_VARIANT_TYPE_STRING).strValue;
FF_AUTO_FREE const char* defaultProfile = ffSettingsGetGSettings(profileList, NULL, defaultProfileKey, FF_VARIANT_TYPE_STRING).strValue;
if(!ffStrSet(defaultProfile))
{
ffStrbufAppendF(&terminalFont->error, "Could not get default profile from gsettings: %s", profileList);
@@ -41,9 +41,9 @@ static void detectFromGSettings(const FFinstance* instance, const char* profileP
ffStrbufAppendS(&path, defaultProfile);
ffStrbufAppendC(&path, '/');
if(!ffSettingsGetGSettings(instance, profile, path.chars, "use-system-font", FF_VARIANT_TYPE_BOOL).boolValue)
if(!ffSettingsGetGSettings(profile, path.chars, "use-system-font", FF_VARIANT_TYPE_BOOL).boolValue)
{
FF_AUTO_FREE const char* fontName = ffSettingsGetGSettings(instance, profile, path.chars, "font", FF_VARIANT_TYPE_STRING).strValue;
FF_AUTO_FREE const char* fontName = ffSettingsGetGSettings(profile, path.chars, "font", FF_VARIANT_TYPE_STRING).strValue;
if(ffStrSet(fontName))
ffFontInitPango(&terminalFont->font, fontName);
else
@@ -51,7 +51,7 @@ static void detectFromGSettings(const FFinstance* instance, const char* profileP
}
else
{
const char* fontName = getSystemMonospaceFont(instance);
const char* fontName = getSystemMonospaceFont();
if(ffStrSet(fontName))
ffFontInitPango(&terminalFont->font, fontName);
else
@@ -59,10 +59,10 @@ static void detectFromGSettings(const FFinstance* instance, const char* profileP
}
}
static void detectFromConfigFile(const FFinstance* instance, const char* configFile, const char* start, FFTerminalFontResult* terminalFont)
static void detectFromConfigFile(const char* configFile, const char* start, FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
ffParsePropFileConfig(instance, configFile, start, &fontName);
ffParsePropFileConfig(configFile, start, &fontName);
if(fontName.length == 0)
ffStrbufAppendF(&terminalFont->error, "Couldn't find %s in .config/%s", start, configFile);
@@ -70,10 +70,10 @@ static void detectFromConfigFile(const FFinstance* instance, const char* configF
ffFontInitPango(&terminalFont->font, fontName.chars);
}
static void detectKonsole(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectKonsole(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY profile = ffStrbufCreate();
ffParsePropFileConfig(instance, "konsolerc", "DefaultProfile =", &profile);
ffParsePropFileConfig("konsolerc", "DefaultProfile =", &profile);
if(profile.length == 0)
{
@@ -86,7 +86,7 @@ static void detectKonsole(const FFinstance* instance, FFTerminalFontResult* term
ffStrbufAppend(&profilePath, &profile);
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
ffParsePropFileData(instance, profilePath.chars, "Font =", &fontName);
ffParsePropFileData(profilePath.chars, "Font =", &fontName);
if(fontName.length == 0)
ffStrbufAppendF(&terminalFont->error, "Couldn't find \"Font=%%[^\\n]\" in \"%s\"", profilePath.chars);
@@ -94,12 +94,12 @@ static void detectKonsole(const FFinstance* instance, FFTerminalFontResult* term
ffFontInitQt(&terminalFont->font, fontName.chars);
}
static void detectXFCETerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectXFCETerminal(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY useSysFont = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
ffParsePropFileConfigValues(instance, "xfce4/terminal/terminalrc", 2, (FFpropquery[]) {
ffParsePropFileConfigValues("xfce4/terminal/terminalrc", 2, (FFpropquery[]) {
{"FontUseSystem = ", &useSysFont},
{"FontName = ", &fontName}
});
@@ -113,7 +113,7 @@ static void detectXFCETerminal(const FFinstance* instance, FFTerminalFontResult*
}
else
{
const char* systemFontName = ffSettingsGetXFConf(instance, "xsettings", "/Gtk/MonospaceFontName", FF_VARIANT_TYPE_STRING).strValue;
const char* systemFontName = ffSettingsGetXFConf("xsettings", "/Gtk/MonospaceFontName", FF_VARIANT_TYPE_STRING).strValue;
if(ffStrSet(systemFontName))
ffFontInitPango(&terminalFont->font, systemFontName);
else
@@ -121,13 +121,13 @@ static void detectXFCETerminal(const FFinstance* instance, FFTerminalFontResult*
}
}
static void detectDeepinTerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectDeepinTerminal(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY profile = ffStrbufCreate();
ffStrbufAppend(&profile, &instance->state.platform.homeDir);
ffStrbufAppend(&profile, &instance.state.platform.homeDir);
ffStrbufAppendS(&profile, ".config/deepin/deepin-terminal/config.conf"); //TODO: Use config dirs
FILE* file = fopen(profile.chars, "r");
@@ -164,11 +164,11 @@ static void detectDeepinTerminal(const FFinstance* instance, FFTerminalFontResul
ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars);
}
static void detectFootTerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectFootTerminal(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY font = ffStrbufCreate();
if (!ffParsePropFileConfig(instance, "foot/foot.ini", "font=", &font) || !ffStrSet(font.chars))
if (!ffParsePropFileConfig("foot/foot.ini", "font=", &font) || !ffStrSet(font.chars))
{
ffFontInitValues(&terminalFont->font, "monospace", "8");
return;
@@ -191,12 +191,12 @@ static void detectFootTerminal(const FFinstance* instance, FFTerminalFontResult*
ffFontInitValues(&terminalFont->font, font.chars, &font.chars[equal + strlen("size=")]);
}
static void detectQTerminal(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectQTerminal(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate();
ffParsePropFileConfigValues(instance, "qterminal.org/qterminal.ini", 2, (FFpropquery[]) {
ffParsePropFileConfigValues("qterminal.org/qterminal.ini", 2, (FFpropquery[]) {
{"fontFamily=", &fontName},
{"fontSize=", &fontSize},
});
@@ -208,24 +208,24 @@ static void detectQTerminal(const FFinstance* instance, FFTerminalFontResult* te
ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars);
}
void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
void ffDetectTerminalFontPlatform(const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
{
if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "konsole"))
detectKonsole(instance, terminalFont);
detectKonsole(terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "xfce4-terminal"))
detectXFCETerminal(instance, terminalFont);
detectXFCETerminal(terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "lxterminal"))
detectFromConfigFile(instance, "lxterminal/lxterminal.conf", "fontname =", terminalFont);
detectFromConfigFile("lxterminal/lxterminal.conf", "fontname =", terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "tilix"))
detectFromGSettings(instance, "/com/gexperts/Tilix/profiles/", "com.gexperts.Tilix.ProfilesList", "com.gexperts.Tilix.Profile", "default", terminalFont);
detectFromGSettings("/com/gexperts/Tilix/profiles/", "com.gexperts.Tilix.ProfilesList", "com.gexperts.Tilix.Profile", "default", terminalFont);
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "gnome-terminal-"))
detectFromGSettings(instance, "/org/gnome/terminal/legacy/profiles:/:", "org.gnome.Terminal.ProfilesList", "org.gnome.Terminal.Legacy.Profile", "default", terminalFont);
detectFromGSettings("/org/gnome/terminal/legacy/profiles:/:", "org.gnome.Terminal.ProfilesList", "org.gnome.Terminal.Legacy.Profile", "default", terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "mate-terminal"))
detectFromGSettings(instance, "/org/mate/terminal/profiles/", "org.mate.terminal.global", "org.mate.terminal.profile", "default-profile", terminalFont);
detectFromGSettings("/org/mate/terminal/profiles/", "org.mate.terminal.global", "org.mate.terminal.profile", "default-profile", terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "deepin-terminal"))
detectDeepinTerminal(instance, terminalFont);
detectDeepinTerminal(terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "foot"))
detectFootTerminal(instance, terminalFont);
detectFootTerminal(terminalFont);
else if(ffStrbufIgnCaseEqualS(&terminalShell->terminalProcessName, "qterminal"))
detectQTerminal(instance, terminalFont);
detectQTerminal(terminalFont);
}
@@ -6,16 +6,16 @@
#include <windows.h>
static void detectMintty(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectMintty(FFTerminalFontResult* terminalFont)
{
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontSize = ffStrbufCreate();
if(!ffParsePropFileConfigValues(instance, "mintty/config", 2, (FFpropquery[]) {
if(!ffParsePropFileConfigValues("mintty/config", 2, (FFpropquery[]) {
{"Font=", &fontName},
{"FontHeight=", &fontSize}
}))
ffParsePropFileConfigValues(instance, ".minttyrc", 2, (FFpropquery[]) {
ffParsePropFileConfigValues(".minttyrc", 2, (FFpropquery[]) {
{"Font=", &fontName},
{"FontHeight=", &fontSize}
});
@@ -27,10 +27,8 @@ static void detectMintty(const FFinstance* instance, FFTerminalFontResult* termi
ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars);
}
static void detectConhost(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectConhost(FFTerminalFontResult* terminalFont)
{
FF_UNUSED(instance);
CONSOLE_FONT_INFOEX cfi = { .cbSize = sizeof(cfi) };
if(!GetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi))
{
@@ -46,10 +44,8 @@ static void detectConhost(const FFinstance* instance, FFTerminalFontResult* term
ffFontInitValues(&terminalFont->font, fontName.chars, fontSize);
}
static void detectConEmu(const FFinstance* instance, FFTerminalFontResult* terminalFont)
static void detectConEmu(FFTerminalFontResult* terminalFont)
{
FF_UNUSED(instance)
//https://conemu.github.io/en/ConEmuXml.html#search-sequence
FF_STRBUF_AUTO_DESTROY path = ffStrbufCreate();
FF_STRBUF_AUTO_DESTROY fontName = ffStrbufCreate();
@@ -89,12 +85,12 @@ static void detectConEmu(const FFinstance* instance, FFTerminalFontResult* termi
ffFontInitValues(&terminalFont->font, fontName.chars, fontSize.chars);
}
void ffDetectTerminalFontPlatform(const FFinstance* instance, const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
void ffDetectTerminalFontPlatform(const FFTerminalShellResult* terminalShell, FFTerminalFontResult* terminalFont)
{
if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "mintty") == 0)
detectMintty(instance, terminalFont);
detectMintty(terminalFont);
else if(ffStrbufIgnCaseCompS(&terminalShell->terminalProcessName, "conhost.exe") == 0)
detectConhost(instance, terminalFont);
detectConhost(terminalFont);
else if(ffStrbufStartsWithIgnCaseS(&terminalShell->terminalProcessName, "ConEmuC"))
detectConEmu(instance, terminalFont);
detectConEmu(terminalFont);
}

Some files were not shown because too many files have changed in this diff Show More