Skip to content

Commit 7edc715

Browse files
Merge branch 'dev' of github.com:LinusDierheimer/fastfetch into dev
2 parents 27f7659 + e8bde5a commit 7edc715

File tree

12 files changed

+157
-17
lines changed

12 files changed

+157
-17
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Features:
2727
* Detect scaled resolutions (Windows, macOS)
2828
* Optimise font module printing (Windows)
2929
* Detect pacman package count inside MSYS2 environment (Windows)
30+
* Add Wifi / Battery module support for Android
3031

3132
Logos:
3233
* Raspbian (@IamNoRobot, #373)

CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ elseif(ANDROID)
351351
list(APPEND LIBFASTFETCH_SRC
352352
src/common/networking_linux.c
353353
src/common/processing_linux.c
354-
src/detection/battery/battery_nosupport.c
354+
src/detection/battery/battery_android.c
355355
src/detection/bios/bios_nosupport.c
356356
src/detection/board/board_nosupport.c
357357
src/detection/brightness/brightness_nosupport.c
@@ -378,7 +378,7 @@ elseif(ANDROID)
378378
src/detection/terminalshell/terminalshell_linux.c
379379
src/detection/uptime/uptime_linux.c
380380
src/detection/users/users_linux.c
381-
src/detection/wifi/wifi_nosupport.c
381+
src/detection/wifi/wifi_android.c
382382
src/detection/wmtheme/wmtheme_nosupport.c
383383
src/util/platform/FFPlatform_unix.c
384384
)

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Fastfetch is a [neofetch](https://github.com/dylanaraps/neofetch)-like tool for
1010
<img src="screenshots/example3.png" width="48%" align="top" />
1111
<img src="screenshots/example5.png" height="15%" align="top" />
1212

13+
There are [screenshots on different platforms](https://github.com/LinusDierheimer/fastfetch/wiki)
14+
1315
## Customization
1416

1517
With customization and speed being two competing goals, this project actually builds two executables.
@@ -79,6 +81,7 @@ For the image logo, only chafa is supported due to [the design flaw of ConPTY](h
7981

8082
* [`freetype`](https://www.freetype.org/): Used for Termux font detection. [`freetype`](https://github.com/termux/termux-packages/tree/master/packages/freetype)
8183
* [`libvulkan`](https://www.vulkan.org/): Vulkan module, also used for GPU detection. Usually has been provided by Android system. [`vulkan-loader-android`](https://github.com/termux/termux-packages/tree/master/packages/vulkan-loader-android) [`vulkan-headers`](https://github.com/termux/termux-packages/tree/master/packages/vulkan-headers)
84+
* [`termux-api`](https://github.com/termux/termux-api-package): Used for Wifi / Battery detection. Read [the official doc](https://wiki.termux.com/wiki/Termux:API) for detail or if you hang on these modules (IMPORTANT). [`termux-api`](https://github.com/termux/termux-packages/tree/master/packages/termux-api)
8285

8386
## Support status
8487
All categories not listed here should work without needing a specific implementation.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include "fastfetch.h"
2+
#include "battery.h"
3+
4+
#include "common/processing.h"
5+
#include "common/properties.h"
6+
7+
const char* ffDetectBatteryImpl(FF_MAYBE_UNUSED FFinstance* instance, FFlist* results)
8+
{
9+
FF_STRBUF_AUTO_DESTROY buffer;
10+
ffStrbufInit(&buffer);
11+
12+
if(ffProcessAppendStdOut(&buffer, (char* const[]){
13+
FASTFETCH_TARGET_DIR_ROOT "/libexec/termux-api",
14+
"BatteryStatus"
15+
}))
16+
return "Starting `" FASTFETCH_TARGET_DIR_ROOT "/libexec/termux-api" " BatteryStatus` failed";
17+
18+
BatteryResult* battery = ffListAdd(results);
19+
battery->temperature = FF_BATTERY_TEMP_UNSET;
20+
ffStrbufInit(&battery->manufacturer);
21+
ffStrbufInit(&battery->modelName);
22+
ffStrbufInit(&battery->status);
23+
ffStrbufInit(&battery->technology);
24+
25+
if(ffParsePropLines(buffer.chars, "\"percentage\": ", &battery->status))
26+
{
27+
battery->capacity = ffStrbufToDouble(&battery->status);
28+
ffStrbufClear(&battery->status);
29+
}
30+
31+
if(ffParsePropLines(buffer.chars, "\"status\": ", &battery->status))
32+
{
33+
ffStrbufTrimRight(&battery->status, ',');
34+
ffStrbufTrim(&battery->status, '"');
35+
}
36+
37+
return NULL;
38+
}

src/detection/cpu/cpu_linux.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ static double getFrequency(const char* info, const char* scaling)
6767
return getGHz(scaling);
6868
}
6969

70-
static double detectCPUTemp()
70+
static double detectCPUTemp(void)
7171
{
7272
const FFTempsResult* temps = ffDetectTemps();
7373

@@ -107,7 +107,7 @@ static void parseIsa(FFstrbuf* cpuIsa)
107107
void ffDetectCPUImpl(const FFinstance* instance, FFCPUResult* cpu)
108108
{
109109
if(instance->config.cpuTemp)
110-
cpu->temperature = detectCPUTemp(instance);
110+
cpu->temperature = detectCPUTemp();
111111
else
112112
cpu->temperature = FF_CPU_TEMP_UNSET;
113113

src/detection/disk/disk_linux.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,11 @@ static void detectName(FFDisk* disk, const FFstrbuf* device)
121121

122122
#ifdef __ANDROID__
123123

124-
static void detectType(const FFlist* devices, FFDisk* currentDisk, const char* options)
124+
static void detectType(FF_MAYBE_UNUSED const FFlist* devices, FFDisk* currentDisk, FF_MAYBE_UNUSED const char* options)
125125
{
126126
if(ffStrbufEqualS(&currentDisk->mountpoint, "/") || ffStrbufEqualS(&currentDisk->mountpoint, "/storage/emulated"))
127127
currentDisk->type = FF_DISK_TYPE_REGULAR;
128-
else if(ffStrbufStartsWithS(&disk->mountpoint, "/mnt/media_rw/"))
128+
else if(ffStrbufStartsWithS(&currentDisk->mountpoint, "/mnt/media_rw/"))
129129
currentDisk->type = FF_DISK_TYPE_EXTERNAL;
130130
else
131131
currentDisk->type = FF_DISK_TYPE_HIDDEN;

src/detection/wifi/wifi_android.c

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#include "wifi.h"
2+
3+
#include "common/processing.h"
4+
#include "common/properties.h"
5+
6+
const char* ffDetectWifi(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* result)
7+
{
8+
FF_STRBUF_AUTO_DESTROY buffer;
9+
ffStrbufInit(&buffer);
10+
11+
if(ffProcessAppendStdOut(&buffer, (char* const[]){
12+
FASTFETCH_TARGET_DIR_ROOT "/libexec/termux-api",
13+
"WifiConnectionInfo"
14+
}))
15+
return "Starting `" FASTFETCH_TARGET_DIR_ROOT "/libexec/termux-api" " WifiConnectionInfo` failed";
16+
17+
FFWifiResult* item = (FFWifiResult*)ffListAdd(result);
18+
ffStrbufInit(&item->inf.description);
19+
ffStrbufInit(&item->inf.status);
20+
ffStrbufInit(&item->conn.status);
21+
ffStrbufInit(&item->conn.ssid);
22+
ffStrbufInit(&item->conn.macAddress);
23+
ffStrbufInit(&item->conn.protocol);
24+
ffStrbufInit(&item->conn.security);
25+
item->conn.signalQuality = 0.0/0.0;
26+
item->conn.rxRate = 0.0/0.0;
27+
item->conn.txRate = 0.0/0.0;
28+
29+
if(!ffParsePropLines(buffer.chars, "\"supplicant_state\": ", &item->inf.status))
30+
ffStrbufAppendS(&item->inf.status, "Unknown");
31+
32+
{
33+
ffStrbufTrimRight(&item->inf.status, ',');
34+
ffStrbufTrim(&item->inf.status, '"');
35+
if(!ffStrbufEqualS(&item->inf.status, "COMPLETED"))
36+
return NULL;
37+
}
38+
39+
if(ffParsePropLines(buffer.chars, "\"rssi\": ", &item->inf.description))
40+
{
41+
double rssi = ffStrbufToDouble(&item->inf.description);
42+
item->conn.signalQuality = rssi >= -50 ? 100 : rssi <= -100 ? 0 : (rssi + 100) * 2;
43+
ffStrbufClear(&item->inf.description);
44+
}
45+
46+
if(ffParsePropLines(buffer.chars, "\"network_id\": ", &item->inf.description))
47+
ffStrbufTrimRight(&item->inf.description, ',');
48+
49+
if(ffParsePropLines(buffer.chars, "\"bssid\": ", &item->conn.macAddress))
50+
{
51+
ffStrbufTrimRight(&item->conn.macAddress, ',');
52+
ffStrbufTrim(&item->conn.macAddress, '"');
53+
}
54+
55+
if(ffParsePropLines(buffer.chars, "\"ssid\": ", &item->conn.ssid))
56+
{
57+
ffStrbufTrimRight(&item->conn.ssid, ',');
58+
ffStrbufTrim(&item->conn.ssid, '"');
59+
}
60+
61+
return NULL;
62+
}

src/detection/wifi/wifi_apple.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070

7171
switch(inf.security)
7272
{
73+
case kCWSecurityNone:
74+
ffStrbufAppendS(&item->conn.security, "Insecure");
75+
break;
7376
case kCWSecurityWEP:
7477
ffStrbufAppendS(&item->conn.security, "WEP");
7578
break;

src/detection/wifi/wifi_linux.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,6 @@ static const char* detectWifiWithLibnm(const FFinstance* instance, FFlist* resul
161161
ffStrbufSetS(&item->conn.protocol, "802.11a/b/g");
162162
}
163163
}
164-
if(!item->conn.protocol.length)
165-
ffStrbufAppendS(&item->conn.protocol, "802.11");
166164

167165
NM80211ApFlags flags = ffnm_access_point_get_flags(ap);
168166
NM80211ApSecurityFlags wpaFlags = ffnm_access_point_get_wpa_flags(ap);
@@ -188,7 +186,10 @@ static const char* detectWifiWithLibnm(const FFinstance* instance, FFlist* resul
188186
|| (rsnFlags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)) {
189187
ffStrbufAppendS(&item->conn.security, "802.1X ");
190188
}
191-
ffStrbufTrimRight(&item->conn.security, ' ');
189+
if (!item->conn.security.length)
190+
ffStrbufAppendS(&item->conn.security, "Insecure");
191+
else
192+
ffStrbufTrimRight(&item->conn.security, ' ');
192193
}
193194

194195
ffg_object_unref(client);
@@ -294,9 +295,10 @@ static const char* detectWifiWithIoctls(FF_MAYBE_UNUSED const FFinstance* instan
294295
case IW_ENCODE_ALG_AES_CMAC:
295296
ffStrbufAppendS(&item->conn.security, "CMAC");
296297
break;
298+
default:
299+
ffStrbufAppendF(&item->conn.security, "Unknown (%d)", (int) iwe->alg);
300+
break;
297301
}
298-
} else {
299-
ffStrbufAppendS(&item->conn.security, "unknown");
300302
}
301303

302304
close(sock);

src/detection/wifi/wifi_windows.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ const char* ffDetectWifi(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* res
198198
if(connInfo->wlanSecurityAttributes.bOneXEnabled)
199199
ffStrbufAppendS(&item->conn.security, " 802.11X");
200200
}
201+
else
202+
ffStrbufAppendS(&item->conn.security, "Insecure");
201203

202204
ffWlanFreeMemory(connInfo);
203205
}

0 commit comments

Comments
 (0)