diff --git a/completions/bash b/completions/bash index 1504da9ae..f986b57fe 100644 --- a/completions/bash +++ b/completions/bash @@ -180,6 +180,7 @@ __fastfetch_completion() "--lib-PCI" "--lib-X11" "--lib-Xrandr" + "--lib-gio" "--lib-DConf" "--lib-wayland" "--battery-dir" diff --git a/src/common/gsettings.c b/src/common/gsettings.c index 2f5b6dca3..9a390bca4 100644 --- a/src/common/gsettings.c +++ b/src/common/gsettings.c @@ -31,7 +31,7 @@ static int transformGSettingsToDConf(int c) return c == '.' ? '/' : c; } -static const char* getDConfValue(DConfData* data, const char* schemaName, const char* key) +static const char* getDConfValue(DConfData* data, const char* schemaName, const char* path, const char* key) { if(data->client == NULL) return NULL; @@ -41,6 +41,11 @@ static const char* getDConfValue(DConfData* data, const char* schemaName, const ffStrbufAppendC(&dconfStyleKey, '/'); ffStrbufAppendTransformS(&dconfStyleKey, schemaName, transformGSettingsToDConf); ffStrbufAppendC(&dconfStyleKey, '/'); + if(path != NULL && *path != '\0') + { + ffStrbufAppendS(&dconfStyleKey, path); + ffStrbufAppendC(&dconfStyleKey, '/'); + } ffStrbufAppendS(&dconfStyleKey, key); GVariant* variant = data->ffdconf_client_read_full(data->client, dconfStyleKey.chars, DCONF_READ_FLAGS_NONE, NULL); @@ -59,7 +64,7 @@ static const char* getDConfValue(DConfData* data, const char* schemaName, const return NULL; } -static const char* dconfGetValue(FFinstance* instance, const char* schemaName, const char* key) +static const char* dconfGetValue(FFinstance* instance, const char* schemaName, const char* path, const char* key) { static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static bool init = false; @@ -71,7 +76,7 @@ static const char* dconfGetValue(FFinstance* instance, const char* schemaName, c if(init) { pthread_mutex_unlock(&mutex); - return getDConfValue(&data, schemaName, key); + return getDConfValue(&data, schemaName, path, key); } init = true; @@ -101,24 +106,24 @@ static const char* dconfGetValue(FFinstance* instance, const char* schemaName, c } pthread_mutex_unlock(&mutex); - return getDConfValue(&data, schemaName, key); + return getDConfValue(&data, schemaName, path, key); } -static const char* getGSettingsValue(FFinstance* instance, GSettingsData* data, const char* schemaName, const char* key) +static const char* getGSettingsValue(FFinstance* instance, GSettingsData* data, const char* schemaName, const char* path, const char* key) { if(data->schemaSource == NULL) - return dconfGetValue(instance, schemaName, key); + return dconfGetValue(instance, schemaName, path, key); GSettingsSchema* schema = data->ffg_settings_schema_source_lookup(data->schemaSource, schemaName, true); if(schema == NULL) - return dconfGetValue(instance, schemaName, key); + return dconfGetValue(instance, schemaName, path, key); if(data->ffg_settings_schema_has_key(schema, key) == 0) - return dconfGetValue(instance, schemaName, key); + return dconfGetValue(instance, schemaName, path, key); - GSettings* settings = data->ffg_settings_new_full(schema, NULL, NULL); + GSettings* settings = data->ffg_settings_new_full(schema, NULL, path); if(settings == NULL) - return dconfGetValue(instance, schemaName, key); + return dconfGetValue(instance, schemaName, path, key); GVariant* variant = data->ffg_settings_get_value(settings, key); @@ -129,17 +134,17 @@ static const char* getGSettingsValue(FFinstance* instance, GSettingsData* data, variant = data->ffg_settings_get_default_value(settings, key); if(variant == NULL) - return dconfGetValue(instance, schemaName, key); + return dconfGetValue(instance, schemaName, path, key); const char* value = data->ffg_variant_get_string(variant, NULL); if(value == NULL || *value == '\0') - return dconfGetValue(instance, schemaName, key); + return dconfGetValue(instance, schemaName, path, key); return value; } -const char* ffGSettingsGetValue(FFinstance* instance, const char* schemaName, const char* key) +const char* ffGSettingsGetValuePath(FFinstance* instance, const char* schemaName, const char* path, const char* key) { static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static bool init = false; @@ -151,7 +156,7 @@ const char* ffGSettingsGetValue(FFinstance* instance, const char* schemaName, co if(init) { pthread_mutex_unlock(&mutex); - return getGSettingsValue(instance, &data, schemaName, key); + return getGSettingsValue(instance, &data, schemaName, path, key); } init = true; @@ -192,5 +197,10 @@ const char* ffGSettingsGetValue(FFinstance* instance, const char* schemaName, co } pthread_mutex_unlock(&mutex); - return getGSettingsValue(instance, &data, schemaName, key); + return getGSettingsValue(instance, &data, schemaName, path, key); +} + +const char* ffGSettingsGetValue(FFinstance* instance, const char* schemaName, const char* key) +{ + return ffGSettingsGetValuePath(instance, schemaName, NULL, key); } diff --git a/src/fastfetch.h b/src/fastfetch.h index 1e2a9d92d..fc9cf42cd 100644 --- a/src/fastfetch.h +++ b/src/fastfetch.h @@ -249,7 +249,8 @@ void ffGetFont(const char* font, FFstrbuf* name, double* size); void ffGetFontPretty(FFstrbuf* buffer, const FFstrbuf* name, double size); //common/gsettings.c -const char* ffGSettingsGetValue(FFinstance* instance, const char* schema, const char* key); +const char* ffGSettingsGetValuePath(FFinstance* instance, const char* schemaName, const char* path, const char* key); +const char* ffGSettingsGetValue(FFinstance* instance, const char* schemaName, const char* key); //common/detectPlasma.c const FFPlasmaResult* ffDetectPlasma(FFinstance* instance);