Skip to content

Commit b602bb2

Browse files
committed
Battery (Linux): print the same format of battery status as other platforms
1 parent 46ed242 commit b602bb2

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/detection/battery/battery_linux.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include <dirent.h>
77

8+
// https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power
9+
810
static void parseBattery(FFstrbuf* dir, const char* id, FFBatteryOptions* options, FFlist* results)
911
{
1012
uint32_t dirLength = dir->length;
@@ -68,6 +70,26 @@ static void parseBattery(FFstrbuf* dir, const char* id, FFBatteryOptions* option
6870
ffStrbufTrimRightSpace(&result->status);
6971
ffStrbufSubstrBefore(dir, dirLength);
7072

73+
// Unknown, Charging, Discharging, Not charging, Full
74+
if (ffStrbufEqualS(&result->status, "Not charging") || ffStrbufEqualS(&result->status, "Full"))
75+
ffStrbufSetStatic(&result->status, "AC Connected");
76+
else if (ffStrbufEqualS(&result->status, "Unknown"))
77+
ffStrbufClear(&result->status);
78+
79+
ffStrbufAppendS(dir, "/capacity_level");
80+
if (ffReadFileBuffer(dir->chars, &tmpBuffer))
81+
{
82+
ffStrbufTrimRightSpace(&result->manufacturer);
83+
if (ffStrbufEqualS(&tmpBuffer, "Critical"))
84+
{
85+
if (result->status.length)
86+
ffStrbufAppendS(&result->status, ", Critical");
87+
else
88+
ffStrbufSetStatic(&result->status, "Critical");
89+
}
90+
}
91+
ffStrbufSubstrBefore(dir, dirLength);
92+
7193
ffStrbufInit(&result->serial);
7294
ffStrbufAppendS(dir, "/serial_number");
7395
if (ffReadFileBuffer(dir->chars, &result->serial))

0 commit comments

Comments
 (0)