I love TUIs. They are clear, quick and easy to use. Probably because they require straightforward design.<p>I just read the following links to build up foundation of knowledge first - low-level:<p><a href="http://%CA%9E.cc/irl/term.html" rel="nofollow">http://%CA%9E.cc/irl/term.html</a><p><a href="https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html" rel="nofollow">https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode...</a><p><a href="https://en.wikipedia.org/wiki/ANSI_escape_code#Colors" rel="nofollow">https://en.wikipedia.org/wiki/ANSI_escape_code#Colors</a><p>Other libraries:<p># C, C++, Python and Rust<p><a href="https://github.com/dankamongmen/notcurses" rel="nofollow">https://github.com/dankamongmen/notcurses</a><p># Python, more polished presentation - but I cannot judge the technical foundation<p><a href="https://github.com/willmcgugan/rich" rel="nofollow">https://github.com/willmcgugan/rich</a>
I have looked into this in the past, and have always felt discouraged by the lack of good support for modern keyboards and mice. With ncurses and similar, you can only detect (a subset of) keys modified by Ctrl and Alt; I would like a portable way of finding about multiple combinations of modifiers, with any key in the keyboard, including function keys, home, end, up, down, etc. Ideally, I would also like to detect mouse events (including "window" clicked position) and even mouse events when holding Ctrl, Alt, etc. And I would like to do all this <i>without</i> having to parse multiple escape codes, implement timers or whatnot.<p><a href="https://sw.kovidgoyal.net/kitty/keyboard-protocol/" rel="nofollow">https://sw.kovidgoyal.net/kitty/keyboard-protocol/</a> is a very promising step on this direction. Maybe next time I have to work on a TUI I will look into it.
While discussing ncurses, has anyone ever seen any attempt to make accessible interfaces?<p>Nowadays when making a quick interface I tend to use a web-based interface -- while they are much heavier it's fairly easy to make fully blind accessible interfaces, I (very briefly) looked to see if any terminal based libraries supported anything similar, and the only thing which seems to be trying is emacs, with emacsspeak (which I've heard good things about but haven't tried, as I'm not an emacs user).
Plain old HTML + forms can go a long way when accessed through the Lynx or w3 web browsers. I think the first time I encountered a system where this was the preferred path was in Kannel [0].<p><a href="https://kannel.org/download/1.4.5/userguide-1.4.5/userguide.html#AEN993" rel="nofollow">https://kannel.org/download/1.4.5/userguide-1.4.5/userguide....</a>
That's funny, I had this tab open this weekend while I was trying to make a silly terminal game, where each sprite is an ncurses window. I didn't really make much progress, but got the physics and sprite drawing working.<p><a href="https://lock.cmpxchg8b.com/img/ncurses.gif" rel="nofollow">https://lock.cmpxchg8b.com/img/ncurses.gif</a>
why merely write programs with NCURSES when you can hack the planet with notcurses? enjoy the free book:<p><a href="https://nick-black.com/htp-notcurses.pdf" rel="nofollow">https://nick-black.com/htp-notcurses.pdf</a>
I can't access the site...<p>Access Denied - Sucuri Website Firewall
Block reason: Access from your Country was disabled by the administrator.<p>In case someone else experience the same and wants an alternate link:
<a href="http://web.archive.org/web/20210531163620/https://invisible-island.net/ncurses/ncurses-intro.html" rel="nofollow">http://web.archive.org/web/20210531163620/https://invisible-...</a>
Thomas Dickey has been maintaining this code by himself for years (decades?). Along with the timezone database, the terminal info database is a huge SPOF. It's too bad that this effort is mostly unrecognised.
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:<p><a href="https://github.com/incanus/fari" rel="nofollow">https://github.com/incanus/fari</a><p>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.
For whatever reason, my country is banned from accessing this website.<p><a href="https://dump.cy.md/7065a236c07f22558d3f1422c986a243/1630343129.713585664.png" rel="nofollow">https://dump.cy.md/7065a236c07f22558d3f1422c986a243/16303431...</a>
For a low-mental-overhead alternative to curses, I just discovered this lovely little library:<p><a href="https://github.com/termbox/termbox/" rel="nofollow">https://github.com/termbox/termbox/</a>
I don't like text UIs. They try to emulate GUI but do it poorly. You should either make a classic console program, that can be scripted, piped, etc., or a real GUI.