jsuarezruiz/maui-linux

We need your help!

jsuarezruiz opened this issue ยท 40 comments

This is am open source community project. Any kind of contribution is more than welcome. You can collaborate in different ways:

  • Collaborate with code adding functionality via PRs.
  • Give feedback testing the project and creating issues.

If you have any questions or I can help you with something, get in touch with me!

@jsuarezruiz any plans when you start to do something? otherwise i try to start an implementation today

I already started with it here: https://github.com/jsuarezruiz/maui-linux/tree/init-linux
You can find many Handlers, etc. like: https://github.com/jsuarezruiz/maui-linux/blob/init-linux/src/Core/src/Handlers/Label/LabelHandler.Linux.cs
So, you can use the same branch and continue it. My idea is:

  • Complete basic sample.
  • Complete LayoutHandler.

And then, merge this init-linux branch to main-linux.

Thanks!

Thanks for the effort to put this forward @jsuarezruiz. I took a look at init-linux and I don't think I have the necessary knowledge to help with the implementation for now, I need more study (ant time ๐Ÿ˜ข). But I am available to test it. Looking forward to having a sample running.

@jsuarezruiz how to deal with https://github.com/dotnet/Microsoft.Maui.Graphics ?

some of the basics should be implemented there: Microsoft.Maui.Graphics.Point ToGtk etc etc

the turnaround to get it from a package would be too slow

my suggestion:
import it as a git-submodule as source and reference the sources as long the code is so volatile
and later, having a stable package, change the references

Complete basic sample.

what is basic sample? https://github.com/jsuarezruiz/maui-linux/tree/main/src/Controls/samples/Controls.Sample ?

a little bit heavy for the start ...

Is this fork looking to add GTK 3/4 support as well? I created a fork earlier with the intention of creating GTK wrappers that are specifically designed to support MAUI patterns while also removing dependencies on external code so the Linux support implementation would be self-contained (with the exception of the GTK libraries themselves). Is anyone else interested in this being done?

@redjaguar this fork is currently gtk3, realized with https://github.com/GtkSharp/GtkSharp
gtk4 support depends on GtkSharp/GtkSharp#166

Hey guys, I'm interested in contributing to this project ๐Ÿ™‚
Am I correct that development is currently still done in Visual Studio, making use of the fact that GTK supports Windows as well?

Yes, using GTK supports Windows and macOS as well.

@tomveltmeijer i develop on linux with rider

for development on windows, you need a recent gtk3. i use this:
https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer

@lytico nice to see you involved here

@scherenhaenden thanks for motivation! seems that i'm the whole "community" at the moment.

iMonZ commented

Hey,
what is missing before this project can be merged to Maui? And will it have full gtk3+ support (this is important for Wayland)
but thanks for the hard work.
After this project is merged, Microsoft can say that MAUI is cross-platform.

what is missing before this project can be merged to Maui?

a stable maui-api.

currently there are a lot of api changes every week.
eg. i don't know where https://github.com/jsuarezruiz/maui-linux/tree/main/src/Compatibility/Core/src/ - Renderers are going.
i guess they will ported to plain renders, so i won't implement the Compatibility - Renderes in Gtk.

same with https://github.com/jsuarezruiz/maui-linux/tree/main/src/Essentials/src
a lot of stuff from there will move to maui - core or maui - controls, so it has no sense to port them now.

@jsuarezruiz your opinion?

And will it have full gtk3+

yes, its realized with https://github.com/GtkSharp/GtkSharp, that is Gtk 3.2

Right, I would say that until Preview 6 there will be changes in Core, handlers, etc. It is nice to move forward and define things, but for now, require rebase and apply some core changes.
We use Gtk 3.2. It is another of the things that I think about. The jump to Gtk 4 would require more changes, but I am not sure when we could use a stable version of GtkSharp 4.

With this project i will be able to use .net for android/ios(former Xamarin.Android/iOS) on Linux? because in the latest .net6 preview i dont have any template for and Android/iOS app on linux :( and i hope this project will help me with that issue

able to use .net for android/ios(former Xamarin.Android/iOS) on Linux?

no. this project targets using Maui on linux.
you program with Maui, and get a Gtk-Application running on linux.

I tought i could run the whole Maui staff on Linux like running an Android or iOS app too ...

@radudiaconu0 you will be able to develop Android on Linux.
instructions for xamarin-android here: https://github.com/0xFireball/xamarin-android-linux
currently there are some bugs in Maui Controls - Compatibility (https://github.com/jsuarezruiz/maui-linux/tree/main/src/Compatibility/Core/src/Android) with linux, but i guess this can be resolved easily

Hi @jsuarezruiz, where can we help? I was poking around for a list of "TODO" items to assist, but could not find one.

I'm ready and happy to help, sir! MAUI does need some GTK/Linux love.

@DamianSuess i've a status in the last PR:

Status

And I am going to create specific issues with small tasks, like for example: Implement DatePicker Date.
In that way, anyone can pick a small task and contribute!

Wonderful! Thank you, @lytico and @jsuarezruiz
Keep up the great work

@jsuarezruiz what's the long term plan for essentials? are they going to be integrated to Core / Compatibitity? or do we have to implement it?

For essentials I have some Linux-compatibility PRs open that have not been reviewed/merged yet. So we could have an equivalent "essentials-linux" repo with those patches first.

@lytico Will be part of .NET MAUI. The namespace is Microsoft.Maui.Essentials and you can find it here: https://github.com/dotnet/maui/tree/main/src/Essentials

Hi, I would like to contribute with code but I don't know that much, however I'll use this in an already popular project which hopefully will boost this repo's popularity and some smarter people will help you out.
Thanks a lot for developing this!

@tomveltmeijer i develop on linux with rider

Heyo. You develop MAUI on a linux machine? If so, how do you set everything up.
(And just wondering, would this also work with the "official" MAUI?)

Hey guys I'm trying to build from main-linux but without success. I installed all the workloads and ran the build.cmd, but I'm getting a long list of errors at end.

These are only first lines:

"D:\Projects\MAUI\maui-linux\Microsoft.Maui.Packages-net6.slnf" (Build target) (1:2) ->
"D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Compatibility-net6.csproj" (default target) (4:43) ->
"D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Compatibility-net6.csproj" (Build target) (4:44) ->
(CoreCompile target) ->
  D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Gtk2\ExportRendererAttribute.cs(6,22): error CS0101: The namespace '
Microsoft.Maui.Controls.Compatibility' already contains a definition for 'ExportRendererAttribute' [D:\Projects\MAUI\maui-lin
ux\src\Compatibility\Core\src\Compatibility-net6.csproj]
  D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Gtk2\Forms.cs(11,22): error CS0101: The namespace 'Microsoft.Maui.Co
ntrols.Compatibility' already contains a definition for 'Forms' [D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Compa
tibility-net6.csproj]
  D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Gtk2\Controls\FlyoutPage.cs(17,28): error CS0246: The type or namesp
ace name 'Fixed' could not be found (are you missing a using directive or an assembly reference?) [D:\Projects\MAUI\maui-linu
x\src\Compatibility\Core\src\Compatibility-net6.csproj]
  D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Gtk2\Renderers\LayoutRenderer.cs(6,53): error CS0246: The type or na
mespace name 'Fixed' could not be found (are you missing a using directive or an assembly reference?) [D:\Projects\MAUI\maui-
linux\src\Compatibility\Core\src\Compatibility-net6.csproj]
  D:\Projects\MAUI\maui-linux\src\Compatibility\Core\src\Gtk2\GtkFormsContainer.cs(11,35): error CS0246: The type or namespac
e name 'Gtk' could not be found (are you missing a using directive or an assembly reference?) [D:\Projects\MAUI\maui-linux\sr
c\Compatibility\Core\src\Compatibility-net6.csproj]

Before going deeper to see what might be happening I would like to ask you @lytico if there are any tips or tricks to build the project.

@microhobby i never tried net6-sln, as it is not released until now on linux, and rider doesn't support it.
i work with Microsoft.Maui.sln. just try to open that.
and i never runned build.cmd (it's windows)

Without creating a new Issue, could someone create a Project list of some kind to help point us in the right direction on where we could help out? It's not too clear as to pending work items for us to help out on.

Like most of you, I'm used to seeing a backlog to help track progress & see where we can help out. Thank you & Happy New Year, all!

pha3z commented

I want very much to help out with making BlazorWebView for Linux happen if possible. I very much want to use MAUI but my interest is exclusive to its ability to make truly platform-agnostic GUIs using a webview. I can't be the only one out there who has this in his heart -- look at the enormous popularity of Electron despite its cumbersome weight.

I feel like I'm a fairly good programmer but I run a one-man shop, and so my knowledge is somewhat spotty (nobody sitting next to me to share additional insight). I have a project that NEEDS full cross platform webview support to be successful, so if there's any way I can contribute to the Linux BlazorWebView as a code monkey, I'm willing to try. I presently have a BlazorServer project that's been successful, but Xamarin is something I've always stayed away from. I don't believe in the principal concept of native-controls and native-looks, and therefore have tended to shy away from technologies like Xamarin. All I really understand is opengl, rendering, html, css, etc -- the raw surfaces and web stacks. I would very much like to help if there's anyway my coding fingers could be put to use.

@pha3z There has been not so much activity in recent months by @lytico and @jsuarezruiz and the project seems to be kind of abandoned -- nevertheless I continue trying to make sense of maui-linux. But it seems I badly need some guidance to get along.

I would gladly join the reign of code monkeys with you if there were some signs of project management. For the time being I hope we can make some progress without the absent main contributors using appropriate communication channels (e.g. https://matrix.to/#/#maui-linux:matrix.org )

@jsuarezruiz I think that you'd need to let other reviewers in

@jsuarezruiz I think that you'd need to let other reviewers in

I am open to anykind of help or contribution. If anyone want to join the reviewers group just let me know :)

I am open to anykind of help or contribution. If anyone want to join the reviewers group just let me know :)

A.t.m I won't be able to review anything but the most trivial PRs. Have you already asked some of your buddies from the Microsoft Xamarin/MAUI team to volunteer as reviewers? I think, if you are really open and want to advance this, you need to transfer the repository from your personal GitHub profile to a maui-linux community organization here on GitHub, so that basic team-building and real division of work would be possible. Currently maui-linux just seems to stagnate in the form of a personal experiment repo with occasional merges from others. I think that now is the time to lift this endeavor to the next level.

Slesa commented

What is current status on Linux? From previous posts I thought I could build on Linux / .NET core 6 via build.sh - but I can't. It seems everything maps to Android SDK. Are there any hidden branches in another repo?

I'd love to be involved in the implementation of .NET MAUI for Linux but I'm mostly a beginner. Is there any way I could help build this project? I'm really looking forward to collaborate with the community.

@jsuarezruiz I'd be happy to assist, where possible.
Do you have a target distro of Linux you prefer as the primary test base for reviews - i.e. Ubuntu 22.04, etc?