cwidget is a C++ user interface library for terminal-based applications.



cwidget is a modern, high-level C++ user interface library using ncurses as its display and input layer. It uses the signal/slot programming model popularized by toolkits such as GTK+ and Qt, using SigC++ to provide signals and slots.

This screenshot of aptitude in action shows some of cwidget's features:


For more details and information about getting cwidget, see the cwidget documentation.


cwidget's features include:

  • Support for overlapping widgets.
  • Event-driven programming using signals and slots.
  • A well-defined threading model with support for injecting events from background threads into the foreground thread.
  • Support for formatting text with styles, paragraph flowing, and indented blocks.
  • Support for cascading, user-configurable styles.


cwidget was originally an internal user interface library for the aptitude package manager. This means, on the one hand, that cwidget is known to work in the real world for a real application; on the other hand, it means that the feature set of cwidget is coextensive with the requirements of aptitude. Features not needed by aptitude may be missing or incomplete, and cwidget's documentation is spotty. For this reason, the current focus of cwidget development is on filling in gaps in the library and documenting existing code.


This Web site is generated by ikiwiki.