mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
Battery: add power adapter support ( macOS )
This commit is contained in:
@@ -183,6 +183,7 @@ static void defaultConfig(FFinstance* instance)
|
||||
initModuleArg(&instance->config.swap);
|
||||
initModuleArg(&instance->config.disk);
|
||||
initModuleArg(&instance->config.battery);
|
||||
initModuleArg(&instance->config.powerAdapter);
|
||||
initModuleArg(&instance->config.locale);
|
||||
initModuleArg(&instance->config.localIP);
|
||||
initModuleArg(&instance->config.publicIP);
|
||||
|
||||
@@ -12,6 +12,8 @@ typedef struct BatteryResult
|
||||
FFstrbuf technology;
|
||||
FFstrbuf capacity;
|
||||
FFstrbuf status;
|
||||
FFstrbuf adapterName;
|
||||
int adapterWatts;
|
||||
} BatteryResult;
|
||||
|
||||
const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results);
|
||||
|
||||
@@ -69,6 +69,16 @@ const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results)
|
||||
else
|
||||
ffStrbufAppendS(&battery->status, "");
|
||||
|
||||
ffStrbufInit(&battery->adapterName);
|
||||
battery->adapterWatts = -1;
|
||||
|
||||
CFDictionaryRef adapter;
|
||||
if(!ffCfDictGetDict(properties, CFSTR("AdapterDetails"), &adapter))
|
||||
{
|
||||
ffCfDictGetInt(adapter, CFSTR("Watts"), &battery->adapterWatts);
|
||||
ffCfDictGetString(adapter, CFSTR("Name"), &battery->adapterName);
|
||||
}
|
||||
|
||||
CFRelease(properties);
|
||||
IOObjectRelease(registryEntry);
|
||||
}
|
||||
|
||||
@@ -70,6 +70,9 @@ static void parseBattery(FFstrbuf* dir, FFlist* results)
|
||||
ffStrbufAppendS(dir, "/status");
|
||||
ffReadFileBuffer(dir->chars, &result->status);
|
||||
ffStrbufSubstrBefore(dir, dirLength);
|
||||
|
||||
ffStrbufInitA(&result->adapterName, 0);
|
||||
result->adapterWatts = -1;
|
||||
}
|
||||
|
||||
const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results) {
|
||||
|
||||
@@ -1117,6 +1117,12 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con
|
||||
optionParseString(key, value, &instance->config.battery.outputFormat);
|
||||
else if(strcasecmp(key, "--battery-error") == 0)
|
||||
optionParseString(key, value, &instance->config.battery.errorFormat);
|
||||
else if(strcasecmp(key, "--power-adapter-key") == 0)
|
||||
optionParseString(key, value, &instance->config.powerAdapter.key);
|
||||
else if(strcasecmp(key, "--power-adapter-format") == 0)
|
||||
optionParseString(key, value, &instance->config.powerAdapter.outputFormat);
|
||||
else if(strcasecmp(key, "--power-adapter-error") == 0)
|
||||
optionParseString(key, value, &instance->config.powerAdapter.errorFormat);
|
||||
else if(strcasecmp(key, "--locale-key") == 0)
|
||||
optionParseString(key, value, &instance->config.locale.key);
|
||||
else if(strcasecmp(key, "--locale-format") == 0)
|
||||
|
||||
@@ -116,6 +116,7 @@ typedef struct FFconfig
|
||||
FFModuleArgs swap;
|
||||
FFModuleArgs disk;
|
||||
FFModuleArgs battery;
|
||||
FFModuleArgs powerAdapter;
|
||||
FFModuleArgs locale;
|
||||
FFModuleArgs localIP;
|
||||
FFModuleArgs publicIP;
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
#define FF_BATTERY_MODULE_NAME "Battery"
|
||||
#define FF_BATTERY_NUM_FORMAT_ARGS 5
|
||||
|
||||
#define FF_POWER_ADAPTER_MODULE_NAME "Power Adapter"
|
||||
#define FF_POWER_ADAPTER_MODULE_ARGS 2
|
||||
|
||||
static void printBattery(FFinstance* instance, const BatteryResult* result, uint8_t index)
|
||||
{
|
||||
if(instance->config.battery.outputFormat.length == 0)
|
||||
@@ -44,6 +47,26 @@ static void printBattery(FFinstance* instance, const BatteryResult* result, uint
|
||||
{FF_FORMAT_ARG_TYPE_STRBUF, &result->status}
|
||||
});
|
||||
}
|
||||
|
||||
if(result->adapterWatts != -1)
|
||||
{
|
||||
if(instance->config.powerAdapter.outputFormat.length == 0)
|
||||
{
|
||||
ffPrintLogoAndKey(instance, FF_POWER_ADAPTER_MODULE_NAME, index, &instance->config.powerAdapter.key);
|
||||
|
||||
if(result->adapterName.length > 0)
|
||||
puts(result->adapterName.chars);
|
||||
else
|
||||
printf("%dW\n", result->adapterWatts);
|
||||
}
|
||||
else
|
||||
{
|
||||
ffPrintFormat(instance, FF_POWER_ADAPTER_MODULE_NAME, index, &instance->config.powerAdapter, FF_POWER_ADAPTER_MODULE_ARGS, (FFformatarg[]){
|
||||
{FF_FORMAT_ARG_TYPE_INT, &result->adapterWatts},
|
||||
{FF_FORMAT_ARG_TYPE_STRBUF, &result->adapterName},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ffPrintBattery(FFinstance* instance)
|
||||
|
||||
@@ -57,3 +57,13 @@ const char* ffCfDictGetInt(CFDictionaryRef dict, CFStringRef key, int* result)
|
||||
return "Number type is not SInt32";
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char* ffCfDictGetDict(CFDictionaryRef dict, CFStringRef key, CFDictionaryRef* result)
|
||||
{
|
||||
CFDictionaryRef cf = (CFDictionaryRef)CFDictionaryGetValue(dict, key);
|
||||
if (cf == NULL || CFGetTypeID(cf) != CFDictionaryGetTypeID())
|
||||
return "TypeID is not 'CFDictionary'";
|
||||
|
||||
*result = cf;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -11,5 +11,6 @@ const char* ffCfStrGetString(CFStringRef str, FFstrbuf* result);
|
||||
const char* ffCfDictGetString(CFDictionaryRef dict, CFStringRef key, FFstrbuf* result);
|
||||
const char* ffCfDictGetBool(CFDictionaryRef dict, CFStringRef key, bool* result);
|
||||
const char* ffCfDictGetInt(CFDictionaryRef dict, CFStringRef key, int* result);
|
||||
const char* ffCfDictGetDict(CFDictionaryRef dict, CFStringRef key, CFDictionaryRef* result);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user