Anifetch - Animated Neofetch banner

Anifetch - Animated Neofetch

5 devlogs
35h 43m 49s

Updated Project: neofetch but animated

its already a released project, but I will be adding some requested features, clean up the code etc.

This project uses AI

the keyreader class was written by chatgpt
I also used chatgpt to find a good tui module to use

Demo Repository

Loading README...

Noten

Shipped this project!

Hours: 35.7
Cookies: 🍪 733
Multiplier: 20.55 cookies/hr

I updated my animated neofetch tool. It is now version 1.0

Trying to do a flicker-less animated fetch tool that also supports terminal resizing without using a tui library and also doing it cross platform was finnicky, I had to use the rich module. It is possible to do it without rich but I couldn’t get it to work the way I wanted it to work, so I had to use rich.

I also had to port over all rendering code from bash to python. That was not really fun but ehh what can I say.

I also made caching 2.5x faster by just doing jpeg frame extraction rather than png and using multithreading while processing frames with chafa.

Noten

I did a bunch of stuff, did 1.0 release. I also made a yt video on it. https://www.youtube.com/watch?v=ektxQu2MCU0

New features:

  • Cross compatibility for Linux, MacOS and Windows.
  • –interval flag which allows anifetch to refresh the fetch info over time. For example, if you give it –interval 1 it will update the info every second.
  • Caching is now a lot faster, roughly 2.5x. I achieved this by extracting frames as jpeg when using ffmpeg and using multithreading for chafa.
  • Automatic key exit: Anifetch now quits when you press a key(beforehand you had to spesifically do Ctrl+C).
  • Oh and fastfetch is now the default backend to use, I should’ve done this sooner considering neofetch is unmaintained lol.
0
Noten
  • Fixed terminal mode changing(AGAIN, appearently I didnt fix it beforehand).
  • added a “refresh” interval, that way the sysinfo will update over time. Default is -1 (never)

I need to get rid of that black flicker when it updates the fetch info. will probably move the processing over to a new thread.

0
Noten
  • Removed some repeating code
  • Removed unnecessary read and writes of the template.txt file

From now on the code will only call ffprobe to get video dimensions if there isnt a valid cache and height isnt known.

I also fixed a weird bug where after caching the terminal mode would be broken and up/down arrows would print ^[[A instead of bringing the previous commands. This was caused by me forgetting to send the output of chafa to subprocess.PIPE. It was sending the outputs to the main terminal which messed up the terminal mode

I also removed the “bc” package from dependencies because it was only used for the bash script, which has been ported over to python.

I have also updated the pyproject.toml file to prepare for the PyPI release. I decided to support python 3.10+.

Attachment
0
Noten

I recorded new benchmarks.

I had to get rid of neofetch from benchmarks because it just refuses to work properly in windows, I either need to dual boot linux which I dont want to do or use WSL which is bad. I can’t use a virtual machine because that slows things a lot and not indicative of actual performance.

Anyways the optimizations I did roughly sped up the caching by 2.75x which is great. Only catch is that the cached time is a bit higher but I think that’s acceptable and I can always optimize it later.

It might be technically possible to use git bash to do benchmarks within windows but I couldnt get neofetch to work properly for some reason in my python code. It works if I call neofetch by itself in git bash it works fine, but doesn’t work when my python script calls it in git bash.

Attachment
0
Noten
  • started work on docs site
  • Ported bash script to python so that it can work on windows, linux and macos
  • added an keyreader to stop the animation when a key is pressed
  • still need to add benchmarking mode
  • Fixed truncate line function(was bugged)
Attachment
0