JosefNemec / Playnite

Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games.
https://playnite.link
MIT License
9.31k stars 500 forks source link

Make Cross-Platform - macOS/Linux #59

Open articpersona opened 7 years ago

articpersona commented 7 years ago

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

JosefNemec commented 7 years ago

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

JosefNemec commented 7 years ago

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 commented 7 years ago

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

aaronfranke commented 7 years ago

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

esijg commented 7 years ago

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

ghost commented 6 years ago

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

jharmer95 commented 6 years ago

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

JosefNemec commented 6 years ago

.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 commented 5 years ago

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 commented 5 years ago

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

trymeouteh commented 5 years ago

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

L1cardo commented 5 years ago

Would like to have a Mac version

jarrard commented 5 years ago

+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 commented 5 years ago

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

JosefNemec commented 5 years ago

@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 commented 5 years ago

@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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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

slavikme commented 4 years ago

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.

JosefNemec commented 4 years ago

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.

slavikme commented 4 years ago

Thanks for the clarification.

boehs commented 4 years ago

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

JosefNemec commented 4 years ago

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.

BeastlyPixels commented 4 years ago

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?

JosefNemec commented 4 years ago

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

bverkron commented 4 years ago

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

shakeyourbunny commented 4 years ago

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.

djibux commented 4 years ago

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.

shakeyourbunny commented 4 years ago

Any news on this? :)

JosefNemec commented 4 years ago

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

trymeouteh commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

zaroth commented 3 years ago

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 commented 3 years ago

Totally forgot about this project, so thanks for the bump @zaroth! ~~Did anybody test recently playnite wine/proton compatibility? might be an interesting feature to add into my launcher then~~

Gave it a quick try in a random proton-6.3-5 compatdata/wineprefix: Using dotnet from Steamworks Shared is not enough (as usual) so a full dotnet462 installation is required.

This opens two general problems:

When starting the Playnite.DesktopApp.exe then, it gets stuck with a splash screen showing a joypad. (incomplete dotnet installation might be an issue here, that's why I mentioned above regression)

The playnite.log generated in the program dir is pretty short and the only ERROR is

28-07 17:12:32.454|ERROR|Computer:Failed to get display name.
System.ComponentModel.Win32Exception (0x80004005): Anfrage nicht unterstützt
   at Playnite.Common.Computer.GetMonitorFriendlyName(LUID adapterId, UInt32 targetId) in E:\Devel\Playnite-8\source\Playnite.Common\Computer.cs:line 325
   at Playnite.Common.Computer.<GetAllMonitorsFriendlyNames>d__18.MoveNext() in E:\Devel\Playnite-8\source\Playnite.Common\Computer.cs:line 360
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Playnite.Common.Computer.DeviceFriendlyName(Screen screen) in E:\Devel\Playnite-8\source\Playnite.Common\Computer.cs:line 374
JosefNemec commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

boehs commented 3 years ago

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 commented 3 years ago

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

t0mtee commented 3 years ago

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

kwilliams1987 commented 3 years ago

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

boehs commented 3 years ago

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

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

JosefNemec commented 3 years ago

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 commented 2 years ago

👀

ghost commented 2 years ago

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 commented 2 years ago

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.