diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c68debf..e8d0f490 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ Logo: * Change the special handling of `kitty` protocol with `.png` image file to a new image protocol `kitty-direct`. This is the fastest image protocol because fastfetch doesn't need to pre-encode the image to base64 or something and the image content doesn't need to be transmitted via tty. Note: 1. Although konsole was said to support `kitty` image protocol, it doesn't support `kitty-direct` 2. wezterm support more image formats other than `.png` (tested with `.jpg` and `.webp`) +* Add `Windows 95` # 1.12.2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 4335df20..9906c36b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,11 +233,34 @@ fastfetch_load_text(src/data/help_color.txt DATATEXT_HELP_COLOR) fastfetch_load_text(src/data/help_format.txt DATATEXT_HELP_FORMAT) fastfetch_load_text(src/data/help_config.txt DATATEXT_HELP_CONFIG) -###################### -# Configure config.h # -###################### +configure_file(src/fastfetch_config.h.in fastfetch_config.h @ONLY) +configure_file(src/fastfetch_datatext.h.in fastfetch_datatext.h @ONLY) -configure_file(src/fastfetch_config.h.in fastfetch_config.h) +#################### +# Ascii image data # +#################### + +function(fastfetch_load_raw_text FILENAME OUTVAR) + file(READ "${FILENAME}" TEMP) + string(REGEX REPLACE "\n$" "" TEMP "${TEMP}") # Remove trailing newline + string(JSON TEMP SET "{}" "${TEMP}" "0") # Encode raw strings using JSON_SET + string(REGEX REPLACE "^\\{[ \t\r\n]*" "" TEMP "${TEMP}") # Remove JSON braces + string(REGEX REPLACE "[ \t\r\n]*:[ \t\r\n]*0[ \t\r\n]*\\}$" "" TEMP "${TEMP}") # Remove trailing ` : 0 }` + if(NOT "${TEMP}" MATCHES "^\"[^\n]*\"") + message(FATAL_ERROR "Internal error: unexpected output: '${TEMP}'") + endif() + set(${OUTVAR} "${TEMP}" PARENT_SCOPE) +endfunction(fastfetch_load_raw_text) + +file(GLOB LOGO_FILES "src/logo/ascii/*.txt") +foreach(file ${LOGO_FILES}) + fastfetch_load_raw_text("${file}" content) + get_filename_component(file "${file}" NAME_WLE) + string(TOUPPER "${file}" file) + string(REGEX REPLACE "\\$\\{c([0-9]+)\\}" "$\\1" DATATEXT_LOGO_${file} "${content}") +endforeach() + +configure_file(src/logo/builtin.h.in src_logo_builtin.h @ONLY) ####################### # libfastfetch target # diff --git a/README.md b/README.md index 4cd69b8c..ff1e4b8d 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ Battery, Bios, Bluetooth, Board, Break, Brightness, Colors, Command, CPU, CPUUsa ##### Builtin logos ``` -AlmaLinux, Alpine, Android, Arch, Arco, Artix, Bedrock, BSD, CachyOS, CentOS, CRUX, Crystal, Debian, Deepin, Devuan, Endeavour, Enso, Exherbo, Fedora, FreeBSD, Garuda, Gentoo, GhostBSD, KDE Neon, KISS, Kubuntu, LangitKetujuh, Linux, MacOS, Manjaro, Mint, MSYS2, NixOS, Nobara, OpenSUSE, OpenSUSE LEAP, OpenSUSE Tumbleweed, Parabola, Pop!_OS, Raspbian, RebornOS, RedstarOS, Rocky, Rosa, Slackware, Solus, SteamOS, Ubuntu, Vanilla, Void, Windows, Windows 11, Windows 8, Zorin +AlmaLinux, Alpine, Android, Arch, Arco, Artix, Bedrock, BSD, CachyOS, CentOS, CRUX, Crystal, Debian, Deepin, Devuan, Endeavour, Enso, Exherbo, Fedora, FreeBSD, Garuda, Gentoo, GhostBSD, KDE Neon, KISS, Kubuntu, LangitKetujuh, Linux, MacOS, Manjaro, Mint, MSYS2, NixOS, Nobara, OpenSUSE, OpenSUSE LEAP, OpenSUSE Tumbleweed, Parabola, Pop!_OS, Raspbian, RebornOS, RedstarOS, Rocky, Rosa, Slackware, Solus, SteamOS, Ubuntu, Vanilla, Void, Windows, Windows 11, Windows 8, Windows 95, Zorin ``` ##### Package managers diff --git a/src/fastfetch.c b/src/fastfetch.c index 50ad5c3d..f7fa7f3d 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -6,6 +6,7 @@ #include "common/jsonconfig.h" #include "util/stringUtils.h" #include "logo/logo.h" +#include "fastfetch_datatext.h" #include #include diff --git a/src/fastfetch_config.h.in b/src/fastfetch_config.h.in index 0fcf3f2d..f9139738 100644 --- a/src/fastfetch_config.h.in +++ b/src/fastfetch_config.h.in @@ -1,3 +1,5 @@ +#pragma once + #ifndef FASTFETCH_INDLUDED_fastfetch_config_h_in #define FASTFETCH_INDLUDED_fastfetch_config_h_in @@ -19,13 +21,4 @@ #define FASTFETCH_TARGET_DIR_INSTALL_SYSCONF "@CMAKE_INSTALL_SYSCONFDIR@" -#define FASTFETCH_DATATEXT_STRUCTURE "@DATATEXT_STRUCTURE@" -#define FASTFETCH_DATATEXT_CONFIG_SYSTEM "@DATATEXT_CONFIG_SYSTEM@" -#define FASTFETCH_DATATEXT_CONFIG_USER "@DATATEXT_CONFIG_USER@" //Requires FASTFETCH_PROJECT_VERSION and FASTFETCH_DATATEXT_STRUCTURE to be set -#define FASTFETCH_DATATEXT_MODULES "@DATATEXT_MODULES@" -#define FASTFETCH_DATATEXT_HELP "@DATATEXT_HELP@" -#define FASTFETCH_DATATEXT_HELP_COLOR "@DATATEXT_HELP_COLOR@" -#define FASTFETCH_DATATEXT_HELP_FORMAT "@DATATEXT_HELP_FORMAT@" -#define FASTFETCH_DATATEXT_HELP_CONFIG "@DATATEXT_HELP_CONFIG@" - #endif // FASTFETCH_INDLUDED_fastfetch_config_h_in diff --git a/src/fastfetch_datatext.h.in b/src/fastfetch_datatext.h.in new file mode 100644 index 00000000..dd5418f3 --- /dev/null +++ b/src/fastfetch_datatext.h.in @@ -0,0 +1,15 @@ +#pragma once + +#ifndef FASTFETCH_INDLUDED_fastfetch_datatext_h_in +#define FASTFETCH_INDLUDED_fastfetch_datatext_h_in + +#define FASTFETCH_DATATEXT_STRUCTURE "@DATATEXT_STRUCTURE@" +#define FASTFETCH_DATATEXT_CONFIG_SYSTEM "@DATATEXT_CONFIG_SYSTEM@" +#define FASTFETCH_DATATEXT_CONFIG_USER "@DATATEXT_CONFIG_USER@" //Requires FASTFETCH_PROJECT_VERSION and FASTFETCH_DATATEXT_STRUCTURE to be set +#define FASTFETCH_DATATEXT_MODULES "@DATATEXT_MODULES@" +#define FASTFETCH_DATATEXT_HELP "@DATATEXT_HELP@" +#define FASTFETCH_DATATEXT_HELP_COLOR "@DATATEXT_HELP_COLOR@" +#define FASTFETCH_DATATEXT_HELP_FORMAT "@DATATEXT_HELP_FORMAT@" +#define FASTFETCH_DATATEXT_HELP_CONFIG "@DATATEXT_HELP_CONFIG@" + +#endif diff --git a/src/logo/ascii/Windows95.txt b/src/logo/ascii/Windows95.txt new file mode 100644 index 00000000..77d20ea0 --- /dev/null +++ b/src/logo/ascii/Windows95.txt @@ -0,0 +1,18 @@ +${c6} ___ + .--=+++++=-:. +. _ *%@@@@@@@@@@@@@@* + *:+:.__ :+* @@@ @"${c5}_*&%${c6}@@${c4}%&&&*${c6}"@@@ + "+.-#+ +%* " _ ${c5}++&&&%${c6}@@${c4}%&&&&&#${c6}@@ +${c5}" , ${c6}%@@ ${c5}&&&&&%${c6}@@${c4}%&&&&&#${c6}@@ +${c5} * oo *# ${c6}" _ ${c5}&&&&&%${c6}@@${c4}%&&&&&#${c6}@@ +${c5}" , ${c6}%@@ ${c5}&&&&"${c6}@@@@#*${c4}"&&&${c6}@@ +.${c5} * oo *# ${c6}" _ %@@@@@@@@@@@@@@@@ + *:+:.__ :=* %@@ @"${c1}**&%${c6}@@${c3}%&&&*${c6}"@@@ + "+.-#+ +%* " _ ${c1}&&&&&%${c6}@@${c3}%&&&&&#${c6}@@ +${c1}" , ${c6}%@@ ${c1}&&&&&%${c6}@@${c3}%&&&&&#${c6}@@ +${c1} * oo *# ${c6}" _ ${c1}&&&&&%${c6}@@${c3}%&&&&&#${c6}@@ +${c1}" , ${c6}%@@ ${c1}&&*"${c6}%@@@@@@${c3}"*%&${c6}@@ +.${c1} * oo *# ${c6}" _ @@@@@@@@@@@@@@@@@ + *:+:.__ :+# @@@ @%#=+""""""+==%#@ + "+.-#+ +%* %+" " ":@ + " " diff --git a/src/logo/builtin.c b/src/logo/builtin.c index fcd755e6..a12e1acb 100644 --- a/src/logo/builtin.c +++ b/src/logo/builtin.c @@ -1,4 +1,5 @@ #include "logo.h" +#include "src_logo_builtin.h" // Generated with `src/logo/builtin.h` #define FF_LOGO_INIT static FFlogo logo; static bool init = false; if(init) return &logo; init = true; // The names of small logo must end with `_small` or `-small` @@ -335,25 +336,25 @@ static const FFlogo* getLogoBSD(void) FF_LOGO_INIT FF_LOGO_NAMES("bsd") FF_LOGO_LINES( -"$1 , ,\n" -" /( )`\n" -" \\ \\___ / |\n" -" /- _ `-/ '\n" -" ($2/\\/ \\ $1\\ /\\\n" -" $2/ / | ` $1\\\n" -" $3O O $2) $1/ |\n" -" $2`-^--'$1`< '\n" -" (_.) _ ) /\n" -" `.___/` /\n" -" `-----' /\n" -"$4<----. __ / __ \\\n" -"$4<----|====$1O)))$4==$1) \\) /$4====|\n" -"<----' $1`--' `.__,' \\\n" -" | |\n" -" \\ / /\\\n" -" $5______$1( (_ / \\______/\n" -" $5,' ,-----' |\n" -" `--{__________)\n" + "$1 , ,\n" + " /( )`\n" + " \\ \\___ / |\n" + " /- _ `-/ '\n" + " ($2/\\/ \\ $1\\ /\\\n" + " $2/ / | ` $1\\\n" + " $3O O $2) $1/ |\n" + " $2`-^--'$1`< '\n" + " (_.) _ ) /\n" + " `.___/` /\n" + " `-----' /\n" + "$4<----. __ / __ \\\n" + "$4<----|====$1O)))$4==$1) \\) /$4====|\n" + "<----' $1`--' `.__,' \\\n" + " | |\n" + " \\ / /\\\n" + " $5______$1( (_ / \\______/\n" + " $5,' ,-----' |\n" + " `--{__________)\n" ) FF_LOGO_COLORS( "31", @@ -1724,6 +1725,24 @@ static const FFlogo* getLogoWindows(void) FF_LOGO_RETURN } +static const FFlogo* getLogoWindows95(void) +{ + FF_LOGO_INIT + FF_LOGO_NAMES("Windows 9x", "Windows 95") + FF_LOGO_LINES(FASTFETCH_DATATEXT_LOGO_WINDOWS95) + FF_LOGO_COLORS( + "36", //cyan + "34", //blue + "33", //yellow + "32", //green + "31", + "30" + ) + FF_LOGO_COLOR_KEYS("36"); //cyan + FF_LOGO_COLOR_TITLE("34"); //blue + FF_LOGO_RETURN +} + static const FFlogo* getLogoNixOS(void) { FF_LOGO_INIT @@ -2759,6 +2778,7 @@ GetLogoMethod* ffLogoBuiltinGetAll(void) getLogoWindows11Small, getLogoWindows8, getLogoWindows, + getLogoWindows95, getLogoNixOS, getLogoNixOsOld, getLogoNixOsSmall, diff --git a/src/logo/builtin.h.in b/src/logo/builtin.h.in new file mode 100644 index 00000000..4695313c --- /dev/null +++ b/src/logo/builtin.h.in @@ -0,0 +1,8 @@ +#pragma once + +#ifndef FASTFETCH_INDLUDED_logo_builtin_h_in +#define FASTFETCH_INDLUDED_logo_builtin_h_in + +#define FASTFETCH_DATATEXT_LOGO_WINDOWS95 @DATATEXT_LOGO_WINDOWS95@ + +#endif