Compare commits

..

20 Commits

Author SHA1 Message Date
Carter Li c4824b2b5d Merge pull request #654 from fastfetch-cli/dev
Release v2.3.4
2023-12-08 00:10:31 +08:00
李通洲 dcbda6c0d5 Release: v2.3.4 2023-12-08 00:04:38 +08:00
李通洲 91e4e94aaa CMake: fix --help doesn't work when building without python3 2023-12-07 23:51:56 +08:00
apocelipes 1504e26e38 optimize(Packages): optimize reading large files
Using less syscalls and processing data in memory
makes getNumStringsImpl ~300% faster.

The code is much simpler.
2023-12-07 20:32:14 +08:00
李通洲 a9c5c2892c Memory (Linux): Use MemAvailable if available 2023-12-07 16:30:10 +08:00
Carter Li 923997f0a2 Merge pull request #651 from fastfetch-cli/dev
Release v2.3.3
2023-12-07 09:39:07 +08:00
李通洲 0182e32f00 Release: v2.3.3 2023-12-07 09:33:26 +08:00
李通洲 bd40205427 Help: fix json text loading 2023-12-06 23:55:34 +08:00
Carter Li 30b9f95b49 Merge pull request #649 from fastfetch-cli/dev
Release v2.3.2
2023-12-06 11:20:24 +08:00
李通洲 74b9fd01ff CI (macOS): try fixing compiling 2023-12-06 11:06:52 +08:00
李通洲 03f4ffb9d7 Release: v2.3.2 2023-12-06 10:48:06 +08:00
李通洲 a00cb2aede CMake: install fish completion script 2023-12-06 10:38:55 +08:00
李通洲 6799076fa6 Logo (Builtin): fix compiling 2023-12-06 10:30:56 +08:00
李通洲 573a315d61 Help: tweaks 2023-12-06 10:29:28 +08:00
李通洲 0cd6cb841d Completion (Fish): fix fastfetch detection 2023-12-06 10:29:28 +08:00
xray_os af94cf4d0d fixing the name of my distro 2023-12-06 08:51:29 +08:00
Carter Li ac76107940 Merge pull request #647 from fastfetch-cli/dev
Release v2.3.1
2023-12-05 20:52:37 +08:00
李通洲 c25fe53251 Merge remote-tracking branch 'upstream/master' into dev 2023-12-05 20:50:10 +08:00
李通洲 4137b3829a Release v2.3.1 2023-12-05 20:48:09 +08:00
Viorel 0bb08049bf Fix man page install location 2023-12-05 20:41:20 +08:00
9 changed files with 93 additions and 55 deletions
+1 -2
View File
@@ -152,9 +152,8 @@ jobs:
- name: install required packages
run: |
brew uninstall aws-sam-cli azure-cli qemu lima colima gradle kotlin maven pipx aria2 || true
brew update
brew install vulkan-loader vulkan-headers molten-vk imagemagick chafa
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install vulkan-loader vulkan-headers molten-vk imagemagick chafa
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
+30 -3
View File
@@ -1,5 +1,34 @@
# 2.3.4
Bugfixes:
* Fix `--help` doesn't work when built without python
Features:
* Use `MemAvailable` if available (Memory, Linux)
* Improve performance of detecting dpkg package count (Packages, Linux)
# 2.3.3
Bugfixes:
* Fix `--help` doesn't work in Windows and some other platforms
# 2.3.2
Bugfixes:
* Fix fish completion script, and install the script correctly
Logo:
* Fix Xray-OS logo name
# 2.3.1
Bugfixes:
* Fix man page install location
# 2.3.0
**We are deprecating flags based config files (will be removed in v3.0.0). We suggest you migrate to json based config files.**
Config related changes:
* The deprecated flag `--gen-config conf` is removed
* Flag `--gen-config` now does the same thing as `--migrate-config`, which can be used as config migration and default config file generation. Flag `--migrate-config` is removed
@@ -9,8 +38,6 @@ Config related changes:
* Config files will always be loaded before other command line flags being parsed. That is to say, command line flags will always override options defined in config files.
* the value of GPUType `integrated` contained a typo and was fixed. Existing config files may need to be updated.
We are deprecating flags based config files (will be removed in v3.0.0). We suggest you migrate to json based config files.
Features:
* Support Oils and elvish shell version detection (Shell)
* Support Windows Server Core (Windows)
@@ -35,7 +62,7 @@ Bugfixes:
* Fix some memory leaks
* Fix used swap space detection (Swap, FreeBSD)
* Don't leak fds to child processes (Linux)
* Fix possible issues when reading procfs (Linux)
* Fix possible issues when reading procfs (Linux, @apocelipes)
Logos:
* Add Adelie, Ironclad
+15 -6
View File
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.12.0) # target_link_libraries with OBJECT libs & project homepage url
project(fastfetch
VERSION 2.3.0
VERSION 2.3.4
LANGUAGES C
DESCRIPTION "Fast neofetch-like system information tool"
HOMEPAGE_URL "https://github.com/fastfetch-cli/fastfetch"
@@ -206,7 +206,7 @@ endif()
#############
function(fastfetch_encode_c_string STR OUTVAR)
string(REGEX REPLACE "\n$" "" TEMP "${STR}") # Remove trailing newline
string(REGEX REPLACE "\n$" "" TEMP "${STR}") # Remove trailing newline
string(REPLACE "\\" "\\\\" TEMP "${TEMP}") # Escape backslashes
string(REPLACE "\n" "\\n" TEMP "${TEMP}") # Replace newlines with \n
string(REPLACE "\"" "\\\"" TEMP "${TEMP}") # Replace quotes with \"
@@ -221,12 +221,15 @@ endfunction(fastfetch_load_text)
find_package(Python)
if(Python_FOUND)
# Minify JSON string. `io.open(0,encoding='utf-8')` is needed to avoid encoding issues on Windows
execute_process(COMMAND ${Python_EXECUTABLE} -c "import io,json,sys;json.dump(json.load(io.open(0,encoding='utf-8')),sys.stdout,separators=(',', ':'),ensure_ascii=False)"
execute_process(COMMAND ${Python_EXECUTABLE} -c "import json,sys;json.dump(json.load(sys.stdin),sys.stdout,separators=(',',':'))"
INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/data/help.json"
OUTPUT_VARIABLE DATATEXT_JSON_HELP)
if(DATATEXT_JSON_HELP STREQUAL "")
message(ERROR "DATATEXT_JSON_HELP is empty, which should not happen!")
endif()
else()
file(READ "src/data/help.json" TEMP)
message(STATUS "Python3 is not found, 'help.json' will not be minified")
file(READ "src/data/help.json" DATATEXT_JSON_HELP)
endif()
fastfetch_encode_c_string("${DATATEXT_JSON_HELP}" DATATEXT_JSON_HELP)
@@ -1040,6 +1043,12 @@ install(
RENAME "${CMAKE_PROJECT_NAME}"
)
install(
FILES "${CMAKE_SOURCE_DIR}/completions/fish"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/fish/vendor_completions.d"
RENAME "${CMAKE_PROJECT_NAME}.fish"
)
install(
DIRECTORY "${CMAKE_SOURCE_DIR}/presets"
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}"
@@ -1052,7 +1061,7 @@ install(
install(
FILES "${PROJECT_BINARY_DIR}/fastfetch.1"
DESTINATION "${CMAKE_INSTALL_MANDIR}"
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
)
##################
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env fish
if not test -x fastfetch
if not type -q fastfetch
return
end
+11 -11
View File
@@ -545,15 +545,15 @@
},
{
"long": "bar-char-elapsed",
"desc": "Set the character to use in elapsed part",
"desc": "Set the character to use in elapsed part of percentage bars",
"arg": {
"type": "str",
"default": ""
"default": "\u25a0"
}
},
{
"long": "bar-char-total",
"desc": "Set the character to use in total part",
"desc": "Set the character to use in total part of percentage bars",
"arg": {
"type": "str",
"default": "-"
@@ -561,7 +561,7 @@
},
{
"long": "bar-width",
"desc": "Set the width of the bar, in number of characters",
"desc": "Set the width of percentage bars, in number of characters",
"arg": {
"type": "num",
"default": 10
@@ -569,7 +569,7 @@
},
{
"long": "bar-border",
"desc": "Whether to show a border around the bar",
"desc": "Whether to show a border around percentage bars",
"arg": {
"type": "bool",
"optional": true,
@@ -1290,12 +1290,12 @@
"arg": {
"type": "enum",
"enum": {
"block": "███",
"circle": "",
"diamond": "",
"triangle": "",
"square": "",
"star": ""
"block": "\u2588\u2588\u2588",
"circle": "\u25cf",
"diamond": "\u25c6",
"triangle": "\u25b2",
"square": "\u25a0",
"star": "\u2605"
},
"default": "block"
}
+25 -15
View File
@@ -13,33 +13,43 @@ const char* ffDetectMemory(FFMemoryResult* ram)
buf[nRead] = '\0';
uint64_t memTotal = 0,
memAvailable = 0,
shmem = 0,
memFree = 0,
buffers = 0,
cached = 0,
sReclaimable = 0;
char *token = NULL;
if((token = strstr(buf, "MemTotal:")) != NULL)
memTotal = strtoul(token + strlen("MemTotal:"), NULL, 10);
else
return "MemTotal not found in /proc/meminfo";
if((token = strstr(buf, "MemFree:")) != NULL)
memFree = strtoul(token + strlen("MemFree:"), NULL, 10);
if((token = strstr(buf, "MemAvailable:")) != NULL)
memAvailable = strtoul(token + strlen("MemAvailable:"), NULL, 10);
else
{
if((token = strstr(buf, "MemFree:")) != NULL)
memFree = strtoul(token + strlen("MemFree:"), NULL, 10);
if((token = strstr(buf, "Buffers:")) != NULL)
buffers = strtoul(token + strlen("Buffers:"), NULL, 10);
if((token = strstr(buf, "Cached:")) != NULL)
cached = strtoul(token + strlen("Cached:"), NULL, 10);
if((token = strstr(buf, "Shmem:")) != NULL)
shmem = strtoul(token + strlen("Shmem:"), NULL, 10);
if((token = strstr(buf, "SReclaimable:")) != NULL)
sReclaimable = strtoul(token + strlen("SReclaimable:"), NULL, 10);
if((token = strstr(buf, "Buffers:")) != NULL)
buffers = strtoul(token + strlen("Buffers:"), NULL, 10);
if((token = strstr(buf, "Cached:")) != NULL)
cached = strtoul(token + strlen("Cached:"), NULL, 10);
if((token = strstr(buf, "Shmem:")) != NULL)
shmem = strtoul(token + strlen("Shmem:"), NULL, 10);
if((token = strstr(buf, "SReclaimable:")) != NULL)
sReclaimable = strtoul(token + strlen("SReclaimable:"), NULL, 10);
memAvailable = memFree + buffers + cached + sReclaimable - shmem;
}
ram->bytesTotal = memTotal * 1024lu;
ram->bytesUsed = (memTotal + shmem - memFree - buffers - cached - sReclaimable) * 1024lu;
ram->bytesUsed = (memTotal - memAvailable) * 1024lu;
return NULL;
}
+7 -14
View File
@@ -42,26 +42,19 @@ static uint32_t getNumElements(FFstrbuf* baseDir, const char* dirname, unsigned
static uint32_t getNumStringsImpl(const char* filename, const char* needle)
{
FILE* file = fopen(filename, "r");
if(file == NULL)
FF_STRBUF_AUTO_DESTROY content = ffStrbufCreate();
if (!ffReadFileBuffer(filename, &content))
return 0;
uint32_t count = 0;
char* line = NULL;
size_t len = 0;
while(getline(&line, &len, file) != EOF)
char *iter = content.chars;
size_t needleLength = strlen(needle);
while ((iter = memmem(iter, content.length - (size_t)(iter - content.chars), needle, needleLength)) != NULL)
{
if(strstr(line, needle) != NULL)
++count;
++count;
iter += needleLength;
}
if(line != NULL)
free(line);
fclose(file);
return count;
}
+3 -3
View File
@@ -4279,10 +4279,10 @@ static const FFlogo X[] = {
FF_COLOR_FG_CYAN,
},
},
//XrayOS
//Xray_OS
{
.names = {"XrayOS"},
.lines = FASTFETCH_DATATEXT_LOGO_XRAYOS,
.names = {"Xray_OS"},
.lines = FASTFETCH_DATATEXT_LOGO_XRAY_OS,
.colors = {
FF_COLOR_FG_256 "15",
FF_COLOR_FG_256 "14",