Is there a package to construct TUI in Julia?

Hi guys!

Is there any package to build text user interfaces in Julia?

I saw some NCurses wrappers but all old and does not seem to work anymore.

The good side of a TUI is that, just like UnicodePlots, it should work 100% of time even through ssh.

1 Like

I saw that, but I want something complete like ncurses. So that we can have “full applications” in text mode. Something like midnight commander interface for example.

2 Likes

One possibility is to create a Julia package which writes shell scripts such as this one

Yeah that is a possibility…

However, wouldn’t it be nice to have a way to build simple TUIs natively? I will do some tests, maybe I can make a proof of concept.

Of course it would be nice — someone just has to put in the work.

That said, supporting various terminals correctly is a nightmare — some are compliant, some aren’t, and a lot of workarounds are necessary. ncurses embodies a lot of accumulated knowledge about this, which a native library would have to replicate.

These days for anything more complicated than what is supported by TerminalMenus.jl I would simply go with a browser-based interface — much less work, and much more portable.

1 Like

Have a look at termbox: https://github.com/jgoldfar/Termbox.jl
It features a simpler API compared to ncurses.

I see. So I will try to code yet another Ncurses wrapper that works on 1.0. All the others seem dead unfortunately

I think what I said above may be a reason for this.

but a wrapper to libncurses wouldn’t be much simpler? do you see any major problems of maintaining something like this?

Depends on your budget for time and effort. A simple wrapper should not be too difficult, but a layer that interfaces more idiomatically with Julia could be more of a time investment. I don’t want to talk you out of it if you want to do this, just wanted to point out that the payoff/effort ratio may not make it the best choice for an UI.

2 Likes

My use case seems very specific. I need to access workstations at my institute using ssh, and having a TUI to see and configure things for simulations would be very nice.

1 Like

Hi. There there any progress for a TUI package for Julia? It would be good if we can have something so that we can code real program without having to rely on a web framework. I personally like old-screen TUI programs.

Welcome to the community!

I noticed: GitHub - ronisbr/TextUserInterfaces.jl: Text user interfaces for Julia

in the thread here: Help to reduce very long compilation time

There’s also The Julia REPL · The Julia Language
and it was updated yesterday (so only on Julia 1.6 master/nightly). I’m no expert on this, what’s the state-of-the-art (library) in TUIs (for any language)? I believe on Linux ncurses is (almost) always used (and for the library above, so doesn’t work on Windows, except I guess in WSL; but is tested on macOS), while Julia, end thus the merged package works on all platforms. See other threads here, look for “TUI”, but also consider looking for “GUI”. I’m just not sure TUI is a very hot topic for any language.

Yes, as @Palli said, I have been developing TextUserInterface.jl. It uses NCurses and my goal is to achieve a Julia-like API to build TUIs. However, it turns out to be a quite complicated thing to do :slight_smile: So the development is progressing more slow than I expected.

If you want to only uses baremetal NCurses, then TextUserInterfaces.jl is fine. Just download the master branch. The documentation is also missing, so you will have to look at source code for now.

However, I am pretty excited with the API. I have now things like widgets, anchors, auto-resizing, containers, windows, etc. It is being very simple to create and manage somewhat complex TUIs as I show here:

2 Likes