All Projects → a-n-t-h-o-n-y → Termox

a-n-t-h-o-n-y / Termox

Licence: mit
C++17 Terminal User Interface(TUI) Library.

Projects that are alternatives of or similar to Termox

Dte
A small, configurable console text editor (moved to https://gitlab.com/craigbarnes/dte)
Stars: ✭ 98 (-67.97%)
Mutual labels:  terminal, tui, ncurses, curses
Tuicss
Text-based user interface CSS library
Stars: ✭ 167 (-45.42%)
Mutual labels:  terminal, tui, ncurses, curses
Rubiks cube
rubik's cube that runs in your terminal!
Stars: ✭ 73 (-76.14%)
Mutual labels:  terminal, ncurses, curses
Zui
⬢ Zsh User Interface library – CGI+DHTML-like rapid application development with Zsh
Stars: ✭ 95 (-68.95%)
Mutual labels:  terminal, tui, curses
croatoan
Common Lisp bindings for the ncurses terminal library.
Stars: ✭ 111 (-63.73%)
Mutual labels:  tui, ncurses, curses
cxxcurses
Header only ncurses wrapper
Stars: ✭ 24 (-92.16%)
Mutual labels:  tui, ncurses, curses
Vim Quickui
The missing UI extensions for Vim 8.2 (and NeoVim 0.4) !! 😎
Stars: ✭ 714 (+133.33%)
Mutual labels:  terminal, tui, widgets
Turbo
An experimental text editor based on Scintilla and Turbo Vision.
Stars: ✭ 78 (-74.51%)
Mutual labels:  terminal, tui, ncurses
Mandown
man-page inspired Markdown viewer
Stars: ✭ 173 (-43.46%)
Mutual labels:  terminal, tui, ncurses
Neix
neix - a RSS/Atom feed reader for your terminal.
Stars: ✭ 128 (-58.17%)
Mutual labels:  terminal, tui, ncurses
Ltui
🍖 A cross-platform terminal ui library based on Lua
Stars: ✭ 624 (+103.92%)
Mutual labels:  terminal, tui, curses
Cursive
A Text User Interface library for the Rust programming language
Stars: ✭ 2,613 (+753.92%)
Mutual labels:  terminal, tui, ncurses
Tvision
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support.
Stars: ✭ 612 (+100%)
Mutual labels:  terminal, tui, ncurses
Brick
A declarative Unix terminal UI programming library written in Haskell
Stars: ✭ 1,070 (+249.67%)
Mutual labels:  terminal, tui, curses
Clui
Command Line User Interface (Console UI inspired by TurboVision)
Stars: ✭ 561 (+83.33%)
Mutual labels:  terminal, tui, widgets
Picotui
Lightweight, pure-Python Text User Interface (TUI) widget toolkit with minimal dependencies. Dedicated to the Pycopy project.
Stars: ✭ 547 (+78.76%)
Mutual labels:  terminal, tui, curses
Pulsemixer
CLI and curses mixer for PulseAudio
Stars: ✭ 441 (+44.12%)
Mutual labels:  terminal, tui, curses
Rtv
Browse Reddit from your terminal
Stars: ✭ 4,558 (+1389.54%)
Mutual labels:  terminal, tui, curses
Nnn
n³ The unorthodox terminal file manager
Stars: ✭ 13,138 (+4193.46%)
Mutual labels:  terminal, ncurses, tui
Goaccess
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
Stars: ✭ 14,096 (+4506.54%)
Mutual labels:  terminal, tui, ncurses

Build Status Read the Manual Read the Reference

TermOx 🐂

TermOx is a Terminal User Interface Framework for C++17. Built on top of nCurses, it defines a set of Widgets, Layouts, and Events that make it quick to craft unique user interfaces in the terminal.

The Widget Library contains many common Widget and Layout types that can be pieced together to create a composite interface. It's easy to expand on top of these types to create new Widgets and Layouts.

This project was previously named CPPurses.

Usage

#include <termox/termox.hpp>

int main()
{
    using namespace ox;
    auto app =
        layout::vertical(
            textbox("Hello, World!" | fg(Color::Red) | Trait::Bold) | pipe::name("tb"),
            layout::horizontal<Button>(
                button("Button 1") | bg(Color::Blue) | pipe::name("b1"),
                button("Button 2") | bg(Color::Violet) | pipe::name("b2")
            ) | pipe::fixed_height(1)
        );
    auto& tb = app->find_child_by_name("tb");
    app->find_child_by_name("b1") | pipe::on_press([&tb]{ tb.append("Button 1 Pressed"); });
    app->find_child_by_name("b2") | pipe::on_press([&tb]{ tb.append("Button 2 Pressed"); });
    return System{}.run(*app);
}

See the Manual for more in depth explanations and examples.

Reference documentation can be found here.

Features

  • Event System to handle Mouse, Keyboard and Animation events, among others

  • Signals and Slots to communicate between Widgets

  • Color Palettes and Dynamic Colors

  • Animation

  • Inherit from existing Widgets and Layouts to create new UI elements

  • Library of commonly used Widgets and Layouts

Build Instructions

TermOx depends on a Signals library and nCurses, these are both included as git submodules.

git clone https://github.com/a-n-t-h-o-n-y/TermOx.git
mkdir TermOx/build && cd TermOx/build
git submodule update --init --recursive   # Pull in dependencies
cmake .. -DCMAKE_BUILD_TYPE=Release       # Generate Makefiles
make                                      # Build library
make demos                                # Build demos(optional)

Using the Library

It is recommended to clone this library into your project and use it as a submodule rather than installing it to your system. This way you can lock your application to a specific version of TermOx.

CMake will add the library target TermOx if you add the TermOx directory with add_subdirectory(...).

# CMakeLists.txt
cmake_minimum_required(VERSION 3.2)
add_executable(my_app
               my_app.main.cpp
               ...
)

# TermOx is cloned into a directory named external/
add_subdirectory(external/TermOx)
target_link_libraries(foo TermOx)

License

This software is distributed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].