LibCXX Widget Toolkit

Index

Introduction
Status
Installation, and requirements

Introduction

LibCXXW is an optional add-on library to LibCXX that implements an X widget toolkit with a modern C++ API. LibCXXW aims to make it possible to implement a basic, no-frills X user interface in modern C++. This short demo gives a brief overview of LibCXXW's X widget toolkit implementation:

LibCXXW's notable features:

  • An independent X widget toolkit stack, from the ground up. The only dependencies are low-level libraries that are not tied to any particular desktop environment. See the section called “Installation, and requirements” for more information.

  • Combines a clean modern look with classical, traditional UI elements. Mild gradient shading provides a subtle, non-intrusive 3D effect. UI elements include labels, text input fields, lists, combo-boxes, menus, and dialogs — updated to modern UI standards: confirming the last character typed into a password field before masking it, predictive selection of combo-box entries, spin buttons for numerical input fields, etc...

  • All display elements have full keyboard navigation, where possible. No explicit application support is needed. Even scroll-bars have keyboard controls.

  • Takes full advantage of modern C++17 language features. Lambdas handle UI events (button clicks, menu selections, and other activity). Variant types provide compact means for selecting alternative options. All display elements are reference-counted objects.

  • Fully scalable and themeable UI uses a library-specific scalable graphic format, to easily scale all UI elements to a user-preferred size.

  • Unlike other widget toolkits, LibCXX Widget Toolkit does not force the application to use an event-driven design. LibCXXW uses an internal execution thread to handle X protocol events. The application's UI remains responsive to X events, while the main application runs a long-running task (with all pointer and button activity suspended).

  • LibCXX Widget Toolkit is a compositing toolkit. The underlying video hardware must implement the X RENDER extension. This should be supported by all modern video hardware.

  • Anti-aliased fonts get rendered by the Freetype library.

LibCXX Widget Toolkit is free software, distributed under the terms of the GPL, version 3.

Status

LibCXX Widget Toolkit's core functionality is complete, and is available for downloading. The most recent build of LibCXX Widget Toolkit implements and documents the API for generating display elements from an XML stylesheet.