<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>alavi.me - list</title>
    <subtitle>My mind on the web</subtitle>
    <link rel="self" type="application/atom+xml" href="https://alavi.me/tags/list/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://alavi.me"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-02-25T00:00:00+00:00</updated>
    <id>https://alavi.me/tags/list/atom.xml</id>
    <entry xml:lang="en">
        <title>My Box of Cool CLI&#x2F;TUI tools</title>
        <published>2025-12-21T00:00:00+00:00</published>
        <updated>2026-02-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            Alireza Alavi
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://alavi.me/blog/cool-cli-tui/"/>
        <id>https://alavi.me/blog/cool-cli-tui/</id>
        
        
        <content type="html" xml:base="https://alavi.me/blog/cool-cli-tui/">&lt;h2 id=&quot;preface&quot;&gt;Preface&lt;a class=&quot;zola-anchor&quot; href=&quot;#preface&quot; aria-label=&quot;Anchor link for: preface&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Here is a list of CLI(Command Line Interface) and TUI(Terminal User Interface) applications that I love and use often.
I list them here so I don&#x27;t forget about them, and maybe others(you) might find them useful.&lt;&#x2F;p&gt;
&lt;p&gt;Read about &lt;a href=&quot;&#x2F;blog&#x2F;cli-and-tui-over-gui&quot;&gt;why I prefer CLI and TUI over GUI&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;There also exists extensive lists of CLI and TUI tools ( see &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#other-similar-lists&quot;&gt;other cli tui lists&lt;&#x2F;a&gt;),
This is just &lt;em&gt;my&lt;&#x2F;em&gt; list.&lt;&#x2F;p&gt;
&lt;p&gt;The lists aren&#x27;t written in any particular order.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;non-obvious-ones&quot;&gt;Non-obvious ones&lt;a class=&quot;zola-anchor&quot; href=&quot;#non-obvious-ones&quot; aria-label=&quot;Anchor link for: non-obvious-ones&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;These are less common applications.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;aerc&quot;&gt;Aerc&lt;a class=&quot;zola-anchor&quot; href=&quot;#aerc&quot; aria-label=&quot;Anchor link for: aerc&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;E-mail is definitely my favorite way of messaging, and arguably one of the greatest and most
successful methods of communication ever created. It is simple, effective, and truly
decentralized (although big tech hates that and is trying to kill the decentralization).&lt;&#x2F;p&gt;
&lt;p&gt;Aerc is a TUI E-mail client.&lt;br &#x2F;&gt;
Lightweight, efficient, amazing integration with git&#x27;s email based workflows.&lt;&#x2F;p&gt;
&lt;p&gt;If you work with email based git workflows, Aerc is absolutely amazing. But even if you don&#x27;t,
I think it is still great for E-mail communication. Using it is pretty simple and the UI
is pretty simple with little learning curve.&lt;br &#x2F;&gt;
I still use Thunderbird as my main E-mail client mostly because of the calendar which I heavily
use for both my work and personal life, and BiDi text support which the TUI&#x2F;CLI world doesn&#x27;t
really support yet, although using Aerc with a BiDi capable terminal like Wezterm and good font
renders OK RTL text.&lt;&#x2F;p&gt;
&lt;p&gt;Note that Aerc stores your password in clear text in the config file by default, which is bad.
You should use a password manager like &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#pass&quot;&gt;pass&lt;&#x2F;a&gt; to store your password and read it from Aerc&#x27;s config.&lt;br &#x2F;&gt;
For example, add this to your config and remove the clear text password:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #CDD6F4); background-color: light-dark(#EFF1F5, #1E1E2E);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;source-cred-cmd = pass my&#x2F;password&#x2F;name&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;bombardier&quot;&gt;Bombardier&lt;a class=&quot;zola-anchor&quot; href=&quot;#bombardier&quot; aria-label=&quot;Anchor link for: bombardier&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;bombardier is a HTTP(S) benchmarking tool.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;If you want to stress test your server or application, you want to &lt;em&gt;bombardier&lt;&#x2F;em&gt; it with gazillion requests
to tests it&#x27;s limits.&lt;&#x2F;p&gt;
&lt;p&gt;Bombardier does exactly that. And figuring out how to use it is as simple as &lt;code&gt;bombardier --help&lt;&#x2F;code&gt;.&lt;br &#x2F;&gt;
I&#x27;m also a huge fan of how the provide an AppImage format of the binary. I always like that.&lt;&#x2F;p&gt;
&lt;p&gt;Also checkout &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#wrk&quot;&gt;wrk&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;btop&quot;&gt;Btop&lt;a class=&quot;zola-anchor&quot; href=&quot;#btop&quot; aria-label=&quot;Anchor link for: btop&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;If you ask me, Btop is the king of &lt;em&gt;task managers&lt;&#x2F;em&gt;. You can think of it as &lt;code&gt;htop&lt;&#x2F;code&gt; with lots of
added functionality and pizzazz.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s been my default task manager for years, both on my personal computers and on servers.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fd&quot;&gt;fd&lt;a class=&quot;zola-anchor&quot; href=&quot;#fd&quot; aria-label=&quot;Anchor link for: fd&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;From it&#x27;s manpage: &quot;Find entries in the filesystem&quot;. &quot;A simple, fast and user-friendly
alternative to find&quot;. I will emphasize on the &quot;Fast&quot; part.\&lt;&#x2F;p&gt;
&lt;p&gt;As simple as &lt;code&gt;fd .html&lt;&#x2F;code&gt; to find all files that have &quot;.html&quot; in their name, in your current directory
and all it&#x27;s subdirectories.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;fzf&quot;&gt;fzf&lt;a class=&quot;zola-anchor&quot; href=&quot;#fzf&quot; aria-label=&quot;Anchor link for: fzf&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Interactively search within basically anything.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;fzf - a command-line fuzzy finder&lt;br &#x2F;&gt;
fzf is an interactive filter program for any kind of list.&lt;&#x2F;p&gt;
&lt;p&gt;- fzf manpage&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;But what is a &quot;fuzzy finder&quot;? Well it all goes back to some complicated math and logic from
&quot;Fuzzy math&quot; and &quot;Fuzzy logic&quot; which is pretty amazing, but in short, fuzzy can mean
&quot;not exactly, but it&#x27;s close&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;By running &lt;code&gt;fzf&lt;&#x2F;code&gt;, by default it will be searching within your files in the current directory.&lt;br &#x2F;&gt;
For example, searching for &quot;stry&quot; will match all these files:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;.bash_hi&lt;strong&gt;st&lt;&#x2F;strong&gt;o&lt;strong&gt;ry&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;some&#x2F;path&#x2F;&lt;strong&gt;st&lt;&#x2F;strong&gt;o&lt;strong&gt;ry&lt;&#x2F;strong&gt;_time.txt&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;str&lt;&#x2F;strong&gt;eam&#x2F;&lt;strong&gt;y&lt;&#x2F;strong&gt;our_file.md&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Or you can search within the contents of a file:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;cat huge_file.md | fzf&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Or within a some specified files. Remember &lt;code&gt;fd&lt;&#x2F;code&gt;? These two pair up beautifully together:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;fd -t file --hidden .conf | fzf --preview &quot;cat -n {}&quot;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;This will find all &lt;em&gt;files&lt;&#x2F;em&gt;, even the &lt;em&gt;hidden&lt;&#x2F;em&gt; ones, that their names contain &quot;.conf&quot; and then you
can interactively search within them using fzf and preview each file with cat.&lt;&#x2F;p&gt;
&lt;p&gt;I should also note that it is really fast!&lt;&#x2F;p&gt;
&lt;p&gt;This &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.redhat.com&#x2F;en&#x2F;blog&#x2F;fzf-linux-fuzzy-finder&quot;&gt;blog post by redhat on fzf&lt;&#x2F;a&gt;
is pretty good for some tricks.&lt;&#x2F;p&gt;
&lt;p&gt;TODO: how to search the contents of multiple files with fzf?(email me if you know)&lt;&#x2F;p&gt;
&lt;h3 id=&quot;httpie&quot;&gt;HTTPie&lt;a class=&quot;zola-anchor&quot; href=&quot;#httpie&quot; aria-label=&quot;Anchor link for: httpie&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Postman is for babies; real men use &lt;code&gt;curl&lt;&#x2F;code&gt;. But there is also a great middle ground,
and it is called &lt;code&gt;HTTPie&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;HTTPie is an HTTP client that does absolutely everything you need from a sane HTTP client.&lt;br &#x2F;&gt;
No, we don&#x27;t need API mocking (that&#x27;s why you have &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#prism&quot;&gt;Prism&lt;&#x2F;a&gt;), project management and mini-games
in an HTTP client which takes 30 seconds to load and takes up 3GiB of ram.&lt;&#x2F;p&gt;
&lt;p&gt;HTTPie provides both a GUI which is great and simple, and CLI commands &lt;code&gt;http&lt;&#x2F;code&gt; and &lt;code&gt;https&lt;&#x2F;code&gt;.&lt;br &#x2F;&gt;
It also supports GraphQL requests.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;http-server&quot;&gt;http-server&lt;a class=&quot;zola-anchor&quot; href=&quot;#http-server&quot; aria-label=&quot;Anchor link for: http-server&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The name is pretty self explanatory, which I always like.&lt;br &#x2F;&gt;
If you want to serve some static files, say, your static website for showing it to others
or development, you will need an http server and &lt;code&gt;http-server&lt;&#x2F;code&gt; is great at doing that!&lt;&#x2F;p&gt;
&lt;p&gt;Install it using &lt;code&gt;npm&lt;&#x2F;code&gt; or whatever js package manager you are using.&lt;br &#x2F;&gt;
I like to install it with [Volta].&lt;&#x2F;p&gt;
&lt;h3 id=&quot;hyperfine&quot;&gt;Hyperfine&lt;a class=&quot;zola-anchor&quot; href=&quot;#hyperfine&quot; aria-label=&quot;Anchor link for: hyperfine&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Hyperfine is a great and yet very simple program benchmarking tool.&lt;&#x2F;p&gt;
&lt;p&gt;Yes, there are built-in or libraries in most languages for benchmarking within your code,
but having a simple benchmarking tool that doesn&#x27;t care about what your program is or does,
and just runs it and tests it can be really great.&lt;br &#x2F;&gt;
For example, if have have written the same program or algorithm in multiple languages and want
to benchmark the performance as a black box, hyperfine is the tool.
Or if you want to benchmark programs that you haven&#x27;t written, don&#x27;t know anything about
them and don&#x27;t have access to their code.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;lnav&quot;&gt;lnav&lt;a class=&quot;zola-anchor&quot; href=&quot;#lnav&quot; aria-label=&quot;Anchor link for: lnav&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;lnav is a log navigator that does exactly that. It gives you unbelievable power in navigating log files.&lt;&#x2F;p&gt;
&lt;p&gt;It has vim like bindings and interface, and has many features that makes it so efficient and simple
to navigate and monitor log files. I always have it on my servers.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;lynx&quot;&gt;Lynx&lt;a class=&quot;zola-anchor&quot; href=&quot;#lynx&quot; aria-label=&quot;Anchor link for: lynx&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;a  general  purpose  distributed  information browser for the World Wide Web&lt;&#x2F;p&gt;
&lt;p&gt;- Lynx manpage&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;A good website shouldn&#x27;t rely on CSS and Javascript to deliver content and information to you.&lt;br &#x2F;&gt;
Sometimes, you can use your favorite websites only with a terminal, without opening up a browser
that eats 3GB of ram.&lt;&#x2F;p&gt;
&lt;p&gt;A lot can be done with just HTML. HTML is the whole driver of the web. Don&#x27;t underestimate it.&lt;&#x2F;p&gt;
&lt;p&gt;And it&#x27;s also always good to test your website with Lynx to see if your website is usable and
correct from it. If yes, it shows that your website is correctly structured, the HTML is
correct and your website doesn&#x27;t rely on CSS and JS for functionality.&lt;&#x2F;p&gt;
&lt;p&gt;Here is how this page looks in Lynx:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;.&#x2F;assets&#x2F;lynx_screenshot.webp&quot; alt=&quot;Screenshot of Lynx browser showing this webpage&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;A big downside of Lynx for me is that it doesn&#x27;t support RTL and BiDi text.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;w3m&quot;&gt;w3m&lt;a class=&quot;zola-anchor&quot; href=&quot;#w3m&quot; aria-label=&quot;Anchor link for: w3m&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;While &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#lynx&quot;&gt;Lynx&lt;&#x2F;a&gt; is the OG TUI web browser, w3m is somewhat more modern.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;It uses Vim like bindings for navigation (which is always a good thing)&lt;&#x2F;li&gt;
&lt;li&gt;can handle image rendering if your terminal supports it&lt;&#x2F;li&gt;
&lt;li&gt;supports RTL text if your terminal supports it.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;There is also &lt;em&gt;Chawan&lt;&#x2F;em&gt; which is a newer TUI web browser but I couldn&#x27;t run it after installing it on arch
so I can&#x27;t tell if it&#x27;s better or not.&lt;&#x2F;p&gt;
&lt;p&gt;Here&#x27;s a comparison of a website that uses RTL text in Wezterm (left is w3m right is lynx)
&lt;img src=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;.&#x2F;assets&#x2F;w3m_vs_lynx_rtl.webp&quot; alt=&quot;Comparison of w3m and lynx with RTL text&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;As you can see, lynx renders gibberish.&lt;&#x2F;p&gt;
&lt;p&gt;I have to say, using and navigating w3m is much simpler than lynx.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;wrk&quot;&gt;wrk&lt;a class=&quot;zola-anchor&quot; href=&quot;#wrk&quot; aria-label=&quot;Anchor link for: wrk&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;According to &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;codesenberg&#x2F;bombardier&#x2F;wiki&#x2F;Comparison-to-other-tools&quot;&gt;bombardier&#x27;s wiki&lt;&#x2F;a&gt;, &lt;code&gt;wrk&lt;&#x2F;code&gt; is 1.5-2x faster than &lt;code&gt;bombardier&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Also check out &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#bombardier&quot;&gt;bombardier&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;prism&quot;&gt;Prism&lt;a class=&quot;zola-anchor&quot; href=&quot;#prism&quot; aria-label=&quot;Anchor link for: prism&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Turn any OpenAPI2&#x2F;3 and Postman Collection file into an API server with mocking, transformations and validations.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;pass&quot;&gt;pass&lt;a class=&quot;zola-anchor&quot; href=&quot;#pass&quot; aria-label=&quot;Anchor link for: pass&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;pass - stores, retrieves, generates, and synchronizes passwords securely&lt;&#x2F;p&gt;
&lt;p&gt;- pass manage&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;One must have tool. It can be managed with git so you don&#x27;t lose track of your passwords.&lt;br &#x2F;&gt;
This can be very useful both for personal usage and for usage within teams.
Usually, within a team you will have lots of passwords that you have to share,
and I think this can be a very convenient, secure and simple way of doing it.&lt;&#x2F;p&gt;
&lt;p&gt;You should use &lt;a href=&quot;https:&#x2F;&#x2F;alavi.me&#x2F;blog&#x2F;cool-cli-tui&#x2F;#gpg&quot;&gt;gpg&lt;&#x2F;a&gt; to encrypt your passwords in &lt;code&gt;pass&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;rg-ripgrep&quot;&gt;rg (ripgrep)&lt;a class=&quot;zola-anchor&quot; href=&quot;#rg-ripgrep&quot; aria-label=&quot;Anchor link for: rg-ripgrep&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The new &quot;grep&quot; in town.&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;recursively search the current directory for lines matching a pattern&lt;&#x2F;p&gt;
&lt;p&gt;- ripgrep manual&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I think most of the benefit of &lt;code&gt;rg&lt;&#x2F;code&gt; over &lt;code&gt;grep&lt;&#x2F;code&gt; comes down to it&#x27;s better performance.
rg is very fast. For example, running &lt;code&gt;rg &quot;init.lua&quot;&lt;&#x2F;code&gt; in my home directory, which contains
tons of files, returns all the results in 7 seconds, while &lt;code&gt;grep -r &quot;init.lua&quot;&lt;&#x2F;code&gt; took
4 minutes to complete! That is a huge difference.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Cool tip:&lt;&#x2F;em&gt; You can search for something in your git project, only in files that are tracked by
git with &lt;code&gt;rg [pattern] $(git ls-files)&lt;&#x2F;code&gt;.&lt;br &#x2F;&gt;
This is much faster than using &lt;code&gt;git grep [pattern]&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;But don&#x27;t sleep on the good old &lt;code&gt;grep&lt;&#x2F;code&gt; either. It&#x27;s still very good and installed on every Linux system.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;tldr&quot;&gt;tldr&lt;a class=&quot;zola-anchor&quot; href=&quot;#tldr&quot; aria-label=&quot;Anchor link for: tldr&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;It is like &lt;code&gt;man&lt;&#x2F;code&gt; but much more concise, with examples.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, this doesn&#x27;t replace &lt;code&gt;man&lt;&#x2F;code&gt; but it is great for quickly being reminded how
to use something&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;tldr curl&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;tldr ffmpeg&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;transmission-cli&quot;&gt;Transmission-cli&lt;a class=&quot;zola-anchor&quot; href=&quot;#transmission-cli&quot; aria-label=&quot;Anchor link for: transmission-cli&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Torrent client for the cli. Also has Qt and GTK GUI clients.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;tmux&quot;&gt;Tmux&lt;a class=&quot;zola-anchor&quot; href=&quot;#tmux&quot; aria-label=&quot;Anchor link for: tmux&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Tmux is a terminal multiplexer.&lt;br &#x2F;&gt;
What does that mean?\&lt;&#x2F;p&gt;
&lt;p&gt;When working with a terminal, be it a TTY session, an SSH connection, or even your terminal emulator,
you only get one terminal to interact with.&lt;br &#x2F;&gt;
With a multiplexer like tmux, &lt;em&gt;you can have many terminals within one terminal&lt;&#x2F;em&gt;.&lt;br &#x2F;&gt;
You can create new tabs, splits and sessions.&lt;&#x2F;p&gt;
&lt;p&gt;A huge benefit of tmux is the idea of sessions. If you are working with a bare terminal, closing
the terminal will kill all the processes that are running within it. But if you are working
in a tmux session, closing the terminal doesn&#x27;t kill the session, so you will not lose your work.&lt;&#x2F;p&gt;
&lt;p&gt;For me, tmux is a must-have both for my personal computers and on servers. It makes you much more
productive, and makes using the terminal much more enjoyable, powerful and versatile.&lt;&#x2F;p&gt;
&lt;p&gt;I have heard of Zellij, the new terminal multiplexer in town, but I can&#x27;t find enough reasons
to switch to it. Tmux does everything I want.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;tokei&quot;&gt;Tokei&lt;a class=&quot;zola-anchor&quot; href=&quot;#tokei&quot; aria-label=&quot;Anchor link for: tokei&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Tokei gives you stats about your code project, like how many lines of code it has, what languages are used and in what proportion.&lt;&#x2F;p&gt;
&lt;p&gt;Here, it&#x27;s simpler with an example:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color-scheme: light dark; color: light-dark(#4C4F69, #CDD6F4); background-color: light-dark(#EFF1F5, #1E1E2E);&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;jsc on  feat&#x2F;advanced-filter-db&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;❯ tokei&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;===============================================================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Language            Files        Lines         Code     Comments       Blanks&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;===============================================================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Clojure                40         1720         1436          116          168&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; CSS                     1           57           48            0            9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Dockerfile              1           15            8            1            6&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Edn                     5         1142         1091           25           26&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; JavaScript              3           40           34            1            5&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; JSON                    1           43           43            0            0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Makefile                1           14           10            0            4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; XML                     3           70           67            3            0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-------------------------------------------------------------------------------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Markdown                3          396            0          290          106&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; |- Clojure              2           14            9            5            0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; (Total)                            410            9          295          106&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;===============================================================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; Total                  58         3497         2737          436          324&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;===============================================================================&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;It&#x27;s not super useful, but it&#x27;s fun.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;lazygit&quot;&gt;Lazygit&lt;a class=&quot;zola-anchor&quot; href=&quot;#lazygit&quot; aria-label=&quot;Anchor link for: lazygit&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;A Git TUI for the lazy.&lt;&#x2F;p&gt;
&lt;p&gt;This is my go-to Git frontend. Although I believe you should not be reliant on simple abstractions
for your critical software like Git, if you actually understand what is going on, Lazygit is
the best Git front-end I know of.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;exiftool&quot;&gt;exiftool&lt;a class=&quot;zola-anchor&quot; href=&quot;#exiftool&quot; aria-label=&quot;Anchor link for: exiftool&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;exiftool - Read and write meta information in files&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Your files, including your images, videos or anything else, can contain EXIF and other meta data.&lt;br &#x2F;&gt;
While this can be good, sometimes, it can be a security and safety problem.&lt;&#x2F;p&gt;
&lt;p&gt;You might share an image with someone or share it on your website, and within the EXIF data of that
image might be your location, And people that you don&#x27;t want might be able to find your location.&lt;&#x2F;p&gt;
&lt;p&gt;This tools helps you remove or add these kinds of data to files.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;volta&quot;&gt;Volta&lt;a class=&quot;zola-anchor&quot; href=&quot;#volta&quot; aria-label=&quot;Anchor link for: volta&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The JavaScript Launcher ⚡&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I used to use &lt;code&gt;nvm&lt;&#x2F;code&gt;(Node Version Manager) to manage different versions of node or packages on my
system. But Volta is simply better. It is more than just a node version manager. It also
make installing tools or other CLI applications that are written with JavaScript simpler.&lt;br &#x2F;&gt;
For example, for installing &lt;code&gt;http-server&lt;&#x2F;code&gt; I will just do &lt;code&gt;volta install http-server&lt;&#x2F;code&gt; and Volta will
install that tool globally for me and manage it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;zoxide&quot;&gt;Zoxide&lt;a class=&quot;zola-anchor&quot; href=&quot;#zoxide&quot; aria-label=&quot;Anchor link for: zoxide&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;zoxide - a smarter cd command&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;It keeps track of the directories you use most frequently, and uses a ranking
algorithm to navigate to the best match.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;I heavily use Zoxide. It remembers the directories that you visit and ranks them, so you can
navigate around your system with fuzzy matching and much more efficiently.&lt;&#x2F;p&gt;
&lt;p&gt;Let&#x27;s say I have these directories:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&#x2F;mnt&#x2F;work&#x2F;projects&#x2F;foo&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&#x2F;mnt&#x2F;work&#x2F;projects&#x2F;personal&#x2F;foo&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&#x2F;mnt&#x2F;work&#x2F;projects&#x2F;baz&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;If I have previously z&#x27;d into them (&lt;code&gt;z &#x2F;mnt&#x2F;work&#x2F;projects&#x2F;foo&lt;&#x2F;code&gt;), z has added them to it&#x27;s database
and now I can navigate to them just with &lt;code&gt;z foo&lt;&#x2F;code&gt;, &lt;code&gt;z personal&#x2F;foo&lt;&#x2F;code&gt;, &lt;code&gt;z baz&lt;&#x2F;code&gt;. This is amazingly
simple and fast.\&lt;&#x2F;p&gt;
&lt;p&gt;Remember it also uses &lt;code&gt;fzf&lt;&#x2F;code&gt; so you don&#x27;t even need to type the filename fully or correctly.&lt;br &#x2F;&gt;
You can go to &lt;code&gt;&#x2F;projects&#x2F;myBigProjectName&lt;&#x2F;code&gt; with &lt;code&gt;z projecna&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;obvious-ones&quot;&gt;Obvious ones&lt;a class=&quot;zola-anchor&quot; href=&quot;#obvious-ones&quot; aria-label=&quot;Anchor link for: obvious-ones&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;These are more well-known applications, which don&#x27;t need lots of introduction (Who doesn&#x27;t use git or curl?).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;curl&quot;&gt;curl&lt;a class=&quot;zola-anchor&quot; href=&quot;#curl&quot; aria-label=&quot;Anchor link for: curl&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;curl  is  a  tool  for  transferring  data from or to a server using URLs.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Most software engineers know curl, but if you don&#x27;t, you are definitely using it.&lt;br &#x2F;&gt;
From your, computer, smartphone, Car, Fridge or anything that connects to the internet or
needs to communicate with somewhere using URLs (why the hell do fridges and cars need to
be connected?), they are probably using curl.&lt;&#x2F;p&gt;
&lt;p&gt;The most common use-case for me is either downloading files and html pages, or using it as a HTTP
client to make requests to HTTP endpoints (like I said, postman is for babies).&lt;&#x2F;p&gt;
&lt;!-- FIXME --&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;justuse.org&#x2F;curl&#x2F;&quot;&gt;justusecurl&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;git&quot;&gt;Git&lt;a class=&quot;zola-anchor&quot; href=&quot;#git&quot; aria-label=&quot;Anchor link for: git&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The king of SCM.&lt;&#x2F;p&gt;
&lt;p&gt;Who doesn&#x27;t know git?&lt;br &#x2F;&gt;
I can praise git for hours but I don&#x27;t think it needs much praise.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;gpg&quot;&gt;GPG&lt;a class=&quot;zola-anchor&quot; href=&quot;#gpg&quot; aria-label=&quot;Anchor link for: gpg&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;gpg - OpenPGP encryption and signing tool&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;It is a tool to provide digital encryption and signing services using the OpenPGP standard.
gpg features complete key management and all the bells and whistles you would expect
from a full OpenPGP implementation.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;If you don&#x27;t know about OpenPGP, in short you can digitally sign things, you can encrypt and decrypt
things with GPG.&lt;br &#x2F;&gt;
This is how Email encryption works. If you want to send end-to-end encrypted (E2EE) emails, you should use
GPG. If you want to send anything with E2EE, GPG is a great way to do it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;neovim-nvim&quot;&gt;Neovim (nvim)&lt;a class=&quot;zola-anchor&quot; href=&quot;#neovim-nvim&quot; aria-label=&quot;Anchor link for: neovim-nvim&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The greatest text editor of all time (let&#x27;s start a war), and the tool I spend most of my time using.&lt;&#x2F;p&gt;
&lt;p&gt;Objectively the greatest keybindings ever(Vim bindings) paired with great performance and beautiful, simple
extensibility using a great programming language: Lua.
Although I use &quot;fennel&quot; for configuring it, which compiles to Lua with &lt;code&gt;nfnl&lt;&#x2F;code&gt;.
What can I say, I&#x27;m a sucker for &lt;em&gt;Lispy&lt;&#x2F;em&gt; languages.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;networkmanager-tui-nmtui&quot;&gt;networkManager TUI (nmtui)&lt;a class=&quot;zola-anchor&quot; href=&quot;#networkmanager-tui-nmtui&quot; aria-label=&quot;Anchor link for: networkmanager-tui-nmtui&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;I remember people giving lots of hate to nmtui for it&#x27;s instability.&lt;br &#x2F;&gt;
I have to agree, it isn&#x27;t very stable and crashes often, but it gets the job done.&lt;&#x2F;p&gt;
&lt;p&gt;Many times, you don&#x27;t have access to a GUI for configuring NetworkManager
(which is what most desktops use for network managing) and nmtui gets simple tasks
like connecting, disconnecting to internet or changing configuration done.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;honorable-mentions&quot;&gt;Honorable mentions&lt;a class=&quot;zola-anchor&quot; href=&quot;#honorable-mentions&quot; aria-label=&quot;Anchor link for: honorable-mentions&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;wezterm&quot;&gt;Wezterm&lt;a class=&quot;zola-anchor&quot; href=&quot;#wezterm&quot; aria-label=&quot;Anchor link for: wezterm&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;I know it&#x27;s not a TUI or CLI app, but we mostly use CLI and TUI apps inside our terminal emulators.&lt;br &#x2F;&gt;
Although I like using a simple bare bones emulator like &lt;code&gt;Alacritty&lt;&#x2F;code&gt; or &lt;code&gt;foot&lt;&#x2F;code&gt; with [tmux], Wezterm is
so lovely that I can&#x27;t help but giving it a shout out.&lt;&#x2F;p&gt;
&lt;p&gt;It has enough features but not too much, simple config, great documentation, cross-platform
and one of the main features that makes me keep using it for some things, is that it is
one of the few emulators that supports BiDi and RTL text which is pretty important for me
as a Farsi speaker.&lt;&#x2F;p&gt;
&lt;p&gt;Too bad Neovim&#x2F;vim still don&#x27;t support BiDi text which is really odd. I really don&#x27;t know anything
about text rendering and BiDi but I want it so much that I might learn it to try and add it to
Neovim.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ttyper&quot;&gt;ttyper&lt;a class=&quot;zola-anchor&quot; href=&quot;#ttyper&quot; aria-label=&quot;Anchor link for: ttyper&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Typing speed test in the terminal&lt;&#x2F;p&gt;
&lt;h2 id=&quot;other-similar-lists&quot;&gt;Other similar lists&lt;a class=&quot;zola-anchor&quot; href=&quot;#other-similar-lists&quot; aria-label=&quot;Anchor link for: other-similar-lists&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;agarrharr&#x2F;awesome-cli-apps&quot;&gt;agarrharr&#x2F;awesome-cli-apps&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;rothgar&#x2F;awesome-tuis&quot;&gt;rogthar&#x2F;awesome-tuis&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
</feed>
