The implementation of this - a single, huge bash script - is actually a pretty neat thing to browse through if you want to improve your knowledge of bash.
Relevant, Dylan had written a piece[0] on why he created Neofetch rather attempting to improve Screenfetch. It seems he later blanked the page, I guess due to being a bit heated.
And it's actually developed as a single file. I do wonder if they have considered a solution like the sqlite amalgamation https://www.sqlite.org/amalgamation.html
There's a pure PowerShell version[0] of this, for Windows, called winfetch. The repository also has a batch alternative for systems not supporting PowerShell.
osquery is a related open source cross-platform system information tool that exposes everything through sql syntax. The scope of information you can query for is enormous: https://osquery.io/schema/4.9.0/
I feel like this should be a bunch of files that are concatenated in the makefile, not one giant 10,000SLOC script. Otherwise it seems pretty organized and looks like it's following bash best practices.
Pretty close! Actually, someone was working on a short bash script for backing up some files, tried to remove some hardcoded values, had to use google to figure out how to get the information dynamically using `sysctl` and `system_profiler`, ended up on the Github page for neofetch, and thought "hey this is great, maybe this could be useful for other people as well!" and submitted it.
They have over 140,000 points, post multiple times a day and never write any comments. They sure look like a bot.
I've seen lots of profiles made around 2012 as well that post regularly but only have a tenth the amount of points as this one has.
Also, not sure why you're so quick to defend them. Bots are very common now a days. Its not unreasonable to assume most of the profiles that produce massive amounts of content on most social media platforms are bots.
Nothing prevents someone from posting under an account otherwise used as a submission bot. If you actually look where they're commenting, it's usually only on stories that they submitted.
The fancy appearance is probably due to user customizations. Simply changing the terminal font to one you like better and changing the background from pure black to another color (while keeping it dark) makes a big difference on appearance. The rest is probably window decorations, which means tweaking your WM theme. [r/unixporn](https://old.reddit.com/r/unixporn) has a lot of good examples, and most people share dotfiles for you to borrow from.
I think most Linux operating systems come with Python already installed (at least all the ones I use do). It could be uploaded to PyPI, which would mean installing PIP, but using pre-installed libraries would mean you could simply use git (which is usually pre-installed too), and then run `python3 setup.py install`.
> Neofetch supports almost 150 different operating systems. From Linux to Windows, all the way to more obscure operating systems like Minix, AIX and Haiku
You're making a lot of assuptions. Many servers don't have git installed. Some only have python2. Some dont even have that. Not to mention AIX or other non-linux platforms
Ok…but bash is waaayy more common. I could see this if you were making an argument about Perl, since it’s probably pretty close to parity with bash in terms of pre-existing in most environments…but python? No way!
Ah, right, Windows, forgot about that one! So, Windows you’re pretty much always going to have to install something anyway.
For almost all of the BSDs, Linux distros, Solaris, AIX, HPUX, countless others, you’re going to have both bash and Perl interpreters included by default.
I think installing python is generally quite reasonable! It’s just not as ubiquitous, so if you’re looking for a one-stop interpreted language that most people will neither need to install or worry about the interpreter version, then a baseline old version of bash or Perl is a pretty good bet.
Although really awk probably also deserves consideration in this regard, given that you will even have it on embedded Linux where bash and Perl are not. I don’t know enough about awk to comment on its general utility for doing something like neofetch, however.
even in those Windows-centric corporate environments you can push a few buttons to get a Microsoft-built version of bash, even before wsl was a thing, not so for python.
This is a pretty small project, and, furthermore, it is by its nature supposed to support a lot of different systems, so I personally don't know if it makes sense to rewrite it (and in Python out of all things: maybe then better rewrite it in a compiled language, so that you can distribute it as a binary?). So I'm hesistant to say one should do it: it might do more harm than good.
But if this wouldn't bother me, I would really want to rewrite it. Just look at the source. It is 11K LoC. It is very modular by nature, since there is a lot of stuff that is "the same, but slightly different" for each OS. It is really simple by nature, just a few dozens of directives, each of them should answer 1 pretty straight-forward question. So it should be fairly easy to read (and it actually makes a practical sense even for a user, since this is so much of a collection of knowledge about different OS, not so much a "real program"). But it's not (I mean, it's not easy to read, assuming you are comfortable with bash). And it's not badly-written bash-script, quite otherwise. It's just… bash. How exactly you'd improve that would depend on the language of choice, but every "proper" PL should make it possible to write this very thing in such a way, that reading it "entirely" in a few minutes would be trivial, and wouldn't require scrolling through 11K LoC. Just separating all ASCII-art from code and making a separate class (if we use Python) for each OS implementation with a common interface, extending 1 or more base-classes (for OS families) would improve it greatly, since it would take me literally seconds to see all directives it currently supports, and to find their implementations for the particular system I'm interested in. After scrolling through some maybe 200 LoC you'd feel that you know everything that it does, and the rest 10K LoC (or whatever it would be) are just "details".
So while actually suggesting to rewrite it in Python might show some lack of analysis, I wouldn't bash anyone for wishing it would have been written in Python.
I particularly enjoyed this function that returns the ASCII-art logo for the current platform: https://github.com/dylanaraps/neofetch/blob/017aa041d86340f2...