lytico / maui

.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/
MIT License
37 stars 7 forks source link

Merge maui-linux into maui-main #11

Closed lytico closed 6 months ago

lytico commented 2 years ago

Plan to merge https://github.com/jsuarezruiz/maui-linux/tree/main-linux with https://github.com/dotnet/maui main

GtkSharp-Workload

a GtkSharp-Workload is needed this should happen upstream in https://github.com/GtkSharp/

see also: tizen-workload https://github.com/Samsung/Tizen.NET

Microsoft.Maui.Graphics

make a recent GtkSharp-Version of https://github.com/dotnet/Microsoft.Maui.Graphics

get https://github.com/dotnet/maui main to compile on linux

currently, the build.cake is windows-specific and broken on linux: https://github.com/dotnet/maui/blob/main/build.cake

merge

main problem will be the build-scripts & build-variables and, of cause, all the files cluttered with platform-specific preprocessor-directives here, merge all lines as is main-linux in you find with
#elif GTK and #if GTK

update api changes

it's not so hard, as it looks at the first glance.

general, look at maui-tizen as a reference see eg. https://github.com/dotnet/maui/tree/main/src/Core/src/Platform/Tizen

trungnt2910 commented 2 years ago

Currently, main-linux is using net5.0 as a target for Gtk's backend to fill in the lack of a dedicated net6.0-linux TFM.

This forces MAUI for GTK to be stuck on net5.0, or at least, behind other targets.

Are there any plans to mitigate this? (For example, by using separate MSBuild projects or somehow create a new TFM?,...)

lytico commented 2 years ago

no, no plans for supporting net5. it should be migrated to net6 and, the TFM will be net6.0-Gkt (not linux! Gtk runs on more than linux)

trungnt2910 commented 2 years ago

it should be migrated to net6 and, the TFM will be net6.0-Gkt (not linux! Gtk runs on more than linux)

Yes, that was what I expected. Also Linux doesn't guarantee to have GTK installed so making it net6.0-linux to access GTK does not make much sense.

no, no plans for supporting net5.

I was not asking for net5 support. net5 seems to be a hack the MAUI for GTK devs were using to get a TFM specialized for GTK.

the TFM will be net6.0-Gkt

You mean net6.0-gtk right? If that's the case, do we actually have to modify the SDK to add a new TFM.

Furthermore, other existing TFMs for .NET seems to represent environments, such as windows, android, maccatalyst, and the proposed but dropped, browser. gtk doesn't seem to be a legal runtime environment on its own, just an UI framework.

lytico commented 2 years ago

You mean net6.0-gtk right?

yes

Also Linux doesn't guarantee to have GTK installed

the workload is responsible for provide all dependencies to get GtkSharp running. So it has to install all packages (on linux) or provide the installer for Gtk (on windows) or call brew ... (on mac)

TFMs for .NET seems to represent environments ...

so, if we take -linux, we know nothing. also android is a linux, but with a special Ui-Framework (=android) same with tizen.

trungnt2910 commented 2 years ago

so, if we take -linux, we know nothing. also android is a linux, but with a special Ui-Framework (=android)

Ok I get it. Thanks!

Any pointers on where to start for the workload? It seems that the GtkSharp project already has adequate scripts to ensure dependencies are installed on the machine, the workload just need to register it somehow...

lytico commented 2 years ago

the workload just need to register it somehow...

yes, it could be easy (easy ... the shortest joke in it ;-) )

GtkSharp related stuff should happen upstream. See https://github.com/GtkSharp/GtkSharp/issues/349

lytico commented 2 years ago

started to merge: https://github.com/jsuarezruiz/maui-linux/pull/37

lytico commented 2 years ago

State

Controls.Samples.Gtk running

grafik

lytico commented 6 months ago

on net 8.0 now