diff --git a/src/detection/os/os_linux.c b/src/detection/os/os_linux.c index 2e8d3bc92..3378b5d35 100644 --- a/src/detection/os/os_linux.c +++ b/src/detection/os/os_linux.c @@ -156,6 +156,13 @@ static bool detectDebianDerived(FFOSResult* result) ffStrbufSetNS(&result->versionID, versionEnd - versionStart, result->prettyName.chars + versionStart); return true; } + else if (ffStrbufStartsWithS(&result->name, "Loc-OS")) + { + ffStrbufSetS(&result->name, "Loc-OS Linux"); // (ffStrbufEqualS(&os->id, "MX") + ffStrbufSetS(&result->id, "locos"); + ffStrbufSetS(&result->idLike, "debian"); + return true; + } else if (ffPathExists("/usr/bin/pveversion", FF_PATHTYPE_FILE)) { ffStrbufSetS(&result->id, "pve"); diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index d8983242a..4e954b96a 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -14,6 +14,8 @@ typedef struct FFPackagesResult uint32_t eopkg; uint32_t flatpakSystem; uint32_t flatpakUser; + uint32_t lpkg; + uint32_t lpkgbuild; uint32_t nixDefault; uint32_t nixSystem; uint32_t nixUser; diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index 0e19043a4..73920097f 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -412,6 +412,7 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts, { if (!(options->disabled & FF_PACKAGES_FLAG_APK_BIT)) packageCounts->apk += getNumStrings(baseDir, "/lib/apk/db/installed", "C:Q"); if (!(options->disabled & FF_PACKAGES_FLAG_DPKG_BIT)) packageCounts->dpkg += getNumStrings(baseDir, "/var/lib/dpkg/status", "Status: install ok installed"); + if (!(options->disabled & FF_PACKAGES_FLAG_LPKG_BIT)) packageCounts->lpkg += getNumStrings(baseDir, "/opt/Loc-OS-LPKG/installed-lpkg/Listinstalled-lpkg.list", "\n"); if (!(options->disabled & FF_PACKAGES_FLAG_EMERGE_BIT)) packageCounts->emerge += countFilesRecursive(baseDir, "/var/db/pkg", "SIZE"); if (!(options->disabled & FF_PACKAGES_FLAG_EOPKG_BIT)) packageCounts->eopkg += getNumElements(baseDir, "/var/lib/eopkg/package", DT_DIR); if (!(options->disabled & FF_PACKAGES_FLAG_FLATPAK_BIT)) packageCounts->flatpakSystem += getFlatpak(baseDir, "/var/lib/flatpak"); @@ -421,6 +422,7 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts, packageCounts->nixSystem += getNixPackages(baseDir, "/run/current-system"); } if (!(options->disabled & FF_PACKAGES_FLAG_PACMAN_BIT)) packageCounts->pacman += getNumElements(baseDir, "/var/lib/pacman/local", DT_DIR); + if (!(options->disabled & FF_PACKAGES_FLAG_LPKGBUILD_BIT)) packageCounts->lpkgbuild += getNumElements(baseDir, "/opt/Loc-OS-LPKG/lpkgbuild/remove", DT_REG); if (!(options->disabled & FF_PACKAGES_FLAG_PKGTOOL_BIT)) packageCounts->pkgtool += getNumElements(baseDir, "/var/log/packages", DT_REG); if (!(options->disabled & FF_PACKAGES_FLAG_RPM_BIT)) packageCounts->rpm += getSQLite3Int(baseDir, "/var/lib/rpm/rpmdb.sqlite", "SELECT count(*) FROM Packages"); if (!(options->disabled & FF_PACKAGES_FLAG_SNAP_BIT)) packageCounts->snap += getSnap(baseDir); diff --git a/src/logo/ascii/locos.txt b/src/logo/ascii/locos.txt new file mode 100644 index 000000000..cbcb5be8a --- /dev/null +++ b/src/logo/ascii/locos.txt @@ -0,0 +1,18 @@ + $3..;:::::::;. + .0X'$1''''''''''''$3'N: + :Xd$1,.'''''''''''''''$3lKx + .0o$1'.'''''''''''''''''''$3:K; + .O$1;.'$3okOx:$1'''''''''$3,dOOx:$1''$3O; + xc$1.'$3xXl$1 $3kX;$1''$2:cc;$1''$3kXl$1 $3OX;$1''$3k. + 'x$1..'$3:0X0Xx$1',$2OOOOOd$1,:$30X0Xx$1'''$3o: + ::$1..'$2,clollxOOOOOOOOdlddlc$1''''$3d + l'$1..$2':kkkkOOOOOOOOOOOOkkkx,$1'''$3x + o$1...''''',$2codxkkxxxdl$1:''''''''$3d. + d$1...''''''''''''''''''''''''''$3o. + d$1..''''$3,loc,$1''''''''$3;os:,$1'''''$3d' + :d$1..'$3,dKXXXXX0kxxxk0XXXXXX0l$1'''$3,O. + '0$1..'$3cKXXXXXXXXXXXXXXXXXXXXXXk$1'''$3ck + '0$1'.'$3cXXXXXXXXXXXXXXXXXXXXXXXXXO$1'''$3od + .0$1,.''$30XXXXXXXXXXXXXXXXXXXXXXXXXXo$1'''$3k; + cc$1..''$3XXXXXXXXXXXXXXXXXXXXXXXXXXXk$1''''$3k + l$1...',$3XXXXXXXXXXXXXXXXXXXXXXXXXXXO$1''''$3d. diff --git a/src/logo/builtin.c b/src/logo/builtin.c index dd8007809..3df2b1a22 100644 --- a/src/logo/builtin.c +++ b/src/logo/builtin.c @@ -2385,6 +2385,18 @@ static const FFlogo L[] = { FF_COLOR_FG_WHITE, }, }, + // Loc-OS + { + .names = {"loc-os", "Loc-OS Linux"}, + .lines = FASTFETCH_DATATEXT_LOGO_LOCOS, + .colors = { + FF_COLOR_FG_BLACK, + FF_COLOR_FG_YELLOW, + FF_COLOR_FG_WHITE, + }, + .colorKeys = FF_COLOR_FG_YELLOW, + .colorTitle = FF_COLOR_FG_RED, + }, // Lunar { .names = {"Lunar"}, diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h index 66d332d5d..f294b916c 100644 --- a/src/modules/packages/option.h +++ b/src/modules/packages/option.h @@ -28,6 +28,8 @@ typedef enum FFPackagesFlags FF_PACKAGES_FLAG_XBPS_BIT = 1 << 18, FF_PACKAGES_FLAG_AM_BIT = 1 << 19, FF_PACKAGES_FLAG_SORCERY_BIT = 1 << 20, + FF_PACKAGES_FLAG_LPKG_BIT = 1 << 21, + FF_PACKAGES_FLAG_LPKGBUILD_BIT = 1 << 22, } FFPackagesFlags; typedef struct FFPackagesOptions diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 52ab6906d..f9ccd9258 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -4,7 +4,7 @@ #include "modules/packages/packages.h" #include "util/stringUtils.h" -#define FF_PACKAGES_NUM_FORMAT_ARGS 30 +#define FF_PACKAGES_NUM_FORMAT_ARGS 32 void ffPrintPackages(FFPackagesOptions* options) { @@ -47,6 +47,8 @@ void ffPrintPackages(FFPackagesOptions* options) FF_PRINT_PACKAGE(emerge) FF_PRINT_PACKAGE(eopkg) FF_PRINT_PACKAGE(xbps) + FF_PRINT_PACKAGE(lpkg) + FF_PRINT_PACKAGE(lpkgbuild) FF_PRINT_PACKAGE_NAME(nixSystem, "nix-system") FF_PRINT_PACKAGE_NAME(nixUser, "nix-user") FF_PRINT_PACKAGE_NAME(nixDefault, "nix-default") @@ -102,6 +104,8 @@ void ffPrintPackages(FFPackagesOptions* options) {FF_FORMAT_ARG_TYPE_UINT, &counts.opkg}, {FF_FORMAT_ARG_TYPE_UINT, &counts.am}, {FF_FORMAT_ARG_TYPE_UINT, &counts.sorcery}, + {FF_FORMAT_ARG_TYPE_UINT, &counts.lpkg}, + {FF_FORMAT_ARG_TYPE_UINT, &counts.lpkgbuild}, {FF_FORMAT_ARG_TYPE_UINT, &nixAll}, {FF_FORMAT_ARG_TYPE_UINT, &flatpakAll}, {FF_FORMAT_ARG_TYPE_UINT, &brewAll}, @@ -153,6 +157,10 @@ bool ffParsePackagesCommandOptions(FFPackagesOptions* options, const char* key, case 'F': if (false); FF_TEST_PACKAGE_NAME(FLATPAK) break; + case 'L': if (false); + FF_TEST_PACKAGE_NAME(LPKG) + FF_TEST_PACKAGE_NAME(LPKGBUILD) + break; case 'M': if (false); FF_TEST_PACKAGE_NAME(MACPORTS) break; @@ -254,6 +262,10 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) case 'F': if (false); FF_TEST_PACKAGE_NAME(FLATPAK) break; + case 'L': if (false); + FF_TEST_PACKAGE_NAME(LPKG) + FF_TEST_PACKAGE_NAME(LPKGBUILD) + break; case 'M': if (false); FF_TEST_PACKAGE_NAME(MACPORTS) break; @@ -313,6 +325,8 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do FF_TEST_PACKAGE_NAME(EMERGE) FF_TEST_PACKAGE_NAME(EOPKG) FF_TEST_PACKAGE_NAME(FLATPAK) + FF_TEST_PACKAGE_NAME(LPKG) + FF_TEST_PACKAGE_NAME(LPKGBUILD) FF_TEST_PACKAGE_NAME(NIX) FF_TEST_PACKAGE_NAME(OPKG) FF_TEST_PACKAGE_NAME(PACMAN) @@ -379,7 +393,7 @@ void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy void ffPrintPackagesHelpFormat(void) { - FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PACKAGES_MODULE_NAME, "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (eopkg), {8} (xbps), {9} (nix-system), {10} (nix-user), {11} (nix-default), {12} (apk), {13} (pkg), {14} (flatpak-system), {15} (flatpack-user), {16} (snap), {17} (brew), {18} (brew-cask), {19} (MacPorts), {20} (scoop), {21} (choco), {22} (pkgtool), {23} (paludis), {24} (winget), {25} (opkg), {26} (am), {27} (sorcery)", FF_PACKAGES_NUM_FORMAT_ARGS, ((const char* []) { + FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PACKAGES_MODULE_NAME, "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (eopkg), {8} (xbps), {9} (nix-system), {10} (nix-user), {11} (nix-default), {12} (apk), {13} (pkg), {14} (lpkg), {15} (lpkgbuild), {16} (flatpak-system), {17} (flatpack-user), {18} (snap), {19} (brew), {20} (brew-cask), {21} (MacPorts), {22} (scoop), {23} (choco), {24} (pkgtool), {25} (paludis), {26} (winget), {27} (opkg), {28} (am), {29} (sorcery)", FF_PACKAGES_NUM_FORMAT_ARGS, ((const char* []) { "Number of all packages", "Number of pacman packages", "Pacman branch on manjaro", @@ -393,6 +407,8 @@ void ffPrintPackagesHelpFormat(void) "Number of nix-default packages", "Number of apk packages", "Number of pkg packages", + "Number of lpkg packages", + "Number of lpkgbuild packages", "Number of flatpak-system packages", "Number of flatpak-user packages", "Number of snap packages",