Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
tcell
Tcell is an alternate terminal package, similar in some ways to termbox, but better in others.
-
Turbo Vision
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Github still has atom feeds for repos, for example: https://github.com/rothgar/awesome-tuis/commits/master.atom Unfortunately they don't really make links to these feeds very visible in the UI anymore. But toss that in your feed reader of choice and you'll get an update when the awesome list content changes.
One of the most useful for me is McFly[1], which provides a nice U/I on top of history. Works with both bash and zsh shells. You can remove entries from your history as well all within the McFly U/I. Game changer.
[1] https://github.com/cantino/mcfly
TUIs are very pretty and very convenient. Unfortunately rendering to the Terminal is...slow. See https://github.com/browsh-org/browsh.
Honestly I wonder if there is a way to speed it up. Like a new terminal mode which lets you write or color a particular row/column directly, or utilizes the GPU to render to each pixel, or really anything better than literally printing text with fancy spacing, escapes, etc. on each refresh.
Until then, anything which is render-intensive you're much better using a GUI, even if it's just a shell script which opens a window while it's running.
Surprised scli isn't in there. It's one of the few pieces of software that I'll actually advocate for: super stable, great bindings if you're coming from vim, and surprisingly complete.
[1] https://github.com/isamert/scli/
How about some libraries that help with building TUIs?
I'll start with https://github.com/gdamore/tcell
dmenu is great for a graphical environment. At the prompt, I've found some success with slmenu [0]. It's a dmenu clone for the command line. It works well enough that a dmenu script for a todo app works with very little changes [1]. As a launcher there's many dmenu example scripts to start from. Youtube has videos to get you started as well [2].
[0] https://github.com/lpsantil/slmenu
[1] https://github.com/lpsantil/slmenu-todo
[2] https://youtu.be/SlJto75auCA
dmenu is great for a graphical environment. At the prompt, I've found some success with slmenu [0]. It's a dmenu clone for the command line. It works well enough that a dmenu script for a todo app works with very little changes [1]. As a launcher there's many dmenu example scripts to start from. Youtube has videos to get you started as well [2].
[0] https://github.com/lpsantil/slmenu
[1] https://github.com/lpsantil/slmenu-todo
[2] https://youtu.be/SlJto75auCA
If you like sup-mail, I recommend also trying notmuch via alot.
https://notmuchmail.org/
https://github.com/pazz/alot
There are other options if you don't like alot. See:
https://notmuchmail.org/frontends/
How about playing tetris inside emacs?
Well, there's a lot of games inside emacs
https://github.com/emacs-mirror/emacs/tree/master/lisp/play
For anyone who wants to add graphics to their TUI, notcurses is pushing the boundaries of what's possible and viable in a terminal. Still could use some bindings for higher-level languages and ergonomics. It also degrades pretty gracefully depending on terminal capabilities.
Check out notcurses-demo and see what you can pull off in a terminal. My only gripe is that tmux degrades significantly. Regardless, dankamongmen is an awesome dude bringing back the demoscene vibes.
https://piped.kavin.rocks/watch?v=dcjkezf1ARY
https://github.com/dankamongmen/notcurses
100% agreed. Also VisiData looks cool, thanks for the link. In this space, I'm a huge fan of Lnav (https://lnav.org) which fits similar use cases as a TUI / CLI for ETL workflows (w embedded SQLite), works great at the scale of a few millions of rows.
A little late to the article, if anyone is still reading comments I recommend cmus, a console music player with extensive key bindings and library support.
https://cmus.github.io/
Indeed, I have fond memories of the Turbo C IDE.
I wish conio.h would have been something under Unix, free from the VT100 cruft. ncurses is lacking and awkward to use.
Apparently conio.h was ported to Linux (https://github.com/nowres/conio-for-linux) but I don't think it ever was a popular option.
I think xsv is what you're looking for: https://github.com/BurntSushi/xsv. Specifically xsv table.
Sounds like you might wanna take a look at https://github.com/pgdr/ph
org-mode + org-roam. It's really quite powerful.
org-mode is bundled with emacs, but org-roam [1] you gotta install yourself.
[1]: https://www.orgroam.com/
Interesting, I haven't noticed any performance issues, and I'm currently running version 0.31.4. Perhaps the issues you're talking about were fixed.
Regarding the colours, I personally like them, but the configuration [0] options look fairly thorough so perhaps its worth checking those out?
[0]: https://github.com/jesseduffield/lazygit/blob/master/docs/Co...