Immediate mode text-based user interface C++ library for building interactive terminal applications.
ImTui is an immediate mode text-based user interface library written in C++. It allows developers to build interactive terminal applications with widgets, colors, and input handling by providing an ncurses-based backend for the Dear ImGui library. It solves the problem of creating modern, responsive UIs in console environments without the complexity of traditional terminal UI toolkits.
C++ developers building terminal applications, tools, or dashboards who want a declarative, immediate mode UI framework similar to Dear ImGui but for text-based interfaces.
Developers choose ImTui because it brings the productivity and simplicity of Dear ImGui to the terminal, offering a consistent API, cross-platform support, and the ability to create rich, interactive experiences in console applications with minimal code.
ImTui: Immediate Mode Text-based User Interface C++ Library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages the Dear ImGui API, allowing developers to use declarative UI building with minimal boilerplate, as evidenced by the sample code and philosophy emphasizing simplicity.
Uses ncurses for rendering, enabling compatibility across Linux, macOS, and Windows via MSYS2/MinGW/PDCurses, making it suitable for diverse console environments.
Supports 256 ANSI colors and full mouse/keyboard input, enhancing interactivity in terminal apps, as shown in the demos like the Slack client and Hacker News browser.
Can be compiled to Emscripten for web-based demonstrations, providing an easy way to showcase terminal UIs online, with live demos available on the project site.
Windows compatibility requires MSYS2, MinGW, and PDCurses, which adds complexity and may deter developers looking for native or straightforward setup.
Relies on ncurses and other libraries, increasing build overhead and potential portability issues, especially for lightweight or embedded systems.
UI elements are constrained to terminal characters and colors, lacking the visual richness of graphical toolkits, which can limit design flexibility for complex interfaces.