FishUI 1.1.1

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

FishUI

A dependency-free, immediate-mode-inspired GUI library for .NET applications with backend-agnostic rendering.

.NET 9.0 License

Features

  • 47+ Built-in Controls - Buttons, textboxes, sliders, data grids, charts, gauges, particles, and more
  • Backend Agnostic - Implement your own graphics/input via simple interfaces
  • YAML Theming - Customizable themes with atlas/9-slice support
  • Animation System - Easing functions, tweens, and particle effects
  • Layout System - Anchoring, margins, StackLayout, FlowLayout, GridLayout
  • Serialization - Save/load UI layouts to YAML files
  • Virtual Cursor - Gamepad/keyboard navigation support

Installation

dotnet add package FishUI

For Raylib backend:

dotnet add package RaylibFishGfx

Quick Start

using FishUI;
using FishUI.Controls;

// 1. Implement IFishUIGfx (graphics) and IFishUIInput (input)
//    Or use RaylibFishGfx package for a ready-to-use Raylib backend

// 2. Create FishUI instance
var settings = new FishUISettings();
var fishUI = new FishUI.FishUI(settings, gfx, input, events);
fishUI.Init();

// 3. Load a theme
settings.LoadTheme("data/themes/gwen_default.yaml", applyImmediately: true);

// 4. Add controls
var button = new Button
{
    Position = new Vector2(100, 100),
    Size = new Vector2(120, 30),
    Text = "Click Me!"
};
button.OnButtonPressed += (btn, mbtn, pos) => Console.WriteLine("Clicked!");
fishUI.AddControl(button);

// 5. Update each frame
fishUI.Tick(deltaTime, totalTime);

Available Controls

Category Controls
Input Button, Textbox, CheckBox, RadioButton, ToggleSwitch, Slider, NumericUpDown, MultiLineEditbox
Selection ListBox, DropDown, TreeView, SelectionBox, DatePicker, TimePicker
Display Label, StaticText, ImageBox, AnimatedImageBox, ProgressBar, LineChart, Timeline, BigDigitDisplay, ToastNotification
Containers Panel, Window, GroupBox, TabControl, ScrollablePane, StackLayout, FlowLayout, GridLayout
Data DataGrid, SpreadsheetGrid, PropertyGrid, ItemListbox
Gauges RadialGauge, BarGauge, VUMeter
Effects ParticleEmitter
Navigation ScrollBarV, ScrollBarH, MenuBar, ContextMenu, MenuItem

Implementing a Graphics Backend

Extend SimpleFishUIGfx for an easier implementation:

public class MyGfx : SimpleFishUIGfx
{
    public override void Init() { /* Initialize graphics */ }
    public override int GetWindowWidth() => /* window width */;
    public override int GetWindowHeight() => /* window height */;
    
    public override ImageRef LoadImage(string path) { /* Load texture */ }
    public override FontRef LoadFont(string path, float size, float spacing, FishColor color) { /* Load font */ }
    
    public override void DrawRectangle(Vector2 pos, Vector2 size, FishColor color) { /* Draw rect */ }
    public override void DrawImage(ImageRef img, Vector2 pos, float rot, float scale, FishColor color) { /* Draw image */ }
    public override void DrawTextColorScale(FontRef fn, string text, Vector2 pos, FishColor color, float scale) { /* Draw text */ }
    public override Vector2 MeasureText(FontRef fn, string text) { /* Measure text */ }
    
    public override void BeginScissor(Vector2 pos, Vector2 size) { /* Set clip rect */ }
    public override void EndScissor() { /* Clear clip rect */ }
}

Included Assets

This package includes default assets in the data folder:

  • Themes - GWEN-based default theme (data/themes/gwen_default.yaml)
  • Fonts - Default fonts for UI rendering
  • Images - UI atlas and icons (Silk Icons set)

License

MIT License - see LICENSE 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 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 FishUI:

Package Downloads
RaylibFishGfx

Raylib graphics and input backend for FishUI. Provides a complete, production-ready implementation using Raylib-cs.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.1 67 1/30/2026
1.1.0 60 1/30/2026
1.0.3 58 1/29/2026
1.0.2 58 1/29/2026
1.0.1 62 1/29/2026
1.0.0 65 1/29/2026