Early development · .NET 10

Build native C# apps with ImGui.

ImApp is a lightweight application framework that gives your C# application a native window, OpenGL rendering, and Dear ImGui — without adding another UI layer.

ImApp application preview
Program.cs C#
using Hexa.NET.ImGui;
using ImApp;

using var app = new App(new WindowOptions
{
    Title = "My Application",
    Width = 1000,
    Height = 700
});

app.Run(() =>
{
    ImGui.Begin("Hello");

    ImGui.Text("Hello from ImApp!");

    if (ImGui.Button("Click me"))
        Console.WriteLine("Clicked!");

    ImGui.End();
});

A small layer around a powerful UI library.

ImApp handles the application lifecycle, window, rendering and timing while Dear ImGui remains the UI API.

W

Native Windows

Desktop windows powered by GLFW with configurable window behavior.

UI

Dear ImGui

Use the Dear ImGui API directly without another widget abstraction.

GL

OpenGL

Built-in OpenGL rendering through the ImGui OpenGL backend.

□

Window Control

Borderless, transparent, resizable, maximized, topmost and passthrough windows.

⊞

Docking

Enable Dear ImGui docking for IDE-style application interfaces.

FPS

Frame Limiting

Configure a target rendering rate or disable the limiter completely.

Everything you need to get started.

A compact reference for the core ImApp API.

Quick Start

Create an App, configure its window and pass your UI to Run.

using Hexa.NET.ImGui;
using ImApp;

using var app = new App(new WindowOptions
{
    Title = "My Application",
    Width = 1000,
    Height = 700
});

app.Run(() =>
{
    ImGui.Begin("Hello");
    ImGui.Text("Hello from ImApp!");
    ImGui.End();
});

Window Options

WindowOptions controls how the native GLFW window is created.

var options = new WindowOptions
{
    Title = "My Application",
    Width = 1000,
    Height = 700,

    Decorated = true,
    Resizable = true,
    Transparent = false,
    Topmost = false,

    Maximized = false,
    Visible = true,
    Focused = true,

    MousePassthrough = false,
    DockingEnabled = false,
    HostWindow = true,

    TargetFps = 144,
    FontSize = 17
};
Property Default Description
Title "ImApp Window" Window title
Width 800 Initial width
Height 600 Initial height
Decorated true Enable native decorations
Resizable true Allow resizing
Transparent false Enable transparent framebuffer
Topmost false Keep above normal windows
Maximized false Start maximized
Visible true Show window initially
Focused true Request initial focus
MousePassthrough false Pass mouse input through
DockingEnabled false Enable ImGui docking
HostWindow true Create full-window ImGui host
TargetFps 100 Target rendering rate; 0 disables limiter
FontSize 17 Embedded font size

Host Window

By default, ImApp creates a full-window ImGui host and executes your UI inside it.

using var app = new App(new WindowOptions
{
    HostWindow = true
});

app.Run(() =>
{
    ImGui.Text("Hello from ImApp!");
});

Set HostWindow = false when you want to manage the ImGui windows yourself.

using var app = new App(new WindowOptions
{
    HostWindow = false
});

app.Run(() =>
{
    ImGui.ShowDemoWindow();
});

Docking

Enable Dear ImGui docking through DockingEnabled.

using var app = new App(new WindowOptions
{
    Width = 1200,
    Height = 800,
    DockingEnabled = true
});

app.Run(() =>
{
    ImGui.ShowDemoWindow();
});

Transparent & Borderless Windows

Combine transparent rendering with disabled decorations for overlay-style applications.

using var app = new App(new WindowOptions
{
    Decorated = false,
    Transparent = true,
    MousePassthrough = true
});

Font

ImApp includes Noto Sans Regular and loads it automatically. Change its size with FontSize.

using var app = new App(new WindowOptions
{
    FontSize = 18
});

Dependencies

ImApp provides the application, window, rendering, timing and lifecycle layer on top of these components.

.NET 10 Dear ImGui Hexa.NET.ImGui Hexa.NET.GLFW Hexa.NET.OpenGL ImGui GLFW Backend ImGui OpenGL3 Backend HexaGen.Runtime

Install and start building.

ImApp is available as a NuGet package.

.NET CLI
dotnet add package ImApp
PackageReference
<PackageReference
    Include="ImApp"
    Version="0.2.0" />

Small by design.

ImApp does not replace your UI toolkit. It provides the application layer around it.

.NET 10 Dear ImGui Hexa.NET.ImGui GLFW OpenGL Noto Sans