Open articpersona opened 7 years ago
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
.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.
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.
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).
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:
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.
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.
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.
Since i recently switched from Windows to Manjaro i would love to see an official way to run this on here.
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.
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
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.
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.
Avalonia is not mature enough for project like Playnite, I'm following it closely and it's currently not usable for Playnite.
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?
There's still plenty of performance, rendering, usability and stability issues. Even the API is still not frozen for 1.0 release.
i feel a playnite port of linux would be welcomed now more than ever due to the recent gaming on linux news
Oh lordy lord Playnite on Steam Deck would be amazing though. :3
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
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.
👀
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.
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.
For those that have Linux or Mac, and not Windows.