diff --git a/Microsoft.Maui.Gtk.Packages.slnf b/Microsoft.Maui.Gtk.Packages.slnf
index 11e03d24ba4a..2b0045f7c71b 100644
--- a/Microsoft.Maui.Gtk.Packages.slnf
+++ b/Microsoft.Maui.Gtk.Packages.slnf
@@ -15,7 +15,9 @@
"src\\Graphics\\src\\Graphics.Skia\\Graphics.Skia.csproj",
"src\\Graphics\\src\\Graphics\\Graphics.csproj",
"src\\Graphics\\src\\Text.Markdig\\Graphics.Text.Markdig.csproj",
- "src\\SingleProject\\Resizetizer\\src\\Resizetizer.csproj"
+ "src\\SingleProject\\Resizetizer\\src\\Resizetizer.csproj",
+ "src\\Workload\\Microsoft.Maui.Sdk\\Microsoft.Maui.Sdk.csproj",
+ "src\\Workload\\Microsoft.NET.Sdk.Maui.Manifest\\Microsoft.NET.Sdk.Maui.Manifest.csproj"
]
}
-}
\ No newline at end of file
+}
diff --git a/eng/Versions.props b/eng/Versions.props
index f39295b01c56..9330be3b19e3 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -106,5 +106,6 @@
$(DotNetVersionBand)
$(DotNetVersionBand)
$(DotNetVersionBand)
+ $(DotNetVersionBand)
diff --git a/eng/scripts/update-version-props.ps1 b/eng/scripts/update-version-props.ps1
index da81e00da2b8..02956c3028aa 100644
--- a/eng/scripts/update-version-props.ps1
+++ b/eng/scripts/update-version-props.ps1
@@ -29,6 +29,10 @@ The MacCatalyst version to update on the file
.PARAMETER macVersion
+The Gtk version to update on the file
+
+.PARAMETER gtkVersion
+
The Mac version to update on the file
.
@@ -47,7 +51,8 @@ param
[string] $iOSVersion,
[string] $tvOSVersion,
[string] $macCatalystVersion,
- [string] $macVersion
+ [string] $macVersion,
+ [string] $gtkVersion
)
#Update git config
@@ -86,11 +91,18 @@ if ($macVersion)
$macVersionNode."#text" = $macVersion
}
+if ($gtkVersion)
+{
+ $gtkVersionNode = $xmlDoc.SelectNodes("//Project//PropertyGroup//MicrosoftGtkSdkPackageVersion")[0]
+ $gtkVersionNode."#text" = $gtkVersion
+}
+
Write-Output("Android version: " + $xmlDoc.Project.PropertyGroup.MicrosoftAndroidSdkWindowsPackageVersion)
Write-Output("iOS version: " + $xmlDoc.Project.PropertyGroup.MicrosoftiOSSdkPackageVersion)
Write-Output("tvOS version: " + $xmlDoc.Project.PropertyGroup.MicrosofttvOSSdkPackageVersion)
Write-Output("MacCatalyst version: " + $xmlDoc.Project.PropertyGroup.MicrosoftMacCatalystSdkPackageVersion)
Write-Output("Mac version: " + $xmlDoc.Project.PropertyGroup.MicrosoftmacOSSdkPackageVersion)
+Write-Output("Gtk version: " + $xmlDoc.Project.PropertyGroup.MicrosoftGtkSdkPackageVersion)
$xmlDoc.Save($xmlFileName)
diff --git a/src/Compatibility/Core/src/Gtk/GtkPlatformServices.cs_ b/src/Compatibility/Core/src/Gtk/GtkPlatformServices.cs_
index ec7f37c21398..aa3b1bcb91ad 100644
--- a/src/Compatibility/Core/src/Gtk/GtkPlatformServices.cs_
+++ b/src/Compatibility/Core/src/Gtk/GtkPlatformServices.cs_
@@ -18,7 +18,7 @@ namespace Microsoft.Maui.Controls.Compatibility
public void BeginInvokeOnMainThread(Action action)
{
- MauiGtkApplication.Invoke(action);
+ MauiApplication.Invoke(action);
}
public Assembly[] GetAssemblies()
{
@@ -96,7 +96,7 @@ namespace Microsoft.Maui.Controls.Compatibility
public void QuitApplication()
{
- ((GLib.Application)MauiGtkApplication.CurrentGtkApplication).Quit();
+ ((GLib.Application)MauiApplication.CurrentGtkApplication).Quit();
}
public SizeRequest GetNativeSize(VisualElement view, double widthConstraint, double heightConstraint)
diff --git a/src/Controls/samples/Controls.Sample.Gtk/SimpleSampleApp/SimpleSampleGtkApplication.cs b/src/Controls/samples/Controls.Sample.Gtk/SimpleSampleApp/SimpleSampleGtkApplication.cs
index 4a1d889e7e98..6c1c4e4d9e94 100644
--- a/src/Controls/samples/Controls.Sample.Gtk/SimpleSampleApp/SimpleSampleGtkApplication.cs
+++ b/src/Controls/samples/Controls.Sample.Gtk/SimpleSampleApp/SimpleSampleGtkApplication.cs
@@ -7,7 +7,7 @@
namespace Maui.SimpleSampleApp
{
- public class SimpleSampleGtkApplication : MauiGtkApplication
+ public class SimpleSampleGtkApplication : MauiApplication
{
protected override MauiApp CreateMauiApp()
diff --git a/src/Controls/samples/Controls.Sample/Platforms/Gtk/Main.cs b/src/Controls/samples/Controls.Sample/Platforms/Gtk/Main.cs
index 4358ec30cc28..ac1b2434c9b2 100644
--- a/src/Controls/samples/Controls.Sample/Platforms/Gtk/Main.cs
+++ b/src/Controls/samples/Controls.Sample/Platforms/Gtk/Main.cs
@@ -4,7 +4,7 @@
namespace Maui.Controls.Sample.Platform
{
- class Program : MauiGtkApplication
+ class Program : MauiApplication
{
protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
diff --git a/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.Globs.props b/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.Globs.props
index 70e85541920f..7928adfc7017 100644
--- a/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.Globs.props
+++ b/src/Controls/src/Build.Tasks/nuget/buildTransitive/netstandard2.0/Microsoft.Maui.Controls.Globs.props
@@ -162,4 +162,6 @@
Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(TizenTpkUserExcludeFiles)" />
+
+
diff --git a/src/Core/src/LifecycleEvents/Gtk/GtkLifecycle.cs b/src/Core/src/LifecycleEvents/Gtk/GtkLifecycle.cs
index 1cd03cab5f48..e76257c3427b 100644
--- a/src/Core/src/LifecycleEvents/Gtk/GtkLifecycle.cs
+++ b/src/Core/src/LifecycleEvents/Gtk/GtkLifecycle.cs
@@ -21,7 +21,7 @@ public static class GtkLifecycle
public delegate void OnStartup(Gtk.Application application, EventArgs args);
- public delegate void OnLaunching(MauiGtkApplication application, EventArgs args);
+ public delegate void OnLaunching(MauiApplication application, EventArgs args);
public delegate void OnLaunched(Gtk.Application application, EventArgs args);
diff --git a/src/Core/src/Platform/Gtk/MauiGtkApplication.cs b/src/Core/src/Platform/Gtk/MauiApplication.cs
similarity index 90%
rename from src/Core/src/Platform/Gtk/MauiGtkApplication.cs
rename to src/Core/src/Platform/Gtk/MauiApplication.cs
index 3e9b56094554..300596799405 100644
--- a/src/Core/src/Platform/Gtk/MauiGtkApplication.cs
+++ b/src/Core/src/Platform/Gtk/MauiApplication.cs
@@ -7,13 +7,19 @@
namespace Microsoft.Maui
{
- public abstract class MauiGtkApplication : IPlatformApplication
+ public abstract class MauiApplication : IPlatformApplication
{
+ protected MauiApplication()
+ {
+ Current = this;
+ IPlatformApplication.Current = this;
+ }
+
protected abstract MauiApp CreateMauiApp();
// https://docs.gtk.org/gio/type_func.Application.id_is_valid.html
// TODO: find a better algo for id
- public virtual string ApplicationId => $"{typeof(MauiGtkApplication).Namespace}.{nameof(MauiGtkApplication)}.{Name}".PadRight(255, ' ').Substring(0, 255).Trim();
+ public virtual string ApplicationId => $"{typeof(MauiApplication).Namespace}.{nameof(MauiApplication)}.{Name}".PadRight(255, ' ').Substring(0, 255).Trim();
string? _name;
@@ -27,7 +33,7 @@ public string? Name
// https://docs.gtk.org/gtk3/class.Application.html
public static Gtk.Application CurrentGtkApplication { get; internal set; } = null!;
- public static MauiGtkApplication Current { get; internal set; } = null!;
+ public static MauiApplication Current { get; internal set; } = null!;
public MauiGtkMainWindow MainWindow { get; protected set; } = null!;
diff --git a/src/Core/src/Platform/Gtk/MauiGtkMainWindow.cs b/src/Core/src/Platform/Gtk/MauiGtkMainWindow.cs
index 4ace70e4ec61..41f35bc6c61f 100644
--- a/src/Core/src/Platform/Gtk/MauiGtkMainWindow.cs
+++ b/src/Core/src/Platform/Gtk/MauiGtkMainWindow.cs
@@ -23,12 +23,12 @@ public MauiGtkMainWindow() : base(WindowType.Toplevel)
void OnDeleteEvent(object o, DeleteEventArgs args)
{
- MauiGtkApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
+ MauiApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
- if (MauiGtkApplication.Current.MainWindow == o)
+ if (MauiApplication.Current.MainWindow == o)
{
- ((Application)MauiGtkApplication.CurrentGtkApplication).Quit();
+ ((Application)MauiApplication.CurrentGtkApplication).Quit();
args.Event.SendEvent = true;
}
@@ -37,22 +37,22 @@ void OnDeleteEvent(object o, DeleteEventArgs args)
//GtkWidget::visibility-notify-event has been deprecated since version 3.12
// void OnVisibilityNotifyEvent(object o, VisibilityNotifyEventArgs args)
// {
- // MauiGtkApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
+ // MauiApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
// }
void OnHidden(object? sender, EventArgs args)
{
- MauiGtkApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
+ MauiApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
}
void OnShown(object? sender, EventArgs args)
{
- MauiGtkApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
+ MauiApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
}
void OnWindowStateEvent(object o, WindowStateEventArgs args)
{
- MauiGtkApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
+ MauiApplication.Current.Services?.InvokeLifecycleEvents(del => del(this, args));
}
}
diff --git a/src/Core/src/Platform/Gtk/MauiWindow.cs b/src/Core/src/Platform/Gtk/MauiWindow.cs
index 99fa31f8d138..c234ceb4c708 100644
--- a/src/Core/src/Platform/Gtk/MauiWindow.cs
+++ b/src/Core/src/Platform/Gtk/MauiWindow.cs
@@ -6,7 +6,7 @@
namespace Microsoft.Maui.Platform
{
- [Obsolete("use MauiGtkApplication")]
+ [Obsolete("use MauiApplication")]
public class MauiWindow : Window
{
diff --git a/src/Core/src/Platform/Gtk/WindowExtensions.cs b/src/Core/src/Platform/Gtk/WindowExtensions.cs
index 61028c550e3c..d535d3716c90 100644
--- a/src/Core/src/Platform/Gtk/WindowExtensions.cs
+++ b/src/Core/src/Platform/Gtk/WindowExtensions.cs
@@ -12,7 +12,7 @@ public static void UpdateTitle(this Gtk.Window platformWindow, IWindow window) =
public static IWindow GetWindow(this Gtk.Window platformWindow)
{
- foreach (var window in MauiGtkApplication.Current.Application.Windows)
+ foreach (var window in MauiApplication.Current.Application.Windows)
{
if (window?.Handler?.PlatformView is Gtk.Window win && win == platformWindow)
return window;
diff --git a/src/DotNet/Dependencies/Workloads.csproj b/src/DotNet/Dependencies/Workloads.csproj
index 2e9b4bd8017d..8ea2438cb9a2 100644
--- a/src/DotNet/Dependencies/Workloads.csproj
+++ b/src/DotNet/Dependencies/Workloads.csproj
@@ -14,6 +14,7 @@
+
\ No newline at end of file
diff --git a/src/DotNet/DotNet.csproj b/src/DotNet/DotNet.csproj
index 89d95fa4b40f..70930feccedf 100644
--- a/src/DotNet/DotNet.csproj
+++ b/src/DotNet/DotNet.csproj
@@ -23,6 +23,9 @@
$(DotNetInstallCommand) --azure-feed $(InternalAzureFeed) --feed-credential $DOTNET_TOKEN
$(DotNetInstallCommand) --azure-feed $(DotNetFeedUrl)
+
+
+
<_ProvisionDependsOn>
@@ -121,6 +124,9 @@
bash '$(DotNetInstallScriptPath)' --version $(VersionFromAndroid) --install-dir '$(DotNetDirectory)' --verbose -Runtime dotnet
bash '$(DotNetInstallScriptPath)' --version $(VersionFromMacios) --install-dir '$(DotNetDirectory)' --verbose -Runtime dotnet
+
+
+
<_PacksToRemove Include="microsoft.net.sdk.tvos" />
<_PacksToRemove Include="microsoft.net.sdk.macos" />
+ <_PacksToRemove Include="microsoft.net.sdk.gtk" />
<_PacksToRemove Include="microsoft.net.workload.emscripten" />
<_PacksToRemove Include="microsoft.net.workload.mono.toolchain" />
@@ -155,6 +162,7 @@
<_WorkloadIds Include="macos" />
<_WorkloadIds Include="ios" />
<_WorkloadIds Include="tvos" />
+ <_WorkloadIds Include="gtk" />
<_WorkloadIds Include="tizen" Condition=" '$(IncludeTizenTargetFrameworks)' == 'true' " />
diff --git a/src/MultiTargeting.targets b/src/MultiTargeting.targets
index 8de3add21204..20646708756b 100644
--- a/src/MultiTargeting.targets
+++ b/src/MultiTargeting.targets
@@ -61,9 +61,9 @@
-
+
-
+
@@ -83,6 +83,8 @@
Platform\Android\
$(AndroidProjectFolder)Resources
$(AndroidProjectFolder)Assets
+
+ Platform\Gtk\
diff --git a/src/Workload/Microsoft.Maui.Sdk/Microsoft.Maui.Sdk.csproj b/src/Workload/Microsoft.Maui.Sdk/Microsoft.Maui.Sdk.csproj
index 0927ad8bfd55..e5e57d6d89d6 100644
--- a/src/Workload/Microsoft.Maui.Sdk/Microsoft.Maui.Sdk.csproj
+++ b/src/Workload/Microsoft.Maui.Sdk/Microsoft.Maui.Sdk.csproj
@@ -12,7 +12,7 @@
true
Microsoft.Maui.Sdk
.NET MAUI SDK
- .NET Multi-platform App UI (.NET MAUI) SDK. Please do not reference this package directly.
+ (MauiLinux is a fork of MAUI).NET Multi-platform App UI (.NET MAUI) SDK. Please do not reference this package directly.
diff --git a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj
index 403fc3613baf..74fad253e600 100644
--- a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj
+++ b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Microsoft.NET.Sdk.Maui.Manifest.csproj
@@ -6,7 +6,7 @@
true
Microsoft.NET.Sdk.Maui.Manifest-$(DotNetMauiManifestVersionBand)
- .NET Multi-platform App UI (.NET MAUI) workload manifest. Please do not reference this package directly.
+ (MauiLinux is a fork of MAUI).NET Multi-platform App UI (.NET MAUI) workload manifest. Please do not reference this package directly.
@@ -46,6 +46,7 @@
<_VersionsToReplace Include="DotNetEmscriptenManifestVersionBand" />
<_VersionsToReplace Include="DotNetAndroidManifestVersionBand" />
<_VersionsToReplace Include="DotNetMaciOSManifestVersionBand" />
+ <_VersionsToReplace Include="DotNetGtkManifestVersionBand" />
<_VersionsToReplace Include="MicrosoftAspNetCoreAuthorizationPackageVersion" />
<_VersionsToReplace Include="MicrosoftAspNetCoreComponentsAnalyzersPackageVersion" />
<_VersionsToReplace Include="MicrosoftAspNetCoreComponentsFormsPackageVersion" />
diff --git a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Rollback.in.json b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Rollback.in.json
index 87328d8ba95a..53d49444f16f 100644
--- a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Rollback.in.json
+++ b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/Rollback.in.json
@@ -1,5 +1,6 @@
{
"microsoft.net.sdk.android": "@MicrosoftAndroidSdkWindowsPackageVersion@/@DotNetAndroidManifestVersionBand@",
+ "microsoft.net.sdk.gtk": "@MicrosoftGtkSdkPackageVersion@/@DotNetGtkManifestVersionBand@",
"microsoft.net.sdk.ios": "@MicrosoftiOSSdkPackageVersion@/@DotNetMaciOSManifestVersionBand@",
"microsoft.net.sdk.maccatalyst": "@MicrosoftMacCatalystSdkPackageVersion@/@DotNetMaciOSManifestVersionBand@",
"microsoft.net.sdk.macos": "@MicrosoftmacOSSdkPackageVersion@/@DotNetMaciOSManifestVersionBand@",
diff --git a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json
index ad59614dcc37..87eb9f731c9a 100644
--- a/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json
+++ b/src/Workload/Microsoft.NET.Sdk.Maui.Manifest/WorkloadManifest.in.json
@@ -20,7 +20,8 @@
"description": ".NET MAUI SDK for Desktop",
"extends": [
"maui-maccatalyst",
- "maui-windows"
+ "maui-windows",
+ "maui-gtk"
]
},
"maui-core": {
@@ -84,6 +85,13 @@
"extends": [
"maui-blazor"
]
+ },
+ "maui-gtk": {
+ "description": ".NET MAUI SDK for Gtk",
+ "extends": [
+ "maui-blazor",
+ "gtk"
+ ]
}
},
"packs": {
diff --git a/src/Workload/README.md b/src/Workload/README.md
index fac19af3af5e..775cb6c4d4f2 100644
--- a/src/Workload/README.md
+++ b/src/Workload/README.md
@@ -82,13 +82,14 @@ installed:
* `maui`: everything
* `maui-mobile`: iOS & Android
-* `maui-desktop`: Mac Catalyst & Windows
+* `maui-desktop`: Mac Catalyst & Windows & Gtk
* `maui-core`: required by all platforms
* `maui-android`
* `maui-maccatalyst`
* `maui-macos`
* `maui-windows`
* `maui-tizen`
+* `maui-gtk`
`maui-android` simply extends the `android` workload, adding the
Android-specific platform implementation for MAUI.
@@ -206,6 +207,7 @@ Manually remove these directories:
* `dotnet/packs/Microsoft.macOS.*`
* `dotnet/packs/Microsoft.Maui.*`
* `dotnet/packs/Microsoft.tvOS.*`
+* `dotnet/packs/Microsoft.Gtk.*`
* `dotnet/sdk/6.0.100-*`
* `dotnet/sdk-manifests`
* `dotnet/template-packs`