Introduction

日本語

UIng is a Crystal binding for libui-ng, a portable library for native desktop interfaces. It gives Crystal applications access to windows, buttons, text fields, menus, tables, drawing areas, and other standard controls without shipping a browser engine or a custom widget toolkit.

The same application source can target:

  • Linux and other Unix-like systems through GTK 3
  • macOS through AppKit
  • Windows through Win32, Direct2D, and DirectWrite

The basic window example shows how the same code takes on each platform's native look:

Basic window on Ubuntu
Ubuntu
Basic window on Windows
Windows
Basic window on macOS
macOS

This guide focuses on the small set of concepts needed to create an application. Interfaces can be written with the regular API or the block-based DSL; see Coding Styles for details. For the complete list of types and methods, use the API Reference.

Project focus

UIng aims to provide a small, sustainable foundation for simple native GUIs. Its priority is to remain stable and maintainable over the long term rather than grow into a full-featured GUI framework.

Limitations

  • Layout is intentionally based on native containers. Controls cannot be positioned with arbitrary pixel coordinates, which helps preserve a native appearance across platforms.
  • Table columns cannot be removed after they have been added.