sonic2kk / steamtinkerlaunch

Linux wrapper tool for use with the Steam client for custom launch options and 3rd party programs
GNU General Public License v3.0
2.05k stars 70 forks source link

[Question] STL and MO2 and Menu GUI from Steam / Game #1014

Closed suamor closed 6 months ago

suamor commented 6 months ago

I have set up successfully STL and MO2 and was able to get my old Skyrim SE to run with it. Now there are options how to proceed with Linux specific mods / features from here.

Since it seems STL has most of what I want, I thought I could change options for MO2. But how do I access these options?

I looked documentation and elsewhere but found no information about how change such configuration options when I use MO2. It looks like I have to deal with hard-coded set of options in global.conf.

I have tried to start STL from steam, but it didn't work as I expected. Reason is that Steam forces Updates. For Skyrim however I decide myself when I go to the next version since mods usually need a few months after an Update. Usually always start Skyrim (in this case SKSE) from MO2 which works fine.

Currently I following ways going forward

  1. Find the Menu GUI option for MO2 (I didn't see any in the help) to change configuration
  2. Add MO2 as non-steam game to Steam and start STL from here (not sure if it would work since I need to add MO2 start options ?)
  3. Start from command line and change configuration manually. Since 2. does not seems to be possible and I do not have a game ID (or use Skyrim ID 489830 ?), how would I be able to change the configuration?
  4. Add a MO2 configuration, but where should I add it (as for 3) I don't have an ID (489830?) for MO2.

Any ideas are welcome.

sonic2kk commented 6 months ago

I'm not sure what you're asking here. If you want to use MO2 you have to enable and start it per-game. Once installed you enable it for your game from the Game Menu. If you're unsure of how to do this, you use SteamTinkerLaunch as a compatibility tool for your game and it will start up.

If you want to use MO2 standalone, you use the command steamtinkerlaunch mo2 start.

For compatibility, make sure your game Proton Version on the Game Menu and the ModOrganizer 2 Proton version on the Global Menu are set to the same version.

I have tried to start STL from steam, but it didn't work as I expected. Reason is that Steam forces Updates.

I don't know what you mean, why would Steam updating itself break SteamTinkerLaunch? Are you trying to use SteamTinkerLaunch without using a game with it?

Also, in future, please don't ignore the issue template.

suamor commented 6 months ago

I use Steamtinkerlaunch from github (14.0.20240112-4).

There are options available but I can only change option when I run STL from Steam. I have not found any GameID associated to the mo2 installation. What I want to do is change wine / STL configuration related to the game I manage from mo2.

Because of that I have tried to run STL from Steam, but I found that I apparently need a separate prefix which does not make sense to me since I manage the game from mo2.

So how do I change the wine configuration with this kind of installation?

(The update topic is unrelated to STL, it's specific to the game I manage in mo2. Should I need to run mo2 from Steam using STL to open the configuration window, then I would not be able to do that).

sonic2kk commented 6 months ago

Sorry, I still really don't understand what you mean.

Here's how ModOrganizer 2 works:

  1. There is a global ModOrganizer 2 install created, at ~/.config/steamtinkerlaunch/mo2/compatdata/pfx. This is the ModOrganizer 2 Wine prefix, and this is where mods are installed to when you run steamtinkerlaunch mo2 start. Games are not started from here, this is only used for mod configuration.
  2. When you use ModOrganizer 2 with a game, ModOrganizer 2 is installed into the game prefix, but the modorganizer.ini per-game is updated to point to the global installation. Per-game, ModOrganizer 2 is installed into /path/to/game/pfx/drive_c/Modding/MO2.
  3. There is no ModOrganizer 2 Steam AppID / Game ID, because it is not installed to Steam. Only games on the Steam Store and games added to Steam as Non-Steam Games have an AppID.
  4. When you start a game from Steam, such as Skyrim Special Edition, you set SteamTinkerLaunch as the compatibility tool for that game like normal. Then, from the Wait Requester, you select "Main Menu" and from here, go to the Game Menu to configure your SteamTinkerLaunch settings for the game. You can also enable ModOrganizer 2 for this game from here, so that when you start the game, ModOrganizer 2 will start, and you launch your game from ModOrganizer 2.
  5. If you want to configure things with Winecfg for the ModOrganizer 2 prefix, you can use steamtinkerlaunch mo2 winecfg. Similarly, you can run Winetricks in the MO2 prefix with steamtinkerlaunch mo2 winetricks.

Because of that I have tried to run STL from Steam, but I found that I apparently need a separate prefix which does not make sense to me since I manage the game from mo2. So how do I change the wine configuration with this kind of installation?

I'm really sorry but I don't understand what you mean. You run SteamTinkerLaunch with each game from Steam, you do not run SteamTinkerLaunch standalone from Steam. As noted on the Readme and Wiki, SteamTinkerLaunch is used as a compatibility tool for Proton games, and as a launch option for native games.

suamor commented 6 months ago

Ok, then I understand what went wrong. I have tried to use winecfg (only), but it seems that GE-Proton8-27 has not included it (actually neither stable nor GE has included it). It looks like I need to use normal wine.

Update: As below, GE-Proton8-27 has included it, but it is not in the "bin" folder. Only proton-tkg has winecfg in the bin folder as well (without ".exe").

sonic2kk commented 6 months ago

Winecfg is included with system wine. You should install it into your system. No build of Wine other than vanilla Wine to my understanding includes this.

EDIT: My mistake, GE-Proton and Valve Proton do include Winecfg. I'm not sure what you're talking about.

By default, though, system Winecfg is preferred. Not that it should matter, but I verified that STL can use the Proton-included Winecfg executables, and when forced to use one or the other by editing the code, steamtinkerlaunch mo2 winecfg works fine.

Closing as this is a system issue, not a SteamTinkerLaunch issue.

suamor commented 6 months ago

This is interesting. I didn't know these files were hidden away into a deep-level folder. But anyway there was an error that "winecfg" was not found when I run STL. I don't know the cause of that issue.

$ ./steamtinkerlaunch --version

steamtinkerlaunch-v14.0.20240112-4 $ ./steamtinkerlaunch mo2 winecfg

wineserver: using server-side synchronization. wine: RLIMIT_NICE is <= 20, unable to use setpriority safely Application could not be started, or no application associated with the specified file. ShellExecuteEx failed: File not found.

Using current GE-Proton, but winecfg was not added to files/bin folder and STL is not looking inside the lib folder if it does not find a different winecfg.

Also note that all these executables have ".exe" added.

sonic2kk commented 6 months ago

What does which winetricks return from your system, out of interest?

It would also be useful if you could provide a log for trying to run steamtinkerlaunch mo2 winecfg.

Using current GE-Proton, but winecfg was not added to files/bin folder and STL is not looking inside the lib folder if it does not find a different winecfg.

It uses the find command for this, and there are various symlinks for these EXEs, but in testing they have worked (this same logic is used for Vortex winecfg and One-Time Run Winecfg).

SteamTinkerLaunch will use the systemwide Winecfg if available, and if not found, will search for and use the Winecfg found for the current Proton version.

https://github.com/sonic2kk/steamtinkerlaunch/blob/19677d5c6dd0a6e85207330bce23388224d74313/steamtinkerlaunch#L11853-L11873

sonic2kk commented 6 months ago

Did a bit of investigating, could reproduce the issue with some strange edge-cases.

It seems like if Winecfg is not on the system and for some reason RUNPROTON is undefined, no Winecfg executable can be found. I'm not sure in what cases RUNPROTON would be blank, but in such a case I'll push a commit that uses USEMO2PROTON's path.

sonic2kk commented 6 months ago

Tentative fix was pushed in 0633d11. Please re-test when you can :slightly_smiling_face:

sonic2kk commented 6 months ago

Same issue can occur with Vortex, created a generic function to perform this with some extra checks and will push another commit that uses it. Functionality should remain intact, using system winecfg, and falling back to USEMO2PROTON or USEVORTEXPROTON if we can't find a Winecfg for USEPROTON (which should be set in most cases, but in cases where it isn't, this should fix the problem in the same way as 0633d11).

sonic2kk commented 6 months ago

The latest version of SteamTinkerLaunch is now v14.0.20240116-2, but the previous version v14.0.20240116-1 and onward should also fix the issue. -2 was just a change to apply the fix in a re-usable function.

suamor commented 6 months ago

What does which winetricks return from your system, out of interest?

It would also be useful if you could provide a log for trying to run steamtinkerlaunch mo2 winecfg.

Using current GE-Proton, but winecfg was not added to files/bin folder and STL is not looking inside the lib folder if it does not find a different winecfg.

It uses the find command for this, and there are various symlinks for these EXEs, but in testing they have worked (this same logic is used for Vortex winecfg and One-Time Run Winecfg).

SteamTinkerLaunch will use the systemwide Winecfg if available, and if not found, will search for and use the Winecfg found for the current Proton version.

https://github.com/sonic2kk/steamtinkerlaunch/blob/19677d5c6dd0a6e85207330bce23388224d74313/steamtinkerlaunch#L11853-L11873

winetricks is in /usr/bin/winetricks. But running protontricks I found that it uses winetricks from proton folder, not from system folder. Seems like this could be a problem since I need the latest winetricks. I probably need to replace it manually :-(

The log from $ ./steamtinkerlaunch mo2 winecfg (not original folder names):

` Mon Jan 15 07:50:26 CET 2024 INFO - initAID - Set AID to PLACEHOLDERAID '31337'

Mon Jan 15 07:50:26 CET 2024 INFO - loadLangFile - Language from command line is 'english'

Mon Jan 15 07:50:26 CET 2024 INFO - loadLangFile - SYSTEMSTLCFGDIR is '/usr/share/steamtinkerlaunch'

Mon Jan 15 07:50:26 CET 2024 INFO - loadLangFile - Command line language 'english' is no file - trying to find its absolute path

Mon Jan 15 07:50:26 CET 2024 INFO - getCurrentCommandline - No Proton in command line arguments 'mo2 winecfg' Mon Jan 15 07:50:26 CET 2024 INFO - saveOrgVars - Storing some original variables to restore them later Mon Jan 15 07:50:27 CET 2024 INFO - emptyVars - Emptied some original variables as they slowdown several system calls when started from steam Mon Jan 15 07:50:27 CET 2024 INFO - emptyVars - Set $PATH to '/home/USER/.local/bin:/home/USER/bin:/home/USER/.local/share/umake/bin:/home/USER/.local/bin:/home/USER/bin:/home/USER/.local/share/umake/bin:/home/USER/.local/bin:/home/USER/bin:/home/USER/.local/share/umake/bin:/home/USER/.local/bin:/home/USER/bin:/home/USER/.local/share/umake/bin:/home/USER/.local/bin:/home/USER/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:' Mon Jan 15 07:50:27 CET 2024 START - ######### Initializing Game Launch 31337 using SteamTinkerLaunch v14.0.20240112-4 ######### Mon Jan 15 07:50:27 CET 2024 INFO - main - Starting with a clean log Mon Jan 15 07:50:27 CET 2024 INFO - main - Start creating default configs Mon Jan 15 07:50:27 CET 2024 INFO - createDefaultCfgs - START Mon Jan 15 07:50:27 CET 2024 INFO - loadLanguage - First load the default language 'english' to make sure all variables are filled Mon Jan 15 07:50:27 CET 2024 INFO - loadLangFile - Language from command line is 'english' Mon Jan 15 07:50:27 CET 2024 INFO - loadLangFile - GLOBALSTLLANGDIR is '/home/USER/stl/prefix/lang' Mon Jan 15 07:50:27 CET 2024 INFO - loadLangFile - Command line language 'english' is no file - trying to find its absolute path Mon Jan 15 07:50:27 CET 2024 INFO - loadLangFile - Loading language file from script directory '/home/USER/stl/prefix/lang/english.txt' Mon Jan 15 07:50:27 CET 2024 INFO - loadLanguage - Loading STLLANG from '/home/USER/.config/steamtinkerlaunch/global.conf' Mon Jan 15 07:50:27 CET 2024 INFO - loadLanguage - STLLANG from '/home/USER/.config/steamtinkerlaunch/global.conf' is 'english' Mon Jan 15 07:50:27 CET 2024 INFO - createDefaultCfgs - setSteamPaths: Mon Jan 15 07:50:27 CET 2024 INFO - setSteamPaths - Reading Steam Path variables from '/dev/shm/steamtinkerlaunch/steampaths.txt' Mon Jan 15 07:50:27 CET 2024 INFO - getGameOS - Starting game OS detection Mon Jan 15 07:50:27 CET 2024 INFO - getGameOS - STEAM_COMPAT_DATA_PATH is not defined, so this is either a Linux Game or no game was started at all Mon Jan 15 07:50:28 CET 2024 INFO - listAllSettingsEntries - '/dev/shm/steamtinkerlaunch/setentries.txt' already exists - nothing to do Mon Jan 15 07:50:28 CET 2024 INFO - createDefaultCfgs - STOP Mon Jan 15 07:50:28 CET 2024 SKIP - listSteamLibraries - not recreating already available '/dev/shm/steamtinkerlaunch/SteamLibraries.txt' Mon Jan 15 07:50:28 CET 2024 INFO - setSteamLibraryPaths - STEAM_COMPAT_LIBRARY_PATHS set to '/external/SteamLibrary/steamapps:/home/USER/.local/share/Steam/steamapps:/media/suamor/Windows/SteamLibrary/steamapps' Mon Jan 15 07:50:28 CET 2024 INFO - setSteamLibraryPaths - STEAM_COMPAT_MOUNTS set to '/external/SteamLibrary/steamapps/common/Steamworks Shared:/home/USER/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier:/home/USER/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper:/home/USER/.local/share/Steam/steamapps/common/Steamworks Shared:/media/suamor/Windows/SteamLibrary/steamapps/common/Steamworks Shared' Mon Jan 15 07:50:28 CET 2024 INFO - setSteamLibraryPaths - STEAM_COMPAT_TOOL_PATHS set to '/external/SteamLibrary/steamapps/common/Steamworks Shared:/home/USER/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier:/home/USER/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper:/home/USER/.local/share/Steam/steamapps/common/Steamworks Shared:/media/suamor/Windows/SteamLibrary/steamapps/common/Steamworks Shared' Mon Jan 15 07:50:28 CET 2024 INFO - main - Checking internal dependencies: Mon Jan 15 07:50:28 CET 2024 INFO - setAwkBin - Found 'gawk' as an 'awk' variant. It should work without any issues, because 'gawk' was tested completely Mon Jan 15 07:50:28 CET 2024 INFO - checkIntDeps - Result of version check for yad binary '/usr/bin/yad' is '13.0' Mon Jan 15 07:50:28 CET 2024 INFO - checkIntDeps - Yad is set correctly in the Global Config, nothing to do. Mon Jan 15 07:50:28 CET 2024 INFO - main - Initializing first Proton: Mon Jan 15 07:50:28 CET 2024 INFO - initOldProtonArr - Creating an initial array with available Proton versions using the file '/dev/shm/steamtinkerlaunch/ProtonCSV.txt' which was created during a previous run Mon Jan 15 07:50:28 CET 2024 INFO - initFirstProton - Initializing Proton Mon Jan 15 07:50:28 CET 2024 INFO - initFirstProton - Initial Proton version 'FIRSTUSEPROTON' from '/home/USER/.config/steamtinkerlaunch/default_template.conf' is 'proton-8.0-4c' Mon Jan 15 07:50:28 CET 2024 INFO - main - Initializing default window resolution Mon Jan 15 07:50:28 CET 2024 INFO - setInitWinXY - Using '1440x810' from config '/dev/shm/steamtinkerlaunch/defres.txt' Mon Jan 15 07:50:28 CET 2024 INFO - main - Welcome to SteamTinkerLaunch Mon Jan 15 07:50:28 CET 2024 INFO - removeEmptyFiles - Removing empty files from '/home/USER/.config/steamtinkerlaunch/games/appinfo' Mon Jan 15 07:50:28 CET 2024 INFO - removeEmptyFiles - Removing empty files from '/home/USER/.config/steamtinkerlaunch/games/header' Mon Jan 15 07:50:28 CET 2024 INFO - main - Checking command line: incoming arguments 'mo2 winecfg' Mon Jan 15 07:50:28 CET 2024 INFO - setMO2Vars - No game wineprefix found in env, so using a global instance of 'mo2' Mon Jan 15 07:50:28 CET 2024 INFO - setMO2Vars - The mo2 helper-file is set to '/home/USER/stl/prefix/misc/mo2games.txt' Mon Jan 15 07:50:28 CET 2024 INFO - setMO2Vars - Preparing Proton variables for a global mo2 instance Mon Jan 15 07:50:28 CET 2024 INFO - setMO2Vars - Using GE-Proton8-27 for ModOrganizer Mon Jan 15 07:50:29 CET 2024 INFO - setModWine - DNPROTON is '/home/USER/.local/share/Steam/compatibilitytools.d/GE-Proton8-27/proton' Mon Jan 15 07:50:29 CET 2024 INFO - setModWine - DNPROTON is a file -- it is '/home/USER/.local/share/Steam/compatibilitytools.d/GE-Proton8-27/proton' Mon Jan 15 07:50:29 CET 2024 INFO - getWinecfgExecutable - Trying to use Winetricks with game Proton version Mon Jan 15 07:50:29 CET 2024 WARN - getWinecfgExecutable - RUNPROTON is empty - '' - Maybe this is not a Proton game? Mon Jan 15 07:50:29 CET 2024 INFO - mo2Winecfg - Running Winecfg for MO2 Mon Jan 15 07:50:29 CET 2024 INFO - mo2Winecfg - WINEDEBUG="-all" WINEPREFIX="/home/USER/.config/steamtinkerlaunch/mo2/compatdata/pfx" "/home/USER/.local/share/Steam/compatibilitytools.d/GE-Proton8-27/files/bin/wine" "" `

I wonder why so many paths are duplicated.. (my $PATH does not have the duplicates).

suamor commented 6 months ago

winecfg works with the latest commits.

sonic2kk commented 6 months ago

Closing since the issue is fixed. Thanks!