ktsu.ImGuiStyler 1.3.12

Prefix Reserved
dotnet add package ktsu.ImGuiStyler --version 1.3.12
                    
NuGet\Install-Package ktsu.ImGuiStyler -Version 1.3.12
                    
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.ImGuiStyler" Version="1.3.12" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ktsu.ImGuiStyler" Version="1.3.12" />
                    
Directory.Packages.props
<PackageReference Include="ktsu.ImGuiStyler" />
                    
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.ImGuiStyler --version 1.3.12
                    
#r "nuget: ktsu.ImGuiStyler, 1.3.12"
                    
#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.ImGuiStyler@1.3.12
                    
#: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.ImGuiStyler&version=1.3.12
                    
Install as a Cake Addin
#tool nuget:?package=ktsu.ImGuiStyler&version=1.3.12
                    
Install as a Cake Tool

ImGuiStyler 🎨

Version License

A powerful, expressive styling library for ImGui.NET interfaces that simplifies theme management, provides scoped styling utilities, and offers advanced color manipulation with accessibility features.

✨ Features

🎨 Advanced Theme System

  • 50+ Built-in Themes: Comprehensive collection including Catppuccin, Dracula, Gruvbox, Tokyo Night, Nord, and many more
  • Interactive Theme Browser: Visual theme selection with live preview and categorization
  • Semantic Theme Support: Leverages ktsu.ThemeProvider for consistent, semantic color theming
  • Scoped Theme Application: Apply themes to specific UI sections without affecting the global style

🎯 Precise Alignment Tools

  • Automatic Content Centering: Center any content within containers or available regions
  • Flexible Container Alignment: Align content within custom-sized containers
  • Layout Integration: Seamlessly works with ImGui's existing layout system

🌈 Advanced Color Management

  • Hex Color Support: Direct conversion from hex strings to ImGui colors
  • Accessibility-First: Automatic contrast calculation and optimal text color selection
  • Color Manipulation: Lighten, darken, and adjust colors programmatically
  • Scoped Color Application: Apply colors to specific UI elements without side effects

🔧 Scoped Styling System

  • Style Variables: Apply temporary style modifications with automatic cleanup
  • Text Colors: Scoped text color changes with proper restoration
  • Theme Colors: Apply theme-based colors to specific UI sections
  • Memory Safe: Automatic resource management and style restoration

📦 Installation

Add ImGuiStyler to your project via NuGet:

<PackageReference Include="ktsu.ImGuiStyler" Version="1.3.10" />

Or via Package Manager Console:

Install-Package ktsu.ImGuiStyler

🚀 Quick Start

using ktsu.ImGuiStyler;
using Hexa.NET.ImGui;

// Apply a global theme
Theme.Apply("TokyoNight");

// Use scoped styling for specific elements
using (new ScopedColor(ImGuiCol.Text, Color.FromHex("#ff6b6b")))
{
    ImGui.Text("This text is red!");
}

// Center content automatically
using (new Alignment.Center(ImGui.CalcTextSize("Centered!")))
{
    ImGui.Text("Centered!");
}

📚 Comprehensive Usage Guide

🎨 Theme Management

Applying Global Themes
// Apply any of the 50+ built-in themes
Theme.Apply("Catppuccin.Mocha");
Theme.Apply("Gruvbox.Dark");
Theme.Apply("Tokyo Night");

// Get current theme information
string? currentTheme = Theme.CurrentThemeName;
bool isCurrentThemeDark = Theme.IsCurrentThemeDark;

// Reset to default ImGui theme
Theme.Reset();
Interactive Theme Browser
// Show the theme browser modal
if (ImGui.Button("Choose Theme"))
{
    Theme.ShowThemeSelector("Select a Theme");
}

// Render the theme selector (call this in your main render loop)
if (Theme.RenderThemeSelector())
{
    Console.WriteLine($"Theme changed to: {Theme.CurrentThemeName}");
}
Scoped Theme Application
using (new ScopedTheme("Dracula"))
{
    ImGui.Text("This text uses Dracula theme");
    ImGui.Button("Themed button");
    
    using (new ScopedTheme("Nord"))
    {
        ImGui.Text("Nested Nord theme");
    }
    // Automatically reverts to Dracula
}
// Automatically reverts to previous theme

🌈 Color Management

Creating Colors
// From hex strings
ImColor red = Color.FromHex("#ff0000");
ImColor blueWithAlpha = Color.FromHex("#0066ffcc");

// From RGB values
ImColor green = Color.FromRGB(0, 255, 0);
ImColor customColor = Color.FromRGBA(255, 128, 64, 200);

// From HSV
ImColor rainbow = Color.FromHSV(0.83f, 1.0f, 1.0f); // Purple
Color Manipulation
ImColor baseColor = Color.FromHex("#3498db");

// Adjust brightness
ImColor lighter = Color.Lighten(baseColor, 0.3f);
ImColor darker = Color.Darken(baseColor, 0.2f);

// Accessibility-focused text colors
ImColor optimalText = Color.GetOptimalTextColor(baseColor);
ImColor contrastText = Color.GetContrastingTextColor(baseColor);
Scoped Color Application
// Scoped text color
using (new ScopedTextColor(Color.FromHex("#e74c3c")))
{
    ImGui.Text("Red text");
}

// Scoped UI element color
using (new ScopedColor(ImGuiCol.Button, Color.FromHex("#2ecc71")))
{
    ImGui.Button("Green button");
}

// Multiple scoped colors
using (new ScopedColor(ImGuiCol.Button, Color.FromHex("#9b59b6")))
using (new ScopedColor(ImGuiCol.ButtonHovered, Color.FromHex("#8e44ad")))
using (new ScopedColor(ImGuiCol.ButtonActive, Color.FromHex("#71368a")))
{
    ImGui.Button("Fully styled button");
}

🎯 Alignment and Layout

Content Centering
// Center text
string text = "Perfectly centered!";
using (new Alignment.Center(ImGui.CalcTextSize(text)))
{
    ImGui.Text(text);
}

// Center buttons
using (new Alignment.Center(new Vector2(120, 30)))
{
    ImGui.Button("Centered Button", new Vector2(120, 30));
}
Custom Container Alignment
Vector2 containerSize = new(400, 200);
Vector2 contentSize = new(100, 50);

// Center content within a specific container
using (new Alignment.CenterWithin(contentSize, containerSize))
{
    ImGui.Button("Centered in Container", contentSize);
}

🔧 Advanced Styling

Scoped Style Variables
// Rounded buttons
using (new ScopedStyleVar(ImGuiStyleVar.FrameRounding, 8.0f))
{
    ImGui.Button("Rounded Button");
}

// Multiple style modifications
using (new ScopedStyleVar(ImGuiStyleVar.FrameRounding, 12.0f))
using (new ScopedStyleVar(ImGuiStyleVar.FramePadding, new Vector2(20, 10)))
using (new ScopedStyleVar(ImGuiStyleVar.ItemSpacing, new Vector2(10, 8)))
{
    ImGui.Button("Highly Styled Button");
    ImGui.Button("Another Styled Button");
}
Theme-Based Styling
// Use semantic colors from current theme
using (new ScopedThemeColor(Color.Primary))
{
    ImGui.Text("Primary theme color");
}

using (new ScopedThemeColor(Color.Secondary))
{
    ImGui.Button("Secondary theme button");
}

🎨 Available Themes

ImGuiStyler includes 50+ carefully crafted themes across multiple families:

🌙 Dark Themes

  • Catppuccin: Mocha, Macchiato, Frappe
  • Tokyo Night: Classic, Storm
  • Gruvbox: Dark, Dark Hard, Dark Soft
  • Dracula: Classic vampire theme
  • Nord: Arctic, frost-inspired theme
  • Nightfox: Carbonfox, Nightfox, Terafox
  • OneDark: Popular dark theme
  • Kanagawa: Wave, Dragon variants
  • Everforest: Dark, Dark Hard, Dark Soft

☀️ Light Themes

  • Catppuccin: Latte
  • Tokyo Night: Day
  • Gruvbox: Light, Light Hard, Light Soft
  • Nord: Light variant
  • Nightfox: Dawnfox, Dayfox
  • PaperColor: Light
  • Everforest: Light, Light Hard, Light Soft
  • VSCode: Light theme

🎨 Specialty Themes

  • Monokai: Classic editor theme
  • Nightfly: Smooth dark theme
  • VSCode: Dark theme recreation

🛠️ API Reference

Theme Class

  • Theme.Apply(string themeName) - Apply a global theme
  • Theme.Apply(ISemanticTheme theme) - Apply a semantic theme
  • Theme.Reset() - Reset to default ImGui theme
  • Theme.ShowThemeSelector(string title) - Show theme browser modal
  • Theme.RenderThemeSelector() - Render theme browser (returns true if theme changed)
  • Theme.AllThemes - Get all available themes
  • Theme.Families - Get all theme families
  • Theme.CurrentThemeName - Get current theme name
  • Theme.IsCurrentThemeDark - Check if current theme is dark

Color Class

  • Color.FromHex(string hex) - Create color from hex string
  • Color.FromRGB(int r, int g, int b) - Create color from RGB
  • Color.FromRGBA(int r, int g, int b, int a) - Create color from RGBA
  • Color.GetOptimalTextColor(ImColor background) - Get accessible text color
  • Color.Lighten(ImColor color, float amount) - Lighten color
  • Color.Darken(ImColor color, float amount) - Darken color

Alignment Classes

  • new Alignment.Center(Vector2 contentSize) - Center in available region
  • new Alignment.CenterWithin(Vector2 contentSize, Vector2 containerSize) - Center in container

Scoped Classes

  • new ScopedColor(ImGuiCol col, ImColor color) - Scoped color application
  • new ScopedTextColor(ImColor color) - Scoped text color
  • new ScopedStyleVar(ImGuiStyleVar var, float value) - Scoped style variable
  • new ScopedTheme(string themeName) - Scoped theme application
  • new ScopedThemeColor(Color semanticColor) - Scoped semantic color

🎯 Demo Application

The included demo application showcases all features:

cd ImGuiStylerDemo
dotnet run

Features demonstrated:

  • Interactive theme browser with live preview
  • All 50+ themes with family categorization
  • Scoped styling examples
  • Color manipulation demos
  • Alignment showcases
  • Accessibility features

🤝 Contributing

We welcome contributions! Please see our contributing guidelines:

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

Development Setup

git clone https://github.com/ktsu-dev/ImGuiStyler.git
cd ImGuiStyler
dotnet restore
dotnet build

📄 License

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

🙏 Acknowledgments

  • ImGui.NET - .NET bindings for Dear ImGui
  • Hexa.NET.ImGui - Modern ImGui bindings
  • Theme Inspirations: Catppuccin, Tokyo Night, Gruvbox, and other amazing color schemes
  • Community Contributors - Thank you for your themes, bug reports, and improvements!

Made with ❤️ by the ktsu.dev team

Product Compatible and additional computed target framework versions.
.NET 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 (1)

Showing the top 1 NuGet packages that depend on ktsu.ImGuiStyler:

Package Downloads
ktsu.ImGuiWidgets

A library of custom widgets using ImGui.NET and utilities to enhance ImGui-based applications.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.12 629 7/23/2025
1.3.11 489 7/23/2025
1.3.10 493 7/23/2025
1.3.9 488 7/22/2025
1.3.8 488 7/22/2025
1.3.7 491 7/22/2025
1.3.6 493 7/22/2025
1.3.5 490 7/22/2025
1.3.4 491 7/22/2025
1.3.3 108 7/18/2025
1.3.3-pre.20 117 7/9/2025
1.3.3-pre.19 269 6/11/2025
1.3.3-pre.18 134 5/20/2025
1.3.3-pre.15 83 5/17/2025
1.3.3-pre.14 132 5/16/2025
1.3.3-pre.13 207 5/15/2025
1.3.3-pre.12 201 5/14/2025
1.3.3-pre.11 206 5/13/2025
1.3.3-pre.10 233 5/12/2025
1.3.3-pre.9 176 5/11/2025
1.3.3-pre.8 116 5/10/2025
1.3.3-pre.7 55 5/9/2025
1.3.3-pre.6 126 5/8/2025
1.3.3-pre.5 128 5/7/2025
1.3.3-pre.4 122 5/6/2025
1.3.3-pre.3 127 5/5/2025
1.3.3-pre.2 125 5/4/2025
1.3.3-pre.1 128 5/4/2025
1.3.2 453 5/4/2025
1.3.2-pre.6 116 4/29/2025
1.3.2-pre.5 57 4/26/2025
1.3.2-pre.4 62 4/25/2025
1.3.2-pre.3 129 4/9/2025
1.3.2-pre.2 117 4/4/2025
1.3.2-pre.1 133 3/31/2025
1.3.1 622 3/30/2025
1.3.0 559 3/30/2025
1.2.1 98 3/29/2025
1.2.1-pre.5 85 3/29/2025
1.2.1-pre.4 458 3/25/2025
1.2.1-pre.3 131 3/12/2025
1.2.1-pre.2 76 2/18/2025
1.2.1-pre.1 83 2/17/2025
1.2.0 947 2/17/2025
1.1.1-pre.1 83 2/12/2025
1.1.0 565 2/6/2025
1.0.16-pre.3 74 2/6/2025
1.0.16-pre.2 71 2/5/2025
1.0.16-pre.1 73 2/5/2025
1.0.15 651 1/2/2025
1.0.15-pre.33 71 2/3/2025
1.0.15-pre.32 76 2/3/2025
1.0.15-pre.31 76 2/3/2025
1.0.15-pre.30 77 2/1/2025
1.0.15-pre.29 71 1/30/2025
1.0.15-pre.28 69 1/28/2025
1.0.15-pre.27 64 1/26/2025
1.0.15-pre.26 67 1/24/2025
1.0.15-pre.25 67 1/22/2025
1.0.15-pre.24 62 1/20/2025
1.0.15-pre.23 63 1/18/2025
1.0.15-pre.22 62 1/16/2025
1.0.15-pre.21 55 1/15/2025
1.0.15-pre.20 48 1/14/2025
1.0.15-pre.19 68 1/13/2025
1.0.15-pre.18 65 1/11/2025
1.0.15-pre.17 80 1/10/2025
1.0.15-pre.16 64 1/10/2025
1.0.15-pre.15 41 1/9/2025
1.0.15-pre.14 43 1/9/2025
1.0.15-pre.13 71 1/5/2025
1.0.15-pre.12 90 1/3/2025
1.0.15-pre.11 73 1/3/2025
1.0.15-pre.10 75 1/3/2025
1.0.15-pre.9 77 1/3/2025
1.0.15-pre.8 78 1/2/2025
1.0.15-pre.7 96 12/31/2024
1.0.15-pre.6 71 12/30/2024
1.0.15-pre.5 72 12/29/2024
1.0.15-pre.4 70 12/28/2024
1.0.15-pre.3 68 12/27/2024
1.0.15-pre.2 80 12/27/2024
1.0.15-pre.1 81 12/27/2024
1.0.14-pre.1 72 12/27/2024
1.0.13 216 12/26/2024
1.0.12 766 12/26/2024
1.0.11 109 12/26/2024
1.0.10 153 12/25/2024
1.0.10-pre.1 72 12/27/2024
1.0.9 271 12/23/2024
1.0.8 126 12/23/2024
1.0.7 102 12/23/2024
1.0.6 201 12/22/2024
1.0.5 179 12/19/2024
1.0.4 143 12/19/2024
1.0.3 159 12/18/2024
1.0.2 254 12/16/2024
1.0.1 184 12/13/2024
1.0.0 221 12/11/2024
1.0.0-alpha.69 98 12/10/2024
1.0.0-alpha.68 118 12/9/2024
1.0.0-alpha.67 77 12/9/2024
1.0.0-alpha.66 131 12/6/2024
1.0.0-alpha.65 137 12/5/2024
1.0.0-alpha.64 226 12/2/2024
1.0.0-alpha.63 68 12/2/2024
1.0.0-alpha.62 87 12/2/2024
1.0.0-alpha.61 68 12/2/2024
1.0.0-alpha.60 83 12/1/2024
1.0.0-alpha.59 115 12/1/2024
1.0.0-alpha.58 95 11/30/2024
1.0.0-alpha.57 104 11/29/2024
1.0.0-alpha.56 166 11/27/2024
1.0.0-alpha.55 120 11/26/2024
1.0.0-alpha.54 172 11/22/2024
1.0.0-alpha.53 139 11/21/2024
1.0.0-alpha.52 120 11/20/2024
1.0.0-alpha.51 154 11/18/2024
1.0.0-alpha.50 94 11/15/2024
1.0.0-alpha.49 141 11/14/2024
1.0.0-alpha.48 114 11/13/2024
1.0.0-alpha.47 209 11/8/2024
1.0.0-alpha.46 121 11/7/2024
1.0.0-alpha.45 109 11/6/2024
1.0.0-alpha.44 140 11/4/2024
1.0.0-alpha.43 257 11/1/2024
1.0.0-alpha.42 302 10/25/2024
1.0.0-alpha.41 139 10/21/2024
1.0.0-alpha.40 139 10/17/2024
1.0.0-alpha.39 227 10/10/2024
1.0.0-alpha.38 171 10/10/2024
1.0.0-alpha.37 142 10/7/2024
1.0.0-alpha.36 127 10/4/2024
1.0.0-alpha.35 215 9/30/2024
1.0.0-alpha.34 130 9/26/2024
1.0.0-alpha.33 107 9/25/2024
1.0.0-alpha.32 130 9/23/2024
1.0.0-alpha.31 128 9/20/2024
1.0.0-alpha.30 115 9/19/2024
1.0.0-alpha.29 108 9/19/2024
1.0.0-alpha.28 65 9/19/2024
1.0.0-alpha.27 63 9/19/2024
1.0.0-alpha.26 58 9/19/2024
1.0.0-alpha.25 89 9/19/2024
1.0.0-alpha.24 102 9/18/2024
1.0.0-alpha.23 73 9/18/2024
1.0.0-alpha.22 119 9/18/2024
1.0.0-alpha.21 72 9/18/2024
1.0.0-alpha.20 125 9/18/2024
1.0.0-alpha.19 235 9/14/2024
1.0.0-alpha.18 77 9/14/2024

## v1.3.12 (patch)

Changes since v1.3.11:

- Enhance README and implement ScopedTheme functionality ([@matt-edmondson](https://github.com/matt-edmondson))