Kushal Das

FOSS and life. Kushal Das talks here.


A few new generation command line tools

Many of us live on the terminal. We use tools which allows us to do things faster and let us stay productive. Most of these tools are old. Sometimes we do pick up a few new generation command line tools. Here is a small list of tools I am using daily. All of these are written in Rust .


ripgrep screenshot

ripgrep was the first Rust tool I started using daily as a replacement for grep. It is easy to use. The output looks nice, and also works with my vim.


exa is the replacement for ls. It includes many useful flags.

exa demo


bat is the one stop replacement for cat and less. It also provides syntax highlighting with nice colours. I do have an alias cat=/usr/bin/bat -p.

bat demo


zoxide allows to move around directories super fast.

zoxide demo


starship is the shell prompt you can see in all of the GIFs above. It allows a lot of customization.

All of these tools are packaged in Fedora 32 by the amazing fedora-rust SIG.

Tools I use daily

In this post, I am going to talk about the tools that I use daily on my computer. This is a personal choice, I don’t intend to spark off a vim vs Emacs debate as an outcome of this blog post.

Operating System

I use Fedora as my primary Operating System. I am currently running Fedora 25 in all my boxes except one home server, which runs Fedora 24. In the data center, I have CentOS on the bare-metal, and Fedora in the VM(s). The very same goes for any quick VM that I create over Fedora Infra Cloud.


Last June, I moved to i3wm from Gnome. I started with the configuration from Adam Miller and then modified according to my preferences. This morning, I updated it further so I could use my Kinesis keyboard along with it. For the last few months, I was using my Das Keyboard for a change. I am back to my most favorite keyboard now. :)

The only problem I encountered with i3wm is with projectors. Not all projectors work out of the box with my system. Maybe it is a problem with the configuration that I have. It at least works with my external monitor or the TV at home. It also works properly with a few of the projectors in the local Red Hat office.


I use mbsync tool from isync package to sync all my emails locally. In the past, I used offlineimap, but mbsync seems to be a little faster in syncing e-mails. This helps when mailboxes are as big as mine.

I use Kolabnow as my primary e-mail service provider, I still use my Gmail id as it is configured with a few too many things. I am very happy with Kolab’s service, and I think it is a perfect service to pay for.

Mutt is the choice of mail client. Most of the other mail clients fail to open or function properly with the large size maildirs that I have. To send out the mail, I use msmtp tool on the laptop.

Editor + IDE

Vim is my first choice as editor. I use it daily for most of my work; right from writing e-mails in mutt to doing the final review of my blog posts before publishing. I don’t use any plugin as I like to have the same experience in every server I use, and I don’t particularly like installing random plugins in the servers. You can find my simple vimrc here.

I also use PyCharm IDE from JetBrains. It actually stole the first place for Python projects from Vim. A few months back, I also found the golang plugin for it, and then started using it for all of my golang development too. It is an extremely nice IDE. You can download the community edition and start using it.

For writing any other text, I mostly used Vim. Around a month back though, I found Focuswriter. With a little bit of color changing in the theme, it has now become my standard tool for distraction-free writing. I generally prefer to put my headphones on, play some random music (Often, I do not even know the music that is playing) and then write in Focuswriter. This tool is the newest addition to my daily usage list and, seriously, one of the best finds for me in 2016. For some odd reason, I actually went through the whole source code of Focuswriter. I generally don’t do that for most of the tools I use.


I use both Firefox and Chrome with a few add-ons. Chrome loves to take up all the RAM I have. Maybe someday it will get better with RAM usage.


I use Xchat as my primary IRC client. Currently, I host a ZNC instance inside an rkt container in my server, and my Xchat connects to it. People continue to suggest other IRC clients, but I never managed to try them. I do have one irssi session running from another server for emergencies.

Blog / Website

I use Shonku, a static blogging tool I wrote back in 2013 as my blogging platform. It uses simple Markdown as the input format of the blog posts. The uses of Markdown helps me to focus on the content than on the formatting.

While I am writing this post, I am trying to remember other tools that I use regularly. I don’t see any other tool open in any current workspace in the laptop though. I find it kind of funny that even though I have so many applications installed on the computer, I only use a few of them actively. I also prefer to use the tools that have a good user base. This helps to find an answer to any question I might have. Though I keep looking at the blog posts for all the new modern and shiny tools, but for my personal usage, I am stuck with the tools I trust for a long time. In the end, I should also mention Python. I have various scripts for automating my tasks in the system, and almost all of them are written in Python. One of the last addition was the weekly status tool I started writing a few weeks back.

Note:: In the real world, Coffee is the other must-have tool for my brain to work properly. Without it, I often only keep staring at the screen without doing much. Thanks to my incredible friends, I source my coffee from all across the world. That’s a story for another day.