This library is no longer maintained. It's pretty small if you have a big project that relies on it, just maintain it yourself. Or look for forks. Or look for alternatives. Or better - avoid using terminals for UI. Never the less, thanks to all who ever contributed.
Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.
It is based on a very simple abstraction. The main idea is viewing terminals as a table of fixed-size cells and input being a stream of structured messages. Would be fair to say that the model is inspired by windows console API. The abstraction itself is not perfect and it may create problems in certain areas. The most sensitive ones are copy & pasting and wide characters (mostly Chinese, Japanese, Korean (CJK) characters). When it comes to copy & pasting, the notion of cells is not really compatible with the idea of text. And CJK runes often require more than one cell to display them nicely. Despite the mentioned flaws, using such a simple model brings benefits in a form of simplicity. And KISS principle is important.
At this point one should realize, that CLI (command-line interfaces) aren't really a thing termbox is aimed at. But rather pseudo-graphical user interfaces.
Termbox comes with a waf-based build scripts. In order to configure, build and install it, do the following::
./waf configure --prefix=/usr (configure)
./waf (build)
./waf install --destdir=DESTDIR (install)
By default termbox will install the header file and both shared and static libraries. If you want to install a shared library or static library alone, use the following as an install command::
./waf install --targets=termbox_shared --destdir=PREFIX (shared library)
or::
./waf install --targets=termbox_static --destdir=PREFIX (static library)
In order to install the python module, use the following command (as root or via sudo)::
python setup.py install
for Python 3::
python3 setup.py install
Termbox's interface only consists of 12 functions::
tb_init() // initialization
tb_shutdown() // shutdown
tb_width() // width of the terminal screen
tb_height() // height of the terminal screen
tb_clear() // clear buffer
tb_present() // sync internal buffer with terminal
tb_put_cell()
tb_change_cell()
tb_blit() // drawing functions
tb_select_input_mode() // change input mode
tb_peek_event() // peek a keyboard event
tb_poll_event() // wait for a keyboard event
See src/termbox.h header file for full detail.
If you want me to add your Termbox project here, send me a pull request or drop a note via email, you can find my email below.
Report bugs to the https://github.com/nsf/termbox issue tracker. Send rants and questions to me: no.smile.face@gmail.com.
v1.1.2:
v1.1.1:
v1.1.0:
v1.0.0: