customfetch v2.0.0-beta1 - Plugin-based Module Loader
Pre-releaseFor Summer of making
if you have problems installing on your machine, then use release v1.0.0 (Linux and Android only) or compile and install from source (recommended)
Well, as of right now 7 months and 246 new commits from v1.0.0 to v2.0.0-beta1.
It surely has took many days and months to release this. From having breakdowns and absent willing to work on customfetch, I still wanted to look forward for the future of customfetch because it was my first ever project that took so much work for bringing it to life.
What's in this beta release?
This beta is all about two things: getting started on macOS support and an excitingly experimental plugin support.
Adding full macOS support is a big job that's still in progress. Instead of waiting for that to be completely finished, I wanted to release this version now so you can test the main new plugin-based module loader.
This new system lets you create or add external plugins to display almost any info you can think of, like live weather, GitHub stats, or anything else, right alongside your system information. It's a level of customization that really sets custom fetch apart.
So, jump in, try making a plugin, and see what you can add to your fetch!
What's Changed
✨ Major Features & Enhancements
- Plugin-based Modules Loader: Introduced a new plugin-based system for loading external info modules. (by @Toni500github in #4)
- Platform Support: Added macOS support (some modules are still a Work in Progress).
- Android Refactor: Major refactoring of the Android widget, moving C++ code to pure Kotlin.
- GUI Improvements:
- Added support for light colors.
- Added GTK CSS support for theming.
- Added the application icon/logo to the GUI.
- New Arguments:
- Added
--debug
flag for debugging. - Added
--disallow-command-tag
flag for security. - Improved
--help
and--how-it-works
documentation.
- Added
- Project Structure: The Android app has been moved to its own dedicated repository.
⚙️ Configuration & CLI
- Config: Deprecated
"removable"
in favor of"external"
inauto.disk.display-types
. - Config: Fixed configuration overwrite from command-line arguments.
- Args: The
--loop-ms
command now exits with the 'q' key and has a default increased from 50ms to 200ms. - Args: Migrated from system getopt to the
getopt_port
library.
🐛 Bug Fixes
- GUI: Fixed a crash related to empty strings and checking for
$
at the start. - GUI: Improved escaping of
&
characters. - Query: Fixed system uptime calculation on Android.
- Display: Prevented opening the same source-path twice.
- Assets: Fixed several ASCII art files that had incorrect single backslash escapes.
- Misc: Fixed a crash related to very large
all_ids
strings inpci.ids.hpp
.
🔧 Build System & Project
- Build: Added an install and uninstall target and fixed the CMake build.
- Build: Forced linking with static libraries such as with
{fmt}
. - Workflows: Added a CMake GitHub workflow.
- Licensing: Added the FastFetch license and updated the copyright year.
- Logos: Added official project logos and icons.
- Versioning: Adopted a
--version
system inspired by Hyprland.
📦 Dependencies & Codebase
- Misc: Replaced custom command execution functions with the cross-platform
tiny-process-library
. - Misc: Removed the
VENDOR_TEST
andDEVICE_TEST
flags. - Misc: Now uses a compile-time
GUI_APP
definition instead of a runtimeconfig.gui
setting.
🛠️ Workarounds & Misc.
- Misc: Creates a temporary Linux/macOS ASCII art as a fallback when unable to get the distro path.
- Misc: Various other minor fixes and improvements.
- Tests: Added new tests (adapted from TabAUR).
⚠️ Experimental & Unstable
- Config: Added support for
%
in offset values (marked as super unstable and might be removed).
Click to expand for detailed commit list
What's Changed
- Plugin-based Modules Loader by @Toni500github in #4
- c73c036 project: add macos support (some things WIP)
- 87802fe misc: create a temponary file when unable to get distro path
- f0fb491 misc: add fastfetch license + update copyright license year
- cc2b4aa misc: steal version system from Hyprland (I kinda contributed to that tho)
- 483be29 config: make offset accept % (super unstable might remove it)
- fef7fac cda59d2 (and more) android widget: trying to refactor c++ code to pure kotlin
- df9cf5c gui: add light colors in pango
- df9cf5c gui: fix crash with empty string and checking for $ at the start, also try to escape more &
- df9cf5c config: deprecate "removable" in favor of "external" in auto.disk.display-types
- b73e4bb config: fix overwrite from arguments
- f2ec92d query: system: fix uptime on android
- 407ac75 args: add --debug
- 3e905ae misc: use compile-time
GUI_APP
instead of runtime config.gui - fbfb610 174abee android app: move it to https://github.com/Toni500github/customfetch-android-app
- 0b19507 project: add official logos/icons
- d230340 tests: add these (stolen from TabAUR)
- 6d27025 workflow: add cmake.yml + cmake: fix build and add install target
- 254f42f build: add icon prefix + improve uninstall targets
- 65ef7ba gui: add icon logo
- 7f4464c aeed450 args: add --disallow-command-tag
- 89950f0 doc: refactor --help and --how-it-works
- e4bd61d display: don't open the same source-path twice
- 261e467 assets: fix some ascii art that have single backslash escape
- e43a38b gui: add gtk css support
- b19b52f 65e9e0d workaround: a conflict between the Radeon RX 5500 XT and the (Oland PRO?) Radeon R7 340
- 5cf6c68 args: exit --loop-ms with 'q' and increase from 50 to 200 ms
- 51742e7 makefile: force link with fmt static library
- 7827407 misc: remove
VENDOR_TEST
andDEVICE_TEST
- f6a56cf docs: fix some -h incorrections
- 907d567 44361a1 misc: fix some things
- 1600cf1 misc: ditch selfmade command execute functions in favour of cross-platform tiny-proccess-library
- 59c57c0 args: migrate GNU getopt to
getopt_port
- 0104997 misc: fix crash with really big
all_ids
string in pci.ids.hpp
Full Changelog: v1.0.0...v2.0.0-beta1