
Hacking the Planet With Notcurses: A Guide to TUIs and Character Graphics [pdf] - mkj
https://nick-black.com/htp-notcurses.pdf
======
kqr
I wish I had more evidence-based arguments for my opinion, but I strongly
believe text-based interfaces are among the best out there. They have an
ability to squeeze in an uncanny amount of information in any given space,
without turning cluttered.

If I think about it, even GUIs tend to be driven by text in most cases. The
difference is that every word gets a graphical border (be it in the shape of a
button, a tab, a menu item, or whatnot.) These borders are needed in a GUI
where the location of the text is less predictable, and it helps novices to
see the window under a menu while the menu is shown, but these are not
problems for experienced users at predictable text-based interfaces.

~~~
throwaway_pdp09
One really great things about text interfaces is they're (drumroll) text-
searchable! That's one huge benefit of emacs, if you're shown a huge list of
options, hop into the buffer and just search. I've been frustrated by some
parts of microsoft interfaces where I'm presented with lots of text options
but couldn't search them (can't remember where).

A note on the attached PDF document, there seems to be a total blind spot
about readability being damaged by dumb colours, look at Figure 8 on P11, I
can read the coloured text but it is noticeably harder, therefore slower, than
reading the white text on a black background. Also the light blue on white for
listing 13 as another example.

Anyway, looking forward to reading it.

~~~
catalogia
I think Emacs is an illuminating example, since its 'GUI' interfaces really
outshine emacs being run in a terminal emulator. Text interfaces are great,
but terminal emulators in particular are very limiting. Inlining images always
requires hacks and even with hacks a terminal emulator can't do nice things
like have multiple font sizes in the same frame (discounting double
height/width modes, since they're so limited I've never seen them used
effectively.)

~~~
arminiusreturns
It's not the case for me. I far prefer emacs in a terminal over the gui, and
thats how I've used it for years. I can't run the gui on a gnu screen session
on that server I've been working on, for example. I admit I'm probably the
outlier on this though.

~~~
erikbye
> I can't run the gui on a gnu screen session on that server I've been working
> on, for example.

Why not use Tramp Mode?

~~~
arminiusreturns
I do, frequently. From emacs-nox. Sometimes not though because some systems
have weird things that break it. (security)

------
mkj
This is an excellent read - the topic of UIs for terminal emulators might seem
dry but the author has done a really good job with this user manual. It's the
library to replace ncurses. Worth a look for any Linux programmer.

~~~
dankamongmen
Thanks for the kind words, hax0r! (I'm the author).

Notcurses 1.5.0 ought be out by this week's end, complete with "new" (as much
as anything is "new") Quadrant Blitter Technique: [https://nick-
black.com/images/new-terminal-technique.png](https://nick-
black.com/images/new-terminal-technique.png)

and of course, if you've never seen it, be sure to check out `notcurses-demo`.
it's come a long way since 1.1.0, but this video from January still captures
the essence of the project:
[https://www.youtube.com/watch?v=-H1WkopWJNM](https://www.youtube.com/watch?v=-H1WkopWJNM)

hack on!

ps. mysterious n-gate.com author [0], if you're reading this, you're doing the
LORD's work.

[0] my guess is james mickens

~~~
otoburb
>> _and of course, if you 've never seen it, be sure to check out `notcurses-
demo`_

That demo was dope. Thanks for putting that up and linking it. Probably the
best way to communicate how far TUIs can go.

~~~
dankamongmen
thanks! it looks a lot better recently -- the 1.4.0 version is much cleaner
than that 1.1.0 garbage. i didn't link it because it starts with a minute of
me talking (and looking absolutely hideous that day, ugh):
[https://www.youtube.com/watch?v=TvWdUfIStDI](https://www.youtube.com/watch?v=TvWdUfIStDI)

------
dpeck
Nick is, without exaggeration, the finest hacker I've had the pleasure to know
and work with. Its hard to believe where Notcurses is considering he just
started working on it at the end of last year.

The quality and quantity of his output is nothing short of astounding. Poke
around his wiki/github, its worth it.

------
nickmqb
Does anyone know of any minimal TUI libraries? Something in the spirit of a
VGA text buffer, that allows the user to manage their own cell buffer as a
block of memory, and allows them to blit that to the terminal -- and ideally
have that work across a variety of platforms and terminal emulators?

~~~
dmacvicar
[https://github.com/nsf/termbox](https://github.com/nsf/termbox) is a very
well known one, and has inspired several clones in other languages as well.

~~~
fuball63
I second termbox. It's a well crafted library, and easy to understand by just
reading the h file. I wrote the Ada binding for it just a few weeks ago.

------
moonchild
Notcurses is nice, but I believe that tickit[1] is the most mature and
exciting option out there. By the author of libtermkey, which was (and is?)
the only library to properly read keys from a tty.

1:
[http://www.leonerd.org.uk/code/libtickit/](http://www.leonerd.org.uk/code/libtickit/)

------
nhumrich
I am really excited for this. I have constantly felt like nurses was under-
whelming, yet very very difficult to do anything with (lots of boiler plate).

------
blux
Thank you for posting this! I was not aware of Notcurses, I just started using
Ncurses for an emulator hobby project, will be an interesting read :)

------
jart
A+++++

