RTFM - Screencast (Ruby Terminal File Manager)


I was looking for an intellectual challenge I could feel passionate about. Some itch I just had to scratch. And keep on scratching. Something geeky.

And as usual, it just pops out from nowhere. I ask, it comes. Can’t explain exactly how. This time it happened to be the creation of a file manager from scratch.

I love the terminal as a workspace. I do most of my work - writing, e-mail, reading, editing, programming in the terminal. A consistent interface where I have full control.

Having used a bunch of different terminal file managers like Vifm and Ranger I wasn’t fully satisfied. My perfectionism craved a consistency that I couldn’t quite quench. I had just gotten around to create a comprehensive color scheme for my terminal with specific coloring of more than 500 different file types. I wanted the same color setup for my file manager.

I tried to figure out how I could do that in Ranger, but that proved difficult, so I ended up with creating a theme for that file manager that showed a mere subset of my large color scheme. Not good enough.

I ended up writing the Ruby Terminal File Manager from scratch. It’s obviously written in my favorite production programming language, Ruby.

I was surprised that I could add all the features necessary to replace Ranger in less than 40 hours and with only 700 lines of code. I knew nothing about programming in “curses” when I started (a library for creating and managing “windows” within a terminal). I had to learn a bunch of other stuff as well. But when I get going, I don’t waste time.

I have added a few more features since I booted Ranger and I’m hoping to add more as long as I can keep creating this passion.

A major benefit from doing this is that I can have any feature I need or want without having to ask others to program something for me. I can simply open up VIM and program the feature of the day.

As usual, you can get the RTFM code on Github, install it and run it if you like.

Just for kicks, I also created a screencast as an introduction to RTFM:


Link to this post: https://isene.org/2020/11/RTFM.html