ktsu.ImGuiApp 1.12.5-pre.7

Prefix Reserved
This is a prerelease version of ktsu.ImGuiApp.
There is a newer version of this package available.
See the version list below for details.
dotnet add package ktsu.ImGuiApp --version 1.12.5-pre.7
                    
NuGet\Install-Package ktsu.ImGuiApp -Version 1.12.5-pre.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ktsu.ImGuiApp" Version="1.12.5-pre.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ktsu.ImGuiApp" Version="1.12.5-pre.7" />
                    
Directory.Packages.props
<PackageReference Include="ktsu.ImGuiApp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ktsu.ImGuiApp --version 1.12.5-pre.7
                    
#r "nuget: ktsu.ImGuiApp, 1.12.5-pre.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ktsu.ImGuiApp@1.12.5-pre.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ktsu.ImGuiApp&version=1.12.5-pre.7&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ktsu.ImGuiApp&version=1.12.5-pre.7&prerelease
                    
Install as a Cake Tool

ktsu.ImGuiApp

A .NET library that provides application scaffolding for Dear ImGui, using Silk.NET and ImGui.NET.

NuGet License NuGet Downloads GitHub Stars

Introduction

ImGuiApp is a .NET library that provides application scaffolding for Dear ImGui, using Silk.NET for OpenGL and window management and ImGui.NET for the ImGui bindings. It simplifies the creation of ImGui-based applications by abstracting away the complexities of window management, rendering, and input handling.

Features

  • Simple API: Create ImGui applications with minimal boilerplate code
  • Full Integration: Seamless integration with Silk.NET for OpenGL and input handling
  • Window Management: Automatic window state, rendering, and input handling
  • DPI Awareness: Built-in support for high-DPI displays and scaling
  • Font Management: Flexible font loading system with customization options
  • Texture Support: Built-in texture management for ImGui
  • Lifecycle Callbacks: Customizable delegate callbacks for application events
  • Menu System: Easy-to-use API for creating application menus
  • Positioning Guards: Offscreen positioning checks to keep windows visible
  • Modern .NET: Supports .NET 8 and newer
  • Active Development: Open-source and actively maintained

Getting Started

Prerequisites

  • .NET 8.0 or later
  • Windows OS (for DPI awareness features)

Installation

Package Manager Console

Install-Package ktsu.ImGuiApp

.NET CLI

dotnet add package ktsu.ImGuiApp

Package Reference

<PackageReference Include="ktsu.ImGuiApp" Version="x.y.z" />

Usage Examples

Basic Application

Create a new class and call ImGuiApp.Start() with your application config:

using ktsu.ImGuiApp;
using ImGuiNET;

static class Program
{
    static void Main()
    {
        ImGuiApp.Start(new AppConfig()
        {
            Title = "ImGuiApp Demo",
            OnStart = () => { /* Initialization code */ },
            OnUpdate = delta => { /* Logic updates */ },
            OnRender = delta => { ImGui.Text("Hello, ImGuiApp!"); },
            OnAppMenu = () =>
            {
                if (ImGui.BeginMenu("File"))
                {
                    // Menu items
                    if (ImGui.MenuItem("Exit"))
                    {
                        ImGuiApp.Stop();
                    }
                    ImGui.EndMenu();
                }
            }
        });
    }
}

Custom Font Management

Use the resource designer to add font files to your project, then load the fonts:

ImGuiApp.Start(new()
{
    Title = "ImGuiApp Demo",
    OnRender = OnRender,
    Fonts = new Dictionary<string, byte[]>
    {
        { nameof(Resources.MY_FONT), Resources.MY_FONT }
    },
});

Or load the font data manually:

var fontData = File.ReadAllBytes("path/to/font.ttf");
ImGuiApp.Start(new()
{
    Title = "ImGuiApp Demo",
    OnRender = OnRender,
    Fonts = new Dictionary<string, byte[]>
    {
        { "MyFont", fontData }
    },
});

Then apply the font to ImGui using the FontAppearance class:

private static void OnRender(float deltaTime)
{
    ImGui.Text("Hello, I am normal text!");

    using (new FontAppearance("MyFont", 24))
    {
        ImGui.Text("Hello, I am BIG fancy text!");
    }

    using (new FontAppearance(32))
    {
        ImGui.Text("Hello, I am just huge text!");
    }

    using (new FontAppearance("MyFont"))
    {
        ImGui.Text("Hello, I am somewhat fancy!");
    }
}

Texture Management

Load and manage textures with the built-in texture management system:

private static void OnRender(float deltaTime)
{
    // Load texture from file
    var textureId = ImGuiApp.GetOrLoadTexture("path/to/texture.png");

    // Use the texture in ImGui
    ImGui.Image(textureId, new Vector2(128, 128));

    // Upload custom texture data
    byte[] rgbaData = GetTextureData(); // Your method to get RGBA pixel data
    int width = 256;
    int height = 256;
    var customTextureId = ImGuiApp.UploadTextureRGBA(rgbaData, width, height);
    ImGui.Image(customTextureId, new Vector2(width, height));

    // Clean up when done
    ImGuiApp.DeleteTexture(customTextureId);
}

Full Application with Multiple Windows

using ktsu.ImGuiApp;
using ImGuiNET;
using System.Numerics;

class Program
{
    private static bool _showDemoWindow = true;
    private static bool _showCustomWindow = true;

    static void Main()
    {
        ImGuiApp.Start(new AppConfig
        {
            Title = "Advanced ImGuiApp Demo",
            Width = 1280,
            Height = 720,
            OnStart = OnStart,
            OnUpdate = OnUpdate,
            OnRender = OnRender,
            OnAppMenu = OnAppMenu,
            OnShutdown = OnShutdown
        });
    }

    private static void OnStart()
    {
        // Initialize your application state
        Console.WriteLine("Application started");
    }

    private static void OnUpdate(float deltaTime)
    {
        // Update your application state
        // This runs before rendering each frame
    }

    private static void OnRender(float deltaTime)
    {
        // ImGui demo window
        if (_showDemoWindow)
            ImGui.ShowDemoWindow(ref _showDemoWindow);

        // Custom window
        if (_showCustomWindow)
        {
            ImGui.Begin("Custom Window", ref _showCustomWindow);

            ImGui.Text($"Frame time: {deltaTime * 1000:F2} ms");
            ImGui.Text($"FPS: {1.0f / deltaTime:F1}");

            if (ImGui.Button("Click Me"))
                Console.WriteLine("Button clicked!");

            ImGui.ColorEdit3("Background Color", ref _backgroundColor);

            ImGui.End();
        }
    }

    private static void OnAppMenu()
    {
        if (ImGui.BeginMenu("File"))
        {
            if (ImGui.MenuItem("Exit"))
                ImGuiApp.Stop();

            ImGui.EndMenu();
        }

        if (ImGui.BeginMenu("Windows"))
        {
            ImGui.MenuItem("Demo Window", string.Empty, ref _showDemoWindow);
            ImGui.MenuItem("Custom Window", string.Empty, ref _showCustomWindow);
            ImGui.EndMenu();
        }
    }

    private static void OnShutdown()
    {
        // Clean up resources
        Console.WriteLine("Application shutting down");
    }

    private static Vector3 _backgroundColor = new Vector3(0.45f, 0.55f, 0.60f);
}

API Reference

ImGuiApp Static Class

The main entry point for creating and managing ImGui applications.

Methods
Name Parameters Return Type Description
Start AppConfig config void Starts the ImGui application with the provided configuration
Stop void Stops the running application
GetOrLoadTexture string path IntPtr Loads a texture from file or returns cached handle if already loaded
UploadTextureRGBA byte[] data, int width, int height IntPtr Creates a texture from RGBA pixel data
DeleteTexture IntPtr textureId void Deletes a texture and frees its resources
GetWindowSize Vector2 Returns the current window size
SetClipboardText string text void Sets the clipboard text
GetClipboardText string Gets the clipboard text

AppConfig Class

Configuration for the ImGui application.

Properties
Name Type Description
Title string The window title
Width int Initial window width (default: 800)
Height int Initial window height (default: 600)
Fonts Dictionary<string, byte[]> Font name to font data mapping
OnStart Action Called when the application starts
OnUpdate Action<float> Called each frame before rendering (param: delta time)
OnRender Action<float> Called each frame for rendering (param: delta time)
OnAppMenu Action Called each frame for rendering the application menu
OnShutdown Action Called when the application is shutting down

FontAppearance Class

A utility class for applying font styles using a using statement.

Constructors
Constructor Parameters Description
FontAppearance string fontName Creates a font appearance with the named font at default size
FontAppearance float fontSize Creates a font appearance with the default font at the specified size
FontAppearance string fontName, float fontSize Creates a font appearance with the named font at the specified size

Demo Application

Check out the included demo project to see a working example:

  1. Clone or download the repository
  2. Open the solution in Visual Studio (or run dotnet build)
  3. Start the ImGuiAppDemo project to see a basic ImGui application

Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure to update tests as appropriate and adhere to the existing coding style.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Versioning

Check the CHANGELOG.md for detailed release notes and version changes.

Acknowledgements

  • Dear ImGui - The immediate mode GUI library
  • ImGui.NET - .NET bindings for Dear ImGui
  • Silk.NET - .NET bindings for OpenGL and windowing
  • All contributors and the .NET community for their support

Support

If you encounter any issues or have questions, please open an issue.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.7 378 8/8/2025
2.1.6 223 8/8/2025
2.1.5 243 8/7/2025
2.1.4 244 8/7/2025
2.1.3 147 7/30/2025
2.1.2 114 7/30/2025
2.1.1 501 7/24/2025
2.1.0 551 7/23/2025
2.0.12 551 7/22/2025
2.0.11 516 7/22/2025
2.0.10 516 7/22/2025
2.0.8 515 7/22/2025
2.0.7-pre.1 297 7/20/2025
2.0.6 167 7/18/2025
1.12.5-pre.13 140 4/28/2025
1.12.5-pre.12 132 4/28/2025
1.12.5-pre.11 146 4/28/2025
1.12.5-pre.10 139 4/28/2025
1.12.5-pre.9 154 4/28/2025
1.12.5-pre.8 120 4/27/2025
1.12.5-pre.7 117 4/27/2025
1.12.5-pre.6 116 4/27/2025
1.12.5-pre.5 63 4/26/2025
1.12.5-pre.4 72 4/25/2025
1.12.5-pre.3 142 4/8/2025
1.12.5-pre.2 121 4/4/2025
1.12.5-pre.1 126 4/4/2025
1.12.4 781 4/4/2025
1.12.3 297 3/30/2025
1.12.2 596 3/30/2025
1.12.1 134 3/29/2025
1.12.0 188 3/21/2025
1.11.1-pre.1 143 3/20/2025
1.11.0 217 3/19/2025
1.10.0 227 3/17/2025
1.9.0 163 3/15/2025
1.8.1 152 3/15/2025
1.8.0 243 3/14/2025
1.7.1 240 3/12/2025
1.7.0 266 3/12/2025
1.6.1-pre.1 141 3/12/2025
1.6.0 271 3/12/2025
1.5.1-pre.1 149 3/11/2025
1.5.0 344 3/7/2025
1.4.1-pre.3 186 3/6/2025
1.4.1-pre.2 79 2/19/2025
1.4.1-pre.1 91 2/17/2025
1.4.0 386 2/17/2025
1.3.1-pre.1 86 2/11/2025
1.3.0 831 2/7/2025
1.2.1-pre.1 80 2/6/2025
1.2.0 278 2/5/2025
1.1.0 1,066 1/5/2025
1.0.12 216 12/28/2024
1.0.12-pre.11 90 1/4/2025
1.0.12-pre.10 86 1/3/2025
1.0.12-pre.9 88 1/3/2025
1.0.12-pre.8 85 1/3/2025
1.0.12-pre.7 77 1/3/2025
1.0.12-pre.6 81 1/1/2025
1.0.12-pre.5 112 12/31/2024
1.0.12-pre.4 72 12/29/2024
1.0.12-pre.3 76 12/28/2024
1.0.12-pre.2 92 12/27/2024
1.0.12-pre.1 65 12/27/2024
1.0.11-pre.1 70 12/27/2024
1.0.10-pre.1 78 12/27/2024
1.0.9 162 12/26/2024
1.0.8 147 12/26/2024
1.0.7 155 12/25/2024
1.0.6 184 12/24/2024
1.0.5 159 12/23/2024
1.0.4 120 12/23/2024
1.0.3 290 12/19/2024
1.0.2 188 12/17/2024
1.0.1 205 12/13/2024
1.0.0 231 12/9/2024
1.0.0-alpha.76 138 12/7/2024
1.0.0-alpha.75 88 12/6/2024
1.0.0-alpha.74 116 12/5/2024
1.0.0-alpha.73 189 12/2/2024
1.0.0-alpha.72 77 12/2/2024
1.0.0-alpha.71 101 12/1/2024
1.0.0-alpha.70 103 11/30/2024
1.0.0-alpha.69 93 11/29/2024
1.0.0-alpha.68 126 11/28/2024
1.0.0-alpha.67 128 11/26/2024
1.0.0-alpha.66 178 11/21/2024
1.0.0-alpha.65 131 11/20/2024
1.0.0-alpha.64 142 11/17/2024
1.0.0-alpha.63 80 11/15/2024
1.0.0-alpha.62 104 11/14/2024
1.0.0-alpha.61 124 11/13/2024
1.0.0-alpha.60 173 11/7/2024
1.0.0-alpha.59 86 11/7/2024
1.0.0-alpha.58 107 11/6/2024
1.0.0-alpha.57 120 11/5/2024
1.0.0-alpha.56 225 11/2/2024
1.0.0-alpha.55 82 11/1/2024
1.0.0-alpha.54 361 10/18/2024
1.0.0-alpha.53 342 10/9/2024
1.0.0-alpha.52 114 10/8/2024
1.0.0-alpha.51 162 10/5/2024
1.0.0-alpha.50 101 10/4/2024
1.0.0-alpha.49 295 9/25/2024
1.0.0-alpha.48 109 9/24/2024
1.0.0-alpha.47 129 9/21/2024
1.0.0-alpha.46 119 9/19/2024
1.0.0-alpha.45 93 9/19/2024
1.0.0-alpha.44 103 9/19/2024
1.0.0-alpha.43 72 9/19/2024
1.0.0-alpha.42 113 9/19/2024
1.0.0-alpha.41 130 9/18/2024
1.0.0-alpha.40 92 9/18/2024
1.0.0-alpha.39 98 9/18/2024
1.0.0-alpha.38 90 9/18/2024
1.0.0-alpha.37 148 9/18/2024
1.0.0-alpha.36 248 9/14/2024

## v1.12.4 (patch)

Changes since v1.12.3:

- Update .gitignore to include additional IDE and OS-specific files ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.12.3 (patch)

Changes since v1.12.2:

- Update packages ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.12.2 (patch)

Changes since v1.12.1:

- Add LICENSE template ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build scripts ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.12.1 (patch)

Changes since v1.12.0:

- Update packages ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.12.0 (minor)

Changes since v1.11.0:

- Throw an exception if the font is not ready yet for some reason ([@matt-edmondson](https://github.com/matt-edmondson))
- Try a different method of memory marshaling and reorder some thigns to try fix the font crash ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.11.0 (minor)

Changes since v1.10.0:

- Replace the Silk.NET window invoker with ktsu.Invoker ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.10.0 (minor)

Changes since v1.9.0:

- Font system cleanup ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.9.0 (minor)

Changes since v1.8.0:

- Add an image to the demo app to test the texture upload ([@matt-edmondson](https://github.com/matt-edmondson))
- Add an overload to ImGuiController.Texture to allow specifying the pixel format ([@matt-edmondson](https://github.com/matt-edmondson))
- Re-add icon to fix LFS ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove icon to fix LFS ([@matt-edmondson](https://github.com/matt-edmondson))
- Reuse the texture upload from ImGuiController to remove code duplication ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.8.1 (patch)

Changes since v1.8.0:

- Re-add icon to fix LFS ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove icon to fix LFS ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.8.0 (minor)

Changes since v1.7.0:

- Add constructors and documentation to FontAppearance class ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor font loading to use unmanaged memory ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed several classes and moved them to their own source files ([@matt-edmondson](https://github.com/matt-edmondson))
- Update license links in README.md ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.7.1 (patch)

Changes since v1.7.0:

- Add constructors and documentation to FontAppearance class ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed several classes and moved them to their own source files ([@matt-edmondson](https://github.com/matt-edmondson))
- Update license links in README.md ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.7.0 (minor)

Changes since v1.6.0:

- Add better font management to ImGuiApp and icon to demo project ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix crash on shutdown when imgui would try to free memory owned by dotnet ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.6.0 (minor)

Changes since v1.5.0:

- Remove unnesscessary threading protections that were speculative fixes for the font ownership crash ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.5.0 (minor)

Changes since v1.4.0:

- Refactor ImGuiApp and related classes for thread safety ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.4.0 (minor)

Changes since v1.3.0:

- Apply new editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.3.0 (minor)

Changes since v1.2.0:

- Always call ImGui.End for ImGui.Begin ([@Damon3000s](https://github.com/Damon3000s))

## v1.2.0 (minor)

Changes since v1.1.0:

- Call EndChild instead of just End ([@Damon3000s](https://github.com/Damon3000s))
- Enable debug tracing in versioning and changelog scripts; handle empty tag scenarios ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace deprecated ImGui enum value ([@Damon3000s](https://github.com/Damon3000s))
- Update files from Resources.resx ([@Damon3000s](https://github.com/Damon3000s))

## v1.1.0 (minor)

Changes since v1.0.0:

- Add automation scripts for metadata and version management ([@matt-edmondson](https://github.com/matt-edmondson))
- Add conditional compilation for contextLock in ImGuiController ([@matt-edmondson](https://github.com/matt-edmondson))
- Add Silk.NET packages for enhanced graphics and input support ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix mouse wheel scrolling and improve API usage ([@Damon3000s](https://github.com/Damon3000s))
- Fix version script to exclude merge commits and order logs correctly ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove spelling check ignore comments in ImGuiApp files ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))
- Review feedback ([@Damon3000s](https://github.com/Damon3000s))

## v1.0.12 (patch)

Changes since v1.0.12-pre.11:

- Add automation scripts for metadata and version management ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix mouse wheel scrolling and improve API usage ([@Damon3000s](https://github.com/Damon3000s))
- Fix version script to exclude merge commits and order logs correctly ([@matt-edmondson](https://github.com/matt-edmondson))
- Review feedback ([@Damon3000s](https://github.com/Damon3000s))

## v1.0.8 (patch)

Changes since v1.0.7:

- Replace LICENSE file with LICENSE.md and update copyright information ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.4 (patch)

Changes since v1.0.3:

- Add conditional compilation for contextLock in ImGuiController ([@matt-edmondson](https://github.com/matt-edmondson))

## v1.0.0 (major)

Changes since 0.0.0.0:

- #1 Track the state of the window when its in the Normal state ([@matt-edmondson](https://github.com/matt-edmondson))
- Add a method to convert ems to pixels based on the current font size ([@matt-edmondson](https://github.com/matt-edmondson))
- Add a property for getting the current window state from the app and correctly set the position and layout from the initial window state ([@matt-edmondson](https://github.com/matt-edmondson))
- Add action to publish to nuget ([@matt-edmondson](https://github.com/matt-edmondson))
- Add an onStart delegate ([@matt-edmondson](https://github.com/matt-edmondson))
- Add divider widgets to ImGuiApp ([@matt-edmondson](https://github.com/matt-edmondson))
- Add dpi dependent content scaling ([@matt-edmondson](https://github.com/matt-edmondson))
- Add frame limiting ([@matt-edmondson](https://github.com/matt-edmondson))
- Add github package support ([@matt-edmondson](https://github.com/matt-edmondson))
- Add medium font ([@matt-edmondson](https://github.com/matt-edmondson))
- Add methods to allow saving and restoring divider states in bulk and add a delegate that gets called when a zone is resized ([@matt-edmondson](https://github.com/matt-edmondson))
- Add more locks for GL ([@matt-edmondson](https://github.com/matt-edmondson))
- Add Stop() method to quit the application ([@matt-edmondson](https://github.com/matt-edmondson))
- Add the ability to set the window icon ([@matt-edmondson](https://github.com/matt-edmondson))
- Added methods for loading textures ([@matt-edmondson](https://github.com/matt-edmondson))
- Also dont render if the window is not visible ([@matt-edmondson](https://github.com/matt-edmondson))
- Assign dependabot PRs to matt ([@matt-edmondson](https://github.com/matt-edmondson))
- Avoid double upload of symbols package ([@matt-edmondson](https://github.com/matt-edmondson))
- Bump ktsu.StrongPaths from 1.1.29 to 1.1.30 ([@matt-edmondson](https://github.com/matt-edmondson))
- Cleanup and force demo window open for debug ([@matt-edmondson](https://github.com/matt-edmondson))
- Cleanup and reduce code duplication ([@matt-edmondson](https://github.com/matt-edmondson))
- Consume the resize and move events from silk to actually call the resize delegate ([@matt-edmondson](https://github.com/matt-edmondson))
- Copy ImGuiController from Silk.NET ([@matt-edmondson](https://github.com/matt-edmondson))
- Create dependabot.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Create VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Destroy and clear fonts on shutdown before the imgui context gets destroyed ([@matt-edmondson](https://github.com/matt-edmondson))
- Documentation and warning fixes ([@matt-edmondson](https://github.com/matt-edmondson))
- Dont try to push packages when building pull requests ([@matt-edmondson](https://github.com/matt-edmondson))
- Enable sourcelink ([@matt-edmondson](https://github.com/matt-edmondson))
- Expose the Scale Factor to the public api so that clients can scale their custom things accordingly ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix a crash calling an ImGui style too early in the initialization ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix build and remove obsolete files and settings ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix issue with OnStart being invoked too early ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix namespacing to include ImGuiApp and make it filescoped and apply code style rules ([@matt-edmondson](https://github.com/matt-edmondson))
- Implement net6 DllImports ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate demo to net8 ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate ktsu.io to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate to Silk.NET for windowing/graphics backend ([@matt-edmondson](https://github.com/matt-edmondson))
- Minor code style changes ([@matt-edmondson](https://github.com/matt-edmondson))
- More detailed exception message in TranslateInputKeyToImGuiKey ([@Damon3000s](https://github.com/Damon3000s))
- Move OnStart callsite to a place where font loading works with Silk.NET, and add a demo project ([@matt-edmondson](https://github.com/matt-edmondson))
- Prevent drawing an extra border around the main window ([@matt-edmondson](https://github.com/matt-edmondson))
- Read from AUTHORS file during build ([@matt-edmondson](https://github.com/matt-edmondson))
- Read from VERSION when building ([@matt-edmondson](https://github.com/matt-edmondson))
- Read PackageDescription from DESCRIPTION file ([@matt-edmondson](https://github.com/matt-edmondson))
- Reduce background tick rates ([@matt-edmondson](https://github.com/matt-edmondson))
- Reformat ImGuiController instantiation for readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove DividerContainers and zones and Extensions which have been moved to their own respective libraries ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove windows only flags and migrate to nested Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Reposition the window if it becomes completely offscreen ([@matt-edmondson](https://github.com/matt-edmondson))
- Roll back code style changes to a working version ([@matt-edmondson](https://github.com/matt-edmondson))
- Rollback net6 imports ([@matt-edmondson](https://github.com/matt-edmondson))
- Separate application update and render so we dont render when the application is minimized ([@matt-edmondson](https://github.com/matt-edmondson))
- Set System.Text.Json to 8.0.5 ([@Damon3000s](https://github.com/Damon3000s))
- Speculative fix for crash on shutdown ([@matt-edmondson](https://github.com/matt-edmondson))
- Sync workflows ([@matt-edmondson](https://github.com/matt-edmondson))
- Take a lock during the closing delegate ([@matt-edmondson](https://github.com/matt-edmondson))
- Tell imgui were responsible for owning the font atlas data and then free it ourselves on shutdown ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build actions ([@matt-edmondson](https://github.com/matt-edmondson))
- Update build config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.props ([@matt-edmondson](https://github.com/matt-edmondson))
- Update Directory.Build.targets ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update ImGui.NET ([@matt-edmondson](https://github.com/matt-edmondson))
- Update LICENSE ([@matt-edmondson](https://github.com/matt-edmondson))
- Update nuget.config ([@matt-edmondson](https://github.com/matt-edmondson))
- Update project properties to enable windows targeting to allow building on linux build servers ([@matt-edmondson](https://github.com/matt-edmondson))
- Update VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Use a concurrent dictionary for textures ([@matt-edmondson](https://github.com/matt-edmondson))
- v1.0.0-alpha.9 ([@matt-edmondson](https://github.com/matt-edmondson))