Gtk4DotNet 3.3.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Gtk4DotNet --version 3.3.1                
NuGet\Install-Package Gtk4DotNet -Version 3.3.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="Gtk4DotNet" Version="3.3.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Gtk4DotNet --version 3.3.1                
#r "nuget: Gtk4DotNet, 3.3.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.
// Install Gtk4DotNet as a Cake Addin
#addin nuget:?package=Gtk4DotNet&version=3.3.1

// Install Gtk4DotNet as a Cake Tool
#tool nuget:?package=Gtk4DotNet&version=3.3.1                

Gtk4DotNet

.Net 8 bindings for GTK 4

Gtk4DotNet uses a functional declarative approach to GTK4 similar to REACT or Kotlin Compose:

return Application
    .New("org.gtk.example")
    .OnActivate(app => 
        app
            .NewWindow()
            .Title("Hello Gtk👍")
            .SideEffect(win => win
            .Child(
                Grid
                    .New()
                    .Attach(                                
                        Button
                            .NewWithLabel("Button 1")
                            .OnClicked(() => WriteLine("Button1 clicked")), 0, 0, 1, 1)
                    .Attach(                                
                        Button
                            .NewWithLabel("Button 2")
                            .OnClicked(() => WriteLine("Button2 clicked")), 1, 0, 1, 1)
                    .Attach(                                
                        Button
                            .NewWithLabel("Quit")
                            .OnClicked(() => win.CloseWindow()), 0, 1, 2, 1)))
            .Show())
    .Run(0, IntPtr.Zero);
}

You don't have to use window.ui XML files for describing the UI, instead declare the UI declarative with C#.

Contained in this Repo are samples how to use Gtk4DotNet. All examples of the official GTK4 are transformed to C# with Gtk4DotNet.

Prerequisites

Ubuntu

  • sudo apt install libgtk-4-dev

if you want to use WebView (WebKitGTK):

  • sudo apt install libwebkitgtk-6.0-dev

Installation of GTK Schema

    sudo install -D ./Test/org.gtk.example.gschema.xml /usr/share/glib-2.0/schemas/
    sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

Usage

Look at the sample programs (https://github.com/uriegel/Gtk4DotNet/tree/Main/Test)

Checking if memory is being freed

To check if GObjects are being freed, just run

Widget.AddWeakRef(() => Console.WriteLine("... is being freed));

If this object is finalized, then the callback will be called.

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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Gtk4DotNet:

Package Downloads
WebWindowNetCore

A C# Webview Application for Windows and Linux similar to Electron based on WebView2 (Windows) and GTK WebKit (Linux)

WebWindowNetCore.Linux

A C# Webview Application for Linux similar to Electron based on GTK WebKit

Gtk4DotNet.FSharp

.NET 8 F# Bindings for GTK 4, functional declarative similar to REACT or Kotlin Compose

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
6.5.5 136 9/7/2024
6.5.4 177 8/31/2024
6.5.4-beta6 88 8/31/2024
6.5.4-beta5 84 8/31/2024
6.5.4-beta4 86 8/31/2024
6.5.4-beta3 89 8/31/2024
6.5.3 277 8/23/2024
6.5.3-beta3 90 8/31/2024
6.5.3-beta2 93 8/31/2024
6.5.3-beta1 86 8/31/2024
6.5.2 131 8/19/2024
6.5.1 111 8/19/2024
6.5.0 126 8/18/2024
6.4.0 135 8/13/2024
6.3.0 119 8/12/2024
6.2.1 132 8/11/2024
6.2.0 114 8/11/2024
6.1.3 126 8/10/2024
6.1.2 123 8/9/2024
6.1.1 109 8/9/2024
6.1.0 281 4/29/2024
6.0.0 124 4/27/2024
5.4.0 146 4/20/2024
5.3.11 121 4/20/2024
5.3.10 114 4/20/2024
5.3.9 125 4/19/2024
5.3.8 134 3/26/2024
5.3.7 134 3/13/2024
5.3.6 198 1/20/2024
5.3.5 124 1/20/2024
5.3.4 172 1/7/2024
5.3.3 148 1/3/2024
5.3.2 142 1/2/2024
5.3.1 127 1/2/2024
5.3.0 135 1/2/2024
5.2.0 152 12/22/2023
5.1.0 129 12/22/2023
5.0.0 203 12/14/2023
4.0.0 123 12/13/2023
3.4.0 124 12/10/2023
3.3.1 133 12/10/2023
3.3.0 117 12/10/2023
3.2.0 120 12/9/2023
3.1.1 121 12/9/2023
3.1.0 118 12/9/2023
3.0.0 137 12/9/2023
2.0.0 137 11/28/2023
1.4.0 197 11/17/2023
1.3.3 107 11/16/2023
1.3.2 130 11/16/2023
1.3.1 117 11/16/2023
1.3.0 137 11/16/2023
1.2.1 143 10/29/2023
1.2.0 142 10/22/2023
1.1.0 194 4/24/2023
1.0.0 168 4/23/2023

Now .NET 8 is target platform