Our great sponsors
-
-
-
SonarLint
Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
-
For C++, there is also ImTui that I wrote sometime ago:
https://github.com/ggerganov/imtui
I made a few sample apps with it, such as HN client and a WTF configuration tool. They are both linked in the repo if you are interested.
I still want to make some other cool terminal app with it, but haven't found a nice idea yet.
-
There is brick[1][2] for Haskell. Other languages may have something similar.
[1] https://hackage.haskell.org/package/brick
[2] https://github.com/jtdaugherty/brick/blob/master/docs/samtay...
-
-
It feels like we live in a pretty good time for writing TUIs, CLIs and also small self-contained tools (thanks to languages like Go, which have a lot of libraries, are easy to use, but also compile to statically linked executables).
What stuck with me was using the Typer library for a Python tool that i wrote: https://typer.tiangolo.com/
It made regular shell scripts into a fully fledged CLI with nested commands thanks to just a few decorators that were sprinkled in the source files, as well as the occasional slight signature alteration.
Developing a GUI feels awfully complicated in comparison and i'm amazed that there don't seem to be all that many (if any) frameworks for creating GUIs in a similar way - by annotating method calls as actions that correspond to the actual GUI elements and letting some smart parsing logic handle the rest for you.
I feel like perhaps the world would be a slightly better place if desktop software could also be distributed as libraries of callable code, where you could automate button presses programmatically and there would be a 1:1 link between what you can do in code and manually.
-
meli
🐝 experimental terminal mail client, mirror of https://git.meli.delivery/meli/meli.git https://crates.io/crates/meli (by meli)
I don't know if it counts as rich, but I rolled my own terminal UI in my email client meli [0]. There's a web demo here: https://meli.delivery/wasm2.html that is the client compiled to webassembly and the ANSI escape codes translated to equivalent SVG drawing so that you can try it on your browser. [0] https://github.com/meli/meli/
-
InfluxDB
Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.
-
-
My personal favorite is musikcube: https://musikcube.com/
The mouse support is excellent, assuming your terminal emulator supports the features it needs. Pretty much everything can be clicked and right-clicked.
I listen to most of my music through musikcube and ncspot https://github.com/hrkfdn/ncspot these days.
-
musikcube
a cross-platform, terminal-based music player, audio engine, metadata indexer, and server in c++
My personal favorite is musikcube: https://musikcube.com/
The mouse support is excellent, assuming your terminal emulator supports the features it needs. Pretty much everything can be clicked and right-clicked.
I listen to most of my music through musikcube and ncspot https://github.com/hrkfdn/ncspot these days.
-
I had always wanted to write something in this and got my chance last year when I finally decided to write a utility for Safari tab management:
https://github.com/incanus/fari
Since then, however, I’ve switched to the Min browser. But it was super empowering to make a console-based interface and I’m looking forward to trying it again soon.
-
-
-
The most modern terminal GUI (as for 2021) would have to use React: https://github.com/vadimdemedes/ink
-
I just discovered this lovely little library:
-
-
ImTui provides an ncurses interface for this. It uses the ncurses API to render the characters in the terminal and also to grab input from the keyboard and the mouse.
Technically, ncurses is an overkill for this application, since ImTui only uses only a very small subset of the ncurses functions. But this was the easiest way to make it work.
ImTui can be extended with more interfaces. For example, I made a second one which I call "Emscripten" interface. It's purpose is to provide an API to easily export the framebuffer to the JS layer and to easily grab input back from the JS layer. This way, I can have a single application code that builds and runs both in the terminal and on the web.
-
Mergify
Tired of breaking your main and manually rebasing outdated pull requests?. Managing outdated pull requests is time-consuming. Mergify's Merge Queue automates your pull request management & merging. It's fully integrated to GitHub & coordinated with any CI. Start focusing on code. Try Mergify for free.