Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ jobs:
with:
msystem: CLANG64
update: true
install: git mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-cjson mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-opencl-icd
install: git zip mingw-w64-clang-x86_64-cmake mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-cjson mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-x86_64-opencl-icd

- name: print msys version
run: uname -a
Expand Down Expand Up @@ -188,14 +188,14 @@ jobs:
- name: run tests
run: ctest

- name: create zip archive
run: zip fastfetch-windows.zip *.dll fastfetch.exe flashfetch.exe

- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-windows
path: |
./*.dll
./fastfetch.exe
./flashfetch.exe
path: ./fastfetch-windows.zip

windows-old:
name: Windows-old
Expand All @@ -215,7 +215,7 @@ jobs:
with:
msystem: MINGW64
update: true
install: git mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-cjson mingw-w64-x86_64-vulkan-loader mingw-w64-x86_64-opencl-icd
install: git zip mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-cjson mingw-w64-x86_64-vulkan-loader mingw-w64-x86_64-opencl-icd

- name: print msys version
run: uname -a
Expand Down Expand Up @@ -262,14 +262,14 @@ jobs:
- name: run tests
run: ctest

- name: create zip archive
run: zip fastfetch-windows-old.zip *.dll fastfetch.exe flashfetch.exe

- name: upload artifacts
uses: actions/upload-artifact@v3
with:
name: fastfetch-windows-old
path: |
./*.dll
./fastfetch.exe
./flashfetch.exe
path: ./fastfetch-windows-old.zip

release:
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'LinusDierheimer/fastfetch'
Expand Down
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
# 1.8.1

Notable Changes:

* `Song` was used as an alias to `Media` module. It's removed to avoid confusion. All song related flags (`--song-key`, etc) should change to media (`--media-key`, etc).

Bugfixes:

* Mountpoint paths don't get decoded (#364)
* Adds a missing else statement to fix color parsing (#365)

# 1.8.0

This release introduces Windows support! Fastfetch now fully support all major desktop OSes (Linux, macOS, Windows and FreeBSD)
Expand Down Expand Up @@ -72,7 +83,7 @@ Features:
* MacPorts package manager support (@SladeGetz, #234)
* Battery support for MacOS (@CarterLi, #235)
* Processes, swap & terminal font support for MacOS(@CarterLi, #237)
* Song support for MacOS (@CarterLi, #242)
* Media support for MacOS (@CarterLi, #242)
* Player support for MacOS (@CarterLi, #245)
* WM theme support for MacOS (@CarterLi, #246)
* CPU usage support for MacOS (@CarterLi, #247)
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url

project(fastfetch
VERSION 1.8.0
VERSION 1.8.1
LANGUAGES C
DESCRIPTION "Fast system information tool"
HOMEPAGE_URL "https://github.com/LinusDierheimer/fastfetch"
Expand Down Expand Up @@ -284,7 +284,7 @@ set(LIBFASTFETCH_SRC
src/modules/resolution.c
src/modules/separator.c
src/modules/shell.c
src/modules/song.c
src/modules/media.c
src/modules/terminal.c
src/modules/terminalfont.c
src/modules/theme.c
Expand Down
2 changes: 1 addition & 1 deletion presets/all
Original file line number Diff line number Diff line change
@@ -1 +1 @@
--structure Title:Separator:OS:Host:Bios:Board:Chassis:Kernel:Uptime:Processes:Packages:Shell:Resolution:DE:WM:WMTheme:Theme:Icons:Font:Cursor:Terminal:TerminalFont:CPU:CPUUsage:GPU:Memory:Swap:Disk:Battery:PowerAdapter:Player:Song:PublicIP:LocalIP:Wifi:DateTime:Locale:Vulkan:OpenGL:OpenCL:Users:Weather:Break:Colors
--structure Title:Separator:OS:Host:Bios:Board:Chassis:Kernel:Uptime:Processes:Packages:Shell:Resolution:DE:WM:WMTheme:Theme:Icons:Font:Cursor:Terminal:TerminalFont:CPU:CPUUsage:GPU:Memory:Swap:Disk:Battery:PowerAdapter:Player:Media:PublicIP:LocalIP:Wifi:DateTime:Locale:Vulkan:OpenGL:OpenCL:Users:Weather:Break:Colors
4 changes: 2 additions & 2 deletions src/common/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ static void defaultConfig(FFinstance* instance)
initModuleArg(&instance->config.weather);
initModuleArg(&instance->config.wifi);
initModuleArg(&instance->config.player);
initModuleArg(&instance->config.song);
initModuleArg(&instance->config.media);
initModuleArg(&instance->config.dateTime);
initModuleArg(&instance->config.date);
initModuleArg(&instance->config.time);
Expand Down Expand Up @@ -425,7 +425,7 @@ static void destroyConfig(FFinstance* instance)
destroyModuleArg(&instance->config.weather);
destroyModuleArg(&instance->config.wifi);
destroyModuleArg(&instance->config.player);
destroyModuleArg(&instance->config.song);
destroyModuleArg(&instance->config.media);
destroyModuleArg(&instance->config.dateTime);
destroyModuleArg(&instance->config.date);
destroyModuleArg(&instance->config.time);
Expand Down
6 changes: 3 additions & 3 deletions src/data/config_user.txt
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@
#--wifi-key Wifi
#--weather-key Weather
#--player-key Media Player
#--song-key Song
#--media-key Media
#--datetime-key Date Time
#--vulkan-key Vulkan
#--opengl-key OpenGL
Expand Down Expand Up @@ -290,7 +290,7 @@
#--public-ip-format
#--weather-format
#--player-format
#--song-format
#--media-format
#--datetime-format
#--vulkan-format
#--opengl-format
Expand Down Expand Up @@ -333,7 +333,7 @@
#--public-ip-error
#--weather-error
#--player-error
#--song-error
#--media-error
#--datetime-error
#--vulkan-error
#--opengl-error
Expand Down
2 changes: 1 addition & 1 deletion src/data/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Icons
Kernel
Locale
LocalIP
Media
Memory
OpenGL
OS
Expand All @@ -29,7 +30,6 @@ PublicIP
Resolution
Separator
Shell
Song
Swap
Terminal
TerminalFont
Expand Down
29 changes: 27 additions & 2 deletions src/detection/disk/disk_linux.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,33 @@
#include "disk.h"

#include <limits.h>
#include <ctype.h>
#include <sys/statvfs.h>

static void strbufAppendMountPoint(FFstrbuf* mountpoint, const char* source)
{
while(*source != '\0' && !isspace(*source))
{
//After a backslash the next 3 characters are octal ascii codes
if(*source == '\\' && strnlen(source, 4) == 4)
{
char octal[4] = {0};
strncpy(octal, source + 1, 3);

long value = strtol(octal, NULL, 8); //Returns 0 on error, so no need to check endptr
if(value > 0 && value < CHAR_MAX)
{
ffStrbufAppendC(mountpoint, (char) value);
source += 4;
continue;
}
}

ffStrbufAppendC(mountpoint, *source);
++source;
}
}

void ffDetectDisksImpl(FFDiskResult* disks)
{
FILE* mountsFile = fopen("/proc/mounts", "r");
Expand All @@ -25,7 +50,7 @@ void ffDetectDisksImpl(FFDiskResult* disks)
if(strncmp(currentPos, "/dev/", 5) != 0 && strncmp(currentPos, "drvfs", 5) != 0)
continue;

//Skip /dev/
//Skip /dev/ or drvfs
currentPos += 5;

//Don't show loop file systems
Expand All @@ -41,7 +66,7 @@ void ffDetectDisksImpl(FFDiskResult* disks)
++currentPos;

ffStrbufInitA(&disk->mountpoint, 16);
ffStrbufAppendSUntilC(&disk->mountpoint, currentPos, ' ');
strbufAppendMountPoint(&disk->mountpoint, currentPos);

//Go to filesystem
currentPos += disk->mountpoint.length;
Expand Down
2 changes: 1 addition & 1 deletion src/detection/wifi/wifi_apple.m
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
case kCWPHYMode11ac:
ffStrbufAppendS(&item->conn.phyType, "802.11ac (Wi-Fi 5)");
break;
case kCWPHYMode11ax:
case 6 /*kCWPHYMode11ax*/:
ffStrbufAppendS(&item->conn.phyType, "802.11ax (Wi-Fi 6)");
break;
case 7 /*kCWPHYMode11be?*/:
Expand Down
11 changes: 6 additions & 5 deletions src/fastfetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,9 +389,9 @@ static inline void printCommandHelp(const char* command)
"URL name"
);
}
else if(strcasecmp(command, "song-format") == 0 || strcasecmp(command, "media-format") == 0)
else if(strcasecmp(command, "media-format") == 0)
{
constructAndPrintCommandHelpFormat("song", "{3} - {1}", 4,
constructAndPrintCommandHelpFormat("media", "{3} - {1}", 4,
"Pretty media name",
"Media name",
"Artist name",
Expand Down Expand Up @@ -701,6 +701,7 @@ static void optionParseColor(const char* key, const char* value, FFstrbuf* buffe
else FF_APPEND_COLOR_CODE_COND(magenta, "35")
else FF_APPEND_COLOR_CODE_COND(cyan, "36")
else FF_APPEND_COLOR_CODE_COND(white, "37")
else
{
ffStrbufAppendC(buffer, *value);
++value;
Expand Down Expand Up @@ -1121,7 +1122,7 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con
else if(optionParseModuleArgs(key, value, "public-ip", &instance->config.publicIP)) {}
else if(optionParseModuleArgs(key, value, "weather", &instance->config.weather)) {}
else if(optionParseModuleArgs(key, value, "player", &instance->config.player)) {}
else if(optionParseModuleArgs(key, value, "song", &instance->config.song)) {}
else if(optionParseModuleArgs(key, value, "media", &instance->config.media)) {}
else if(optionParseModuleArgs(key, value, "datetime", &instance->config.dateTime)) {}
else if(optionParseModuleArgs(key, value, "date", &instance->config.date)) {}
else if(optionParseModuleArgs(key, value, "time", &instance->config.time)) {}
Expand Down Expand Up @@ -1379,8 +1380,8 @@ static void parseStructureCommand(FFinstance* instance, FFdata* data, const char
ffPrintWeather(instance);
else if(strcasecmp(line, "player") == 0)
ffPrintPlayer(instance);
else if(strcasecmp(line, "media") == 0 || strcasecmp(line, "song") == 0)
ffPrintSong(instance);
else if(strcasecmp(line, "media") == 0)
ffPrintMedia(instance);
else if(strcasecmp(line, "datetime") == 0)
ffPrintDateTime(instance);
else if(strcasecmp(line, "date") == 0)
Expand Down
4 changes: 2 additions & 2 deletions src/fastfetch.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ typedef struct FFconfig
FFModuleArgs publicIP;
FFModuleArgs weather;
FFModuleArgs player;
FFModuleArgs song;
FFModuleArgs media;
FFModuleArgs dateTime;
FFModuleArgs date;
FFModuleArgs time;
Expand Down Expand Up @@ -288,7 +288,7 @@ void ffPrintBattery(FFinstance* instance);
void ffPrintPowerAdapter(FFinstance* instance);
void ffPrintLocale(FFinstance* instance);
void ffPrintPlayer(FFinstance* instance);
void ffPrintSong(FFinstance* instance);
void ffPrintMedia(FFinstance* instance);
void ffPrintDateTime(FFinstance* instance);
void ffPrintDate(FFinstance* instance);
void ffPrintTime(FFinstance* instance);
Expand Down
2 changes: 1 addition & 1 deletion src/flashfetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ int main(int argc, char** argv)
ffPrintBattery(&instance);
ffPrintPowerAdapter(&instance);
//ffPrintPlayer(&instance);
//ffPrintSong(&instance);
//ffPrintMedia(&instance);
//ffPrintLocalIp(&instance);
//ffPrintPublicIp(&instance);
//ffPrintWifi(&instance);
Expand Down
14 changes: 7 additions & 7 deletions src/modules/song.c → src/modules/media.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

#include <ctype.h>

#define FF_SONG_MODULE_NAME "Media"
#define FF_SONG_NUM_FORMAT_ARGS 5
#define FF_MEDIA_MODULE_NAME "Media"
#define FF_MEDIA_NUM_FORMAT_ARGS 5

static bool shouldIgoreChar(char c)
{
Expand Down Expand Up @@ -42,13 +42,13 @@ static bool artistInSongTitle(const FFstrbuf* song, const FFstrbuf* artist)
return false;
}

void ffPrintSong(FFinstance* instance)
void ffPrintMedia(FFinstance* instance)
{
const FFMediaResult* media = ffDetectMedia(instance);

if(media->error.length > 0)
{
ffPrintError(instance, FF_SONG_MODULE_NAME, 0, &instance->config.song, "%s", media->error.chars);
ffPrintError(instance, FF_MEDIA_MODULE_NAME, 0, &instance->config.media, "%s", media->error.chars);
return;
}

Expand All @@ -69,7 +69,7 @@ void ffPrintSong(FFinstance* instance)
if(songPretty.length == 0)
ffStrbufAppend(&songPretty, &media->song);

if(instance->config.song.outputFormat.length == 0)
if(instance->config.media.outputFormat.length == 0)
{
//We don't expose artistPretty to the format, as it might be empty (when the think that the artist is already in the song title)
FFstrbuf artistPretty;
Expand All @@ -81,7 +81,7 @@ void ffPrintSong(FFinstance* instance)
if(artistInSongTitle(&songPretty, &artistPretty))
ffStrbufClear(&artistPretty);

ffPrintLogoAndKey(instance, FF_SONG_MODULE_NAME, 0, &instance->config.song.key);
ffPrintLogoAndKey(instance, FF_MEDIA_MODULE_NAME, 0, &instance->config.media.key);

if(artistPretty.length > 0)
{
Expand All @@ -98,7 +98,7 @@ void ffPrintSong(FFinstance* instance)
}
else
{
ffPrintFormat(instance, FF_SONG_MODULE_NAME, 0, &instance->config.song, FF_SONG_NUM_FORMAT_ARGS, (FFformatarg[]){
ffPrintFormat(instance, FF_MEDIA_MODULE_NAME, 0, &instance->config.media, FF_MEDIA_NUM_FORMAT_ARGS, (FFformatarg[]){
{FF_FORMAT_ARG_TYPE_STRBUF, &songPretty},
{FF_FORMAT_ARG_TYPE_STRBUF, &media->song},
{FF_FORMAT_ARG_TYPE_STRBUF, &media->artist},
Expand Down