I've always wanted to know how CL GUIs like top
or nano
or vi
are constructed? I have a need to actually make one and am looking for a guide or tutorial on the general idea behind them.
Asked
Active
Viewed 3,425 times
6

Shiplu Mokaddim
- 56,364
- 17
- 141
- 187

Dabloons
- 1,462
- 2
- 17
- 30
-
I am interested in the answers for this question myself but I know `ncurses` which is a handy library to create GUI elements like windows, textboxes, buttons etc. I think it isn't suited for something like `vi` but it allows GUI creation in the shell. – Daniel Böhmer Feb 22 '12 at 15:30
-
@halo: curses basically came from `vi`. – tripleee Feb 22 '12 at 18:22
-
@tripleee: "The name "curses" is a pun on cursor optimization.[6] Sometimes it is incorrectly stated that curses was used by the vi editor. In fact the code in curses that optimizes moving the cursor from one place on the screen to another was borrowed from vi, which predated curses.[4]" (Wikipedia) – Diego Torres Milano Feb 23 '12 at 07:01
3 Answers
5
Here is a bunch of them.
Also there is a list.

Shiplu Mokaddim
- 56,364
- 17
- 141
- 187
-
Recent *PDCurses* versions (3.4), unless you're compiling them for DOS, will require *X Window System* and, particularly, any of *Athena Widget Set* implementations (`libXaw`, `libXaw3d` or `libneXtaw`); one will be unable to run an application linked against `libXCurses.so` and/or `libXpanel.so` from a Linux/*BSD/Solaris console. So *PDCurses* can hardly be named a TUI toolkit nowadays. – Bass Oct 28 '15 at 10:58
0
Check out TWIN (apparently, inspired by Turbo Vision) by Massimiliano Ghilardi. More screenshots are available here. Be sure to use the GitHub version, as SourceForge repository has been unmaintained since 2002.
If you don't mind your GUI running in a JVM, take a look at Lanterna (Java and Clojure bindings).
I've also seen a post about Turbo Vision "ported" to (or rather rewritten using) C# and XAML, but haven't had a chance to examine it.

Bass
- 4,977
- 2
- 36
- 82