dylanaraps / neofetch

🖼️ A command-line system information tool written in bash 3.2+
MIT License
21.85k stars 1.76k forks source link

Introduce fastfetch, a fast, cross platform, neofetch like system info tool #2257

Closed CarterLi closed 1 year ago

CarterLi commented 1 year ago

https://github.com/LinusDierheimer/fastfetch

Screenshots

macOS

image

Linux

terminal

Windows

image

WSL

image

FreeBSD (in VM)

image

Android (without logo)

image

Benchmarks

https://github.com/LinusDierheimer/fastfetch/wiki/Fastfetch-VS-Hyfetch-(Linux)

hykilpikonna commented 1 year ago

Just added support for using fastfetch as a hyfetch backend!

image
CarterLi commented 1 year ago
❯ hyfetch -b fastfetch
Traceback (most recent call last):
  File "/opt/homebrew/bin/hyfetch", line 5, in <module>
    from hyfetch.main import run
  File "/opt/homebrew/lib/python3.11/site-packages/hyfetch/__init__.py", line 3, in <module>
    from . import main, constants
  File "/opt/homebrew/lib/python3.11/site-packages/hyfetch/main.py", line 12, in <module>
    from . import termenv, neofetch_util
  File "/opt/homebrew/lib/python3.11/site-packages/hyfetch/neofetch_util.py", line 19, in <module>
    from .distros import distro_detector
ModuleNotFoundError: No module named 'hyfetch.distros'

@hykilpikonna

hykilpikonna commented 1 year ago
❯ hyfetch -b fastfetch
Traceback (most recent call last):
  File "/opt/homebrew/bin/hyfetch", line 5, in <module>
    from hyfetch.main import run
  File "/opt/homebrew/lib/python3.11/site-packages/hyfetch/__init__.py", line 3, in <module>
    from . import main, constants
  File "/opt/homebrew/lib/python3.11/site-packages/hyfetch/main.py", line 12, in <module>
    from . import termenv, neofetch_util
  File "/opt/homebrew/lib/python3.11/site-packages/hyfetch/neofetch_util.py", line 19, in <module>
    from .distros import distro_detector
ModuleNotFoundError: No module named 'hyfetch.distros'

@hykilpikonna

Oops, forgot to add .distros to the list of sub-packages for installation... it should work now!

CarterLi commented 1 year ago

Good.

❯ hyperfine -w 3 "hyfetch -b fastfetch" "fastfetch"
Benchmark 1: hyfetch -b fastfetch
  Time (mean ± σ):     249.8 ms ±   7.1 ms    [User: 107.8 ms, System: 65.9 ms]
  Range (min … max):   239.2 ms … 258.6 ms    11 runs

Benchmark 2: fastfetch
  Time (mean ± σ):     118.6 ms ±   6.8 ms    [User: 23.1 ms, System: 31.4 ms]
  Range (min … max):   106.7 ms … 134.3 ms    24 runs

Summary
  'fastfetch' ran
    2.11 ± 0.14 times faster than 'hyfetch -b fastfetch'

I don't really get what's the benefit of wrapping fastfetch with hyfetch. Are there any benefits other than fancier logo color?

Can we integrate it into fastfetch and got zero overheads and no python dependency? It's really a thing on Windows.

hykilpikonna commented 1 year ago

I don't really get what's the benefit of wrapping fastfetch with hyfetch. Are there any benefits other than fancier logo color?

The entire purpose of HyFetch is its coloring functionality, rendering ASCII logos with LGBTQ+ pride flags. Please be aware of your heteronormative perspective—a pride flag isn't just a "fancier logo color" that provides no benefits.

neowofetch or the maintained neofetch script inside the HyFetch repository technically isn't directly related to HyFetch. (i.e. HyFetch is a wrapper that can function with a different *fetch backend like fastfetch)

Can we integrate it into fastfetch and got zero overheads and no python dependency?

tbh, I don't think it's necessary, it's just a 150ms difference which isn't a lot, but translating the color rendering code into fastfetch would mean maintaining two code bases at once. The time required to translate and maintain the code isn't worthwhile since translating it doesn't add any features.

Also, since HyFetch uses the list of distributions created by crowdsourced contributors to the neofetch repository, its list of distros is more complete (currently having 329 ascii arts), and using hyfetch with fastfetch backend allows it to display all 329 logos instead of only the 65 logos supported by fastfetch.

image
CarterLi commented 1 year ago

Dont get me wrong. I love fancy colors, but I dont think it is worth adding another dependency. Because, in my honest opinion, it is not hard to implement.

hykilpikonna commented 1 year ago

Dont get me wrong. I love fancy colors, but I dont think it is worth adding another dependency. Because, in my honest opinion, it is not hard to implement.

There are no dependencies here. HyFetch doesn't depend on fastfetch (i.e. it can run without fastfetch), and fastfetch doesn't depend on HyFetch either.

If the dependency you mentioned is python, then I would argue that a programming language isn't a "dependency." If python is a dependency, then gcc, cmake are dependencies as well (i.e. on a new platform like riscv64 without prebuilt binaries, you would have to install gcc and cmake to run fastfetch). And since python3 is pre-installed on most distros and is probably among the first things maintainers would package for a new platform, I wouldn't worry about its compatibility.

CarterLi commented 1 year ago

Closing, as it's going off topic.