Writing Programs with Ncurses

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • notcurses

    blingful character graphics/TUI library. definitely not curses.

  • rich

    Rich is a Python library for rich text and beautiful formatting in the terminal.

  • 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.

    InfluxDB logo
  • imtui

    ImTui: Immediate Mode Text-based User Interface C++ Library

  • 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.

  • brick

    A declarative Unix terminal UI library written in Haskell

  • 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...

  • growlight

    notcurses block device manager / system installation tool

  • typer

    Typer, build great CLIs. Easy to code. Based on Python type hints.

  • 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

    Discontinued 🐝 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/

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • tig

    Text-mode interface for git

  • ncspot

    Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes.

  • 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.

  • fari

    Console utility for fast Safari tab browsing

  • 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.

  • awesome-tuis

    List of projects that provide terminal user interfaces

  • yad

    Yet Another Dialog

  • Ink

    🌈 React for interactive command-line apps

  • The most modern terminal GUI (as for 2021) would have to use React: https://github.com/vadimdemedes/ink

  • termbox

    Library for writing text-based user interfaces (by termbox)

  • I just discovered this lovely little library:

    https://github.com/termbox/termbox/

  • sfm

    simple file manager

  • imgui

    Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

  • 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.

    [0] https://github.com/ocornut/imgui

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Alternative to ncurses for modern C++ (TUI)

    7 projects | /r/cpp_questions | 6 Jun 2022
  • Ask HN: Interesting TUIs (text user interfaces), maybe forgotten ones?

    53 projects | news.ycombinator.com | 6 May 2024
  • My last weeks GitHub contributions

    8 projects | dev.to | 27 Apr 2024
  • Text UIs != Terminal UIs

    2 projects | news.ycombinator.com | 2 Mar 2024
  • Notcurses: Blingful character graphics/TUI library

    2 projects | news.ycombinator.com | 1 Feb 2024