Like many others, I don’t replace old tools with new ones, simply because it is written in Rust. For example, fzf is a very novel and useful tool that’s written in Go. (FYI: Fzf has a Rust alternative called skim). I’m going to restrict the rest of the post to the context of this thread - Rust CLI/TUI programs that I like. But by no means are they the only new ones I like, or always a replacement for the old ones.
fd and ripgrep (rg) have 2 things in common that give them edge over their older counterparts. First is that both are extremely fast compared to their predecessors. Second is that both support a modern (perl-compatible) version of regex syntax that many programming languages support.
Zellij is a terminal multiplexer like Tmux. However, Zellij IMO has one huge advantage over Tmux and screen - you don’t need to take a tutorial or read a user guide just to get started. Everything is discoverable and intuitive. Zellij has the potential to replace TMux as the dominant terminal multiplexer in the near future.
You may find zoxide, atuin and starship as good extensions to your terminal experience, depending on your tastes. Zoxide is a smart directory changer (alt for cd) with good integration all around - with a lot of shells, alternatives (data import), editors (emacs, nvim, etc), file browsers (ranger, nnn, etc) and even mail client (aerc). Atuin replaces the history part of GNU Readline. But lately, it has started gaining features not found in readline, like encrypted history and cross-device history sync. Starship may be a bit fancy for shell prompts - but I find its configuration format to be simpler than the old method. It also supports several shells giving you a uniform experience across shells.
GPG-TUI is a TUI frontend to GnuPG. It’s useful simply because the GnuPG UI is terrible. Meanwhile, Sequoia PGP is a tool that aims to replace GnuPG altogether. It has some lofty ambitions and has forced the OpenPGP ecosystem to advance a bit. Some of their innovations aim to solve the drawbacks of old OpenPGP - like lack of PKI (instead of just WoT) and Perfect forward secrecy in certain modes. Its defaults are also more sane and modern compared to GnuPG.
Git-UI (Rust) and LazyGit (Go) are TUI frontends for Git - they have no alternatives. I can recommend either of them if you are a heavy user of git - especially interactive staging and interactive rebasing. Meanwhile, git-interactive-rebase-tool is a tool specifically designed to manage interactive rebases.
If you are into coding, you may find Tokei useful. It is tool for counting Lines of code (LoC) in your projects, segregated by language. Hyperfine, from the developer of fd, is used to benchmark applications over several runs, with a lot of configuration options. Bat is a terminal pager, again from the developer of fd. It supports syntax highlighting. I often find uses for that. I’m not aware of another tool with the exact same functionality.
Finally, nushell is showing a lot of promise as a shell with more modern features. It extends the structured data paradigm from powershell.
Note that skim performs worse than fzf. There’s a new matcher in Rust called nucleo which is faster, but it currently doesn’t have a cli and can only be used inside Helix editor (hx)
nu is probably the best shell for ad-hoc data processing, handling all my daily needs in one expression.
fd and rg have another thing in common, that they’re both 50% shorter than their traditional alternatives /s
nu is probably the best shell for ad-hoc data processing, handling all my daily needs in one expression.
I am really struggling with this, I heard about nu shell some time ago, but the fact that you had to learn some form of new language made me reluctant to actually try it.
As a fisher user I want to have sane usable defaults, without having to learn just another programming language for a “tool”.
I use fish for simple command pipelines as well. But traditional shells are not as good when I need to do anything “structured”, because they treats almost any value as a string and don’t have anonymous functions. The first problem means that you have to parse a string again and again to do anything useful, the second means that when both pipe and xargs fails you are doomed.
Nu solves both of the big problems that matters when you want to do rather complex but ad-hoc processing of data. And with a rather principled design, nu is very easy to learn (fish is already way better than something POSIX like bash though).
Personally another important reason is that I have a Windows machine at work and nushell is much easier than pwsh.
Btw fish is also going to be a “tool in rust” soon :)
Forgot to mention stacked-git (stg). This is a tool to deal with patch stacks - much like the age old quilt tool often used by kernel hackers. Unlike quilt, stg uses git to manage a stack of patches. This tool was originally written in Python. It was recently rewritten in Rust by the same team.
Having used stg, it’s like having multiple staging indexes in git. This allows you to craft a good commit history like the one you get from using interactive rebasing. Unlike interactive rebasing, you don’t have to wait till finishing the feature, in order to achieve that result. If you are a git user and haven’t given stg a try yet, I strongly recommend you do. It’s a nice tool to have in your development tool chest.
Just to add - gitui doesn’t (yet) have the commit signing, so for commiting stuff you still have to use command line, but other features are pretty useful.
Like many others, I don’t replace old tools with new ones, simply because it is written in Rust. For example, fzf is a very novel and useful tool that’s written in Go. (FYI: Fzf has a Rust alternative called skim). I’m going to restrict the rest of the post to the context of this thread - Rust CLI/TUI programs that I like. But by no means are they the only new ones I like, or always a replacement for the old ones.
fd and ripgrep (rg) have 2 things in common that give them edge over their older counterparts. First is that both are extremely fast compared to their predecessors. Second is that both support a modern (perl-compatible) version of regex syntax that many programming languages support.
Zellij is a terminal multiplexer like Tmux. However, Zellij IMO has one huge advantage over Tmux and screen - you don’t need to take a tutorial or read a user guide just to get started. Everything is discoverable and intuitive. Zellij has the potential to replace TMux as the dominant terminal multiplexer in the near future.
You may find zoxide, atuin and starship as good extensions to your terminal experience, depending on your tastes. Zoxide is a smart directory changer (alt for cd) with good integration all around - with a lot of shells, alternatives (data import), editors (emacs, nvim, etc), file browsers (ranger, nnn, etc) and even mail client (aerc). Atuin replaces the history part of GNU Readline. But lately, it has started gaining features not found in readline, like encrypted history and cross-device history sync. Starship may be a bit fancy for shell prompts - but I find its configuration format to be simpler than the old method. It also supports several shells giving you a uniform experience across shells.
GPG-TUI is a TUI frontend to GnuPG. It’s useful simply because the GnuPG UI is terrible. Meanwhile, Sequoia PGP is a tool that aims to replace GnuPG altogether. It has some lofty ambitions and has forced the OpenPGP ecosystem to advance a bit. Some of their innovations aim to solve the drawbacks of old OpenPGP - like lack of PKI (instead of just WoT) and Perfect forward secrecy in certain modes. Its defaults are also more sane and modern compared to GnuPG.
Git-UI (Rust) and LazyGit (Go) are TUI frontends for Git - they have no alternatives. I can recommend either of them if you are a heavy user of git - especially interactive staging and interactive rebasing. Meanwhile, git-interactive-rebase-tool is a tool specifically designed to manage interactive rebases.
If you are into coding, you may find Tokei useful. It is tool for counting Lines of code (LoC) in your projects, segregated by language. Hyperfine, from the developer of fd, is used to benchmark applications over several runs, with a lot of configuration options. Bat is a terminal pager, again from the developer of fd. It supports syntax highlighting. I often find uses for that. I’m not aware of another tool with the exact same functionality.
Finally, nushell is showing a lot of promise as a shell with more modern features. It extends the structured data paradigm from powershell.
Note that
skim
performs worse thanfzf
. There’s a new matcher in Rust callednucleo
which is faster, but it currently doesn’t have a cli and can only be used inside Helix editor (hx
)nu
is probably the best shell for ad-hoc data processing, handling all my daily needs in one expression.fd
andrg
have another thing in common, that they’re both 50% shorter than their traditional alternatives /sI am really struggling with this, I heard about nu shell some time ago, but the fact that you had to learn some form of new language made me reluctant to actually try it. As a fisher user I want to have sane usable defaults, without having to learn just another programming language for a “tool”.
What am I missing?
It kinda fills a niche.
I use fish for simple command pipelines as well. But traditional shells are not as good when I need to do anything “structured”, because they treats almost any value as a string and don’t have anonymous functions. The first problem means that you have to parse a string again and again to do anything useful, the second means that when both pipe and
xargs
fails you are doomed.Nu solves both of the big problems that matters when you want to do rather complex but ad-hoc processing of data. And with a rather principled design, nu is very easy to learn (fish is already way better than something POSIX like bash though).
Personally another important reason is that I have a Windows machine at work and nushell is much easier than pwsh.
Btw fish is also going to be a “tool in rust” soon :)
Forgot to mention stacked-git (stg). This is a tool to deal with patch stacks - much like the age old quilt tool often used by kernel hackers. Unlike quilt, stg uses git to manage a stack of patches. This tool was originally written in Python. It was recently rewritten in Rust by the same team.
Having used stg, it’s like having multiple staging indexes in git. This allows you to craft a good commit history like the one you get from using interactive rebasing. Unlike interactive rebasing, you don’t have to wait till finishing the feature, in order to achieve that result. If you are a git user and haven’t given stg a try yet, I strongly recommend you do. It’s a nice tool to have in your development tool chest.
Thanks for your comprehensive comment!
Just to add - gitui doesn’t (yet) have the commit signing, so for commiting stuff you still have to use command line, but other features are pretty useful.