Neutronium
Neutronium copied to clipboard
Cross platform support?
Hi Neutronium guys,
are they any plans to go cross platform with .Net Core? Using your solution under Linux/Mac would be awesome.
If you do not currently plan to port to .Net Core, could you tell me what would be needed to do so? If it's not too complicated I could give it a try.
Regards, secana
Hello @secana ,
Thanks for your interest in the project.
Here is big picture:

Neutronium has been layered to be flexibe and not hardcoded for WPF. In that sense, both Neutronium.Core and Javascript framework integration are not depending on WPF.
So as I can imagine it right now, a support of .Net Core would mean:
- [x] 1. Migrate Neutronium.Core, Neutronium.Vue and Neutronium.Knockout to .Net Standard, so that they can be used by both .Net.Core and .Net WPF applications.
- [ ] 2. Create a window or a control in .Net Core using Neutronium.Core: in fact kind of "translate" Neutronium.WPF to its .Net.Core equivalent. It should not be a great of work once the tecnology is choosen. Maybe avalonia, is a good choice: https://github.com/AvaloniaUI/Avalonia
- [ ] 3. Create a binding to a .Net.Core WebBrowser. Basically Neutronium.Core uses an abstraction of WebBrowser that that it can work with CefGlue, ChromiumFx and Awesomium. So in this step these abstractions should be implemented for the choosen browser.
Main difficulty in step 3: find a .NET Core WebBrowser. Possible candidates:
- CefGlue seems to have plans to migrate to .Net.Core (see here)
- CefGlue.Core
- kneadium
- Chromely
- Making a port of ChromiumFx to .NetCore.
ChromiumFx has the importanta advantage to implement remonting API, allowing communication between Chromium processes. If any other implementation of CEF is choosen, it will be up to the Neutronium adapter to implement this feature,
Please tell me what you think.
Hi @David-Desmaisons,
thx for the fast and detailed answer. I'm away for the next days but a soon as I'm back I'll start to have a look at porting the different projects to .Net Core as a start. Without having looked at the code so far, I guess porting should be too much work. I'll keep you in the loop with my work.
@secana , Do you mean
step 1: Migrate Neutronium.Core, Neutronium.Vue and Neutronium.Knockout to .Net Standard
? This should be prety straigth forward. This may have some impact on the build/packagining to nuget, thta should be analysed but nothing too complex.
Disclaimer: I am the creator of Chromely.
This is one problem Chromely solves. It uses native GUI APIs to host CefGlue and CefSharp. With CefGlue, it is cross-platform and supports both .NET and .NET Core.
Porting this to .Net Core would be very very cool indeed. What's your status secana? :)
First step migration of Neutronium core libraries to .NET Standard has been finalized
Can't wait for this. It's the last thing I'm waiting for to completely recode my application with Neutronium.
Hi, I have started working on item 2 for GTK+, which should provide the scaffolds to support other UI frameworks. I am starting with GTK+ because it's the one we need, but Avalonia could be a great option too.
I am approaching the issue creating a new shared project Neutronium.UI.Shared that contains base classes and shared code between all frameworks. So it will end up like:
- Neutronium.UI.Shared
- Neutronium.WPF
- Neutronium.Gtk
- Neutronium.Forms
Regarding the Step 3, I would to confirm that ideally Neutronium.WebBrowserEngine.ChromiumFx.WPF should be split in Neutronium.WebBrowserEngine.ChromiumFx.Shared and than:
- Neutronium.WebBrowserEngine.ChromiumFx.WPF
- Neutronium.WebBrowserEngine.ChromiumFx.Gtk
- Neutronium.WebBrowserEngine.ChromiumFx.macOS
- Neutronium.WebBrowserEngine.ChromiumFx.Android
Am I in the correct path ?
Hi @ylatuya , good news.
Regarding the first point, you should not need a Neutronium.UI.Shared as the UI abstractions are defined in the Neutronium.Core.WebBrowserEngine. See IWebBrowserWindow and IWebBrowserWindowProvider for example. Neutronium.Gtk would provide the implementation of this abstraction + some utility to create window, set-up application.....
Regarding the second point, I don't think that there is a binding between chromiumFx and Gtk.... If I am wrong, then it will be the way to go, to create a Neutronium.WebBrowserEngine.ChromiumFx.Shared containing all the UI independent code (implemented on .NetStandard) and then Neutronium.WebBrowserEngine.ChromiumFx.WPF, Neutronium.WebBrowserEngine.ChromiumFx.Gtk for the UI dependant part. I think that idealy Neutronium.WebBrowserEngine.ChromiumFx.Gtk should be cross platform and support macOS.
Please tell me if this is clear enougth.
Hi, Thanks for your feedback, I think I now have a clear picture on how to proceed.
I found there are several pieces in the WPF implementation that could be reused between frameworks implementations, and it would simplify the creation of new backends, providing the foundations for the rest of them :)
Off-topic, I played yesterday with the WPF version and love it!!! My final goal is to support Xamarin.Forms, which I believe would give your project a great boost in users and contributors.
@mattkol Do you have any intend to support ChromiumFx as well? Remoting feature is critical for Neutronium.
@ylatuya Please let me know of your advance. If you have a fork I can take a look and give you some guidance. Regarding Neutronium.WindowsForm that would be doable without a huge amount of effort and could be used for ChromiumFx as it exposes a WindowsForm usercontrol.
@David-Desmaisons my end focus really for Chromely was for a true cross platform which CefGlue satisfies. CefSharp was not an option for that because it requires the Microsoft VC++ Runtime. I added CefSharp option because it is most active project, and wanted to allow for alternative.
So not really, but in any way I can help, I will be glad to.
@mattkol thanks for your quick answer, I was thinking that Neutronium on top of Chromely could a real good solution. Thinking ou loud, one possibility would be to port ChromiumFx remonting on top of CefGlue for .Net.Core. It could a reasanable project in the mid term. Will think about it.
If Neutronium ever become cross-platform, let me know so I can add it to:
- https://XPDA.net (Cross-Platform Destop Apps)
Any news on this?
@JohnLouderback Still on my radar, I am analysing the available solution currently available. A possibilty I am currently considering would be a port of ChromiumFx to .Net Core. I will post update here.
killer app once cross app will be supported!
On mi side I am no longer working on the port to other platforms. We are using neutronium.but for a WPF app only. I moved to other projects, so I won't time for porting it, sorry
@David-Desmaisons hi, any news on this? chromiumfx has some memory leak issues and is not active anymore so there should be a new maintained chromium api (cefglue or chromely), any feedback would be nice!
Chromely
Hi. Are you one of Chromely dev? Explain me please (in simple worlds) that your project has cross-platform support or not? I m looking for some Chromium "substitution" to realize very hard retro-thing: "Chrome Lite" UWP for old sweet Windows 10 Mobile os (ARM32). Lumia 950's browser EDGE is fully old obsolete... and I have no skills/experience on chroumium re-compilng with very special tools :( Best, m.e.
On mi side I am no longer working on the port to other platforms. We are using neutronium.but for a WPF app only. I moved to other projects, so I won't time for porting it, sorry
...and where is your Neutronium.UI.Shared repo/ last commit?... I explored your github page... and not found any similar repo..