ktsu.ImGuiCredentialPopups 1.1.50

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

ktsu.ImGuiCredentialPopups

Ready-made Dear ImGui modal dialogs for collecting credentials.

License NuGet Version NuGet Version NuGet Downloads GitHub commit activity GitHub contributors GitHub Actions Workflow Status

Introduction

ktsu.ImGuiCredentialPopups provides drop-in modal dialogs for asking a user for credentials inside a Dear ImGui application. Rather than hand-rolling an input modal, masked text field, and confirm/cancel button pair for every application that needs to authenticate, you open a popup and receive a Credential back through a callback.

The credential types come from ktsu.CredentialCache, so what the popup hands you is ready to persist in the host's native keyring or pass straight to an API client.

Features

  • Username/Password Popup: UsernamePasswordPopup collects a username and a masked password and returns a CredentialWithUsernamePassword.
  • Token Popup: TokenPopup collects a single masked token value and returns a CredentialWithToken.
  • Shared Base Class: CredentialPopup handles the modal lifecycle, title and label configuration, and confirmation callback, so adding a new credential shape means overriding two methods.
  • Masked Input: Secret fields use ImGuiInputTextFlags.Password so values are never rendered in plain text.
  • Automatic Focus: The first input field receives keyboard focus when the modal opens, so the user can start typing immediately.
  • CredentialCache Integration: Results are ktsu.CredentialCache credential types, ready to store through an ICredentialStore.

Installation

Package Manager Console

Install-Package ktsu.ImGuiCredentialPopups

.NET CLI

dotnet add package ktsu.ImGuiCredentialPopups

Package Reference

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

Usage Examples

Basic Example

Create the popup once and keep it alive for the lifetime of the window, then call ShowIfOpen() every frame from your render loop.

using ktsu.CredentialCache;
using ktsu.ImGuiCredentialPopups;

private readonly UsernamePasswordPopup loginPopup = new();

private void OnRender()
{
    if (ImGui.Button("Sign in"))
    {
        loginPopup.Open("Sign in to GitHub", "Credentials", credential =>
        {
            CredentialWithUsernamePassword login = (CredentialWithUsernamePassword)credential;
            Authenticate(login.Username, login.Password);
        });
    }

    // Must be called every frame so the modal can draw itself.
    loginPopup.ShowIfOpen();
}

Collecting a Token

using ktsu.CredentialCache;
using ktsu.ImGuiCredentialPopups;

private readonly TokenPopup tokenPopup = new();

private void OnRender()
{
    if (ImGui.Button("Set access token"))
    {
        tokenPopup.Open("Personal Access Token", "Token", credential =>
        {
            CredentialWithToken token = (CredentialWithToken)credential;
            cache.Store("github", token);
        });
    }

    tokenPopup.ShowIfOpen();
}

Adding a Custom Credential Popup

Derive from CredentialPopup and supply the input UI and the credential it produces.

using ktsu.ImGuiCredentialPopups;

public class ApiKeyPopup : CredentialPopup
{
    private string apiKey = string.Empty;

    protected override bool ShowEdit()
    {
        ImGui.InputText("API Key", ref apiKey, 200, ImGuiInputTextFlags.Password);
        return false;
    }

    protected override Credential MakeCredential() =>
        new CredentialWithToken { Token = apiKey.As<CredentialToken>() };
}

API Reference

CredentialPopup

Abstract base class for credential input popups.

Properties
Name Type Description
Title string Title of the popup window.
Label string Label shown above the input fields.
Modal ImGuiPopups.Modal The underlying modal used to render the dialog.
Methods
Name Return Type Description
Open(string title, string label, Action<Credential> onConfirm) void Opens the popup and registers the callback invoked on confirmation.
ShowIfOpen() bool Renders the popup if it is open and returns whether it is open. Call once per frame.
ShowEdit() bool (protected, abstract) Draws the input fields. Returns true if the user completed input via a keyboard shortcut.
MakeCredential() Credential (protected, abstract) Builds the credential from the current input values.

UsernamePasswordPopup

CredentialPopup that collects a username and masked password, producing a CredentialWithUsernamePassword.

TokenPopup

CredentialPopup that collects a single masked token, producing a CredentialWithToken.

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

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

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 is compatible.  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
1.1.50 0 8/24/2026
1.1.49 49 8/21/2026
1.1.48 47 8/20/2026
1.1.47 74 8/19/2026
1.1.46 77 8/18/2026
1.1.45 84 8/17/2026
1.1.44 94 8/14/2026
1.1.43 94 8/13/2026
1.1.42 87 8/12/2026
1.1.41 80 8/12/2026
1.1.40 95 8/12/2026
1.1.39 88 8/11/2026
1.1.38 83 8/6/2026
1.1.37 89 8/6/2026
1.1.36 94 8/5/2026
1.1.35 102 8/5/2026
1.1.34 100 8/4/2026
1.1.33 107 7/31/2026
1.1.32 94 7/30/2026
1.1.31 96 7/29/2026
Loading failed

## v1.1.50 (patch)

No significant changes detected since v1.1.49.