Playnite: Make Cross-Platform - macOS/Linux

Created on 15 Jul 2017  路  33Comments  路  Source: JosefNemec/Playnite

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

complex_high enhancement

Most helpful comment

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

All 33 comments

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

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

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

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

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

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

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

.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.

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

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

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

Would like to have a Mac version

+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.

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

@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".

@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!

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.

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.

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).

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"? : )

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

Please, help me understand something.
If this is just a launcher, why it should be developed with .NET?
There are tons of other (and good) frameworks that have cross-platform support, like Electron, Haxe and more.

Please, help me understand something.
If this is just a launcher, why it should be developed with .NET?
There are tons of other (and good) frameworks that have cross-platform support, like Electron, Haxe and more.

Because I like working with .NET (and C#) and I don't like developing desktop apps using web technologies.

Thanks for the clarification.

It is really a killer, I love this launcher, but I need to find one that will work on both my linux and windows pc

I'm just going to leave this here to make sure I don't forget about it in case I decide to do Linux version in future.

Hello Josef, this is an outstanding project and I appreciate the effort you have put into this. Have you thought more on porting this to linux? Or maybe have a timeline?

Before somebody mentions that we should use this, new .NET Multi-platform App UI announced yesterday, here are my thoughts about it:

  • It's based on Xamarin.Forms, which is pretty bad on desktop (current version that is). Very limited compared to WPF and forcing you to use design patters suitable mainly for mobile platforms.
  • Linux will not be officially supported by Microsoft and will by maintained by the community, which makes it dead on arrival for Linux.
  • Looks like they are removing theming support.
  • It's in very early stage of development, so it will take years before it reaches level of maturity to be usable for us.

I see little mention of WINE. Has anyone tried running this via WINE?

I don't see much sense into this, because you have to run the games also in the same WINE context as PlayNite would be in.

Well @bverkron, it runs OK with Wine provided that you have mono installed (package mono-complete on Debian) and use Winetricks to install corefonts and .Net (I went for version 4.8 but 4.6.2 should be enough).
The app has some graphical glitches but it's very usable.
As a library manager Playnite is really awesome. I don't use it to launch games but use Lutris for that. It creates a different wine prefix for each game which it nice when you run multiple games that require different tweaks.
I would love a native version :)
Hope that helps.

Any news on this? :)

No news, don't expect Linux version any time soon.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AntoinevdHorst picture AntoinevdHorst  路  4Comments

ClearStrelok picture ClearStrelok  路  4Comments

Ripper935 picture Ripper935  路  6Comments

Ianuarius picture Ianuarius  路  4Comments

lapo-luchini picture lapo-luchini  路  4Comments