GUML.Shared
0.3.1
dotnet add package GUML.Shared --version 0.3.1
NuGet\Install-Package GUML.Shared -Version 0.3.1
<PackageReference Include="GUML.Shared" Version="0.3.1" />
<PackageVersion Include="GUML.Shared" Version="0.3.1" />
<PackageReference Include="GUML.Shared" />
paket add GUML.Shared --version 0.3.1
#r "nuget: GUML.Shared, 0.3.1"
#:package GUML.Shared@0.3.1
#addin nuget:?package=GUML.Shared&version=0.3.1
#tool nuget:?package=GUML.Shared&version=0.3.1
Godot UI Markup Language
GUML is a declarative UI markup language (.guml) for Godot .NET, providing a QML/XAML-like development experience. It allows developers to define UI components and layouts using a concise syntax, with support for data binding, event handling, and reusable components. GUML uses Roslyn Source Generator for compile-time code generation, delivering maximum performance with zero runtime overhead.
Features
- QML-like declarative syntax
- Data binding — automatically update UI when controller properties change (one-way
:=, two-way<=>, reverse=:) - Event wiring — connect Godot signals and C# events with one line
- List rendering —
eachblocks with incremental updates viaObservableCollection<T> - Reusable components — compose and reuse
.gumlfiles with typed parameters - Full Godot UI component support (all built-in Control types)
- Theme overrides — set theme styles directly in GUML
- Source Generator mode — compile-time code generation for maximum performance
Install
dotnet add package GUML --version 0.3.0
For source generator support:
dotnet add package GUML.SourceGenerator --version 0.3.0
Documentation
- Documentation Hub — guides, reference, and API docs
- Quick Start — install GUML, write your first
.gumlfile, run it in Godot - GUML Syntax — full syntax reference
Language Specification
The formal GUML language specification is available in the GUMLSpec directory. It covers:
- Lexical structure & grammar (BNF)
- Types, expressions, and directives
- Component model and controller integration
- Code generation and API interface specifications
- Diagnostics
IDE Support
Editor plugins have been moved to their own repositories:
| Editor | Repository |
|---|---|
| VS Code | GUML.VSC |
| JetBrains Rider | GUML.Rider |
Project Structure
| Directory | Description |
|---|---|
GUML |
Core runtime library — GuiController, converters, bindings |
GUML.Shared |
Shared infrastructure — full-fidelity CST parser, API metadata models, diagnostics |
GUML.SourceGenerator |
Roslyn source generator for compile-time .guml → C# code generation |
GUML.Analyzer |
Language analyzer CLI tool — Roslyn-based project analysis and LSP features via JSON-RPC |
GUMLSpec |
Formal language specification |
Doc |
User documentation (guides, reference, quick start) |
TestApplication |
Sample Godot project demonstrating GUML usage |
Example
main.guml:
Panel {
size: vec2(640, 480),
theme_overrides: {
panel: style_box_flat({
bg_color: color(0.4, 0.4, 0.4, 0.4)
})
},
Label {
position: vec2(10, 10),
size: vec2(200, 30),
// $controller.SayHello binding to Label.text.If SayHello changes, text will also change.
text:= "hello " + $controller.SayHello
}
Button {
position: vec2(10, 50),
size: vec2(200, 30),
text: "Change world",
#pressed: $controller.ChangeHelloBtnPressed
}
}
MainController.cs:
public class MainController : GuiController
{
public string SayHello {
get => _sayHello;
set
{
_sayHello = value;
OnPropertyChanged();
}
}
private string _sayHello = "world!";
public void ChangeHelloBtnPressed()
{
SayHello = "new world!";
}
}
After clicking the change world button, the text will change to hello new world!
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on GUML.Shared:
| Package | Downloads |
|---|---|
|
GUML
Godot UI Markup Language. |
GitHub repositories
This package is not used by any popular GitHub repositories.