Gtk4DotNet 6.8.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Gtk4DotNet --version 6.8.1
                    
NuGet\Install-Package Gtk4DotNet -Version 6.8.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="6.8.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Gtk4DotNet" Version="6.8.1" />
                    
Directory.Packages.props
<PackageReference Include="Gtk4DotNet" />
                    
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 Gtk4DotNet --version 6.8.1
                    
#r "nuget: Gtk4DotNet, 6.8.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 Gtk4DotNet@6.8.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=Gtk4DotNet&version=6.8.1
                    
Install as a Cake Addin
#tool nuget:?package=Gtk4DotNet&version=6.8.1
                    
Install as a Cake Tool

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

Necessary only depending on the version of Linux

if you want to use WebView (WebKitGTK) on Ubuntu 22.04:

  • sudo apt install libwebkitgtk-6.0-dev

With LibAdwaita

  • sudo apt install libadwaita-1-dev

Gtk4

  • sudo apt install libgtk-4-dev

If you want to use GTK resources

  • sudo apt install libglib2.0-dev-bin

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.  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. 
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
7.0.65-beta-65 223 5/17/2025
7.0.64-beta-64 161 5/17/2025
7.0.63-beta-63 193 5/16/2025
7.0.62-beta-62 250 5/16/2025
7.0.61-beta-61 273 5/14/2025
7.0.60-beta-60 304 5/12/2025
7.0.59-beta-59 266 5/12/2025
7.0.58-beta-58 206 4/18/2025
7.0.57-beta-57 265 4/14/2025
7.0.56-beta-56 213 4/13/2025
7.0.55-beta-55 211 4/13/2025
7.0.54-beta-54 219 4/12/2025
7.0.53-beta-53 213 4/12/2025
7.0.52-beta-52 171 4/12/2025
7.0.51-beta-51 193 4/11/2025
7.0.50-beta-50 220 4/10/2025
7.0.49-beta-49 223 4/10/2025
7.0.48-beta-48 215 4/10/2025
7.0.47-beta-47 226 4/10/2025
6.8.1 471 2/15/2025
Loading failed

Builder from .Net Resource