Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
139 stars 2 forks source link

Show helpful message to install Blender under Linux Proton when importing .blend file #2211

Open Elaquen7 opened 5 months ago

Elaquen7 commented 5 months ago

Is your feature request related to a problem? Please describe.

Related to #2188. When running under Linux Proton, importing .blend files is not possible unless Blender is installed to steamapps/compatdata/2519830/pfx/drive_c/Program Files/. This path is inside the WINE prefix for Resonite.

There is no error message about this other than Error importing file: BLEND: BLENDER magic bytes are missing, couldn't find GZIP header either in the log file, which doesn't really say what the issue is.

Describe the solution you'd like

When decoding error with .blend file occurs on file import and Linux is detected, show helpful message to user to please install Blender in the WINE prefix and potentially direct them to #2188.

Detecting Linux under WINE is a bit difficult as WINE pretends to be Windows. To combat this, check if a Z: drive is attached and see if there are specific folders at Z:\etc, Z:\sys, Z:\home. This would indicate a linux filesystem and Resonite running under WINE.

Describe alternatives you've considered

Just symlinking the Blender libraries from a linux install does not work. Resonite needs .dll-files and on Linux .so-files are used. As such, a Windows version is required.

Instead of Resonite checking for a file structure, it may also check if the winlogon process is present, check for Wine entries in the registry, or test system libraries for functionality. Whatever is easiest to the devs.

Additional Context

No response

Requesters

Elaq

coolymike commented 4 months ago

There is already a wine check in Resonite, used to disable the Desktop tab under Proton (it would crash otherwise). This check uses wines ntdll to get the Wine version. You can see this with Detected Wine version: in your log. That same system could be used, if blender is not detected, to display the warning.

Alternatively, a more generic, all OS "Blender not found" warning could be displayed (or logged) instead. That way, users would still have to go out of their way to troubleshoot (like the current error message), but the error message on Windows would be clear, and Linux users can get instructions from the Wiki, or Discord.

I'm not sure where Resonite currently searches for Blender, but I think it would be good if it also searched the Steam games folder for a (Windows) Blender install. Blender is redistributed on Steam, which would allow Linux users to install the Windows version of blender in a "known" path for Resonite, while still keeping their system Blender version without any modifications. This would also allow for updates without further user interaction, and would avoid messing with the wineprefix.

shiftyscales commented 4 months ago

In the linked issue, I posted the current list of tracked paths, @coolymike. It can be found here:

https://wiki.resonite.com/3D_Model_Import#Blender

I think it would be more useful to have a platform agnostic "Blender not found!" error rather than one specific to Proton.

coolymike commented 4 months ago

I posted the current list of tracked paths

Looking at those it looks like it only checks the Windows default Steam game installation path. It would be more effective to add ../Blender/ to that list, as it would catch Windows Blender installed through Steam on Linux.

shiftyscales commented 4 months ago

As mentioned on that wiki page, @coolymike:

If you have another common location that you know Blender installs to please open a GitHub Issue to suggest its addition.