Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Cross-Platform - macOS/Linux #59

Open
articpersona opened this issue Jul 15, 2017 · 60 comments
Open

Make Cross-Platform - macOS/Linux #59

articpersona opened this issue Jul 15, 2017 · 60 comments

Comments

@articpersona
Copy link

For those that have Linux or Mac, and not Windows.

@JosefNemec
Copy link
Owner

Not planned in near future, see #38 for more details.

@JosefNemec
Copy link
Owner

I will leave this open for other people to see. Also it's not definite NO, it's just not possible at the moment.

@JosefNemec JosefNemec reopened this Jul 15, 2017
@JosefNemec
Copy link
Owner

JosefNemec commented Aug 30, 2017

Note to myself: check out NoesisGUI for possible multi-platform interface.
Also checktou Xamarin.Forms 3.0 when it's released.

@aaronfranke
Copy link

+1 Linux/Mac cross-platform. I recommend using Mono instead of .NET.

@esijg
Copy link

esijg commented Oct 15, 2017

Would love to see a Linux version of this! <3

@ghost
Copy link

ghost commented Dec 19, 2017

Would also want a Linux version, hope it will be a thing someday.

@jharmer95
Copy link
Contributor

Might want to look into .NET Core 3.0 (will come out sometime early next year), it supports WPF
image

@JosefNemec
Copy link
Owner

.Net Core 3.0 will not make WPF multiplatform, it only means that you will be able to implement WPF applications using Core instead of Framework. But those applications will only run on Windows.

@JosefNemec
Copy link
Owner

Possible good news for Playnite cross platform. Microsoft just open sourced WPF, so there is a hope if somebody ports it to other platforms :)

@murlakatamenka
Copy link

@JosefNemec came here to share this news but clearly I'm late. Glad to see you're aware of it.

@trymeouteh
Copy link

This would be great. I want to make my old gaming pc a linux gaming rig and playnite is great!

@L1cardo
Copy link
Contributor

L1cardo commented Feb 2, 2019

Would like to have a Mac version

@jarrard
Copy link

jarrard commented Feb 10, 2019

+1 For Linux,
having a alternative to Lutris would be nice, however I know it will be a challenge because people will expect you to integrate wine container support, and possible custom wine build downloads like Lutris. Would be welcome non the less.

@TBK
Copy link

TBK commented May 19, 2019

nix support should be "relatively easy" with .NET Core 3.0 - https://github.com/dotnet/wpf#status

@JosefNemec
Copy link
Owner

JosefNemec commented May 20, 2019

@TBK *nix support is literally impossible right now. WPF being open source doesn't mean that it runs on Linux, it's still Windows only and based on Windows only technologies (DirectX). Somebody would need to port it first, which is definitely not "relatively easy".

@DanielGilbert
Copy link

@JosefNemec Highly appreciate your effort in supporting Linux. You might want to take a look at https://github.com/AvaloniaUI/Avalonia for a cross-platform, WPF-like UI. Although it's Beta, it's a pretty advanced and stable Beta. Just as an idea.

Might not solve the CefSharp issue, though.

Keep up the great work!

@Ruedii
Copy link

Ruedii commented Jul 3, 2019

I can chart a few steps to making cross platform.

I browsed over the code and specific WPF code is limited as is other Windows specific code, but it is scattered through the codebase.

I am not sure if YAML is used embedded in HTML. If so that might be difficult to work around. Moving to pure HTML5/CSS would be the only option for working around this, but this opens the door for other features, such as remote browsing of your library from any web browser.

As of other parts they should be able to be isolated. Only a handful of windows-specific functions are anywhere that isn't already platform specific. Most of those could be isolated to small subsection written specifically for each platform.

Process tracking needs to be done per-platform.
Registry functions would need to be replaced with non-windows alternatives.
Most game launching plugins would each have substantial per-platform segments.

@aaronfranke
Copy link

aaronfranke commented Jul 27, 2019

Microsoft has announced that .NET Framework is being discontinued, and that after .NET Core 3.1 there will be one .NET called .NET 5: https://devblogs.microsoft.com/dotnet/introducing-net-5/

So, moving to Mono or .NET Core would not only help make Playnite cross-platform, but it would also prevent Playnite from being left behind using an outdated and unsupported framework.

Microsoft is also trying to make Mono and .NET Core function as drop-in replacements for each other, and Mono is designed to re-implement .NET Framework, so it should be fairly easy to convert Playnite to Mono and then optionally to .NET Core once you figure out the WPF problem.

@JosefNemec
Copy link
Owner

JosefNemec commented Jul 28, 2019

This is what has to happen for me to consider doing Linux/macOS. And this is for me personally for the official Playnite releases that I develop a provide some support for.

  1. There's a big enough demand for it in the first place.

I don't want to end up maintaining these versions for just handful of people. Mainly because there is quire similar alternative for Linux called Lutris, which seems to be quite popular.

  1. WPF is ported to Linux/mac or Avalonia reaches mature state with functionality on par with WPF.

At this point reworking UI to something completely different is not an option for me. I like working with XAML based UIs and completely reworking UI stack is not something I want to do (especially since there are no good alternatives with proper .NET support).

  1. CefSharp is ported to Linux/macOS or some good alternative is found.

CefSharp is quite critical part of Playnite for 3rd party integrations and we would not be able to port them over without it. As an alternative we would have to find some usable alternative, which I'm not currently aware of (CefGlue probably being the only one, but it's not as good as CefSharp from what I saw in past).

@sferra
Copy link

sferra commented Jul 28, 2019

That sounds reasonable. 2) and 3) seem to be external factors which you don't/won't influence directly.
But how do we make 1) measurable and how would you define "big enough"? : )

@JosefNemec
Copy link
Owner

JosefNemec commented Aug 2, 2019

I don't know how big is big enough. I will evaluate that properly once 2) and 3) are sorted out :)

@JosefNemec JosefNemec changed the title Make Cross-Platform Make Cross-Platform - macOS/Linux Nov 1, 2019
@trymeouteh
Copy link

trymeouteh commented Jan 19, 2021

It would be cool if someone could rewrite Playnite into a cross platform code base that is open source like Qt or something. I don't expect JosefNemec to start over again but if there is anyone who is good at rewriting apps into new code bases that could rewrite Playnite and if JosefNemec will be willing to abandon the current code base and continue develop of Playnite in the new code base from there on then then Linux and Mac support will become a reality.

@Vundult
Copy link

Vundult commented Feb 19, 2021

Playnite is the only thing I truly miss from windows. Really do hope it gets ported someday. I loved using it to manage all my games, and it's so much better than Lutris. Lutris UI is ugly, and hardly stands up against playnite, but it's the only real option right now. Closest thing I've found is Gamehub for Linux, but that's still lacking tools needed to run games via WINE.

@Bluscream
Copy link

Since i recently switched from Windows to Manjaro i would love to see an official way to run this on here.

@zaroth
Copy link

zaroth commented Jul 28, 2021

With Valve announcement to release Steam Deck, Linux gaming should see a surge in compatibility (as Valve already announced) and popularity. Just found this project (Playnite) today, it seems cool and I'd love to try this out, but Windows-only is a non-starter for me, sadly. Leaving this comment here to be notified of potential developments, though.

@frostworx

This comment has been minimized.

@JosefNemec
Copy link
Owner

JosefNemec commented Jul 28, 2021

Please do not report any issues related to Playnite running on unsupported platforms. And please use forums/reddit if you want to discuss unofficial ways of running Playnite on Linux. Keep this issue only for talk about official support.

As far as official support, I'm not looking into it right now and running via Wine/Proton will have ton of issues since we need access to native system to properly support all features and integrations with other Linux apps. I'm only considering doing native version, I will personally not work on any emulated version.

Edit: Before anybody mentions it, there of course is a way how to access native system from Wine runtime (via custom bridge library), but that itself has its own issues.

@shakeyourbunny
Copy link

I'd second a native linux port, Playnite.

Avalonia ( https://github.com/AvaloniaUI/Avalonia ) has matured in the meantime quite a bit.

Perhaps you would setup an extra Patreon goal or do collect some funding for a port to Linux? You could count me in on funding this, but it would also need some sort of announcement. Informing news sites to want to make a port with funding would help. Linux people do want to fund projects if the goal is reasonably, so publishing this to GamingOnLinux, Phoronix, some other more gaming oriented news sites would help. In addition this also would raise the awareness of the project in general.

@JosefNemec
Copy link
Owner

Avalonia is not mature enough for project like Playnite, I'm following it closely and it's currently not usable for Playnite.

@boehs
Copy link

boehs commented Aug 5, 2021

Avalonia is not mature enough for project like Playnite, I'm following it closely and it's currently not usable for Playnite.

What work needs to be done?

@JosefNemec
Copy link
Owner

There's still plenty of performance, rendering, usability and stability issues. Even the API is still not frozen for 1.0 release.

@t0mtee
Copy link

t0mtee commented Sep 28, 2021

i feel a playnite port of linux would be welcomed now more than ever due to the recent gaming on linux news

@kwilliams1987
Copy link

Oh lordy lord Playnite on Steam Deck would be amazing though. :3

@boehs
Copy link

boehs commented Oct 25, 2021

Yall gonna roast me at the stake for this one but...... is webview the solution?

  • Tauri
  • Electron

I know you already said you like .NET and whatever but I could probably port the UI over

@JosefNemec
Copy link
Owner

We are not using any web view based solution. One of the requirements for Playnite is low footprint and high performance and both of those are not compatible with web views. Also as I said, I don't like working with current web frontend tech.

@qd7z

This comment has been minimized.

@ghost
Copy link

ghost commented Dec 7, 2021

Given that Steam Deck is a thing, would you rewrite the entire thing in Avalonia? Avalonia is much more mature now. There's UNO platform too.

@kwilliams1987
Copy link

Given that Steam Deck is a thing, would you rewrite the entire thing in Avalonia? Avalonia is much more mature now. There's UNO platform too.

Would make far more sense to convert from .NET Framework to .NET 6.0/MAUI for UX if he ever decided to port it.

No need to port the entire system and would make Windows/macOS/Linux support much simpler.

The biggest hurdle for cross compatibility probably isn't even porting the UI, it will be rewriting all the interop code with the various third-party launchers for the other platforms.

@JosefNemec
Copy link
Owner

The biggest hurdle IS porting the UI. Read my previous messages on the topic. Btw MAUI is a no go, read my reasoning in previous messages.

@woj-tek
Copy link

woj-tek commented Dec 7, 2021

Btw MAUI is a no go, read my reasoning in previous messages.

If anyone is wondering and doesn't want to read whole topic (and searching for "MAUI" doesn't point to the message because it's not mentioned there explicitly) it's this message: #59 (comment)

@ThisNekoGuy
Copy link

Not planned in near future, see #38 for more details.

@JosefNemec
Why couldn't UNO Platform be used? It's meant for keeping compatibility for the Windows API and make applications cross-platform.
Stuff like the native Windows calculator has been ported to Linux using it before.

@JosefNemec
Copy link
Owner

From some research I did like a year ago, Avalonia looked like only realistic candidate. I don't remember what I didn't like about UNO, I think they primarily "just" wrap native platforms controls, which is no good for app like Playnite with high level of customizability and theming. Also performance was no that great from what I remember.

But I will look into it again when times comes (if it comes) to start working on Linux port.

@arghanath007
Copy link

Still only for windows?

@Fancy2209
Copy link

Yes still only windows
The time has not come yet

@shakeyourbunny
Copy link

Any news on this?

A port to Steam Deck / Linux would be the killer...

@JosefNemec
Copy link
Owner

JosefNemec commented Mar 30, 2022

Current plan is to port non-UI code to .NET 6/7 this year and swap UI stack for something different after that (most likely Avalonia, which has Linux support), then we'll see.

If you want to discuss different projects (like mentioned MiniGalaxy), please use different place. From my point of view there's nothing more to discuss until ports I mentioned are finished.

2024 Update: Port to .NET 8 and Avalonia is being done together in Playnite 11.

@dillfrescott
Copy link

I know its not a definitive yes, but it would be hugely awesome to be able to enjoy Playnite on Linux! By the way thank you for this program!

@DocMAX
Copy link

DocMAX commented Aug 15, 2022

Linux version please, thanks.

Repository owner locked and limited conversation to collaborators Aug 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests