Skip to content

Releases: LivacoNew/CrabFetch

v0.5.0

26 Aug 12:39
Compare
Choose a tag to compare

What's Changed

  • Added a system for selective information fetching, something I've coined as "picky info". This will give a performance increase to the more minimal configs. (#26)
  • All placeholders for a module are now available in both title and format, giving more flexibility in a config's output.
  • The player module will now automatically detect players, and has been changed to display multiple.
    • An ignore list has been added in the config to support of this change.
    • This also removes the need for manually specifying which player to use.
  • display now supports Refresh Rate & Rotation Detection for X11 by @CarterLi (#29)
  • Added support and fixes for Windows Subsystem for Linux.
  • Added a new localip module.
  • Added better support for ARM processors.
  • The mounts module will now ignore any non-physical device, giving it much more meaningful output than before.
  • Multiple batteries are now supported, outputting each one on a new line.
  • Added a side option for ASCII, allowing you to move it to any side of the output.
  • Added a dedicated syscall cache system, meaning no syscalls will be repeated preventing unnessasary work.
  • Added some faster program specific version detections, e.g bash or konsole.
  • Added the ability to display the chassis as it's own line on the host module.
  • Added remove_trailing_processor to the cpu module for any models that may benefit from it.
  • Added a version readout to initsys.
  • Added better ssh detection for terminal, eliminating chase_ssh_pts.
  • Added --benchmark-warn, highlighting slower modules than the specified time.
  • Added --inline-values, enabling the inline_values option even if they're disabled in the config.
  • Back up to cpuid for a CPU name if it's not present in /proc/cpuid
  • mounts should now support LABEL and PARTLAABEL mounts
  • The music module has been renamed to players to better reflect it.
  • The os module will now use the uname syscall before going to the osrelease file.
  • Made initsys use more standard name, path and version placeholders.
  • Changed the method of how initsys goes about it's detection.
  • Changed how inline values have been implemented.
  • Added /usr/lib to the list of paths that will query the package manager for a version.
  • Added tmux to the list of known terminals.
  • Added battery to the default list of modules.
  • Added /sys/firmware/devicetree/base/model to the list of known host paths.
  • Indented the git message in --version so it looks a bit nicer.
  • --benchmark now gives the full runtime on the bottom.
  • Adjusted benchmark readouts for preprocess & package mangers.
  • Fixed multiple severe issues with Android.
  • Fixed GPU's without mem_info_vram_total not displaying.
  • Fixed make/models in displays being unknown in X11 due to DRM names being odd
  • Fixed detection issues with running CrabFetch in any program that had spaces in it's filename (e.g tmux)
  • Fixed {space_used} not obeying the set decimal places in mounts.
  • Fixed no chassis file from erroring out the entirety of host.
  • Fixed an empty ignore option in mounts causing no mounts to display.
  • Fixed broken version parsing for VIM.
  • Fixed mount points with spaces causing statfs to fail in mounts.
  • Fixed a wrong error message in initsys.

Full Changelog: v0.4.2...v0.5.0

v0.4.2

06 Aug 22:35
Compare
Choose a tag to compare

This release will break your configs, as a lot of variables have been renamed!

What's Changed

  • Added a {version} placeholder for Shell, Terminal and Editor (#22). This detects the version via 3 attempts;
    • Querying your Package Manager, if the binary is in /usr/bin
    • Matching the checksum of the binary file itself to known values. This step is disabled by default in your config as it lead to some "cheater" callouts. While I disagree, I'm not going to argue with it and will leave it up to the users.
    • Finally, will backup to simply running {command} --version - This is the most dangerous attempt for performance.
  • Added more Linux ASCII's:
    • OpenSuse
    • Rocky Linux
    • Kali Linux
    • AlmaLinux
    • Garuda Linux
  • Fixed my un-diagnosed dyslexia spelling separator wrong throughout the entire project. This is the change that will break your configs!
  • The color and bright_color modules now have config options to change the character used, the margin between each character and whether to color the background or character.
  • The glxinfo method for GPU has been removed, as I believe pcisysfile is now more than sufficient to surpass it. This also means you no longer have to explicitly specify a GPU method, and GPU caching has been removed too.
  • The Host module now has a {chassis} placeholder letting you see what type of chassis you have (e.g Desktop or Laptop)
  • Added {make} and {model} values to the Displays module, available both in the title and format.
  • name in the Displays module now returns the proper DRM name for X11, opposed to the XID.
  • The Displays module can now account for monitor scaling in Wayland, togglable via a config option. Note that Fractional Scaling is not supported, as our upstream dependency doesn't seem to support it.
  • Cleaned up the implementation of the Editor module, which should now detect a bit better.
  • Made the Shell path placeholder check with $PATH for the full path if the user hadn't specified it already.
  • Fixed running CrabFetch as a subprocess causing issues with Shell/Terminal detection.
  • Fixed incorrect Terminal output for terminator.
  • Fixed some issues with Shell detection in Android.
  • Fixed the Battery module not replacing {pecentage}
  • Added --benchmark outputs for unknown modules to prevent odd looking outputs.
  • Fixed config parsing using panic! just a bit too much, it will now format errors a bit nicer.
  • The log_errors config option now lets the config file take priority, before going to the arguments.
  • --version now contains the Git hash, date and message from the build to help with bug hunting.
  • All modules will now default values to "Unknown" instead of empty strings on detection failures, to make it obvious to the user that something has went wrong.
  • Syscalls are now cached, preventing duplicate work being done and increasing performance a little.
  • A ton of back end changes have been made, processes are now parsed better, we now collect all packages on the system to assist with the above version info, and more.

Full Changelog: v0.4.1...v0.4.2

v0.4.1

16 Jul 18:27
Compare
Choose a tag to compare

Notes on the Wiki

The Wiki has largely been rewritten between 0.3.1 and now, it should hopefully prove a lot more helpful than it did before. Feel free to suggest changes and info points to include.

What's Changed

  • Added ASCII's / Support for the following distros;
    • Linux Mint
    • Manjaro
    • Pop!_OS
    • EndeavourOS
    • ElementaryOS
    • ZorinOS
    • Android (Early days, is likely still kinda broken so please make issues about failing detections - Must be manually compiled with the android feature flag, pre-built releases will come soon™)
  • Added a basic date/time module.
  • Added unknown_as_text, allowing you to place entirely custom strings in the output if you so choose instead of CrabFetch complaining about unknown modules.
  • Added a CPU Architecture field to the CPU module.
  • Added an option to move the kernel version to a separate output line in the OS module.
  • CrabFetch now displays the feature flags it was built with in --version
  • The mounts module now uses mtab instead of fstab, allowing for temporarily mounted drives to be shown (e.g USB sticks).
  • The hostname module will now use the uname syscall for hostname using /etc/hostname as a backup, and the username will now backup to the getpwuid syscall if $USER fails.
  • The swap module now exclusively uses the sysinfo syscall to fetch it's information.
  • RPM Package support is now behind the rpm_packages feature flag, allowing for systems to run CrabFetch without libsqlite3 (This is included in the pre-built binaries/packages below)
  • Filesystems as a whole can now be ignored in mounts.ignore - Defaults for this have also been adjusted
  • CPU will now scan every core's max frequency instead of just the first one. This fixes inaccurate readouts on systems with performance/efficiency cores.
  • CPU will also now back up to /proc/cpu if the "cpu cores" entry is missing in /proc/cpuinfo, and /sys/devices/system/cpu/present for thread counts.
  • Shell/Terminal now parse cmdline correctly by using null separation, not whitespace separation.
  • Comments will now be filtered out of /etc/hostname if it is the detection method.
  • Uptime will now backup to the sysinfo syscall if /proc/uptime is unavailable.
  • Fixed pacman packages displaying +1 from the actual value due to CrabFetch.
  • Fixed Battery and Mounts using some wrong formats/settings.
  • Fixed the terminal module only going up one PID due to me trying to re-use the file content variable.
  • Fixed an underflow error from user input in progress bar generation that could crash.
  • I'm no longer shipping broken config files by default.
  • Packages will now contain a stripped version of the executable, reducing file size taken up.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

10 Jul 07:25
Compare
Choose a tag to compare

New cool modules, Void Linux support, GPU improvements and more!
More was planned for this update however I've decided to keep updates more frequent so that you guys have more stuff to use quicker. I feel this is the better way to go as CrabFetch grows and gets more supported things. Anyways, enjoy!

This release may break your configs, be prepared!

What's Changed

  • Added a "music" module that displays your currently playing music through whatever MPRIS player it can find. Note that this requires dbus which implicitly requires systemd as your init system. This is also a separate feature flag if your compiling from source like a nerd.
  • Added a "initsys" module that detects your init system.
  • Added a "processes" module that displays the total running processes on your computer.
  • Added XBPS package manager support.
  • Added an ignore list option to the packages module, in case you want to ignore a package manager.
  • Added Void Linux ASCII art.
  • Multiple GPU's can now be detected with GPU as long as your using pcisysfile. You can ignore disabled GPU's. This also adds an index placeholder for GPU numbering in your titles.
  • Any AMD GPU's will now get their model names from amdgpu.ids (provided by libdrm), allowing for more accurate readouts even with pcisysfile. This is togglable with a config option.
  • Added filesystem information to the mounts module, allowing you to flex you use btrfs instead of normie ext4.
  • Made the locale module have separate language and encoding placeholders, meaning a cleaner output.
  • Changed how percentage color thresholds are configured, allowing them to actually be empty and un-colored instead of reverting back to the config defaults like they did before.
  • The editor module will now backup to $VISUAL if $EDITOR is not set
  • Fixed battery using the swap format, I develop on a desktop so I can't test the battery module to spot this stuff lol
  • Fixed a terminal error displaying a wrong message.
  • Fixed package licences being in the place in Debian packages. I blame the UK for spelling licence with a 'c' not a 's'.
  • Fixed tarball packages using the same directory in my package script as the Debian packages, it now does what a tarball should do and just dumps the files for you to figure out. :)
  • Fixed title lengths being wrong due to dynamic length'ed titles. Instead, these modules are now pre-detected and figured out beforehand. This is the proper fix to the underflow v0.3.1 patched around.
  • The editor module will now obey the "fancy" config value.

Full Changelog: v0.3.1...v0.4.0

v0.3.1

01 Jul 20:33
Compare
Choose a tag to compare

A quick hotfix to fix some issue from v0.3.0.

What's Changed

  • Fixed inaccurate byte readouts when using ibibytes
  • Fixed NerdIcons causing inline values to break a little bit.
  • Added a temporary fix to an underflow when using inline values, which caused an infinite loop and used 30GB of my RAM last night.
  • Add sha256 checksums to Debian package, start referring to x86_64 as amd64, add licences to the packages and I now also provide tarballs.

Full Changelog: v0.3.0...v0.3.1

v0.3.0

01 Jul 01:35
Compare
Choose a tag to compare

We're back! Apologies for my month's silence, college decided to ramp itself up well beyond what I could handle. I'm back now, and already here with a brand new release!

This release may break your configs, be prepared!
A lot has changed and been added, so I would recommend simply deleting your config and re-doing them honestly.

What's Changed

  • Added an "editor" module, displaying your default editor as set by $EDITOR.
  • Added an "locale" module, displaying your locale as set by $LANG.
  • Added back shell's path as {path}
  • Added a "{bar}" placeholder for battery, memory, mounts and swap, creating a progress bar for these modules.
  • Added a --benchmark flag, outputting each individual step and module's time to process, helping you pinpoint what's bottlenecking if your performance is bad (and of course report it!)
  • Added bottom segments in to cap off any segments you make.
  • Added colors to percentages, with customizable thresholds allowing you to color them. To disable this, simply make the thresholds table empty.
  • Made any byte readouts process the unit automatically, meaning you no longer have to specify. This also allows you to swap between regular bytes and "ibibytes".
  • The display module will now connect to your X11/Wayland compositor to get display data, allowing for actual accurate readings. Sorry this took so long, I had to wait to get time to learn how to do any of this. (#10)
  • Change shell detection to use /exe instead of the /cmdline file, credit to FastFetch for this method (Contributes to #7).
  • Shell detection now also uses the "SHLVL" environment variable to figure out how many PID parents to look up.
  • Terminal can now detect in SSH connections properly, assuming the new terminal.chase_ssh_pts option is set to true.
  • Made percentages abide by your decimal_places settings.
  • Fixed errors being suppressed when they shouldn't be.
  • Fixed terminal using the wrong format override.
  • Back up to checking if $WAYLAND_DISPLAY or $DISPLAY is correct if $XDG_SESSION_TYPE is not set in display.
  • Fixed GNOME's terminal displaying as "gnome-terminal-server", simply by hardcoding it.
  • Fix backup CPU clock averaged value setting the clock and not adding to let it get averaged correctly (Contributes to #7).
  • CrabFetch now skips any config path finding when --ignore-config-file is set.
  • Fixed AUR package, moving the binary to go to /usr/local/bin instead of /usr/bin
  • Removed the lazy_static dependency, reworking how data flows and should provide a hefty performance boost (#6).
  • Reworked the main file's code, as it was getting really messy in there. Contributors will be pleased by this, and we now have much more freedom to do stuff with the output now (#11)

Full Changelog: v0.2.0...v0.3.0

v0.2.0

21 Apr 20:34
Compare
Choose a tag to compare

The "fix the broken s@&t" update.

CrabFetch was more broken then I thought, so I've sat down and fixed a whole load of issues, bugs and software support issues, generally polishing it up.
Compatibility is still iffy at best, so I've added a compatibility list wiki page to detail what I've tested and confirmed as best as possible. Just to clarify; I don't have much time at all right now to work on a lot of projects, so spinning up VM after VM testing different distros and different combinations of hardware is out of the question right now. If you want something tested & added, please make an issue and yell at me for it. Thanks :)

What's Changed

  • Shell detection is now done via PID parsing opposed to using the $SHELL environment variable.
  • Improved terminal detection when in multiple shells deep.
  • Capitalized the "Host" title by default.
  • GPU: partially fix gpu name detection by @CarterLi in #3
  • Back up to /proc/cpuinfo if no max clock files exist.
  • Make laptop hosts display the actual chassis opposed to the motherboard.
  • Fixed crashing under x11 sessions.
  • Made suppress_errors false by default.
  • Improved the performance of dpkg packages.
  • Swap to using EDID display parsing. This comes at the tradeoff of no longer being able to detect refresh rates unless I can find a way to get them from the data.
  • Back up to the "hostname" command when /etc/hostname is not present, fixing it for default installations on Fedora.
  • Stopped swap space percentage being NaN when there is no swap space defined.
  • Fixed too many mounts cutting off output.
  • Added rpm support for Fedora distros.
  • Swapped mount detection to using the statfs syscall.
  • Added a launch argument for overriding modules.
  • Improved performance of the CPU module.
  • Improve parsing & performance of meminfo to be actually accurate.
  • Improved uptime display.
  • A whole load of code cleanup.

New Contributors

Full Changelog: v0.1.1...v0.2.0

Checksum

sha256
1feac3dda3c97f254cd0fbfc26e918e07748dbf3d192d5a1c6db05d935d5985a
sha512
cb469d57c6ade6d57f3f408cf1afdc922b4fa130c0998076be61f0d0738540f99235ced7b2101dd5e7f2ff0fd4e35380a6770ff422dc6f5a0f1aad45275942c9

v0.1.1

10 Apr 18:59
Compare
Choose a tag to compare

v0.1.1 is a small update, adding a couple small features as well as some bug fixes.
To add, I've also went ahead and made a AUR Package to let you update CrabFetch a bit easier. There's a git package too if you want the latest of the latest updates.

Change Log:

  • Fixed custom ASCII overrides causing extra empty lines at the bottom of output.
  • Added support for inline module values, enabled via the inline_values config value.
  • Added a new underline_character config value to specify the character used for the underline module.
  • Changed the default underline character to display as a full line opposed to a bunch of hyphens. You can change this back if you prefer the old look.

Checksums

sha256
a6693b5cec1fbc73ba87b9abff687505f17dc0f065bd74c4d28ad4f02581be5b
sha512
37b332735a6caa8f9d7179afb9b3a414b2a7e20961ef97b5c210cd8bf28482c660880ed239d64b61663a3709a5466e4a7fc12d3053a314b56cfec996f220e116

v0.1.0

07 Apr 14:13
Compare
Choose a tag to compare

The first release of CrabFetch! 🎉
Because of how early this project still is I'll leave it as a non-stable release number.