diff --git a/CMakeLists.txt b/CMakeLists.txt index 045b8f7b..9342c677 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,7 +103,7 @@ if(NOT BINARY_LINK_TYPE IN_LIST BINARY_LINK_TYPE_OPTIONS) message(FATAL_ERROR "BINARY_LINK_TYPE must be one of ${BINARY_LINK_TYPE_OPTIONS}") endif() -set(PACKAGE_MANAGERS AM APK BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS) +set(PACKAGE_MANAGERS AM APK BPM BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS) foreach(package_manager ${PACKAGE_MANAGERS}) if(package_manager STREQUAL "WINGET") option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" ON) diff --git a/doc/json_schema.json b/doc/json_schema.json index d32269bd..a4ab7be1 100644 --- a/doc/json_schema.json +++ b/doc/json_schema.json @@ -442,7 +442,7 @@ "type": "string" }, "packagesFormat": { - "description": "Output format of the module `Packages`. See Wiki for formatting syntax\n 1. {all}: Number of all packages\n 2. {pacman}: Number of pacman packages\n 3. {pacman-branch}: Pacman branch on manjaro\n 4. {dpkg}: Number of dpkg packages\n 5. {rpm}: Number of rpm packages\n 6. {emerge}: Number of emerge packages\n 7. {eopkg}: Number of eopkg packages\n 8. {xbps}: Number of xbps packages\n 9. {nix-system}: Number of nix-system packages\n 10. {nix-user}: Number of nix-user packages\n 11. {nix-default}: Number of nix-default packages\n 12. {apk}: Number of apk packages\n 13. {pkg}: Number of pkg packages\n 14. {flatpak-system}: Number of flatpak-system app packages\n 15. {flatpak-user}: Number of flatpak-user app packages\n 16. {snap}: Number of snap packages\n 17. {brew}: Number of brew packages\n 18. {brew-cask}: Number of brew-cask packages\n 19. {macports}: Number of macports packages\n 20. {scoop-user}: Number of scoop-user packages\n 21. {scoop-global}: Number of scoop-global packages\n 22. {choco}: Number of choco packages\n 23. {pkgtool}: Number of pkgtool packages\n 24. {paludis}: Number of paludis packages\n 25. {winget}: Number of winget packages\n 26. {opkg}: Number of opkg packages\n 27. {am-system}: Number of am-system packages\n 28. {sorcery}: Number of sorcery packages\n 29. {lpkg}: Number of lpkg packages\n 30. {lpkgbuild}: Number of lpkgbuild packages\n 31. {guix-system}: Number of guix-system packages\n 32. {guix-user}: Number of guix-user packages\n 33. {guix-home}: Number of guix-home packages\n 34. {linglong}: Number of linglong packages\n 35. {pacstall}: Number of pacstall packages\n 36. {mport}: Number of mport packages\n 37. {am-user}: Number of am-user (aka appman) packages\n 38. {pkgsrc}: Number of pkgsrc packages\n 39. {hpkg-system}: Number of hpkg-system packages\n 40. {hpkg-user}: Number of hpkg-user packages\n 41. {pisi}: Number of pisi packages\n 42. {soar}: Number of soar packages\n 43. {nix-all}: Total number of all nix packages\n 44. {flatpak-all}: Total number of all flatpak app packages\n 45. {brew-all}: Total number of all brew packages\n 46. {guix-all}: Total number of all guix packages\n 47. {hpkg-all}: Total number of all hpkg packages", + "description": "Output format of the module `Packages`. See Wiki for formatting syntax\n 1. {all}: Number of all packages\n 2. {pacman}: Number of pacman packages\n 3. {pacman-branch}: Pacman branch on manjaro\n 4. {dpkg}: Number of dpkg packages\n 5. {rpm}: Number of rpm packages\n 6. {emerge}: Number of emerge packages\n 7. {eopkg}: Number of eopkg packages\n 8. {xbps}: Number of xbps packages\n 9. {bpm}: Total number of all bpm packages\n 10. {nix-system}: Number of nix-system packages\n 11. {nix-user}: Number of nix-user packages\n 12. {nix-default}: Number of nix-default packages\n 13. {apk}: Number of apk packages\n 14. {pkg}: Number of pkg packages\n 15. {flatpak-system}: Number of flatpak-system app packages\n 16. {flatpak-user}: Number of flatpak-user app packages\n 17. {snap}: Number of snap packages\n 18. {brew}: Number of brew packages\n 19. {brew-cask}: Number of brew-cask packages\n 20. {macports}: Number of macports packages\n 21. {scoop-user}: Number of scoop-user packages\n 22. {scoop-global}: Number of scoop-global packages\n 23. {choco}: Number of choco packages\n 24. {pkgtool}: Number of pkgtool packages\n 25. {paludis}: Number of paludis packages\n 26. {winget}: Number of winget packages\n 27. {opkg}: Number of opkg packages\n 28. {am-system}: Number of am-system packages\n 29. {sorcery}: Number of sorcery packages\n 30. {lpkg}: Number of lpkg packages\n 31. {lpkgbuild}: Number of lpkgbuild packages\n 32. {guix-system}: Number of guix-system packages\n 33. {guix-user}: Number of guix-user packages\n 34. {guix-home}: Number of guix-home packages\n 35. {linglong}: Number of linglong packages\n 36. {pacstall}: Number of pacstall packages\n 37. {mport}: Number of mport packages\n 38. {am-user}: Number of am-user (aka appman) packages\n 39. {pkgsrc}: Number of pkgsrc packages\n 40. {hpkg-system}: Number of hpkg-system packages\n 41. {hpkg-user}: Number of hpkg-user packages\n 42. {pisi}: Number of pisi packages\n 43. {soar}: Number of soar packages\n 44. {nix-all}: Total number of all nix packages\n 45. {flatpak-all}: Total number of all flatpak app packages\n 46. {brew-all}: Total number of all brew packages\n 47. {guix-all}: Total number of all guix packages\n 48. {hpkg-all}: Total number of all hpkg packages", "type": "string" }, "physicaldiskFormat": { diff --git a/src/detection/packages/packages.h b/src/detection/packages/packages.h index 7464a30c..c684d33b 100644 --- a/src/detection/packages/packages.h +++ b/src/detection/packages/packages.h @@ -8,6 +8,7 @@ typedef struct FFPackagesResult uint32_t amSystem; uint32_t amUser; uint32_t apk; + uint32_t bpm; uint32_t brew; uint32_t brewCask; uint32_t choco; diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index 3d83f3a5..42acc3c8 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -452,6 +452,7 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts, if (!(options->disabled & FF_PACKAGES_FLAG_PACSTALL_BIT)) packageCounts->pacstall += getNumElements(baseDir, "/var/lib/pacstall/metadata", false); if (!(options->disabled & FF_PACKAGES_FLAG_PISI_BIT)) packageCounts->pisi += getNumElements(baseDir, "/var/lib/pisi/package", true); if (!(options->disabled & FF_PACKAGES_FLAG_PKGSRC_BIT)) packageCounts->pkgsrc += getNumElements(baseDir, "/usr/pkg/pkgdb", DT_DIR); + if (!(options->disabled & FF_PACKAGES_FLAG_BPM_BIT)) packageCounts->bpm += getNumElements(baseDir, "/var/lib/bpm/installed", true); } static void getPackageCountsRegular(FFstrbuf* baseDir, FFPackagesResult* packageCounts, FFPackagesOptions* options) diff --git a/src/logo/ascii/tidelinux.txt b/src/logo/ascii/tidelinux.txt new file mode 100644 index 00000000..2d8b44e3 --- /dev/null +++ b/src/logo/ascii/tidelinux.txt @@ -0,0 +1,14 @@ + $1@@@@ $1@@@$2* + $1@@$2~~~~$1@@ $1@@$2~~~ + $1@@$2~~ $2~~$1@ $1@@$2~~ + $1@@$2~~ $2~$1@ $1@@@$2~~ + $2*$1@@$2~~ $1@@@@ $2~$1@@@@$2~~~ $1@@@$2* + $2~~ $1@@$2~~~~$1@@ $2~~~~ $1@@$2~~~ + $1@@$2~~ $2~~$1@ $1@@$2~~ + $1@@$2~~ $2~$1@ $1@@@$2~~ + $2*$1@@$2~~ $1@@@@ $2~$1@@@@$2~~~ $1@@@$2* + $2~~ $1@@$2~~~~$1@@ $2~~~~ $1@@$2~~~ + $1@@$2~~ $2~~$1@ $1@@$2~~ + $1@@$2~~ $2~$1@ $1@@@$2~~ + $2*$1@@$2~~ $2~$1@@@@$2~~~ + $2~~ $2~~~~ diff --git a/src/logo/builtin.c b/src/logo/builtin.c index 26bce146..b6446fca 100644 --- a/src/logo/builtin.c +++ b/src/logo/builtin.c @@ -4788,6 +4788,17 @@ static const FFlogo T[] = { FF_COLOR_FG_GREEN, }, }, + // TideLinux + { + .names = {"Tide Linux"}, + .lines = FASTFETCH_DATATEXT_LOGO_TIDELINUX, + .colors = { + FF_COLOR_FG_256 "27", + FF_COLOR_FG_256 "39", + }, + .colorTitle = FF_COLOR_FG_BLUE, + .colorKeys = FF_COLOR_FG_MAGENTA, + }, // Torizon OS { .names = {"Torizon OS", "TorizonCore"}, diff --git a/src/modules/packages/option.h b/src/modules/packages/option.h index 240ca666..5b1d9e98 100644 --- a/src/modules/packages/option.h +++ b/src/modules/packages/option.h @@ -6,36 +6,37 @@ typedef enum __attribute__((__packed__)) FFPackagesFlags { FF_PACKAGES_FLAG_NONE = 0, FF_PACKAGES_FLAG_APK_BIT = 1ULL << 0, - FF_PACKAGES_FLAG_BREW_BIT = 1ULL << 1, - FF_PACKAGES_FLAG_CHOCO_BIT = 1ULL << 2, - FF_PACKAGES_FLAG_DPKG_BIT = 1ULL << 3, - FF_PACKAGES_FLAG_EMERGE_BIT = 1ULL << 4, - FF_PACKAGES_FLAG_EOPKG_BIT = 1ULL << 5, - FF_PACKAGES_FLAG_FLATPAK_BIT = 1ULL << 6, - FF_PACKAGES_FLAG_NIX_BIT = 1ULL << 7, - FF_PACKAGES_FLAG_OPKG_BIT = 1ULL << 8, - FF_PACKAGES_FLAG_PACMAN_BIT = 1ULL << 9, - FF_PACKAGES_FLAG_PALUDIS_BIT = 1ULL << 10, - FF_PACKAGES_FLAG_PKG_BIT = 1ULL << 11, - FF_PACKAGES_FLAG_PKGTOOL_BIT = 1ULL << 12, - FF_PACKAGES_FLAG_MACPORTS_BIT = 1ULL << 13, - FF_PACKAGES_FLAG_RPM_BIT = 1ULL << 14, - FF_PACKAGES_FLAG_SCOOP_BIT = 1ULL << 15, - FF_PACKAGES_FLAG_SNAP_BIT = 1ULL << 16, - FF_PACKAGES_FLAG_WINGET_BIT = 1ULL << 17, - FF_PACKAGES_FLAG_XBPS_BIT = 1ULL << 18, - FF_PACKAGES_FLAG_AM_BIT = 1ULL << 19, - FF_PACKAGES_FLAG_SORCERY_BIT = 1ULL << 20, - FF_PACKAGES_FLAG_LPKG_BIT = 1ULL << 21, - FF_PACKAGES_FLAG_LPKGBUILD_BIT = 1ULL << 22, - FF_PACKAGES_FLAG_GUIX_BIT = 1ULL << 23, - FF_PACKAGES_FLAG_LINGLONG_BIT = 1ULL << 24, - FF_PACKAGES_FLAG_PACSTALL_BIT = 1ULL << 25, - FF_PACKAGES_FLAG_MPORT_BIT = 1ULL << 26, - FF_PACKAGES_FLAG_PKGSRC_BIT = 1ULL << 27, - FF_PACKAGES_FLAG_HPKG_BIT = 1ULL << 28, - FF_PACKAGES_FLAG_PISI_BIT = 1ULL << 29, - FF_PACKAGES_FLAG_SOAR_BIT = 1ULL << 30, + FF_PACKAGES_FLAG_BPM_BIT = 1ULL << 1, + FF_PACKAGES_FLAG_BREW_BIT = 1ULL << 2, + FF_PACKAGES_FLAG_CHOCO_BIT = 1ULL << 3, + FF_PACKAGES_FLAG_DPKG_BIT = 1ULL << 4, + FF_PACKAGES_FLAG_EMERGE_BIT = 1ULL << 5, + FF_PACKAGES_FLAG_EOPKG_BIT = 1ULL << 6, + FF_PACKAGES_FLAG_FLATPAK_BIT = 1ULL << 7, + FF_PACKAGES_FLAG_NIX_BIT = 1ULL << 8, + FF_PACKAGES_FLAG_OPKG_BIT = 1ULL << 9, + FF_PACKAGES_FLAG_PACMAN_BIT = 1ULL << 10, + FF_PACKAGES_FLAG_PALUDIS_BIT = 1ULL << 11, + FF_PACKAGES_FLAG_PKG_BIT = 1ULL << 12, + FF_PACKAGES_FLAG_PKGTOOL_BIT = 1ULL << 13, + FF_PACKAGES_FLAG_MACPORTS_BIT = 1ULL << 14, + FF_PACKAGES_FLAG_RPM_BIT = 1ULL << 15, + FF_PACKAGES_FLAG_SCOOP_BIT = 1ULL << 16, + FF_PACKAGES_FLAG_SNAP_BIT = 1ULL << 17, + FF_PACKAGES_FLAG_WINGET_BIT = 1ULL << 18, + FF_PACKAGES_FLAG_XBPS_BIT = 1ULL << 19, + FF_PACKAGES_FLAG_AM_BIT = 1ULL << 20, + FF_PACKAGES_FLAG_SORCERY_BIT = 1ULL << 21, + FF_PACKAGES_FLAG_LPKG_BIT = 1ULL << 22, + FF_PACKAGES_FLAG_LPKGBUILD_BIT = 1ULL << 23, + FF_PACKAGES_FLAG_GUIX_BIT = 1ULL << 24, + FF_PACKAGES_FLAG_LINGLONG_BIT = 1ULL << 25, + FF_PACKAGES_FLAG_PACSTALL_BIT = 1ULL << 26, + FF_PACKAGES_FLAG_MPORT_BIT = 1ULL << 27, + FF_PACKAGES_FLAG_PKGSRC_BIT = 1ULL << 28, + FF_PACKAGES_FLAG_HPKG_BIT = 1ULL << 29, + FF_PACKAGES_FLAG_PISI_BIT = 1ULL << 30, + FF_PACKAGES_FLAG_SOAR_BIT = 1ULL << 31, FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT64_MAX, } FFPackagesFlags; static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), ""); diff --git a/src/modules/packages/packages.c b/src/modules/packages/packages.c index 1d1094ae..a0b90137 100644 --- a/src/modules/packages/packages.c +++ b/src/modules/packages/packages.c @@ -63,6 +63,7 @@ bool ffPrintPackages(FFPackagesOptions* options) FF_PRINT_PACKAGE(emerge) FF_PRINT_PACKAGE(eopkg) FF_PRINT_PACKAGE(xbps) + FF_PRINT_PACKAGE(bpm) if (options->combined) { FF_PRINT_PACKAGE_ALL(nix); @@ -160,6 +161,7 @@ bool ffPrintPackages(FFPackagesOptions* options) FF_FORMAT_ARG(counts.emerge, "emerge"), FF_FORMAT_ARG(counts.eopkg, "eopkg"), FF_FORMAT_ARG(counts.xbps, "xbps"), + FF_FORMAT_ARG(counts.bpm, "bpm"), FF_FORMAT_ARG(counts.nixSystem, "nix-system"), FF_FORMAT_ARG(counts.nixUser, "nix-user"), FF_FORMAT_ARG(counts.nixDefault, "nix-default"), @@ -247,6 +249,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) FF_TEST_PACKAGE_NAME(AM) break; case 'B': if (false); + FF_TEST_PACKAGE_NAME(BPM) FF_TEST_PACKAGE_NAME(BREW) break; case 'C': if (false); @@ -338,6 +341,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do if (false); FF_TEST_PACKAGE_NAME(AM) FF_TEST_PACKAGE_NAME(APK) + FF_TEST_PACKAGE_NAME(BPM) FF_TEST_PACKAGE_NAME(BREW) FF_TEST_PACKAGE_NAME(CHOCO) FF_TEST_PACKAGE_NAME(DPKG) @@ -393,6 +397,7 @@ bool ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy FF_APPEND_PACKAGE_COUNT(amSystem) FF_APPEND_PACKAGE_COUNT(amUser) FF_APPEND_PACKAGE_COUNT(apk) + FF_APPEND_PACKAGE_COUNT(bpm) FF_APPEND_PACKAGE_COUNT(brew) FF_APPEND_PACKAGE_COUNT(brewCask) FF_APPEND_PACKAGE_COUNT(choco) @@ -464,6 +469,7 @@ FFModuleBaseInfo ffPackagesModuleInfo = { {"Number of emerge packages", "emerge"}, {"Number of eopkg packages", "eopkg"}, {"Number of xbps packages", "xbps"}, + {"Number of bpm packages", "bpm"}, {"Number of nix-system packages", "nix-system"}, {"Number of nix-user packages", "nix-user"}, {"Number of nix-default packages", "nix-default"},