Closed Mumrik93 closed 1 year ago
I think the ideal situation is Linux support, but the far easier and still perfectly fine solution is to simply support WINE. Targeting WINE as opposed to simply targeting Windows theoretically would help with any future platform switches as WINE is far more likely to be ported than the Windows-specific APIs themselves. IE, if we target .Net 6 we need .Net 6. If we target WINE's implementation of .Net/Mono, we only need the user to have a relatively recent WINE version.
Of course, targeting WINE introduces a new plethora of issues. To make an off-hand list;
I think the best plan is still to just make Vortex's codebase entirely platform agnostic, if possible. It's not entirely impossible that in the next decade or so that Linux gains a significant market share.
you can always target proton instead but that makes you rely on Valve.. You can also not support all releases and target specific versions.
You could consider bundling a specific version of Wine with Flatpak/Snap , that way it's not a "moving target" anymore, something like Winepak applications, this would also make it compatible with every linux distro, including the Steam Deck
Correct me, if I am wrong, but wouldn't it be possible to upload Vortex to Steam, target a specific Proton version and have Steam download that one by default?
Since even small Indie developers get their games on Steam, getting Vortex on there shouldn't be impossible, right?
This way the first two concerns would be solved:
It would also help to get Nexus Mods faster on all those shiny new Steamdecks, before someone else fills that gap.
I have made a Lutris installer for Vortex latest (1.5.13) which automatically detects over 45 games with the relevant extensions installed (and likely more games that I don't personally own). It should be able to find games installed in ANY STEAM LIBRARY FOLDER.
Lutris Installer is listed at the bottom of this comment!
I uploaded this installer to the Lutris page for Vortex mod manager, however they are still awaiting moderation.
This may be the best form of Steam Deck support for Vortex available now, as I don't recommend the outdated installers hosted on the Lutris website or the other repo.
I do not have a Steam Deck and Steam OS 3 is still not officially available as a standalone distro. I test this installer on a system following Valve's recommended Dev-Kit-less development environment recommendations. https://partner.steamgames.com/doc/steamdeck/testing
All feedback about the installer, or configuring Vortex for WINE, or desktop integration improvements, really anything is welcome and appreciated, be it on Valve's first-party hardware or a personal system on a distro Lutris is already packaged for.
There are now 45+ games automatically detected! Vortex Extensions contributed by other community members must be downloaded and installed in-app or manually. Contributed Extensions are also indicated in the lists below.
This Lutris installer IS flatpak/Steam Deck COMPATIBLE!
This Lutris installer is compatible ONLY with Lutris NATIVE! NOT flatpak Lutris!
**LUTRIS NATIVE USERS** This installer is for you! A link to the testing version of this installer can be found here: `lutris:vortex-mod-manager?revision=90249` If the installer gets published on the Lutris website, this comment will be updated again! Below is the actual file being developed. ```yml name: 'Vortex Mod Manager' game_slug: 'vortex-mod-manager' year: 2016 version: 'wine' slug: 'vortex-mod-manager-wine' runner: 'wine' description: 'A Wine prefix installer for Vortex mod manager! Includes full Steam Library detection across any mount points. Steam Deck compatible!' notes: 'Games installed in any detected steam library will be linked. Games not supported by any Vortex Extension will still be linked. Doesn''t include support for Lutris'' WINE Steam, only native. Includes a manual script which adds any games to the Vortex prefix WITHOUT REINSTALLING. This installer requires the following: Vortex https://www.nexusmods.com/about/vortex/ Steam https://store.steampowered.com/about/ bash https://www.gnu.org/software/bash/ sed https://www.gnu.org/software/sed/ grep https://www.gnu.org/software/grep/ sqlite3 https://www.sqlite.org/ xdg-utils https://freedesktop.org/wiki/Software/xdg-utils/ coreutils https://www.gnu.org/software/coreutils/ findutils https://www.gnu.org/software/findutils/' credits: 'GitHub https://github.com/Nexus-Mods/Vortex/issues/10686' script: files: - setup: "https://github.com/Nexus-Mods/Vortex/releases/download/v1.5.13/vortex-setup-1.5.13.exe" game: exe: "drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe" args: "-d" install_complete_text: 'Vortex was installed successfully! RECOMMENDED: Use the "Execute script" context menu option to remove unnecessary files added by wine during setup. OPTIONAL: Close Vortex, then Move/Copy your %APPDATA%/Vortex folder from a previous install into the appropriate location. This will launch Vortex with your previous preferences including your nexus account, game extensions, themes, and storage locations. Only attempt this if Vortex launches and closes correctly during installation, you know the correct location, and you want to get adventurous with your file manager. QUESTIONS & ANSWERS: Q: Can I use the Lutris or Steam shortcuts provided by Lutris? A: Yes! Steam will track when Lutris closes. Launching using these methods also appears to track Vortex processes for playtime/up-time more accurately too. Q: How do I add new Steam games to Vortex? A: This installer includes three bash scripts. They can be triggered from within Lutris via the "Execute script" context menu option. vortex-prefix-updater.sh launches the next two scripts and writes their output to the install.log file. vortex-steam-symlinker.sh will update your games list. Newly added steam games will be linked to Vortex. vortex-entry-writer.sh will update your link handler and set it as the default for nxm: links. All scripts can be run outside of Lutris safely by launching them from your file manager or on the command line. Q: Can I move Vortex via its game directory configuration in Lutris? A: Yes, though you should use the updater script immediately after the move to fix the download handler. Q: Where are my files when browsing within Vortex? A: The "Z:" drive points to "/", the root of your filesystem. Q: Can I make changes to the Vortex Lutris configuration? A: DO NOT CHANGE "Prefix Command" or "Manual Script" in the advanced options of the Lutris configuration for Vortex. Gamemode has been tested and does work with Vortex, though is likely unnecessary. All other options are untested and may have no affect on Vortex due to the Prefix Command completely overriding normal command execution. Q: Can I use Symlink Deployment or Move Deployment? A: Only Hardlink Deployment has been tested. Some untested game extensions may automatically select other deployment strategies. See this issue comment for more information: https://github.com/Nexus-Mods/Vortex/issues/9629#issuecomment-1013658187 Q: Vortex is running but Lutris thinks it has stopped? A: Lutris detects the restart of a monitored process as Vortex stopping when a Vortex download link is handled while Vortex is already running. Q: How does the url get to Vortex? A: This installer creates a hidden launcher to handle nxm links for Lutris. Q: Why is the url so slow to open in Vortex? A: The hidden launcher has to open the Lutris sqlite game database twice and write the url to a file before even launching Lutris. Unless Lutris is enhanced to allow passing arguments directly to the executable from the command line instead of only from its configuration file, this will remain the fastest method which integrates with Lutris and Steam. The link handler may speed up when opening subsequent links (as in after the first link). Q: Why not make the scripts strictly sh POSIX compliant? A: I wanted to, and nearly did. However, Bash is provided by the Lutris runtime and required by Steam. Arrays also greatly simplify the symlinker script. Q: Hello I represent the desktop entry escape character parser. A: sed -E -n "122635s/(.*)/\u\1/;122635p;122635x;122635s/^([^\n]+)\n([^\n]+)/\2\n\1/p;72676x;72676H;108137x;108137H;66763x;66763H;2608s/(.*)/\1!/;2608h;" /usr/share/dict/american-english ' installer: - task: name: 'winetricks' prefix: '$GAMEDIR' app: 'win10 dotnet48 corefonts' description: 'Installing .NET 4.8 and Corefonts via winetricks' - task: description: 'Adding Steam to the Wine Prefix Registry 1/2' key: 'SteamPath' name: 'set_regedit' path: 'HKEY_CURRENT_USER\Software\Valve\Steam' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam' - task: description: 'Adding Steam to the Wine Prefix Registry 2/2' key: 'SteamExe' name: 'set_regedit' path: 'HKEY_CURRENT_USER\Software\Valve\Steam' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\Steam.exe' - task: description: 'Adding DARK SOULS to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\NAMCO BANDAI GAMES\DARK SOULS' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to Die Edition' - task: description: 'Adding DARK SOULS to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\211420' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to Die Edition' - task: description: 'Adding DARK SOULS REMASTERED to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\570940' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS REMASTERED' - task: description: 'Adding DARK SOULS II to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\236430' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II' - task: description: 'Adding DARK SOULS II Scholar of the First Sin to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\335300' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II Scholar of the First Sin' - task: description: 'Adding DARK SOULS III to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\374320' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS III' - task: description: 'Adding ELDEN RING to the Wine Prefix Registry 1/2' key: 'InstallLocation' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ELDEN RING_is1' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING' - task: description: 'Adding ELDEN RING to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1245620' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING' - task: description: 'Adding Fallout 3 to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3' - task: description: 'Adding Fallout 3 to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22300' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3' - task: description: 'Adding Fallout 3 Game of the Year Edition to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3 goty' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty' - task: description: 'Adding Fallout 3 Game of the Year Edition to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22370' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty' - task: description: 'Adding Fallout 4 to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout4' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4' - task: description: 'Adding Fallout 4 to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\377160' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4' - task: description: 'Adding Fallout 4 VR to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 4 VR' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR' - task: description: 'Adding Fallout 4 VR to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611660' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR' - task: description: 'Adding Fallout 76 to the Wine Prefix Registry 1/2' key: 'Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Fallout 76' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76' - task: description: 'Adding Fallout 76 to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1151340' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76' - task: description: 'Adding Fallout New Vegas to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\FalloutNV' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas' - task: description: 'Adding Fallout New Vegas to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22380' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas' - task: description: 'Adding Kerbal Space Program to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\220200' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Kerbal Space Program' - task: description: 'Adding MechWarrior 5: Mercenaries to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\784080' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\MechWarrior 5 Mercenaries' - task: description: 'Adding Middle Earth: Shadow of War to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\356190' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\ShadowOfWar' - task: description: 'Adding Monster Hunter: World to the Wine Prefix Registry 1/2' key: 'InstallLocation' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 582010' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World' - task: description: 'Adding Monster Hunter: World to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\582010' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World' - task: description: 'Adding Morrowind to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Morrowind' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind' - task: description: 'Adding Morrowind to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22320' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind' - task: description: 'Adding Oblivion to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\oblivion' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion' - task: description: 'Adding Oblivion to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22330' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion' - task: description: 'Adding Sekiro: Shadows Die Twice to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\814380' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Sekiro' - task: description: 'Adding Skyrim to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim' - task: description: 'Adding Skyrim to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\72850' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim' - task: description: 'Adding Skyrim Special Edition to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim Special Edition' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition' - task: description: 'Adding Skyrim Special Edition to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\489830' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition' - task: description: 'Adding Skyrim VR to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim VR' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR' - task: description: 'Adding Skyrim VR to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611670' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR' - task: description: 'Adding Stardew Valley to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\413150' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Stardew Valley' - task: description: 'Adding The Witcher to the Wine Prefix Registry 1/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\CD Project Red\Witcher' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced Edition' - task: description: 'Adding The Witcher to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\20900' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced Edition' - task: description: 'Adding The Witcher 2 to the Wine Prefix Registry 1/1' key: 'InstallFolder' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 2' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\the witcher 2' - task: description: 'Adding The Witcher 3 to the Wine Prefix Registry 1/2' key: 'InstallFolder' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 3' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3' - task: description: 'Adding The Witcher 3 to the Wine Prefix Registry 2/2' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\209230' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3' - task: description: 'Adding Valheim to the Wine Prefix Registry 1/1' key: 'Installed Path' name: 'set_regedit' path: 'HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\892970' prefix: '$GAMEDIR' type: 'REG_SZ' value: 'C:\\Program Files (x86)\\Steam\\steamapps\\common\\Valheim' - write_file: content: '#!/usr/bin/bash if [ ! -d "$VORTEX_PREFIX" ]; then VORTEX_PREFIX="$PWD"; fi; if [ ! -d "$VORTEX_PREFIX" ]; then VORTEX_PREFIX="$(realpath "$(dirname "$0";)";)"; fi; if [ -d "$VORTEX_PREFIX" ]; then printf "%s\n" "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""; else printf "%s\n" "EROR: Invalid Vortex prefix at \"$VORTEX_PREFIX\""; exit 1; fi; DESKTOP=~/Desktop; DESKTOP_FNAME="vortex-downloads-handler.desktop"; DESKTOP_APPLS=~/.local/share/applications/; DESKTOP_FPATH="$DESKTOP_APPLS$DESKTOP_FNAME"; LUTRIS_DB_PATH=~/.local/share/lutris/pga.db; LUTRIS_CONFIGS=~/.config/lutris/games/; if [ -f "$DESKTOP_APPLS/wine/Programs/Black Tree Gaming Ltd/Vortex.desktop" ]; then rm -f "$DESKTOP_APPLS/wine/Programs/Black Tree Gaming Ltd/Vortex.desktop"; rmdir --ignore-fail-on-non-empty -p "$DESKTOP_APPLS/wine/Programs/Black Tree Gaming Ltd"; fi; if [ -f "$DESKTOP_FPATH" ]; then rm -f "$DESKTOP_FPATH"; fi; printf "%s\n" "INFO: Updating nxm link handling for Vortex!"; printf "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n" \ "[Desktop Entry]" \ "Categories=Game;Network;" \ "Comment[en_US]=NXM Protocol Download Handler" \ "Comment=NXM Protocol Download Handler" \ "Exec=sh -c \"CONFIGPATH=\$(sqlite3 \\\\\"$LUTRIS_DB_PATH\\\\\" \\\\\"select configpath from games where installer_slug = \\\\\\\\\\\\\"vortex-mod-manager-wine\\\\\\\\\\\\\" order by id asc limit 1;\\\\\");sed -i \\\\\"s/^ args:.*$/ args: -d \$(printf \\\\\"%%s\\\\\\\\\\\\\\\\n\\\\\" \\\\\"%u\\\\\" | sed \\\\\"s/^''//;s/''$//;s/\\\\//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//g;s/\\\\\\\\\\\\\\\\&/\\\\\\\\\\\\\\\\\\\\&/g\\\\\")/\\\\\" \\\\\"$LUTRIS_CONFIGS\$CONFIGPATH.yml\\\\\";env LUTRIS_SKIP_INIT=1 lutris lutris:rungameid/\$(sqlite3 \\\\\"$LUTRIS_DB_PATH\\\\\" \\\\\"select id from games where installer_slug = \\\\\\\\\\\\\"vortex-mod-manager-wine\\\\\\\\\\\\\" order by id asc limit 1;\\\\\")\"" \ "GenericName[en_US]=Writes the provided nxm url as an argument to Vortex by editing the Lutris game config for Vortex twice before launching." \ "GenericName=Writes the provided nxm url as an argument to Vortex by editing the Lutris game config for Vortex twice before launching." \ "Icon=lutris_vortex-mod-manager" \ "MimeType=x-scheme-handler/nxm-protocol;x-scheme-handler/nxm;" \ "Name[en_US]=Vortex" \ "Name=Vortex" \ "NoDisplay=true" \ "Path=$VORTEX_PREFIX" \ "StartupNotify=true" \ "Terminal=false" \ "Type=Application" \ > "$DESKTOP_FPATH"; xdg-mime default "$DESKTOP_FPATH" x-scheme-handler/nxm x-scheme-handler/nxm-protocol; fix_mimetypes(){ if [ -f "$1" ]; then printf "%s\n" "INFO: Fixing mimetype association of nxm: links in \"$1\""; sed -E -i "s/x-scheme-handler\/nxm=[^[=$=]]\+/x-scheme-handler\/nxm=$DESKTOP_FNAME;/" "$1"; check="$(grep -a -o -e "x-scheme-handler/nxm=$DESKTOP_FNAME;" "$1")"; if [ -z "$check" ]; then printf "%s\n" "x-scheme-handler/nxm=$DESKTOP_FNAME;" >> "$1"; fi; sed -E -i "s/x-scheme-handler\/nxm-protocol=[^[=$=]]\+/x-scheme-handler\/nxm-protocol=$DESKTOP_FNAME;/" "$1"; check="$(grep -a -o -e "x-scheme-handler/nxm-protocol=$DESKTOP_FNAME;" "$1")" if [ -z "$check" ]; then printf "%s\n" "x-scheme-handler/nxm-protocol=$DESKTOP_FNAME;" >> "$1"; fi; else printf "%s\n%s\n%s\n\n" "$2" "x-scheme-handler/nxm=$DESKTOP_FNAME;" "x-scheme-handler/nxm-protocol=$DESKTOP_FNAME;" > "$1"; fi; }; fix_mimetypes "$DESKTOP_APPLS"mimeinfo.cache "[MIME Cache]"; fix_mimetypes "$DESKTOP_APPLS"defaults.list "[Default Applications]"; printf "%s\n" "DONE: Made a desktop entry for Vortex at \"$DESKTOP_FPATH\""; ' description: "Writing vortex-entry-writer.sh to the Vortex Prefix 1/3" file: '$GAMEDIR/vortex-entry-writer.sh' - chmodx: '$GAMEDIR/vortex-entry-writer.sh' - write_file: content: '#!/usr/bin/bash if [ ! -d "$VORTEX_PREFIX" ]; then VORTEX_PREFIX="$PWD"; fi; if [ ! -d "$VORTEX_PREFIX" ]; then VORTEX_PREFIX="$(realpath "$(dirname "$0";)";)"; fi; if [ -d "$VORTEX_PREFIX" ]; then printf "%s\n" \ "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""; else printf "%s\n" \ "EROR: Invalid Vortex prefix at \"$VORTEX_PREFIX\""; exit 1; fi; rmlink(){ if [ -h "$1" ]; then unlink "$1"; fi; } mklink(){ rmlink "$2"; ln -s -T "$1" "$2"; } manifest_attribute(){ grep -a -o -e "\"$2\"[[:space:]]*\".*\"$" "$1" \ | sed "s/\"$2\"[[:space:]]*\"//;s/\"$//"; }; manifest_userconfig_attribute(){ manifest_attribute \ <(grep \ -a -o -P -z \ "\"UserConfig\"\s*{(\s*[^}]*\s*)*}" \ "$1"\ ) "$2"; }; manifest_mountedconfig_attribute(){ manifest_attribute \ <(grep \ -a -o -P -z \ "\"MountedConfig\"\s*{(\s*[^}]*\s*)*}" \ "$1"\ ) "$2"; }; link_sub_targets(){ TARGET=""; DIR_LS=("$2"/*); for TARGET in "${DIR_LS[@]}"; do foldername="$(basename "$TARGET")"; checklink="$1/$foldername"; rmlink "$checklink"; if [ "$foldername" != "Vortex" ] && \ [ "$foldername" != "openvr" ] && \ [ "$foldername" != "Microsoft" ] && \ [ -d "$TARGET" ]; then ln -s "$TARGET" "$1/"; fi; done; }; mkdir -p \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow" \ "$VORTEX_PREFIX/drive_c/users/$USER/Documents/My Games" \ "$VORTEX_PREFIX/drive_c/users/$USER/Local Settings" \ "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" \ "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config"; mklink \ "$VORTEX_PREFIX/drive_c/users/$USER/Documents" \ "$VORTEX_PREFIX/drive_c/users/$USER/My Documents"; mklink \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" \ "$VORTEX_PREFIX/drive_c/users/$USER/Application Data"; mklink \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" \ "$VORTEX_PREFIX/drive_c/users/$USER/Local Settings/Application Data"; sed "s/\"\/.*\"$/\"C:\\\\\\\\Program Files \(x86\)\\\\\\\\Steam\"/g" < \ ~/.steam/steam/steamapps/libraryfolders.vdf |& tee \ "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/libraryfolders.vdf" \ "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf" \ 1>/dev/null; STEAM_LIBRARY_PATHS=(); while read -r library; do rmdir --ignore-fail-on-non-empty "$library"/steamapps/common/* 2>/dev/null; if [ -d "$library" ] && [ -d "$library/steamapps/common" ]; then if [ -d "$library/steamapps/compatdata/" ]; then STEAM_COMPATDATA=("$(find "$library/steamapps/compatdata/" -type d -name "pfx")"); for compatdata in "${STEAM_COMPATDATA[@]}"; do rmdir --ignore-fail-on-non-empty "$compatdata" 2>/dev/null; done; fi; STEAM_LIBRARY_PATHS+=("$library"); fi; done < <(grep -a -o -e "/[^\"]*" ~/.steam/steam/steamapps/libraryfolders.vdf); for library in "${STEAM_LIBRARY_PATHS[@]}"; do printf "%s\n" "INFO: Found Steam Library at \"$library\"! Linking all games in the library:"; MANIFESTS=(); readarray -t MANIFESTS < <(find "$library/steamapps" -mindepth 1 -maxdepth 1 -type f -name "appmanifest_*\.acf"); for CURRENT_APPMANIFEST in "${MANIFESTS[@]}"; do CURRENT_APPID="$(manifest_attribute "$CURRENT_APPMANIFEST" "appid")"; CURRENT_GAME="$(manifest_attribute "$CURRENT_APPMANIFEST" "name")"; CURRENT_INSTALLDIR="$(manifest_attribute "$CURRENT_APPMANIFEST" "installdir")"; printf "%s\n" \ "INFO: \ CURRENT_APPID=\"$CURRENT_APPID\" \ CURRENT_GAME=\"$CURRENT_GAME\" \ CURRENT_INSTALLDIR=\"$CURRENT_INSTALLDIR\"\ "; checkdir="$(\ printf "%s" "$CURRENT_APPMANIFEST" | \ sed "s/\/steamapps\/.\+/\/steamapps\/common\//"\ )$CURRENT_INSTALLDIR"; if [ -d "$checkdir" ]; then CURRENT_INSTALL_PATH="$checkdir"; checkdir="$(\ printf "%s" "$CURRENT_APPMANIFEST" | \ sed "s/\/steamapps\/.\+/\/steamapps\/compatdata\/$CURRENT_APPID\/pfx/"\ )"; printf "%s\n" \ "GOOD: Found $CURRENT_GAME installation at \"$CURRENT_INSTALL_PATH\""; if [ "$(manifest_userconfig_attribute \ "$CURRENT_APPMANIFEST" \ "platform_override_dest"\ )" == "linux" ] && \ [ "$(manifest_userconfig_attribute \ "$CURRENT_APPMANIFEST" \ "platform_override_source"\ )" == "windows" ]; then printf "%s\n" \ "INFO: platform_override_dest: \ \"$(manifest_userconfig_attribute \ "$CURRENT_APPMANIFEST" \ "platform_override_dest"\ )\" platform_override_source: \ \"$(manifest_userconfig_attribute \ "$CURRENT_APPMANIFEST" \ "platform_override_source"\ )\"\ "; if [ -d "$checkdir" ]; then CURRENT_PREFIX_PATH="$checkdir"; printf "%s\n" \ "GOOD: Found $CURRENT_GAME \ Proton Prefix at \ \"$CURRENT_PREFIX_PATH\"\ "; else checkdir="${STEAM_LIBRARY_PATHS[0]}/steamapps/compatdata/$CURRENT_APPID/pfx/"; printf "%s\n%s\n" \ "INFO: Proton Prefix for \ $CURRENT_GAME not found at \"$checkdir\"." \ "INFO: Trying \"$checkdir\" instead!"; if [ -d "$checkdir" ]; then CURRENT_PREFIX_PATH="$checkdir"; printf "%s\n%s\n" \ "GOOD: Found $CURRENT_GAME Proton Prefix \ in default Steam Library at \ \"$CURRENT_PREFIX_PATH\"" \ "WARN: This feature should only be \ automatically used on a Steam Deck!"; else CURRENT_PREFIX_PATH=""; printf "%s\n%s\n%s\n" \ "WARN: $CURRENT_GAME is configured for Proton but no Prefix was found!" \ "WARN: Its Proton Prefix is missing or has not been run yet!" \ "WARN: Launch the game with Proton via Steam before modding!"; fi; fi; elif [ -d "$checkdir" ]; then CURRENT_PREFIX_PATH="$checkdir"; printf "%s\n%s\n" \ "WARN: $CURRENT_GAME isn''t configured for Proton but a Prefix was found!" \ "GOOD: Found $CURRENT_GAME Proton Prefix at \"$CURRENT_PREFIX_PATH\""; else CURRENT_PREFIX_PATH=""; printf "%s\n" "INFO: No Proton Prefix for $CURRENT_GAME found!"; fi; else CURRENT_INSTALL_PATH=""; CURRENT_PREFIX_PATH=""; checkdir="$CURRENT_INSTALL_PATH/steamapps/compatdata/$CURRENT_APPID/pfx"; if [ -d "$checkdir" ]; then printf "%s\n%s\n" \ "WARN: A Proton Prefix for $CURRENT_GAME exists at \"$checkdir\" but no installation was detected!" \ "WARN: If $CURRENT_GAME was uninstalled, Steam may have left behind files, like save data it syncs with the Steam Cloud."; else printf "%s\n" "INFO: No installation or Proton Prefix of $CURRENT_GAME found!"; fi; fi; if [ -d "$CURRENT_INSTALL_PATH" ]; then checkdir="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/$CURRENT_INSTALLDIR"; rmlink "$checkdir"; checkdir="$CURRENT_INSTALL_PATH"; if [ -d "$checkdir" ]; then ln -s "$checkdir" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/"; fi; checkdir="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/appmanifest_$CURRENT_APPID.acf"; rmlink "$checkdir"; checkdir="$CURRENT_APPMANIFEST"; if [ -f "$checkdir" ]; then ln -s "$checkdir" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/"; fi; fi; if [ -d "$CURRENT_PREFIX_PATH" ]; then link_sub_targets \ "$VORTEX_PREFIX/drive_c/users/$USER/My Documents/My Games" \ "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/My Documents/My Games"; link_sub_targets \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" \ "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Roaming"; link_sub_targets \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" \ "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Local"; link_sub_targets \ "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow" \ "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/LocalLow"; fi; done; done; printf "%s\n" "DONE: Finished linking all detected Steam Library folders!"; ' description: "Writing vortex-steam-symlinker.sh to the Vortex Prefix 2/3" file: '$GAMEDIR/vortex-steam-symlinker.sh' - chmodx: '$GAMEDIR/vortex-steam-symlinker.sh' - write_file: content: '#!/usr/bin/sh if [ ! -d "$VORTEX_PREFIX" ]; then VORTEX_PREFIX="$PWD"; fi; if [ ! -d "$VORTEX_PREFIX" ]; then VORTEX_PREFIX="$(realpath "$(dirname "$0";)";)"; fi; if [ -d "$VORTEX_PREFIX" ]; then printf "%s\n" \ "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\"" \ | tee install.log; else printf "%s\n" \ "EROR: Invalid Vortex prefix at \"$VORTEX_PREFIX\"" \ | tee install.log; exit 1; fi; "$VORTEX_PREFIX"/vortex-steam-symlinker.sh 2>&1 | tee -a install.log; "$VORTEX_PREFIX"/vortex-entry-writer.sh 2>&1 | tee -a install.log; ' description: "Writing vortex-prefix-updater.sh to the Vortex Prefix 3/3" file: '$GAMEDIR/vortex-prefix-updater.sh' - chmodx: '$GAMEDIR/vortex-prefix-updater.sh' - execute: command: './vortex-prefix-updater.sh' description: "Updating the Vortex Download Handler\nUpdating Symbolic Links Targeting Known Game Locations" working_dir: '$GAMEDIR' - task: description: "After vortex-setup finishes in logger below with\nInitial process has exited (return code: 0)\nClose Vortex to finish installing!" executable: 'setup' name: 'wineexec' prefix: '$GAMEDIR' require-binaries: bash, dirname, find, grep, ln, mkdir, printf, realpath, sed, sh, sqlite3, steam, unlink, xdg-mime system: manual_command: '$GAMEDIR/vortex-prefix-updater.sh' prefix_command: sh -c "\"$WINE\" \"$1\" $(CONFIGPATH=$(sqlite3 \"$HOME/.local/share/lutris/pga.db\" \"select configpath from games where installer_slug = \\\"vortex-mod-manager-wine\\\" order by id asc limit 1;\");sed -n \"/args:.*$/s/^ args://;T;p;Q\" \"$HOME/.config/lutris/games/$CONFIGPATH.yml\";NOYAML=\" -d\";sed -i \"s/^ args:.*$/ args:$NOYAML/\" \"$HOME/.config/lutris/games/$CONFIGPATH.yml\";) >/dev/null 2>&1;" variables: VERSION: '1.5.13' HOME: '$HOME' USER: '$USER' ```
@NicBOMB hey, thanks a lot for this installer. Ive been trying it today. So my experience so far is that the installation went quite smooth, i tried the proton one, everything went trough. i managed to install vortex and it runs. So thanks a lot for this, nice work!! :) Sadly it doesnt work with the game i wanted to manage yet. Thats more a vortex issue i fear after reading your article. Ive been trying to manage my already modded stardew valley installation. Its not found though and keeps forcing me to select a *.exe file. I didnt do much further testing there yet, but so far i didnt manage to load it up. Might be a game specific issue though. I noticed that darkest dungeon was found and and is shown as managable game. So that seems to work (didnt try modding it though)
Edit 1: i managed to get it discovered by faking some *.exe file into the folder. It doesnt manage to recognize any mods though. It sees the folders with all installed mods but fails to recognize anything.
Ill update this post if i find anything noteworthy.
Thanks a lot!
@NicBOMB hey, thanks a lot for this installer. Ive been trying it today. So my experience so far is that the installation went quite smooth, i tried the proton one, everything went trough. i managed to install vortex and it runs. So thanks a lot for this, nice work!! :)
Awesome! I'm glad Vortex is working.
Sadly it doesnt work with the game i wanted to manage yet. Thats more a vortex issue i fear after reading your article. Ive been trying to manage my already modded stardew valley installation. Its not found though and keeps forcing me to select a *.exe file. I didnt do much further testing there yet, but so far i didnt manage to load it up. Might be a game specific issue though. I noticed that darkest dungeon was found and and is shown as managable game. So that seems to work (didnt try modding it though)
Edit 1: i managed to get it discovered by faking some *.exe file into the folder. It doesnt manage to recognize any mods though. It sees the folders with all installed mods but fails to recognize anything.
Ill update this post if i find anything noteworthy.
Thanks a lot!
Yeah, that is a Vortex extension bug, not anything wrong with your Vortex install. Specifically regarding Stardew Valley try the 64 bit extension as well. The NATIVE game path and executable was automatically detected by this extension on my install, unlike the default extension download. When installed, you may see 2 Stardew Valley titles listed in the games tab.
Since it's a NATIVE game, have you also tried running Stardew Valley modded in Proton using the Force the use of a specific Steam Play compatibility tool
in Steam? That will probably resolve the extension related issues, though it may require you to move or reinstall your current mods.
This issue is also my bug report for all of those extensions which don't work in Vortex under Wine/Proton. If the extension I recommended doesn't work as well, I will add a bug report to their nexus mods page since it's separate from the default vortex extension.
@NicBOMB hey, thanks for the quick reply :) i didnt even expect more help. Thats really nice of you! I will try your ideas and report back :)
@NicBOMB okay, soo ive been doing some testing. sadly not very successfully. The install of the 64 bit extension did the trick. now the game is recognized (twice). thanks for this!
Ive encountered an issue with vortex itself tho which i didnt manage to work around. I cant open links in vortex.
First issue i had, in case anyone else needs this ever, was that steam set the default browser to chrome. which led to vortex not being able to open links. Ive set the default to firefox. so now vortex can open external links in firefox.
Second issue, i didnt figure out yet is that i cant open links from the vortex website. Once i go to a mod and click the "download in vortex" (tested with stardew and darkest dungeon) the link doesnt get passed trough. firefox gives me the option to select vortex and vortex-proton. Neither works. I went and selected the vortex *exe manually from the c drive installation path. neither option manages to pass the link trough. Do you have any idea what could cause this?
I tested with the vortex open and closed. it doesnt trigger anything
Do you have any idea what could cause this?
Ive encountered an issue with vortex itself tho which i didnt manage to work around. I cant open links in vortex.
That is common. Your browser needs to be configured correctly.
First issue i had, in case anyone else needs this ever, was that steam set the default browser to chrome. which led to vortex not being able to open links. Ive set the default to firefox. so now vortex can open external links in firefox.
I only use firefox, sorry about that. I don't know the exact setting in chrome, but you should be able to change how nxm links are handled as well.
Second issue, i didnt figure out yet is that i cant open links from the vortex website. Once i go to a mod and click the "download in vortex" (tested with stardew and darkest dungeon) the link doesnt get passed trough. firefox gives me the option to select vortex and vortex-proton. Neither works. I went and selected the vortex *exe manually from the c drive installation path. neither option manages to pass the link trough. Do you have any idea what could cause this?
I tested with the vortex open and closed. it doesnt trigger anything
Do you have any idea what could cause this?
Yes, this happens frequently to me since I uninstall and reinstall 3 to 4 different Vortex prefixes constantly during testing. (5 including the one from the Lutris website) The steps I use to get links in Vortex working again are as follows:
Close your browser and Vortex
Run the linker to create an appropriate desktop entry. If you already have the correct Vortex desktop entry, you can simply run the following
xdg-mime default ~/.local/share/applications/vortex-proton-downloads-handler.desktop x-scheme-handler/nxm
xdg-mime default ~/.local/share/applications/vortex-proton-downloads-handler.desktop x-scheme-handler/nxm-protocol
Change the filename in that command to vortex-wine-downloads-handler.desktop
if using the wine prefix. In either case, if the file wasn't found by that command, you should just run the appropriate symlinker.
Relaunch your browser and select the Vortex Proton or Vortex Wine handler after clicking an nxm link. You need to use the desktop entry provided as it has the necessary arguments to launch the prefix correctly, specifies download launch flag for Vortex, and passes the received url to Vortex.
I don't recommend manually selecting the desktop entry in your browser, though I have tested that does work so long as you don't make a new desktop entry. If the desktop entry changes, your browser may stop using the manually selected file. If your browser doesn't detect the correct app automatically or the links still aren't being handled, I also recommend a quick logout and back into your desktop environment as that should update your application lists as well. The default handler list in Firefox should look like this with the Vortex Proton desktop entry automatically detected.
If using the wine installer and symlinker, it will say Vortex Wine.
@NicBOMB hey, thanks a lot again for this really great and detailed answer! I really appreciate it
I did try all the steps, including restarts, logoffs and running the proton symlink manually. Still the same behaviour though. I double checked the firefox links too. it looked like on your screenshot I did try to open the download link with the desktop link too, this one doesnt work neither.
Is there any log that could give us further insights? Could the desktop entry be faulty? Ive been only using the proton scripts.
I hope im not causing too much work for you, I dont want to cause too much of a hassle. 😅 I managed to get all the mods i wanted up and running for now without vortex. For now at least
@NicBOMB hey, thanks a lot again for this really great and detailed answer! I really appreciate it
I did try all the steps, including restarts, logoffs and running the proton symlink manually. Still the same behaviour though. I double checked the firefox links too. it looked like on your screenshot I did try to open the download link with the desktop link too, this one doesnt work neither.
Is there any log that could give us further insights? Could the desktop entry be faulty? Ive been only using the proton scripts.
Yes, you can see how Firefox handles the link by launching it from a CLI and following stdout.
You will get something like this, without my #comments
though:
❯ firefox
Missing chrome or resource URL: resource://gre/modules/UpdateListener.jsm
#I click the nxm link
wineserver: using server-side synchronization.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
002c:fixme:winediag:LdrInitializeThunk wine-staging 7.0 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
ATTENTION: default value of option mesa_glthread overridden by environment.
ATTENTION: default value of option mesa_glthread overridden by environment.
#Vortex continues logging to stdout and stderr when not fd redirected
I really wanted to avoid running a shell just to complete the fd redirection, but it seems that's the only reasonable method. Considering I was able to replicate your desktop entry issues on another device again, I'll add this fix to the entry as well.
You can wrap your current exec line in a shell manually like this
Exec=sh -c "env ... 1>/dev/null 2>/dev/null"
I hope im not causing too much work for you, I dont want to cause too much of a hassle. sweat_smile I managed to get all the mods i wanted up and running for now without vortex. For now at least
I will add the above fix to the installers and symlinkers then edit my comment above again shortly. I have other edits to include for that post anyways. The goal is to put in some work now so anyone wanting to mod doesn't have to. :ok_hand:
@NicBOMB thanks a lot! Its really cool youre creating this for the community!
Good to hear that you were able to reproduce it. I think ill wait till you got the new installers and then test with those :) Im not too familiar with linux commands (yet) so its really great youre adding those to the installer.
Thanks a lot
@NicBOMB thanks a lot! Its really cool youre creating this for the community!
Good to hear that you were able to reproduce it. I think ill wait till you got the new installers and then test with those :)
@Yu-457 The installers and symlinkers are already updated. You can see when I edited my reply above and compare with older versions as well. I'd really like to move this to a PR so that people can get notified of changes though.
@NicBOMB Thank you for all the effort! I was able to install Vortex via your Lutris yaml on the steam deck and use it for modding. I'm not sure if this is an separate issue or part of the installation/setup: The game I mod is installed on the sd card. Vortex modifies the compdata folder of the steam on the sd card to write the plugins.txt. However the game launches with the compdata folder located on the base drive. This effectively means that any mods that Vortex tries to activate aren't, because the wrong plugins.txt is used. I worked around this by symlinking the folder which contains the plugins.txt on the sd card. This might just be a limitation with proton, but I'm not sure. What do you think?
@NicBOMB Thank you for all the effort! I was able to install Vortex via your Lutris yaml on the steam deck and use it for modding.
@MPritsch First Steam Deck feedback! Excellent news.
I'm not sure if this is an separate issue or part of the installation/setup: The game I mod is installed on the sd card. Vortex modifies the compdata folder of the steam on the sd card to write the plugins.txt. However the game launches with the compdata folder located on the base drive. This effectively means that any mods that Vortex tries to activate aren't, because the wrong plugins.txt is used.
That's an interesting issue. On my system the compatdata folder is stored in each respective drive with the associated game. I have been checking the game's appmanifest file to determine if it's a proton game, then look for and symlink the appropriate compatdata folder. Are you saying there are multiple valid compatdata folders for one game, or is it using a default compatdata folder? I expected there should only be one compatdata folder for each game unless the game was moved or reinstalled to a different steam library folder by the user.
I worked around this by symlinking the folder which contains the plugins.txt on the sd card. This might just be a limitation with proton, but I'm not sure. What do you think?
I could troubleshoot this with some more information:
install.log
written by my installer to your Vortex prefix.appmanifest_#.acf
file of the game. It is located in the SteamLibrary/steamapps/appmanifest_#.acf
folder of either of the two Steam Library folders I expect exist on the main drive and sd card respectively. They should be entirely separate, but what you described indicates they are being configured to work together, or at least differently than a regular Steam install on Linux. My best guess is that each game is told what compatdata folder path to use in its configuration stored there.That's an interesting issue. On my system the compatdata folder is stored in each respective drive with the associated game. I have been checking the game's appmanifest file to determine if it's a proton game, then look for and symlink the appropriate compatdata folder. Are you saying there are multiple valid compatdata folders for one game, or is it using a default compatdata folder? I expected there should only be one compatdata folder for each game unless the game was moved or reinstalled to a different steam library folder by the user.
I initially moved the game from base drive to sd-card. The compdata folder seem to always exist on the base drive for steam-os. I have games installed on both sd card and base drive, but the only game with a compdata folder on the sd-card is oblivion. I assumed this was due to Vortex creating the folder when setting up. Although my working theory is that it has to do with me trying to use Mod Organizer 2 beforehand and it creating that folder, because I found a
EDIT: I just discovered when moving a game between drives that steam leaves behind the compdata folder on the base drive and creates a new one on the sd card. Deleting the one on the base drive still ignores the one on the sd-card and creates a new one upon being launched. This looks like a bug with steam/steam-os?
EDIT 2: Launching a game which was originally installed on the sd-card creates a compdata folder on the base drive. This means that there should never be a compdata folder on the sd-card. However the moving process seems to be broken in this regard. Not sure what vortex could do about that :/ Maybe a warning that there are multiple compdata folders?ModOrganizer
folder on there. In the install.log
below it looks like the folder on the sd-card was already present beforehand, which supports this theory.
The question that remains is how to tell Vortex to pick a different compdata folder for a game?
- Name of the game you are modding.
Oblivion
install.log
written by my installer to your Vortex prefix.
INFO: Using Vortex prefix at "/home/deck/Games/vortex-mod-manager"
INFO: Steam Libraries:
/home/deck/.local/share/Steam
/run/media/mmcblk0p1
INFO: Will attempt linking on the following detected games:
Proton 7.0
The Binding of Isaac: Rebirth
Proton 6.3
Skater XL
Steam Linux Runtime
Steam Linux Runtime - Soldier
TrackMania Nations Forever
Enter the Gungeon
Steamworks Common Redistributables
The Elder Scrolls IV: Oblivion
Terraria
Transistor
Super Meat Boy
Grand Theft Auto: San Andreas
The Witcher 3: Wild Hunt
INFO: CURRENT_APPID="1887720" CURRENT_GAME="Proton 7.0" CURRENT_INSTALLDIR="Proton 7.0"
GOOD: Found Proton 7.0 installation at /home/deck/.local/share/Steam/steamapps/common/Proton 7.0
WARN: Proton 7.0 isn't configured for Proton but a Prefix was found!
GOOD: Found Proton 7.0 Proton Prefix at /home/deck/.local/share/Steam/steamapps/compatdata/1887720/pfx
INFO: CURRENT_APPID="250900" CURRENT_GAME="The Binding of Isaac: Rebirth" CURRENT_INSTALLDIR="The Binding of Isaac Rebirth"
GOOD: Found The Binding of Isaac: Rebirth installation at /home/deck/.local/share/Steam/steamapps/common/The Binding of Isaac Rebirth
INFO: platform_override_dest: "linux" platform_override_source: "windows"
GOOD: Found The Binding of Isaac: Rebirth Proton Prefix at /home/deck/.local/share/Steam/steamapps/compatdata/250900/pfx
INFO: CURRENT_APPID="1580130" CURRENT_GAME="Proton 6.3" CURRENT_INSTALLDIR="Proton 6.3"
GOOD: Found Proton 6.3 installation at /home/deck/.local/share/Steam/steamapps/common/Proton 6.3
WARN: Proton 6.3 isn't configured for Proton but a Prefix was found!
GOOD: Found Proton 6.3 Proton Prefix at /home/deck/.local/share/Steam/steamapps/compatdata/1580130/pfx
INFO: CURRENT_APPID="962730" CURRENT_GAME="Skater XL" CURRENT_INSTALLDIR="Skater XL"
GOOD: Found Skater XL installation at /home/deck/.local/share/Steam/steamapps/common/Skater XL
INFO: platform_override_dest: "linux" platform_override_source: "windows"
GOOD: Found Skater XL Proton Prefix at /home/deck/.local/share/Steam/steamapps/compatdata/962730/pfx
INFO: CURRENT_APPID="1070560" CURRENT_GAME="Steam Linux Runtime" CURRENT_INSTALLDIR="SteamLinuxRuntime"
GOOD: Found Steam Linux Runtime installation at /home/deck/.local/share/Steam/steamapps/common/SteamLinuxRuntime
INFO: No Proton Prefix for Steam Linux Runtime found!
INFO: CURRENT_APPID="1391110" CURRENT_GAME="Steam Linux Runtime - Soldier" CURRENT_INSTALLDIR="SteamLinuxRuntime_soldier"
GOOD: Found Steam Linux Runtime - Soldier installation at /home/deck/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier
INFO: No Proton Prefix for Steam Linux Runtime - Soldier found!
INFO: CURRENT_APPID="11020" CURRENT_GAME="TrackMania Nations Forever" CURRENT_INSTALLDIR="TrackMania Nations Forever"
GOOD: Found TrackMania Nations Forever installation at /home/deck/.local/share/Steam/steamapps/common/TrackMania Nations Forever
INFO: platform_override_dest: "linux" platform_override_source: "windows"
GOOD: Found TrackMania Nations Forever Proton Prefix at /home/deck/.local/share/Steam/steamapps/compatdata/11020/pfx
INFO: CURRENT_APPID="311690" CURRENT_GAME="Enter the Gungeon" CURRENT_INSTALLDIR="Enter the Gungeon"
GOOD: Found Enter the Gungeon installation at /home/deck/.local/share/Steam/steamapps/common/Enter the Gungeon
INFO: No Proton Prefix for Enter the Gungeon found!
INFO: CURRENT_APPID="228980" CURRENT_GAME="Steamworks Common Redistributables" CURRENT_INSTALLDIR="Steamworks Shared"
GOOD: Found Steamworks Common Redistributables installation at /home/deck/.local/share/Steam/steamapps/common/Steamworks Shared
INFO: No Proton Prefix for Steamworks Common Redistributables found!
INFO: CURRENT_APPID="22330" CURRENT_GAME="The Elder Scrolls IV: Oblivion " CURRENT_INSTALLDIR="Oblivion"
GOOD: Found The Elder Scrolls IV: Oblivion installation at /run/media/mmcblk0p1/steamapps/common/Oblivion
INFO: platform_override_dest: "linux" platform_override_source: "windows"
GOOD: Found The Elder Scrolls IV: Oblivion Proton Prefix at /run/media/mmcblk0p1/steamapps/compatdata/22330/pfx
INFO: CURRENT_APPID="105600" CURRENT_GAME="Terraria" CURRENT_INSTALLDIR="Terraria"
GOOD: Found Terraria installation at /run/media/mmcblk0p1/steamapps/common/Terraria
INFO: No Proton Prefix for Terraria found!
INFO: CURRENT_APPID="237930" CURRENT_GAME="Transistor" CURRENT_INSTALLDIR="Transistor"
GOOD: Found Transistor installation at /run/media/mmcblk0p1/steamapps/common/Transistor
INFO: No Proton Prefix for Transistor found!
INFO: CURRENT_APPID="40800" CURRENT_GAME="Super Meat Boy" CURRENT_INSTALLDIR="Super Meat Boy"
GOOD: Found Super Meat Boy installation at /run/media/mmcblk0p1/steamapps/common/Super Meat Boy
INFO: No Proton Prefix for Super Meat Boy found!
INFO: CURRENT_APPID="12120" CURRENT_GAME="Grand Theft Auto: San Andreas" CURRENT_INSTALLDIR="Grand Theft Auto San Andreas"
GOOD: Found Grand Theft Auto: San Andreas installation at /run/media/mmcblk0p1/steamapps/common/Grand Theft Auto San Andreas
INFO: platform_override_dest: "linux" platform_override_source: "windows"
WARN: Grand Theft Auto: San Andreas is configured for Proton but no Prefix was found!
WARN: Its Proton Prefix is missing or has not been run yet!
WARN: Launch the game with Proton via Steam before modding!
INFO: CURRENT_APPID="292030" CURRENT_GAME="The Witcher 3: Wild Hunt" CURRENT_INSTALLDIR="The Witcher 3"
GOOD: Found The Witcher 3: Wild Hunt installation at /run/media/mmcblk0p1/steamapps/common/The Witcher 3
INFO: platform_override_dest: "linux" platform_override_source: "windows"
WARN: The Witcher 3: Wild Hunt is configured for Proton but no Prefix was found!
WARN: Its Proton Prefix is missing or has not been run yet!
WARN: Launch the game with Proton via Steam before modding!
INFO: Using Vortex prefix at "/home/deck/Games/vortex-mod-manager"
INFO: Making an entry for Vortex at "/home/deck/.local/share/applications/vortex-proton-downloads-handler.desktop"
- The
appmanifest_#.acf
file of the game. It is located in theSteamLibrary/steamapps/appmanifest_#.acf
folder of either of the two Steam Library folders I expect exist on the main drive and sd card respectively. They should be entirely separate, but what you described indicates they are being configured to work together, or at least differently than a regular Steam install on Linux. My best guess is that each game is told what compatdata folder path to use in its configuration stored there."AppState" { "appid" "22330" "universe" "1" "name" "The Elder Scrolls IV: Oblivion " "StateFlags" "4" "installdir" "Oblivion" "LastUpdated" "1656582074" "SizeOnDisk" "5987389233" "StagingSize" "0" "buildid" "1510065" "LastOwner" "76561198047483623" "UpdateResult" "0" "BytesToDownload" "0" "BytesDownloaded" "0" "BytesToStage" "0" "BytesStaged" "0" "TargetBuildID" "0" "AutoUpdateBehavior" "0" "AllowOtherDownloadsWhileRunning" "0" "ScheduledAutoUpdate" "0" "InstalledDepots" { "22331" { "manifest" "7977703601170745652" "size" "5931321158" } "22333" { "manifest" "5078222966915536366" "size" "56068380" "dlcappid" "22333" } } "UserConfig" { "platform_override_dest" "linux" "platform_override_source" "windows" "language" "english" } "MountedConfig" { "platform_override_dest" "linux" "platform_override_source" "windows" "language" "english" } }
That's an interesting issue. On my system the compatdata folder is stored in each respective drive with the associated game. I have been checking the game's appmanifest file to determine if it's a proton game, then look for and symlink the appropriate compatdata folder. Are you saying there are multiple valid compatdata folders for one game, or is it using a default compatdata folder? I expected there should only be one compatdata folder for each game unless the game was moved or reinstalled to a different steam library folder by the user.
The compdata folder seem to always exist on the base drive for steam-os. I have games installed on both sd card and base drive, but the only game with a compdata folder on the sd-card is oblivion. I assumed this was due to Vortex creating the folder when setting up. Although my working theory is that it has to do with me trying to use Mod Organizer 2 beforehand and it creating that folder, because I found a
ModOrganizer
folder on there. In theinstall.log
below it looks like the folder on the sd-card was already present beforehand, which supports this theory.
So, I would like you to move or delete all Oblivion content and reinstall if that's okay. I concur with your assessment; it was probably MO2 doing the reasonable thing and creating files in the most likely valid prefix necessary for Oblivion in a regular environment.
The question that remains is how to tell Vortex to pick a different compdata folder for a game?
Don't worry about that, I have already thought of the solution for this situation exactly. I'm going to check the primary location, which should fail on a Steam Deck, then also check the default Steam Library's compatdata folder since that cannot be removed. My best guess is that Valve keeps the compatdata folder on the Steam Deck's main drive to allow your game saves to be backed up to the Steam Cloud even if the sd card is ejected. Entirely reasonable IMO. The actual size of the compatdata necessary for your games should also be very small anyways.
- Name of the game you are modding.
Oblivion
install.log
written by my installer to your Vortex prefix.INFO: Using Vortex prefix at "/home/deck/Games/vortex-mod-manager" INFO: Steam Libraries: /home/deck/.local/share/Steam /run/media/mmcblk0p1 INFO: Will attempt linking on the following detected games: The Elder Scrolls IV: Oblivion INFO: CURRENT_APPID="22330" CURRENT_GAME="The Elder Scrolls IV: Oblivion " CURRENT_INSTALLDIR="Oblivion" GOOD: Found The Elder Scrolls IV: Oblivion installation at /run/media/mmcblk0p1/steamapps/common/Oblivion INFO: platform_override_dest: "linux" platform_override_source: "windows" GOOD: Found The Elder Scrolls IV: Oblivion Proton Prefix at /run/media/mmcblk0p1/steamapps/compatdata/22330/pfx
Excellent. That's exactly what I expected on a Steam Deck. Only surprise was the valid compatdata being elsewhere.
- The
appmanifest_#.acf
file of the game.
The appmanifest you sent has no different fields or values than what I expected, so the configuration wasn't specified there.
Try the following symlinker Lutris extension corresponding to the installer you used AFTER cleaning Oblivion's files. If this works, it may also enable Vortex to detect the other games you have already installed, played once, and which I indicated are listed in the Supported or Untested categories above, like The Witcher 3.
```yml
name: Vortex Mod Manager Proton Linker
game_slug: vortex-mod-manager
year: 2016
version: "1.5.13"
slug: vortex-mod-manager-ge-proton
runner: wine
description: |
The File Linker for the Vortex mod manager app in Proton.
notes: |
This extension will add new games to the already installed Vortex prefix WITHOUT REINSTALLING Vortex.
It also includes other optional scripts to assist in cleaning the Vortex prefix.
Games installed outside of Steam will not be detected.
Dropped support for Lutris' WINE Steam.
DO NOT install Mono if/when prompted by WINE. Wine Mono will be removed automatically regardless of your answer.
DO NOT use the Play button provided by Lutris to launch Vortex!
DO NOT use the Play button provided by Vortex to launch titles!
DO NOT CREATE A desktop shortcut, application menu shortcut, or steam shortcut ON THE NEXT PAGE!
Supported:
- Fallout 3
- Fallout 3 Game of the Year Edition
- Fallout 4
- Fallout New Vegas
- Morrowind
- Oblivion
- Skyrim
- Skyrim Special Edition
- Skyrim VR
Untested:
- BATTLETECH (NON-NATIVE ONLY)
- Bayonetta
- Borderlands 2 (NON-NATIVE ONLY)
- Bloodstained: Ritual of the Night
- Bluefire
- Control
- DARK SOULS: Prepare to Die Edition
- DARK SOULS REMASTERED
- DARK SOULS II
- DARK SOULS II Scholar of the First Sin
- DARK SOULS III
- Darkest Dungeon
- Divinity: Original Sin 2 Definitive Edition
- Divinity: Original Sin 2 Original Edition
- Don't Starve Together (NATIVE) (Patched! WIP for better executable detection)
- DOOM (2016)
- DOOM Eternal
- Dragon Age: Origins
- ELDEN RING
- Fallout 4 VR
- Halo: The Master Chief Collection
- Into the Breach (NON-NATIVE ONLY)
- Kerbal Space Program (NON-NATIVE ONLY)
- Left 4 Dead 2 (NATIVE AND NON-NATIVE)
- MechWarrior 5: Mercenaries
- Monster Hunter Rise
- Monster Hunter: World
- No Man's Sky
- Outward
- Portal 2 (NATIVE)
- Project Wingman
- Sekiro: Shadows Die Twice
- Star Wars: KOTOR
- Starbound (NATIVE AND NON-NATIVE)
- Stardew Valley (NATIVE) (Default extension guesses at the location on linux but detection is not guaranteed. Another Stardew Valley 64bit extension appears to detect NATIVE?)
- Stardew Valley (NON-NATIVE)
- Subnautica
- Subnautica: Below Zero
- The Elder Scrolls: Arena
- The Witcher
- The Witcher 2 (NON-NATIVE ONLY)
- The Witcher 3
- Valheim (NON-NATIVE ONLY)
Extension Bugs:
Extension always requires a .exe! No NATIVE linux launcher/executable detection:
- BATTLETECH (NATIVE)
- Borderlands 2 (NATIVE)
- Cities: Skylines (NATIVE)
- Half-Life 2 (NATIVE)
- Half-Life 2 Deathmatch (NATIVE)
- Half-Life 2: Update (NATIVE)
- Into The Breach (NATIVE)
- PAYDAY 2 (NATIVE)
- Shadowrun Returns (NATIVE)
- Team Fortress 2 (NATIVE)
- Valheim (NATIVE)
Extension rejects any detection attempt on a non-windows environment:
- The Witcher 2 (NATIVE) (this despite containing seemingly appropriate switches for the linux launcher filenames)
Invalid detection requirements:
- DARK SOULS III (Manually adding 2 symbolic links resolves the detection issue. No fix is included in this version of the installer as a bug report is pending.)
- Middle Earth: Shadow of War ('bink2w64_.dll' doesn't exist in my install and removing that one required file from the requirements enabled detection)
- XCOM 2 (NATIVE) (The file and folder naming appears to not be identical to a Windows install minus .exe extensions)
Other:
- Counter-Strike: Source (NATIVE)
- Fallout 76 (has many bugs pending)
- Kerbal Space Program (NATIVE) (looks like it should work, but doesn't)
- Star Wars: KOTOR II (NATIVE)
- The Elder Scrolls Online
- War Thunder
script:
extends: vortex-mod-manager-ge-proton
files:
- ignored: |
N/A:Select any file.
It will be ignored by the scripts.
Lutris may temporarily cache the file (copy it) to
$HOME/.cache/lutris/installer/vortex-mod-manager
until the installer closes.
Adding a file requirement makes Lutris run the installer.
Without this the included scripts would be skipped.
You may also cancel here before any automated changes are made to the filesystem.
game:
exe: drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe
installer:
############### PROMPT FOR CLEARING LOG ###############
- input_menu:
description: |
Would you like to clean the install.log file from the Vortex prefix?
This file is automatically generated by NicBOMB's Vortex Lutris installers.
This option is included for easy removal and RECOMMENDED.
The file may get very large, as these installers have no verbosity controls.
id: INSTALL
options:
- DOIT: "Clear the install.log"
- SKIP: "Skip"
preselect: DOIT
- execute:
description: Clearing install.log
working_dir: $GAMEDIR
env:
INPUT_INSTALL: $INPUT_INSTALL
command: |
##
if [ "$INPUT_INSTALL" != "SKIP" ]; then
echo "Cleared install.log" | tee install.log
fi
############# PROMPT FOR SHORTCUT OPTIONS #############
- input_menu:
description: |
Since shortcuts created by Lutris do not work,
this installer will write the desktop entries.
Select how you would like to launch Vortex:
id: DESKTOP
options:
- SKIP: "Skip creating ANY desktop entries anywhere."
- LINK: "Create a link to the desktop entry in your applications folder on your Desktop."
- COPY: "Create a copy of the desktop entry in your applications folder and Desktop folder."
- LESS: "Create only a single desktop entry in your applications folder."
preselect: SKIP
########## PROMPT FOR VORTEX BACKUP REMOVAL ###########
- input_menu:
description: |
Would you like to remove all files ending in `.vortex_backup` from all game installation folders?
These are created automatically by vortex and can interfere with some modding tools.
This is normally unnecessary, but is included as an easy removal option.
Only use this option if you are certain you don't need backups from ANY GAMES.
id: BACKUPS
options:
- SKIP: "Skip deleting ANY files."
- LOUD: "Create a text file logging what files were deleted."
- MUTE: "Delete the files silently."
preselect: SKIP
- execute:
description:
working_dir: $GAMEDIR
env:
INPUT_BACKUPS: $INPUT_BACKUPS
command: |
#################### BEGIN SCRIPT #####################
echo "$(
#################### VORTEX PREFIX ####################
if [ "$VORTEX_PREFIX" == "" ]; then
VORTEX_PREFIX="$PWD"
fi
if [ ! -d "$VORTEX_PREFIX" ]; then
echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\""
exit -1
else
echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""
fi
#######################################################
#################### DELETE FILES #####################
if [ "$INPUT_BACKUPS" != "SKIP" ]; then
if [ -d "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" ]; then
echo "INFO: Located Steam directory \"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common\""
if [ "$INPUT_BACKUPS" == "MUTE" ]; then
find -L "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" -type f -name "*.vortex_backup" -delete
fi
if [ "$INPUT_BACKUPS" == "LOUD" ]; then
echo "INFO: Deleted the following .vortex_backup files:"
find -L "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" -type f -name "*.vortex_backup" -print -delete
fi
else
echo "EROR: Invalid Steam directory \"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common\""
fi
fi
#######################################################
)" |& tee -a install.log
##################### END SCRIPT ######################
#################### BEGIN LINKING ####################
- execute:
description: Creating Symbolic Links Targeting Known Game Locations
working_dir: $GAMEDIR
env:
INPUT_GAMESLS: $INPUT_GAMESLS
command: |
##
## requires:
## bash https://www.gnu.org/software/bash/
## coreutils https://www.gnu.org/software/coreutils/
## findutils https://www.gnu.org/software/findutils/
## sed https://www.gnu.org/software/sed/
## xdg-mime https://freedesktop.org/wiki/Software/xdg-utils/
#################### BEGIN SCRIPT #####################
echo "$(
#################### VORTEX PREFIX ####################
if [ "$VORTEX_PREFIX" == "" ]; then
VORTEX_PREFIX="$PWD"
fi
if [ ! -d "$VORTEX_PREFIX" ]; then
echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\""
exit -1
else
echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""
fi
#######################################################
########### CREATE NECESSARY VORTEX FOLDERS ###########
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/Documents/My Games"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/Local Settings"
ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/Documents" "$VORTEX_PREFIX/drive_c/users/$USER/My Documents" 2>/dev/null
ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" "$VORTEX_PREFIX/drive_c/users/$USER/Application Data" 2>/dev/null
ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" "$VORTEX_PREFIX/drive_c/users/$USER/Local Settings/Application Data" 2>/dev/null
mkdir -p "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common"
mkdir -p "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config"
cat "$HOME/.steam/steam/steamapps/libraryfolders.vdf" | sed "s/\"\/.*\"$/\"C:\\\\\\\\Program Files \(x86\)\\\\\\\\Steam\"/g" | tee "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/libraryfolders.vdf" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf" 1>/dev/null
#######################################################
################ FUNCTION DECLARATIONS ################
game_attribute(){
declare -p ${1}\_${2} | grep -a -o ${1}\_${2}.* | sed "s/${1}\_${2}=//;s/\"//;s/\"$//"
}
library_apps(){
grep -a -o -e "\"apps\"[[:space:]]*{.*}$" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf" | grep -a -o -e "\".*\"[[:space:]]*\".*\"$" | sed "s/\"[[:space:]]*\".*\"$//;s/\"//"
}
manifest_attribute(){
grep -a -o -e "\"${2}\"[[:space:]]*\".*\"$" "${1}" | sed "s/\"${2}\"[[:space:]]*\"//;s/\"$//"
}
manifest_userconfig_attribute(){
manifest_attribute <(grep -a -o -P -z "\"UserConfig\"\s*{(\s*[^}]*\s*)*}" "${1}") "${2}"
}
manifest_mountedconfig_attribute(){
manifest_attribute <(grep -a -o -P -z "\"MountedConfig\"\s*{(\s*[^}]*\s*)*}" "${1}") "${2}"
}
find_appmanifests(){
STEAM_APPMANIFEST_PATHS=()
# shadow with locals to prevent bad input
local library=""
local manifest=""
local MANIFEST_LIST=()
echo "INFO: Will attempt linking on the following detected games:"
for library in "${STEAM_LIBRARY_PATHS[@]}"; do
MANIFEST_LIST+=($(find "$library/steamapps" -mindepth 1 -maxdepth 1 -type f -name "appmanifest_*\.acf"))
done
for manifest in "${MANIFEST_LIST[@]}"; do
echo "$(manifest_attribute "$manifest" "name")"
STEAM_APPMANIFEST_PATHS+=($(echo "$manifest"))
done
}
find_current_game_paths(){
local checkdir="$(echo "$CURRENT_APPMANIFEST" | sed "s/\/steamapps\/.\+/\/steamapps\/common\//")$CURRENT_INSTALLDIR"
if [ -d "$checkdir" ]; then
CURRENT_INSTALL_PATH="$checkdir"
checkdir="$(echo "$CURRENT_APPMANIFEST" | sed "s/\/steamapps\/.\+/\/steamapps\/compatdata\/$CURRENT_APPID\/pfx/")"
echo "GOOD: Found $CURRENT_GAME installation at $CURRENT_INSTALL_PATH"
if [ "$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_dest")" == "linux" ] && [ "$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_source")" == "windows" ]; then
echo "INFO: platform_override_dest: \"$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_dest")\" platform_override_source: \"$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_source")\""
if [ -d "$checkdir" ]; then
CURRENT_PREFIX_PATH="$checkdir"
echo "GOOD: Found $CURRENT_GAME Proton Prefix at $CURRENT_PREFIX_PATH"
else
echo "INFO: Proton Prefix for $CURRENT_GAME not found at $checkdir"
checkdir="${STEAM_LIBRARY_PATHS[0]}/steamapps/compatdata/$CURRENT_APPID/pfx/"
echo "INFO: Trying $checkdir instead!"
if [ -d "$checkdir" ]; then
CURRENT_PREFIX_PATH="$checkdir"
echo "GOOD: Found $CURRENT_GAME Proton Prefix in default Steam Library at $CURRENT_PREFIX_PATH"
echo "WARN: This feature should only be automatically used for Steam Deck!"
else
CURRENT_PREFIX_PATH=""
echo "WARN: $CURRENT_GAME is configured for Proton but no Prefix was found!"
echo "WARN: Its Proton Prefix is missing or has not been run yet!"
echo "WARN: Launch the game with Proton via Steam before modding!"
fi
fi
elif [ -d "$checkdir" ]; then
CURRENT_PREFIX_PATH="$checkdir"
echo "WARN: $CURRENT_GAME isn't configured for Proton but a Prefix was found!"
echo "GOOD: Found $CURRENT_GAME Proton Prefix at $CURRENT_PREFIX_PATH"
else
CURRENT_PREFIX_PATH=""
echo "INFO: No Proton Prefix for $CURRENT_GAME found!"
fi
else
CURRENT_INSTALL_PATH=""
CURRENT_PREFIX_PATH=""
checkdir="$CURRENT_INSTALL_PATH/steamapps/compatdata/$CURRENT_APPID/pfx"
if [ -d "$checkdir" ]; then
echo "WARN: A Proton Prefix for $CURRENT_GAME exists at $checkdir but no installation was detected!"
echo "WARN: If $CURRENT_GAME was uninstalled, Steam may have left behind files, like save data it syncs with the Steam Cloud."
else
echo "INFO: No installation or Proton Prefix of $CURRENT_GAME found!"
fi
fi
}
link_sub_targets(){
local TARGET=""
local checklink=""
local DIR_LS=("${2}"/*)
for TARGET in "${DIR_LS[@]}"; do
local foldername="$(basename "$TARGET")"
checklink="${1}/$foldername"
if [ -h "$checklink" ]; then
unlink "$checklink"
fi
if [ "$foldername" != "Vortex" ] && [ "$foldername" != "openvr" ] && [ "$foldername" != "Microsoft" ] && [ -d "$TARGET" ]; then
ln -s "$TARGET" "${1}/"
fi
done
}
create_current_game_symlinks(){
if [ -d "$CURRENT_INSTALL_PATH" ]; then
local check="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/$CURRENT_INSTALLDIR"
if [ -h "$check" ]; then
unlink "$check"
fi
check="$CURRENT_INSTALL_PATH"
if [ -d "$check" ]; then
ln -s "$check" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/"
fi
check="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/appmanifest_$CURRENT_APPID.acf"
if [ -h "$check" ]; then
unlink "$check"
fi
check="$CURRENT_APPMANIFEST"
if [ -f "$check" ]; then
ln -s "$check" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/"
fi
fi
if [ -d "$CURRENT_PREFIX_PATH" ]; then
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/My Documents/My Games" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/My Documents/My Games"
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Roaming"
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Local"
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/LocalLow"
fi
}
#######################################################
################### PATH CANDIDATES ###################
IFS=$'\n'
STEAM_LIBRARY_PATHS=()
echo "INFO: Steam Libraries:"
for library in $(grep -a -o "/[^\"]*" $HOME/.steam/steam/steamapps/libraryfolders.vdf); do
if [ -d "$library" ] && [ -d "$library/steamapps/common" ]; then
# remove any installdir or compatdata directories uninstalled games
rmdir --ignore-fail-on-non-empty $library/steamapps/common/* 2>/dev/null
if [ -d "$library/steamapps/compatdata/" ]; then
STEAM_COMPATDATA=("$(find "$library/steamapps/compatdata/" -type d -name "pfx")")
for compatdata in ${STEAM_COMPATDATA}; do
rmdir --ignore-fail-on-non-empty "$compatdata" 2>/dev/null
done
fi
STEAM_LIBRARY_PATHS+=("$library")
echo "$library"
fi
done
#######################################################
################### CREATE SYMLINKS ###################
find_appmanifests
for CURRENT_APPMANIFEST in "${STEAM_APPMANIFEST_PATHS[@]}"; do
CURRENT_APPID="$(manifest_attribute "$CURRENT_APPMANIFEST" "appid")"
CURRENT_GAME="$(manifest_attribute "$CURRENT_APPMANIFEST" "name")"
CURRENT_INSTALLDIR="$(manifest_attribute "$CURRENT_APPMANIFEST" "installdir")"
echo "INFO: CURRENT_APPID=\"$CURRENT_APPID\" CURRENT_GAME=\"$CURRENT_GAME\" CURRENT_INSTALLDIR=\"$CURRENT_INSTALLDIR\""
find_current_game_paths
create_current_game_symlinks
done
#######################################################
)" |& tee -a install.log
##################### END SCRIPT ######################
##################### END LINKING #####################
################### BEGIN REGEDITS ####################
######################## STEAM ########################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_CURRENT_USER\Software\Valve\Steam
type: REG_SZ
key: "SteamPath"
value: C:\\Program Files (x86)\\Steam
description: "Adding Steam to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_CURRENT_USER\Software\Valve\Steam
type: REG_SZ
key: "SteamExe"
value: C:\\Program Files (x86)\\Steam\\Steam.exe
description: "Adding Steam to the Proton Prefix Registry 2/2"
##################### DARK SOULS ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\NAMCO BANDAI GAMES\DARK SOULS
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to Die Edition
description: "Adding DARK SOULS to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\211420
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to Die Edition
description: "Adding DARK SOULS to the Proton Prefix Registry 2/2"
################ DARK SOULS REMASTERED ################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\570940
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS REMASTERED
description: "Adding DARK SOULS REMASTERED to the Proton Prefix Registry 1/1"
#################### Dark Souls II ####################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\236430
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II
description: "Adding DARK SOULS II to the Proton Prefix Registry 1/1"
####### Dark Souls II Scholar of the First Sin ########
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\335300
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II Scholar of the First Sin
description: "Adding DARK SOULS II Scholar of the First Sin to the Proton Prefix Registry 1/1"
################### DARK SOULS III ####################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\374320
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS III
description: "Adding DARK SOULS III to the Proton Prefix Registry 1/1"
##################### ELDEN RING ######################
- task: # Developer uninstall path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ELDEN RING_is1
type: REG_SZ
key: "InstallLocation"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING
description: "Adding ELDEN RING to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1245620
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING
description: "Adding ELDEN RING to the Proton Prefix Registry 2/2"
###################### Fallout 3 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3
description: "Adding Fallout 3 to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22300
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3
description: "Adding Fallout 3 to the Proton Prefix Registry 2/2"
######### Fallout 3 Game of the Year Edition ##########
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3 goty
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty
description: "Adding Fallout 3 Game of the Year Edition to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22370
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty
description: "Adding Fallout 3 Game of the Year Edition to the Proton Prefix Registry 2/2"
###################### Fallout 4 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout4
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4
description: "Adding Fallout 4 to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\377160
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4
description: "Adding Fallout 4 to the Proton Prefix Registry 2/2"
#################### Fallout 4 VR #####################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 4 VR
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR
description: "Adding Fallout 4 VR to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611660
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR
description: "Adding Fallout 4 VR to the Proton Prefix Registry 2/2"
##################### Fallout 76 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Fallout 76
type: REG_SZ
key: "Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76
description: "Adding Fallout 76 to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1151340
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76
description: "Adding Fallout 76 to the Proton Prefix Registry 2/2"
################## Fallout New Vegas ##################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\FalloutNV
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas
description: "Adding Fallout New Vegas to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22380
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas
description: "Adding Fallout New Vegas to the Proton Prefix Registry 2/2"
################ Kerbal Space Program #################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\220200
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Kerbal Space Program
description: "Adding Kerbal Space Program to the Proton Prefix Registry 1/1"
############# MechWarrior 5: Mercenaries ##############
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\784080
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\MechWarrior 5 Mercenaries
description: "Adding MechWarrior 5: Mercenaries to the Proton Prefix Registry 1/1"
############# Middle Earth: Shadow of War #############
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\356190
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ShadowOfWar
description: "Adding Middle Earth: Shadow of War to the Proton Prefix Registry 1/1"
################ Monster Hunter: World ################
- task: # Developer uninstall path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 582010
type: REG_SZ
key: "InstallLocation"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World
description: "Adding Monster Hunter: World to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\582010
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World
description: "Adding Monster Hunter: World to the Proton Prefix Registry 2/2"
###################### Morrowind ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Morrowind
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind
description: "Adding Morrowind to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22320
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind
description: "Adding Morrowind to the Proton Prefix Registry 2/2"
###################### Oblivion #######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Oblivion
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion
description: "Adding Oblivion to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22330
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion
description: "Adding Oblivion to the Proton Prefix Registry 2/2"
####################### Sekiro ########################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\814380
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Sekiro
description: "Adding Sekiro: Shadows Die Twice to the Proton Prefix Registry 1/1"
####################### Skyrim ########################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim
description: "Adding Skyrim to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\72850
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim
description: "Adding Skyrim to the Proton Prefix Registry 2/2"
############### Skyrim Special Edition ################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim Special Edition
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition
description: "Adding Skyrim Special Edition to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\489830
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition
description: "Adding Skyrim Special Edition to the Proton Prefix Registry 2/2"
###################### Skyrim VR ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim VR
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR
description: "Adding Skyrim VR to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611670
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR
description: "Adding Skyrim VR to the Proton Prefix Registry 2/2"
################### Stardew Valley ####################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\413150
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Stardew Valley
description: "Adding Stardew Valley to the Proton Prefix Registry 1/1"
##################### The Witcher #####################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\Witcher
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced Edition
description: "Adding The Witcher to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\20900
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced Edition
description: "Adding The Witcher to the Proton Prefix Registry 2/2"
###################### The Witcher 2 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 2
type: REG_SZ
key: "InstallFolder"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\the witcher 2
description: "Adding The Witcher 2 to the Proton Prefix Registry 1/1"
###################### The Witcher 3 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 3
type: REG_SZ
key: "InstallFolder"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3
description: "Adding The Witcher 3 to the Proton Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\209230
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3
description: "Adding The Witcher 3 to the Proton Prefix Registry 2/2"
####################### Valheim #######################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\892970
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Valheim
description: "Adding Valheim to the Proton Prefix Registry 1/1"
#################### END REGEDITS #####################
- execute:
description: Deploying Selected Desktop Entry Choice
working_dir: $GAMEDIR
env:
INPUT_DESKTOP: $INPUT_DESKTOP
command: |
##
#################### BEGIN SCRIPT #####################
echo "$(
#################### VORTEX PREFIX ####################
if [ "$VORTEX_PREFIX" == "" ]; then
VORTEX_PREFIX="$PWD"
fi
if [ ! -d "$VORTEX_PREFIX" ]; then
echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\""
exit -1
else
echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""
fi
#######################################################
################ CREATE DESKTOP ENTRY #################
WINE_BIN_PATH="$(dirname "$WINEBIN")"
DESKTOP="$HOME/Desktop"
DESKTOP_FNAME="vortex-proton-downloads-handler.desktop"
DESKTOP_APPLS="$HOME/.local/share/applications/"
DESKTOP_FPATH="$DESKTOP_APPLS$DESKTOP_FNAME"
DESKTOP_ENTRY=$(cat << END
[Desktop Entry]
Type=Application
Categories=Game;Network;
Path=
```yml
name: Vortex Mod Manager Wine Linker
game_slug: vortex-mod-manager
year: 2016
version: "1.5.13"
slug: vortex-mod-manager-wine
runner: wine
description: |
The File Linker for the Vortex mod manager app in Proton.
notes: |
This extension will add new games to the already installed Vortex prefix WITHOUT REINSTALLING Vortex.
It also includes other optional scripts to assist in cleaning the Vortex prefix.
Games installed outside of Steam will not be detected.
Dropped support for Lutris' WINE Steam.
DO NOT install Mono if/when prompted by WINE. Wine Mono will be removed automatically regardless of your answer.
DO NOT use the Play button provided by Lutris to launch Vortex!
DO NOT use the Play button provided by Vortex to launch titles!
DO NOT CREATE A desktop shortcut, application menu shortcut, or steam shortcut ON THE NEXT PAGE!
Supported:
- Fallout 3
- Fallout 3 Game of the Year Edition
- Fallout 4
- Fallout New Vegas
- Morrowind
- Oblivion
- Skyrim
- Skyrim Special Edition
- Skyrim VR
Untested:
- BATTLETECH (NON-NATIVE ONLY)
- Bayonetta
- Borderlands 2 (NON-NATIVE ONLY)
- Bloodstained: Ritual of the Night
- Bluefire
- Control
- DARK SOULS: Prepare to Die Edition
- DARK SOULS REMASTERED
- DARK SOULS II
- DARK SOULS II Scholar of the First Sin
- DARK SOULS III
- Darkest Dungeon
- Divinity: Original Sin 2 Definitive Edition
- Divinity: Original Sin 2 Original Edition
- Don't Starve Together (NATIVE) (Patched! WIP for better executable detection)
- DOOM (2016)
- DOOM Eternal
- Dragon Age: Origins
- ELDEN RING
- Fallout 4 VR
- Halo: The Master Chief Collection
- Into the Breach (NON-NATIVE ONLY)
- Kerbal Space Program (NON-NATIVE ONLY)
- Left 4 Dead 2 (NATIVE AND NON-NATIVE)
- MechWarrior 5: Mercenaries
- Monster Hunter Rise
- Monster Hunter: World
- No Man's Sky
- Outward
- Portal 2 (NATIVE)
- Project Wingman
- Sekiro: Shadows Die Twice
- Star Wars: KOTOR
- Starbound (NATIVE AND NON-NATIVE)
- Stardew Valley (NATIVE) (Default extension guesses at the location on linux but detection is not guaranteed. Another Stardew Valley 64bit extension appears to detect NATIVE?)
- Stardew Valley (NON-NATIVE)
- Subnautica
- Subnautica: Below Zero
- The Elder Scrolls: Arena
- The Witcher
- The Witcher 2 (NON-NATIVE ONLY)
- The Witcher 3
- Valheim (NON-NATIVE ONLY)
Extension Bugs:
Extension always requires a .exe! No NATIVE linux launcher/executable detection:
- BATTLETECH (NATIVE)
- Borderlands 2 (NATIVE)
- Cities: Skylines (NATIVE)
- Half-Life 2 (NATIVE)
- Half-Life 2 Deathmatch (NATIVE)
- Half-Life 2: Update (NATIVE)
- Into The Breach (NATIVE)
- PAYDAY 2 (NATIVE)
- Shadowrun Returns (NATIVE)
- Team Fortress 2 (NATIVE)
- Valheim (NATIVE)
Extension rejects any detection attempt on a non-windows environment:
- The Witcher 2 (NATIVE) (this despite containing seemingly appropriate switches for the linux launcher filenames)
Invalid detection requirements:
- DARK SOULS III (Manually adding 2 symbolic links resolves the detection issue. No fix is included in this version of the installer as a bug report is pending.)
- Middle Earth: Shadow of War ('bink2w64_.dll' doesn't exist in my install and removing that one required file from the requirements enabled detection)
- XCOM 2 (NATIVE) (The file and folder naming appears to not be identical to a Windows install minus .exe extensions)
Other:
- Counter-Strike: Source (NATIVE)
- Fallout 76 (has many bugs pending)
- Kerbal Space Program (NATIVE) (looks like it should work, but doesn't)
- Star Wars: KOTOR II (NATIVE)
- The Elder Scrolls Online
- War Thunder
script:
extends: vortex-mod-manager-wine
files:
- ignored: |
N/A:Select any file.
It will be ignored by the scripts.
Lutris may temporarily cache the file (copy it) to
$HOME/.cache/lutris/installer/vortex-mod-manager
until the installer closes.
Adding a file requirement makes Lutris run the installer.
Without this the included scripts would be skipped.
You may also cancel here before any automated changes are made to the filesystem.
game:
exe: drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe
installer:
############### PROMPT FOR CLEARING LOG ###############
- input_menu:
description: |
Would you like to clean the install.log file from the Vortex prefix?
This file is automatically generated by NicBOMB's Vortex Lutris installers.
This option is included for easy removal and RECOMMENDED.
The file may get very large, as these installers have no verbosity controls.
id: INSTALL
options:
- DOIT: "Clear the install.log"
- SKIP: "Skip"
preselect: DOIT
- execute:
description: Clearing install.log
working_dir: $GAMEDIR
env:
INPUT_INSTALL: $INPUT_INSTALL
command: |
##
if [ "$INPUT_INSTALL" != "SKIP" ]; then
echo "Cleared install.log" | tee install.log
fi
############# PROMPT FOR SHORTCUT OPTIONS #############
- input_menu:
description: |
Since shortcuts created by Lutris do not work,
this installer will write the desktop entries.
Select how you would like to launch Vortex:
id: DESKTOP
options:
- SKIP: "Skip creating ANY desktop entries anywhere."
- LINK: "Create a link to the desktop entry in your applications folder on your Desktop."
- COPY: "Create a copy of the desktop entry in your applications folder and Desktop folder."
- LESS: "Create only a single desktop entry in your applications folder."
preselect: SKIP
########## PROMPT FOR VORTEX BACKUP REMOVAL ###########
- input_menu:
description: |
Would you like to remove all files ending in `.vortex_backup` from all game installation folders?
These are created automatically by vortex and can interfere with some modding tools.
This is normally unnecessary, but is included as an easy removal option.
Only use this option if you are certain you don't need backups from ANY GAMES.
id: BACKUPS
options:
- SKIP: "Skip deleting ANY files."
- LOUD: "Create a text file logging what files were deleted."
- MUTE: "Delete the files silently."
preselect: SKIP
- execute:
description:
working_dir: $GAMEDIR
env:
INPUT_BACKUPS: $INPUT_BACKUPS
command: |
#################### BEGIN SCRIPT #####################
echo "$(
#################### VORTEX PREFIX ####################
if [ "$VORTEX_PREFIX" == "" ]; then
VORTEX_PREFIX="$PWD"
fi
if [ ! -d "$VORTEX_PREFIX" ]; then
echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\""
exit -1
else
echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""
fi
#######################################################
#################### DELETE FILES #####################
if [ "$INPUT_BACKUPS" != "SKIP" ]; then
if [ -d "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" ]; then
echo "INFO: Located Steam directory \"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common\""
if [ "$INPUT_BACKUPS" == "MUTE" ]; then
find -L "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" -type f -name "*.vortex_backup" -delete
fi
if [ "$INPUT_BACKUPS" == "LOUD" ]; then
echo "INFO: Deleted the following .vortex_backup files:"
find -L "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common" -type f -name "*.vortex_backup" -print -delete
fi
else
echo "EROR: Invalid Steam directory \"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common\""
fi
fi
#######################################################
)" |& tee -a install.log
##################### END SCRIPT ######################
#################### BEGIN LINKING ####################
- execute:
description: Creating Symbolic Links Targeting Known Game Locations
working_dir: $GAMEDIR
env:
INPUT_GAMESLS: $INPUT_GAMESLS
command: |
##
## requires:
## bash https://www.gnu.org/software/bash/
## coreutils https://www.gnu.org/software/coreutils/
## findutils https://www.gnu.org/software/findutils/
## sed https://www.gnu.org/software/sed/
## xdg-mime https://freedesktop.org/wiki/Software/xdg-utils/
#################### BEGIN SCRIPT #####################
echo "$(
#################### VORTEX PREFIX ####################
if [ "$VORTEX_PREFIX" == "" ]; then
VORTEX_PREFIX="$PWD"
fi
if [ ! -d "$VORTEX_PREFIX" ]; then
echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\""
exit -1
else
echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""
fi
#######################################################
########### CREATE NECESSARY VORTEX FOLDERS ###########
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/Documents/My Games"
mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/Local Settings"
ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/Documents" "$VORTEX_PREFIX/drive_c/users/$USER/My Documents" 2>/dev/null
ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" "$VORTEX_PREFIX/drive_c/users/$USER/Application Data" 2>/dev/null
ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" "$VORTEX_PREFIX/drive_c/users/$USER/Local Settings/Application Data" 2>/dev/null
mkdir -p "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common"
mkdir -p "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config"
cat "$HOME/.steam/steam/steamapps/libraryfolders.vdf" | sed "s/\"\/.*\"$/\"C:\\\\\\\\Program Files \(x86\)\\\\\\\\Steam\"/g" | tee "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/libraryfolders.vdf" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf" 1>/dev/null
#######################################################
################ FUNCTION DECLARATIONS ################
game_attribute(){
declare -p ${1}\_${2} | grep -a -o ${1}\_${2}.* | sed "s/${1}\_${2}=//;s/\"//;s/\"$//"
}
library_apps(){
grep -a -o -e "\"apps\"[[:space:]]*{.*}$" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf" | grep -a -o -e "\".*\"[[:space:]]*\".*\"$" | sed "s/\"[[:space:]]*\".*\"$//;s/\"//"
}
manifest_attribute(){
grep -a -o -e "\"${2}\"[[:space:]]*\".*\"$" "${1}" | sed "s/\"${2}\"[[:space:]]*\"//;s/\"$//"
}
manifest_userconfig_attribute(){
manifest_attribute <(grep -a -o -P -z "\"UserConfig\"\s*{(\s*[^}]*\s*)*}" "${1}") "${2}"
}
manifest_mountedconfig_attribute(){
manifest_attribute <(grep -a -o -P -z "\"MountedConfig\"\s*{(\s*[^}]*\s*)*}" "${1}") "${2}"
}
find_appmanifests(){
STEAM_APPMANIFEST_PATHS=()
# shadow with locals to prevent bad input
local library=""
local manifest=""
local MANIFEST_LIST=()
echo "INFO: Will attempt linking on the following detected games:"
for library in "${STEAM_LIBRARY_PATHS[@]}"; do
MANIFEST_LIST+=($(find "$library/steamapps" -mindepth 1 -maxdepth 1 -type f -name "appmanifest_*\.acf"))
done
for manifest in "${MANIFEST_LIST[@]}"; do
echo "$(manifest_attribute "$manifest" "name")"
STEAM_APPMANIFEST_PATHS+=($(echo "$manifest"))
done
}
find_current_game_paths(){
local checkdir="$(echo "$CURRENT_APPMANIFEST" | sed "s/\/steamapps\/.\+/\/steamapps\/common\//")$CURRENT_INSTALLDIR"
if [ -d "$checkdir" ]; then
CURRENT_INSTALL_PATH="$checkdir"
checkdir="$(echo "$CURRENT_APPMANIFEST" | sed "s/\/steamapps\/.\+/\/steamapps\/compatdata\/$CURRENT_APPID\/pfx/")"
echo "GOOD: Found $CURRENT_GAME installation at $CURRENT_INSTALL_PATH"
if [ "$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_dest")" == "linux" ] && [ "$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_source")" == "windows" ]; then
echo "INFO: platform_override_dest: \"$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_dest")\" platform_override_source: \"$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST" "platform_override_source")\""
if [ -d "$checkdir" ]; then
CURRENT_PREFIX_PATH="$checkdir"
echo "GOOD: Found $CURRENT_GAME Proton Prefix at $CURRENT_PREFIX_PATH"
else
echo "INFO: Proton Prefix for $CURRENT_GAME not found at $checkdir."
checkdir="${STEAM_LIBRARY_PATHS[0]}/steamapps/compatdata/$CURRENT_APPID/pfx/"
echo "INFO: Trying $checkdir instead!"
if [ -d "$checkdir" ]; then
CURRENT_PREFIX_PATH="$checkdir"
echo "GOOD: Found $CURRENT_GAME Proton Prefix in default Steam Library at $CURRENT_PREFIX_PATH"
echo "WARN: This feature should only be automatically used for Steam Deck!"
else
CURRENT_PREFIX_PATH=""
echo "WARN: $CURRENT_GAME is configured for Proton but no Prefix was found!"
echo "WARN: Its Proton Prefix is missing or has not been run yet!"
echo "WARN: Launch the game with Proton via Steam before modding!"
fi
fi
elif [ -d "$checkdir" ]; then
CURRENT_PREFIX_PATH="$checkdir"
echo "WARN: $CURRENT_GAME isn't configured for Proton but a Prefix was found!"
echo "GOOD: Found $CURRENT_GAME Proton Prefix at $CURRENT_PREFIX_PATH"
else
CURRENT_PREFIX_PATH=""
echo "INFO: No Proton Prefix for $CURRENT_GAME found!"
fi
else
CURRENT_INSTALL_PATH=""
CURRENT_PREFIX_PATH=""
checkdir="$CURRENT_INSTALL_PATH/steamapps/compatdata/$CURRENT_APPID/pfx"
if [ -d "$checkdir" ]; then
echo "WARN: A Proton Prefix for $CURRENT_GAME exists at $checkdir but no installation was detected!"
echo "WARN: If $CURRENT_GAME was uninstalled, Steam may have left behind files, like save data it syncs with the Steam Cloud."
else
echo "INFO: No installation or Proton Prefix of $CURRENT_GAME found!"
fi
fi
}
link_sub_targets(){
local TARGET=""
local checklink=""
local DIR_LS=("${2}"/*)
for TARGET in "${DIR_LS[@]}"; do
local foldername="$(basename "$TARGET")"
checklink="${1}/$foldername"
if [ -h "$checklink" ]; then
unlink "$checklink"
fi
if [ "$foldername" != "Vortex" ] && [ "$foldername" != "openvr" ] && [ "$foldername" != "Microsoft" ] && [ -d "$TARGET" ]; then
ln -s "$TARGET" "${1}/"
fi
done
}
create_current_game_symlinks(){
if [ -d "$CURRENT_INSTALL_PATH" ]; then
local check="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/$CURRENT_INSTALLDIR"
if [ -h "$check" ]; then
unlink "$check"
fi
check="$CURRENT_INSTALL_PATH"
if [ -d "$check" ]; then
ln -s "$check" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/"
fi
check="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/appmanifest_$CURRENT_APPID.acf"
if [ -h "$check" ]; then
unlink "$check"
fi
check="$CURRENT_APPMANIFEST"
if [ -f "$check" ]; then
ln -s "$check" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/"
fi
fi
if [ -d "$CURRENT_PREFIX_PATH" ]; then
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/My Documents/My Games" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/My Documents/My Games"
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Roaming"
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Local"
link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/LocalLow"
fi
}
#######################################################
################### PATH CANDIDATES ###################
IFS=$'\n'
STEAM_LIBRARY_PATHS=()
echo "INFO: Steam Libraries:"
for library in $(grep -a -o "/[^\"]*" $HOME/.steam/steam/steamapps/libraryfolders.vdf); do
if [ -d "$library" ] && [ -d "$library/steamapps/common" ]; then
# remove any installdir or compatdata directories uninstalled games
rmdir --ignore-fail-on-non-empty $library/steamapps/common/* 2>/dev/null
if [ -d "$library/steamapps/compatdata/" ]; then
STEAM_COMPATDATA=("$(find "$library/steamapps/compatdata/" -type d -name "pfx")")
for compatdata in ${STEAM_COMPATDATA}; do
rmdir --ignore-fail-on-non-empty "$compatdata" 2>/dev/null
done
fi
STEAM_LIBRARY_PATHS+=("$library")
echo "$library"
fi
done
#######################################################
################### CREATE SYMLINKS ###################
find_appmanifests
for CURRENT_APPMANIFEST in "${STEAM_APPMANIFEST_PATHS[@]}"; do
CURRENT_APPID="$(manifest_attribute "$CURRENT_APPMANIFEST" "appid")"
CURRENT_GAME="$(manifest_attribute "$CURRENT_APPMANIFEST" "name")"
CURRENT_INSTALLDIR="$(manifest_attribute "$CURRENT_APPMANIFEST" "installdir")"
echo "INFO: CURRENT_APPID=\"$CURRENT_APPID\" CURRENT_GAME=\"$CURRENT_GAME\" CURRENT_INSTALLDIR=\"$CURRENT_INSTALLDIR\""
find_current_game_paths
create_current_game_symlinks
done
#######################################################
)" |& tee -a install.log
##################### END SCRIPT ######################
##################### END LINKING #####################
################### BEGIN REGEDITS ####################
######################## STEAM ########################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_CURRENT_USER\Software\Valve\Steam
type: REG_SZ
key: "SteamPath"
value: C:\\Program Files (x86)\\Steam
description: "Adding Steam to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_CURRENT_USER\Software\Valve\Steam
type: REG_SZ
key: "SteamExe"
value: C:\\Program Files (x86)\\Steam\\Steam.exe
description: "Adding Steam to the Wine Prefix Registry 2/2"
##################### DARK SOULS ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\NAMCO BANDAI GAMES\DARK SOULS
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to Die Edition
description: "Adding DARK SOULS to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\211420
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to Die Edition
description: "Adding DARK SOULS to the Wine Prefix Registry 2/2"
################ DARK SOULS REMASTERED ################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\570940
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS REMASTERED
description: "Adding DARK SOULS REMASTERED to the Wine Prefix Registry 1/1"
#################### Dark Souls II ####################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\236430
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II
description: "Adding DARK SOULS II to the Wine Prefix Registry 1/1"
####### Dark Souls II Scholar of the First Sin ########
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\335300
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II Scholar of the First Sin
description: "Adding DARK SOULS II Scholar of the First Sin to the Wine Prefix Registry 1/1"
################### DARK SOULS III ####################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\374320
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS III
description: "Adding DARK SOULS III to the Wine Prefix Registry 1/1"
##################### ELDEN RING ######################
- task: # Developer uninstall path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ELDEN RING_is1
type: REG_SZ
key: "InstallLocation"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING
description: "Adding ELDEN RING to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1245620
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING
description: "Adding ELDEN RING to the Wine Prefix Registry 2/2"
###################### Fallout 3 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3
description: "Adding Fallout 3 to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22300
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3
description: "Adding Fallout 3 to the Wine Prefix Registry 2/2"
######### Fallout 3 Game of the Year Edition ##########
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3 goty
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty
description: "Adding Fallout 3 Game of the Year Edition to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22370
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty
description: "Adding Fallout 3 Game of the Year Edition to the Wine Prefix Registry 2/2"
###################### Fallout 4 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout4
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4
description: "Adding Fallout 4 to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\377160
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4
description: "Adding Fallout 4 to the Wine Prefix Registry 2/2"
#################### Fallout 4 VR #####################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 4 VR
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR
description: "Adding Fallout 4 VR to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611660
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR
description: "Adding Fallout 4 VR to the Wine Prefix Registry 2/2"
##################### Fallout 76 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Fallout 76
type: REG_SZ
key: "Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76
description: "Adding Fallout 76 to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1151340
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76
description: "Adding Fallout 76 to the Wine Prefix Registry 2/2"
################## Fallout New Vegas ##################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\FalloutNV
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas
description: "Adding Fallout New Vegas to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22380
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas
description: "Adding Fallout New Vegas to the Wine Prefix Registry 2/2"
################ Kerbal Space Program #################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\220200
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Kerbal Space Program
description: "Adding Kerbal Space Program to the Wine Prefix Registry 1/1"
############# MechWarrior 5: Mercenaries ##############
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\784080
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\MechWarrior 5 Mercenaries
description: "Adding MechWarrior 5: Mercenaries to the Wine Prefix Registry 1/1"
############# Middle Earth: Shadow of War #############
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\356190
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ShadowOfWar
description: "Adding Middle Earth: Shadow of War to the Wine Prefix Registry 1/1"
################ Monster Hunter: World ################
- task: # Developer uninstall path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 582010
type: REG_SZ
key: "InstallLocation"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World
description: "Adding Monster Hunter: World to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\582010
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World
description: "Adding Monster Hunter: World to the Wine Prefix Registry 2/2"
###################### Morrowind ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Morrowind
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind
description: "Adding Morrowind to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22320
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind
description: "Adding Morrowind to the Wine Prefix Registry 2/2"
###################### Oblivion #######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Oblivion
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion
description: "Adding Oblivion to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22330
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion
description: "Adding Oblivion to the Wine Prefix Registry 2/2"
####################### Sekiro ########################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\814380
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Sekiro
description: "Adding Sekiro: Shadows Die Twice to the Wine Prefix Registry 1/1"
####################### Skyrim ########################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim
description: "Adding Skyrim to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\72850
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim
description: "Adding Skyrim to the Wine Prefix Registry 2/2"
############### Skyrim Special Edition ################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim Special Edition
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition
description: "Adding Skyrim Special Edition to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\489830
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition
description: "Adding Skyrim Special Edition to the Wine Prefix Registry 2/2"
###################### Skyrim VR ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim VR
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR
description: "Adding Skyrim VR to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611670
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR
description: "Adding Skyrim VR to the Wine Prefix Registry 2/2"
################### Stardew Valley ####################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\413150
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Stardew Valley
description: "Adding Stardew Valley to the Wine Prefix Registry 1/1"
##################### The Witcher #####################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\Witcher
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced Edition
description: "Adding The Witcher to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\20900
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced Edition
description: "Adding The Witcher to the Wine Prefix Registry 2/2"
###################### The Witcher 2 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 2
type: REG_SZ
key: "InstallFolder"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\the witcher 2
description: "Adding The Witcher 2 to the Wine Prefix Registry 1/1"
###################### The Witcher 3 ######################
- task: # Developer install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 3
type: REG_SZ
key: "InstallFolder"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3
description: "Adding The Witcher 3 to the Wine Prefix Registry 1/2"
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\209230
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3
description: "Adding The Witcher 3 to the Wine Prefix Registry 2/2"
####################### Valheim #######################
- task: # Steam install path
name: set_regedit
prefix: $GAMEDIR
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\892970
type: REG_SZ
key: "Installed Path"
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Valheim
description: "Adding Valheim to the Wine Prefix Registry 1/1"
#################### END REGEDITS #####################
- execute:
description: Deploying Selected Desktop Entry Choice
working_dir: $GAMEDIR
env:
INPUT_DESKTOP: $INPUT_DESKTOP
command: |
##
#################### BEGIN SCRIPT #####################
echo "$(
#################### VORTEX PREFIX ####################
if [ "$VORTEX_PREFIX" == "" ]; then
VORTEX_PREFIX="$PWD"
fi
if [ ! -d "$VORTEX_PREFIX" ]; then
echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\""
exit -1
else
echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\""
fi
#######################################################
################ CREATE DESKTOP ENTRY #################
WINE_BIN_PATH="$(dirname "$WINEBIN")"
DESKTOP="$HOME/Desktop"
DESKTOP_FNAME="vortex-wine-downloads-handler.desktop"
DESKTOP_APPLS="$HOME/.local/share/applications/"
DESKTOP_FPATH="$DESKTOP_APPLS$DESKTOP_FNAME"
DESKTOP_ENTRY=$(cat << END
[Desktop Entry]
Type=Application
Categories=Game;Network;
Path=
If that didn't work I would also request your libraryfolders.vdf
. I make a modified copy of that file into your Vortex installation prefix at VORTEX-PREFIX/drive_c/Program Files (x86)/Steam/steamapps/
. If you installed in the default location replace VORTEX-PREFIX
with vortex-mod-manager
. This may be where Steam tells all games on a drive to use a different compatdata path.
So, I would like you to move or delete all Oblivion content and reinstall if that's okay. I concur with your assessment; it was probably MO2 doing the reasonable thing and creating files in the most likely valid prefix necessary for Oblivion in a regular environment.
I just transfered a different game from the base storage to sd-card. The compdata folder was copied to the sd-card, but still exists on the base storage. When I manually delete the one on the base-drive, it creates a new one on the base-drive. There is also no symlink to the sd-card. Which means the one on the sd-card is completely pointless as steam does not use it -> this looks like a bug. With another game which was solely installed on the sd-card, the compdata folder was created on the base storage. I don't think ModOrganizer 2 was the problem here, just happens to find the same folder as vortex.
Don't worry about that, I have already thought of the solution for this situation exactly. I'm going to check the primary location, which should fail on a Steam Deck, then also check the default Steam Library's compatdata folder since that cannot be removed. My best guess is that Valve keeps the compatdata folder on the Steam Deck's main drive to allow your game saves to be backed up to the Steam Cloud even if the sd card is ejected. Entirely reasonable IMO. The actual size of the compatdata necessary for your games should also be very small anyways.
Looking forward to an easy working solution :)
Try the following symlinker Lutris extension corresponding to the installer you used AFTER cleaning Oblivion's files. If this works, it may also enable Vortex to detect the other games you have already installed, played once, and which I indicated are listed in the Supported or Untested categories above, like The Witcher 3.
Will do tomorrow
~I assumed this was due to Vortex creating the folder when setting up. Although my working theory is that it has to do with me trying to use Mod Organizer 2 beforehand and it creating that folder, because I found a
ModOrganizer
folder on there. In theinstall.log
below it looks like the folder on the sd-card was already present beforehand, which supports this theory.~
@MPritsch I just saw your edits after making my reply. I actually expected and saw for myself some of the behavior from Steam you're describing on my own system. I already added warning about some of these in previous versions of my installer, but opted to remove some to cleanup my logging.
EDIT: I just discovered when moving a game between drives that steam leaves behind the compdata folder on the base drive and creates a new one on the sd card. Deleting the one on the base drive still ignores the one on the sd-card and creates a new one upon being launched. This looks like a bug with steam/steam-os?
I believe it's related to how Steam tries to keep your game save files for Proton games untouched on a non-removable disk to guarantee it can be backed up. When you say, "creates a new one upon being launched." does that mean a new folder is created on the SD card library's compatdata directory or the default library's compatdata directory?
EDIT 2: Launching a game which was originally installed on the sd-card creates a compdata folder on the base drive. This means that there should never be a compdata folder on the sd-card. However the moving process seems to be broken in this regard. Not sure what vortex could do about that :/ Maybe a warning that there are multiple compdata folders?
That's tricky. I have refrained from using any file deleting commands which were not strictly necessary, and especially avoided touching any game or compatdata files directly. AFAIK Steam only cleans what it doesn't need to backup to the cloud, even if the save data in the game's compatdata directory has already been backed up or a new compatdata folder exists.
So, I would like you to move or delete all Oblivion content and reinstall if that's okay. I concur with your assessment; it was probably MO2 doing the reasonable thing and creating files in the most likely valid prefix necessary for Oblivion in a regular environment.
I just transfered a different game from the base storage to sd-card. The compdata folder was copied to the sd-card, but still exists on the base storage. When I manually delete the one on the base-drive, it creates a new one on the base-drive. There is also no symlink to the sd-card. Which means the one on the sd-card is completely pointless as steam does not use it -> this looks like a bug. With another game which was solely installed on the sd-card, the compdata folder was created on the base storage. I don't think ModOrganizer 2 was the problem here, just happens to find the same folder as vortex.
I'm not sure if it's a bug or intentional to support Steam Cloud saves/data. I think the best option is to ask users if they are on a Steam Deck and remove compatdata folders from the SD Card's library whenever they are detected, since as you indicated and I expected, those folders will only exist if you move a game onto the SD Card. Even installing directly to the SD Card won't make a compatdata folder for the game on the SD Card since that only happens on game launch, which will prompt Steam to make a folder on the main storage regardless. However I don't want to try deleting entire compatdata folders on any drives just yet. I will instead add a static warning message about games moved from the internal to removable storage. Really this issue hits the most difficult aspect of supporting the Steam Deck; handling the removable drive slot. I hadn't actually considered what that meant seriously till now.
~oops~
It is already stated above and in the installer you need to run the linker every time a new game is installed, however the removable drive slot adds a new condition. For example, if you have multiple SD Cards used to store games, each one needs to be mounted and have the linker run once to add the games installed to it to the Vortex prefix. If you add a game to it and want to mod it in Vortex, you need to run the linker again. For now that's tedious, but reasonable. There may be more answers to the drive configuration and/or potential for automation based on the libraryfolders.vdf
if it has more fields than a regular Steam install as well.
Thanks for the feedback!
So, I would like you to move or delete all Oblivion content and reinstall if that's okay.
Try the following symlinker Lutris extension corresponding to the installer you used AFTER cleaning Oblivion's files. If this works, it may also enable Vortex to detect the other games you have already installed, played once, and which I indicated are listed in the Supported or Untested categories above, like The Witcher 3.
@NicBOMB Instead of deleting I just renamed the common folder and the compdata folder on both internal storage and sd-card. After that I uninstalled Oblivion via Steam and reinstalled it. After the download I ran the symlinker and looked at the install.log:
GOOD: Found The Elder Scrolls IV: Oblivion installation at /run/media/mmcblk0p1/steamapps/common/Oblivion
INFO: platform_override_dest: "linux" platform_override_source: "windows"
INFO: Proton Prefix for The Elder Scrolls IV: Oblivion not found at /run/media/mmcblk0p1/steamapps/compatdata/22330/pfx
INFO: Trying /home/deck/.local/share/Steam/steamapps/compatdata/22330/pfx/ instead!
GOOD: Found The Elder Scrolls IV: Oblivion Proton Prefix in default Steam Library at /home/deck/.local/share/Steam/steamapps/compatdata/22330/pfx/
Looks like the correct folder was found after first searching on the sd-card.
I made a mistake because I then launched vortex. It complained about not being able to find the correct loot path. Also it shows all plugins as disabled, probably because the plugins.txt is missing in the default compdata configuration. So I moved the compdata folder and relaunched vortex but the error persisted.
Rerunning the symlinker again fixed it though.
@NicBOMB Instead of deleting I just renamed the common folder and the compdata folder on both internal storage and sd-card. After that I uninstalled Oblivion via Steam and reinstalled it. After the download I ran the symlinker and looked at the install.log:
GOOD: Found The Elder Scrolls IV: Oblivion installation at /run/media/mmcblk0p1/steamapps/common/Oblivion INFO: platform_override_dest: "linux" platform_override_source: "windows" INFO: Proton Prefix for The Elder Scrolls IV: Oblivion not found at /run/media/mmcblk0p1/steamapps/compatdata/22330/pfx INFO: Trying /home/deck/.local/share/Steam/steamapps/compatdata/22330/pfx/ instead! GOOD: Found The Elder Scrolls IV: Oblivion Proton Prefix in default Steam Library at /home/deck/.local/share/Steam/steamapps/compatdata/22330/pfx/
Looks like the correct folder was found after first searching on the sd-card.
All that looks great!
I made a mistake because I then launched vortex. It complained about not being able to find the correct loot path. Also it shows all plugins as disabled, probably because the plugins.txt is missing in the default compdata configuration. So I moved the compdata folder and relaunched vortex but the error persisted.
Rerunning the symlinker again fixed it though.
Where exactly did you move Oblivion's compatdata folder to? It should remain in the default /home/deck/.local/share/Steam/steamapps/compatdata/22330/
now. If it was still in the SD Card, then moving it to the compatdata folder alone would have resolved the issue. The links were already pointing there, although running the linker multiple times won't break anything.
Where exactly did you move Oblivion's compatdata folder to? It should remain in the default
/home/deck/.local/share/Steam/steamapps/compatdata/22330/
now. If it was still in the SD Card, then moving it to the compatdata folder alone would have resolved the issue. The links were already pointing there, although running the linker multiple times won't break anything.
I copied them to the internal storage. The sd-card now has no compdata folder for the game.
Where exactly did you move Oblivion's compatdata folder to?
I copied them to the internal storage. The sd-card now has no compdata folder for the game.
Prefect, that's exactly what I'd expect and recommend. Right now we are waiting on updates to the steam-for-linux issue I mentioned this issue in a few days ago.
I will add a script to move all game compatdata folders detected on the SD Card back to the internal storage for Steam Deck users. It will be another option like the Vortex Backup removal toggle in the current symlinker. If Valve wants the compatdata to remain on the internal storage only and/or implements my suggestion in that thread about linking the expected compatdata folder location in the removable drive to the file's location on the internal storage, the script will be relevant until the bug about moving the game to a library folder on a removable drive is resolved. If Valve wants the compatdata to follow the game's steam library location exactly, as is done currently when moving the game to another steam library folder, then the script will be immediately obsoleted.
Ive been trying to manage my already modded stardew valley installation.
@Yu-457 were you able to manage mods (download, install, deploy, remove, and uninstall) with Vortex in both Stardew Valley NATIVE and PROTON?
@NicBOMB Hey, not yet. I had a busy week and no time to try it yet. I will do this week(end) and give you a headsup. All my tests so far were only for the proton version
Ive been trying to manage my already modded stardew valley installation.
@Yu-457 were you able to manage mods (download, install, deploy, remove, and uninstall) with Vortex in both Stardew Valley NATIVE and PROTON?
Hey, so i managed to do some testing. and its been only partly succesfull. I did a reinstall of the whole proton setup. (i didnt uninstall anything before tho, idk how to do that under linux ^^°) after the reinstall the config file contained the new commands you mentioned as well. I did not manage to get it consistently to work. Overall the whole behaviour seemed to be weirdly inconsitent. thats what i tried ->
I tried to get the first mod from nexus, nothing happend. I changed firefox back to "always ask" and tried to figure out which proton link was the working one. After some clicking i got it to download once. I saved that option so firefox would not ask anymore. tried with a mod collection - nothing. Tried with a normal mod - nothing. set it back to always ask and tried again - worked. tried it again with another mod - stopped working again.
so in the end i managed to download and depoy smapi, but nothing else apart. sorry
im kinda done with stardew and might start the witcher 3 soonish. i can do some fresh testing with an unmodded game there. Maybe its the stardew installation thats kinda botched too already.
Hey, so i managed to do some testing. and its been only partly succesfull. I did a reinstall of the whole proton setup. (i didnt uninstall anything before tho, idk how to do that under linux ^^°)
Uninstall from Lutris and/or delete the prefix directory Vortex was installed to. This will sufficiently delete the app (unless Lutris decides not to delete anything). You may have some lingering desktop entries in your apps folder, however they will fail when used. For example, if on the plasma desktop (ie. steamdeck) the desktop environment itself should prompt for entry removal when trying an entry with a missing target. Since the literal `Path=` to Vortex is gone, the entry shouldn't execute. No cleanup script should be needed. Uninstall via Lutris or deleting Vortex manually then things will get cleaned up as they do. No files are ever moved by installing Vortex. Links are simply created in the Vortex directory. However, if installing mods then uninstalling Vortex, the mods _may_ remain. Specifically, if using the symlink deployment strategy, the mods may be deleted with Vortex depending on the mod downloads and staging folder locations (user specified). Mods installed via Hardlink deployment were unaffected by uninstalling in my experience.
after the reinstall the config file contained the new commands you mentioned as well. I did not manage to get it consistently to work. Overall the whole behaviour seemed to be weirdly inconsitent. thats what i tried ->
I tried to get the first mod from nexus, nothing happend. I changed firefox back to "always ask" and tried to figure out which proton link was the working one. After some clicking i got it to download once. I saved that option so firefox would not ask anymore. tried with a mod collection - nothing. Tried with a normal mod - nothing. set it back to always ask and tried again - worked. tried it again with another mod - stopped working again.
I strongly recommend setting Firefox to "always ask", then either re-login or `killall firefox` and try downloading and selecting when prompted again. If that doesn't work then I also recommend checking `~/.local/share/applications/mimeinfo.cache` It should have lines containing something like the following depending on the installer: ``` x-scheme-handler/nxm=vortex-proton-downloads-handler.desktop;vortex-wine-downloads-handler.desktop; x-scheme-handler/nxm-protocol=vortex-proton-downloads-handler.desktop;vortex-wine-downloads-handler.desktop; ``` The proton installer sets `vortex-proton-downloads-handler.desktop`. The wine installer sets `vortex-wine-downloads-handler.desktop`. If you install both, each will appear as a selectable option in the default applications list in your browser (like firefox). Make sure those are set correctly. I know you already saw it but I will link back to the earlier steps also mentioned to [fix downloading previously](https://github.com/Nexus-Mods/Vortex/issues/10686#issuecomment-1166563906), for those who haven't read that earlier comment.
so in the end i managed to download and depoy smapi, but nothing else apart. sorry
That is exactly what I needed! The default application configuration is a bit cumbersome when moving from one install to another, but it does download mods and install them. It's okay if you aren't doing further modding, that's still good to know for others who want to try deploying mods to Stardew Valley.
im kinda done with stardew and might start the witcher 3 soonish. i can do some fresh testing with an unmodded game there. Maybe its the stardew installation thats kinda botched too already.
Yeah, Stardew Valley requires two extensions for some reason?!? Feels like an extension problem. Nothing appears wrong with the Vortex setup. @Yu-457 Lmk how Witcher 3 goes too!
Is this ready to be published on lutris.net yet? It could be great if it could be published.
I get this when trying your script
I get this when trying your script
That should be included with the Lutris runtime AFAIK. Make sure to add the runner from the list in your wine runner settings for Lutris if it's not being downloaded automatically. I will make a version ready to publish rn. My script is already Steam Deck tested and is ready for general testing. Hopefully publishing a beta build will get more replies about mod deployment.
I get this when trying your script
That should be included with the Lutris runtime AFAIK. Make sure to add the runner from the list in your wine runner settings for Lutris if it's not being downloaded automatically. I will make a version ready to publish rn. My script is already Steam Deck tested and is ready for general testing. Hopefully publishing a beta build will get more replies about mod deployment.
The runner is installed, but this version isn't available, it worked with lutris-GE-Proton7-22 though
I don't know why I don't have a lot of wine/proton/proton-GE available
The runner is installed, but this version isn't available, it worked with lutris-GE-Proton7-22 though
I expected it to be safe to update the runner version more frequently, especially since Vortex appears to run on most any Wine version included by default with most distros, Lutris, AND latest. It's really everything else my script does to automate installing which makes Vortex convenient enough for end-users.
It seems other installers were affected by this exact same issue about lutris-GE-Proton7-16-x86_64
as well.
Thankfully we already know the wine installer is working and that version won't be outdated anytime soon so I'll get that uploaded. Users can manually select a specific wine runner version if they'd prefer to prevent any further updates. There's no downside to removing the version requirement altogether. The installer will continue running latest lutris wine instead.
I just submitted my script to the Vortex Mod Manager Lutris page after testing it. I had to flatten the bash scripts into one line each so the installer's execute tasks look awful now, but at least it installs. If there were a better strategy for easily setting up a wine prefix with the necessary registry keys or extensions didn't require such keys, then a simple bash script to install Vortex without Lutris would be a better solution.
```yaml
files:
- setup: https://github.com/Nexus-Mods/Vortex/releases/download/v1.5.13/vortex-setup-1.5.13.exe
game:
exe: drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe
install_complete_text: 'Vortex was installed successfully!
You can install games to any drive and use Hardlink Deployment
by creating a staging folder in the "Z:" drive!
All mounted drives should exist in the "Z:" drive (points to "/").
Use the Vortex suggestion or make a folder to substitute for the mod staging folder
if prompted.
Only Hardlink Deployment has been tested.
Some untested games will automatically select other deployment strategies.
Uninstalling Vortex will leave the desktop entry. It can be removed manually.
DO NOT use the Play button provided by Lutris to launch Vortex!
DO NOT use the Play button provided by Vortex to launch titles!
DO NOT USE THE LAUNCH BUTTON BELOW THIS TEXT'
installer:
- input_menu:
description: 'DO NOT CREATE A desktop shortcut, application menu shortcut, or
steam shortcut!
You can safely cancel installation and restart installation without those options,
now.
Since shortcuts created by Lutris will not work,
this installer will write the desktop entries.
Select how you would like to launch Vortex:
'
id: DESKTOP
options:
- LINK: Create a link to the desktop entry in your applications folder on your
Desktop.
- COPY: Create a copy of the desktop entry in your applications folder and Desktop
folder.
- LESS: Create only a single desktop entry in your applications folder.
preselect: LINK
- task:
app: win10 dotnet48 corefonts
description: Installing .NET 4.8 and Corefonts via winetricks
name: winetricks
prefix: $GAMEDIR
- execute:
command: 'echo "$(if [ "$VORTEX_PREFIX" == "" ];then VORTEX_PREFIX="$PWD";fi;if
[ ! -d "$VORTEX_PREFIX" ];then echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\"";exit
-1;else echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\"";fi;mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming";mkdir
-p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local";mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow";mkdir
-p "$VORTEX_PREFIX/drive_c/users/$USER/Documents/My Games";mkdir -p "$VORTEX_PREFIX/drive_c/users/$USER/Local
Settings";ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/Documents" "$VORTEX_PREFIX/drive_c/users/$USER/My
Documents" 2>/dev/null;ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming"
"$VORTEX_PREFIX/drive_c/users/$USER/Application Data" 2>/dev/null;ln -s -T "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local"
"$VORTEX_PREFIX/drive_c/users/$USER/Local Settings/Application Data" 2>/dev/null;mkdir
-p "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common";mkdir
-p "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config";cat "$HOME/.steam/steam/steamapps/libraryfolders.vdf"
| sed "s/\"\/.*\"$/\"C:\\\\\\\\Program Files \(x86\)\\\\\\\\Steam\"/g" | tee
"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/libraryfolders.vdf"
"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf"
1>/dev/null;game_attribute(){ declare -p ${1}\_${2} | grep -a -o ${1}\_${2}.*
| sed "s/${1}\_${2}=//;s/\"//;s/\"$//";};library_apps(){ grep -a -o -e "\"apps\"[[:space:]]*{.*}$"
"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf"
| grep -a -o -e "\".*\"[[:space:]]*\".*\"$" | sed "s/\"[[:space:]]*\".*\"$//;s/\"//";};manifest_attribute(){
grep -a -o -e "\"${2}\"[[:space:]]*\".*\"$" "${1}" | sed "s/\"${2}\"[[:space:]]*\"//;s/\"$//";};manifest_userconfig_attribute(){
manifest_attribute <(grep -a -o -P -z "\"UserConfig\"\s*{(\s*[^}]*\s*)*}" "${1}")
"${2}";};manifest_mountedconfig_attribute(){ manifest_attribute <(grep -a -o
-P -z "\"MountedConfig\"\s*{(\s*[^}]*\s*)*}" "${1}") "${2}";};find_appmanifests(){
STEAM_APPMANIFEST_PATHS=();local library="";local manifest="";local MANIFEST_LIST=();echo
"INFO: Will attempt linking on the following detected games:";for library in
"${STEAM_LIBRARY_PATHS[@]}";do MANIFEST_LIST+=($(find "$library/steamapps" -mindepth
1 -maxdepth 1 -type f -name "appmanifest_*\.acf"));done;for manifest in "${MANIFEST_LIST[@]}";do
echo "$(manifest_attribute "$manifest" "name")";STEAM_APPMANIFEST_PATHS+=($(echo
"$manifest"));done;};find_current_game_paths(){ local checkdir="$(echo "$CURRENT_APPMANIFEST"
| sed "s/\/steamapps\/.\+/\/steamapps\/common\//")$CURRENT_INSTALLDIR";if [
-d "$checkdir" ];then CURRENT_INSTALL_PATH="$checkdir";checkdir="$(echo "$CURRENT_APPMANIFEST"
| sed "s/\/steamapps\/.\+/\/steamapps\/compatdata\/$CURRENT_APPID\/pfx/")";echo
"GOOD: Found $CURRENT_GAME installation at $CURRENT_INSTALL_PATH";if [ "$(manifest_userconfig_attribute
"$CURRENT_APPMANIFEST" "platform_override_dest")" == "linux" ] && [ "$(manifest_userconfig_attribute
"$CURRENT_APPMANIFEST" "platform_override_source")" == "windows" ];then echo
"INFO: platform_override_dest: \"$(manifest_userconfig_attribute "$CURRENT_APPMANIFEST"
"platform_override_dest")\" platform_override_source: \"$(manifest_userconfig_attribute
"$CURRENT_APPMANIFEST" "platform_override_source")\"";if [ -d "$checkdir" ];then
CURRENT_PREFIX_PATH="$checkdir";echo "GOOD: Found $CURRENT_GAME Proton Prefix
at $CURRENT_PREFIX_PATH";else echo "INFO: Proton Prefix for $CURRENT_GAME not
found at $checkdir";checkdir="${STEAM_LIBRARY_PATHS[0]}/steamapps/compatdata/$CURRENT_APPID/pfx/";
echo "INFO: Trying $checkdir instead!"; if [ -d "$checkdir" ];then CURRENT_PREFIX_PATH="$checkdir";
echo "GOOD: Found $CURRENT_GAME Proton Prefix in default Steam Library at $CURRENT_PREFIX_PATH";echo
"WARN: This feature should only be automatically used for Steam Deck!";else
CURRENT_PREFIX_PATH="";echo "WARN: $CURRENT_GAME is configured for Proton but
no Prefix was found!";echo "WARN: Its Proton Prefix is missing or has not been
run yet!";echo "WARN: Launch the game with Proton via Steam before modding!";fi;fi;elif
[ -d "$checkdir" ];then CURRENT_PREFIX_PATH="$checkdir";echo "WARN: $CURRENT_GAME
isn''t configured for Proton but a Prefix was found!";echo "GOOD: Found $CURRENT_GAME
Proton Prefix at $CURRENT_PREFIX_PATH";else CURRENT_PREFIX_PATH="";echo "INFO:
No Proton Prefix for $CURRENT_GAME found!";fi;else CURRENT_INSTALL_PATH="";CURRENT_PREFIX_PATH="";checkdir="$CURRENT_INSTALL_PATH/steamapps/compatdata/$CURRENT_APPID/pfx";if
[ -d "$checkdir" ];then echo "WARN: A Proton Prefix for $CURRENT_GAME exists
at $checkdir but no installation was detected!";echo "WARN: If $CURRENT_GAME
was uninstalled, Steam may have left behind files, like save data it syncs with
the Steam Cloud.";else echo "INFO: No installation or Proton Prefix of $CURRENT_GAME
found!";fi;fi;};link_sub_targets(){ local TARGET="";local checklink="";local
DIR_LS=("${2}"/*);for TARGET in "${DIR_LS[@]}"; do local foldername="$(basename
"$TARGET")";checklink="${1}/$foldername";if [ -h "$checklink" ];then unlink
"$checklink";fi;if [ "$foldername" != "Vortex" ] && [ "$foldername" != "openvr"
] && [ "$foldername" != "Microsoft" ] && [ -d "$TARGET" ];then ln -s "$TARGET"
"${1}/";fi;done;};create_current_game_symlinks(){ if [ -d "$CURRENT_INSTALL_PATH"
];then local check="$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/$CURRENT_INSTALLDIR";
if [ -h "$check" ];then unlink "$check";fi;check="$CURRENT_INSTALL_PATH";if
[ -d "$check" ];then ln -s "$check" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/";fi;check="$VORTEX_PREFIX/drive_c/Program
Files (x86)/Steam/steamapps/appmanifest_$CURRENT_APPID.acf";if [ -h "$check"
];then unlink "$check";fi;check="$CURRENT_APPMANIFEST";if [ -f "$check" ];then
ln -s "$check" "$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/";fi;fi;if
[ -d "$CURRENT_PREFIX_PATH" ];then link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/My
Documents/My Games" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/My Documents/My
Games";link_sub_targets "$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming"
"$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Roaming";link_sub_targets
"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Local";link_sub_targets
"$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow" "$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/LocalLow";fi;};IFS=$''\n'';STEAM_LIBRARY_PATHS=();echo
"INFO: Steam Libraries:";for library in $(grep -a -o "/[^\"]*" $HOME/.steam/steam/steamapps/libraryfolders.vdf);
do if [ -d "$library" ] && [ -d "$library/steamapps/common" ];then rmdir --ignore-fail-on-non-empty
$library/steamapps/common/* 2>/dev/null;if [ -d "$library/steamapps/compatdata/"
];then STEAM_COMPATDATA=("$(find "$library/steamapps/compatdata/" -type d -name
"pfx")");for compatdata in ${STEAM_COMPATDATA}; do rmdir --ignore-fail-on-non-empty
"$compatdata" 2>/dev/null;done;fi;STEAM_LIBRARY_PATHS+=("$library");echo "$library";fi;done;find_appmanifests;for
CURRENT_APPMANIFEST in "${STEAM_APPMANIFEST_PATHS[@]}"; do CURRENT_APPID="$(manifest_attribute
"$CURRENT_APPMANIFEST" "appid")";CURRENT_GAME="$(manifest_attribute "$CURRENT_APPMANIFEST"
"name")";CURRENT_INSTALLDIR="$(manifest_attribute "$CURRENT_APPMANIFEST" "installdir")";echo
"INFO: CURRENT_APPID=\"$CURRENT_APPID\" CURRENT_GAME=\"$CURRENT_GAME\" CURRENT_INSTALLDIR=\"$CURRENT_INSTALLDIR\"";find_current_game_paths;create_current_game_symlinks;done)"
|& tee -a install.log'
description: Creating Symbolic Links Targeting Known Game Locations
env:
INPUT_GAMESLS: $INPUT_GAMESLS
working_dir: $GAMEDIR
- task:
description: Adding Steam to the Wine Prefix Registry 1/2
key: SteamPath
name: set_regedit
path: HKEY_CURRENT_USER\Software\Valve\Steam
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam
- task:
description: Adding Steam to the Wine Prefix Registry 2/2
key: SteamExe
name: set_regedit
path: HKEY_CURRENT_USER\Software\Valve\Steam
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\Steam.exe
- task:
description: Adding DARK SOULS to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\NAMCO BANDAI GAMES\DARK SOULS
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to
Die Edition
- task:
description: Adding DARK SOULS to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\211420
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls Prepare to
Die Edition
- task:
description: Adding DARK SOULS REMASTERED to the Wine Prefix Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\570940
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS REMASTERED
- task:
description: Adding DARK SOULS II to the Wine Prefix Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\236430
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II
- task:
description: Adding DARK SOULS II Scholar of the First Sin to the Wine Prefix
Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\335300
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Dark Souls II Scholar
of the First Sin
- task:
description: Adding DARK SOULS III to the Wine Prefix Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\374320
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\DARK SOULS III
- task:
description: Adding ELDEN RING to the Wine Prefix Registry 1/2
key: InstallLocation
name: set_regedit
path: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ELDEN
RING_is1
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING
- task:
description: Adding ELDEN RING to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1245620
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ELDEN RING
- task:
description: Adding Fallout 3 to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3
- task:
description: Adding Fallout 3 to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22300
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3
- task:
description: Adding Fallout 3 Game of the Year Edition to the Wine Prefix Registry
1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 3 goty
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty
- task:
description: Adding Fallout 3 Game of the Year Edition to the Wine Prefix Registry
2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22370
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 3 goty
- task:
description: Adding Fallout 4 to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout4
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4
- task:
description: Adding Fallout 4 to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\377160
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4
- task:
description: Adding Fallout 4 VR to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Fallout 4 VR
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR
- task:
description: Adding Fallout 4 VR to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611660
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout 4 VR
- task:
description: Adding Fallout 76 to the Wine Prefix Registry 1/2
key: Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Fallout
76
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76
- task:
description: Adding Fallout 76 to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\1151340
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout76
- task:
description: Adding Fallout New Vegas to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\FalloutNV
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas
- task:
description: Adding Fallout New Vegas to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22380
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Fallout New Vegas
- task:
description: Adding Kerbal Space Program to the Wine Prefix Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\220200
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Kerbal Space Program
- task:
description: 'Adding MechWarrior 5: Mercenaries to the Wine Prefix Registry 1/1'
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\784080
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\MechWarrior 5 Mercenaries
- task:
description: 'Adding Middle Earth: Shadow of War to the Wine Prefix Registry 1/1'
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\356190
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\ShadowOfWar
- task:
description: 'Adding Monster Hunter: World to the Wine Prefix Registry 1/2'
key: InstallLocation
name: set_regedit
path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam
App 582010
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World
- task:
description: 'Adding Monster Hunter: World to the Wine Prefix Registry 2/2'
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\582010
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Monster Hunter World
- task:
description: Adding Morrowind to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Morrowind
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind
- task:
description: Adding Morrowind to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22320
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Morrowind
- task:
description: Adding Oblivion to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\oblivion
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion
- task:
description: Adding Oblivion to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\22330
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Oblivion
- task:
description: 'Adding Sekiro: Shadows Die Twice to the Wine Prefix Registry 1/1'
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\814380
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Sekiro
- task:
description: Adding Skyrim to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim
- task:
description: Adding Skyrim to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\72850
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim
- task:
description: Adding Skyrim Special Edition to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim Special
Edition
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition
- task:
description: Adding Skyrim Special Edition to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\489830
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Skyrim Special Edition
- task:
description: Adding Skyrim VR to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Bethesda Softworks\Skyrim VR
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR
- task:
description: Adding Skyrim VR to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\611670
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\SkyrimVR
- task:
description: Adding Stardew Valley to the Wine Prefix Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\413150
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Stardew Valley
- task:
description: Adding The Witcher to the Wine Prefix Registry 1/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\Witcher
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced
Edition
- task:
description: Adding The Witcher to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\20900
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher Enhanced
Edition
- task:
description: Adding The Witcher 2 to the Wine Prefix Registry 1/1
key: InstallFolder
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 2
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\the witcher 2
- task:
description: Adding The Witcher 3 to the Wine Prefix Registry 1/2
key: InstallFolder
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\CD Project Red\The Witcher 3
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3
- task:
description: Adding The Witcher 3 to the Wine Prefix Registry 2/2
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\209230
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\The Witcher 3
- task:
description: Adding Valheim to the Wine Prefix Registry 1/1
key: Installed Path
name: set_regedit
path: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Valve\Steam\Apps\892970
prefix: $GAMEDIR
type: REG_SZ
value: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Valheim
- input_menu:
description: "The Vortex version indicated earlier in this installer is tested\
\ and guaranteed to run.\n\nREQUIRED MANUAL CHANGE:\n In order to keep Vortex\
\ from updating automatically change\n 'Settings > Vortex > Update' to 'No\
\ automatic updates'.\n\nOPTIONAL:\n Move/Copy your %APPDATA%/Vortex folder\
\ from a previous install into the appropriate location in the Vortex prefix\
\ now.\n This may launch Vortex with your stored preferences, like 'No automatic\
\ updates'.\n Only attempt this if Vortex launches the first time or you\
\ want to get adventurous with your file manager.\n"
options:
- waiting: Click here after reading the instructions.
- proceed: Continue to launch the vortex installer.
preselect: waiting
- task:
executable: setup
name: wineexec
prefix: $GAMEDIR
- execute:
command: 'echo "$(if [ "$VORTEX_PREFIX" == "" ]; then VORTEX_PREFIX="$PWD";fi;if
[ ! -d "$VORTEX_PREFIX" ]; then echo "ERROR: Invalid Vortex prefix \"$VORTEX_PREFIX\"";exit
-1;else echo "INFO: Using Vortex prefix at \"$VORTEX_PREFIX\"";fi;WINE_BIN_PATH="$(dirname
"$WINEBIN")";DESKTOP="$HOME/Desktop";DESKTOP_FNAME="vortex-wine-downloads-handler.desktop";DESKTOP_APPLS="$HOME/.local/share/applications/";DESKTOP_FPATH="$DESKTOP_APPLS$DESKTOP_FNAME";DESKTOP_ENTRY="$(echo
"[Desktop Entry]";echo "Type=Application";echo "Categories=Game;Network;";echo
"Path=
Hi there, I'm really looking forward to getting this working!
Unfortunately I wasn't able to... Trying to install the Wine version kept giving this error:
I also tried the proton version, but that threw up the same "Failed to retrieve wine" error that was mentioned above, even when I tried running it with lutris-GE-Proton7-22.
I look forward to trying out a newer version whenever it's available!
I also tried the proton version, but that threw up the same "Failed to retrieve wine" error that was mentioned above, even when I tried running it with lutris-GE-Proton7-22.
Look at the wine runner available versions, download a proton one and specify it in the .yaml
Hi there, I'm really looking forward to getting this working!
Unfortunately I wasn't able to... Trying to install the Wine version kept giving this error:
I also tried the proton version, but that threw up the same "Failed to retrieve wine" error that was mentioned above, even when I tried running it with lutris-GE-Proton7-22.
I look forward to trying out a newer version whenever it's available!
I recommend trying the version in the spoiler here. It was updated within the last 2 hours. ;)
Look at the wine runner available versions, download a proton one and specify it in the .yaml
That isn't necessary. The newer installer simply omits the hard version:
requirement entirely.
More than two weeks worth of improvements were just added to my installer. I recommend a clean reinstall, removing any old Vortex directory and installing with the latest as it has many feature improvements which may conflict with older installers. A clean install should not be necessary in the future. You may backup your users/$USER/AppData/Roaming/Vortex
folder before reinstalling, even for a clean install. Each installation is ~2GB excluding the Vortex folder since it should be migrated between versions and may contain any downloaded mods or in-app settings.
Changes:
lutris:vortex-mod-manager?revision=90249
I have more changes planned, though they are awaiting a fix I submitted to Lutris.
btw, @NicBOMB, why not make a repository so the changes can be tracked, people can open issues and PRs and all? :)
btw, @NicBOMB, why not make a repository so the changes can be tracked, people can open issues and PRs and all? :)
I was unsure about starting a repository myself since this feature request could actually have some action taken by the Vortex devs if they wanted to host this in something more official, like a Nexus-Mods/ Vortex-Lutris / repository. All my changes are tracked in the edit history of the comment for now, but I agree, this installer is getting very complex very rapidly and could use a separate repo for handling related installation issues and finding workarounds for not immediately resolvable issues, like the terminal colors node module trying to open a pipe to stdout to test if the system supports ANSI color sequences when no stdout even exists.
Right, yeah it could be really cool if it were under Nexus-Mods/Vortex-Lutris, you could have right to push to the repo too maybe?
Is it possible to contact the team maybe?
Vortex is already 5 pre-releases into v1.6.x and I have no new changes for the installer (any of my latest changes would require my Lutris PR to be merged). If auto-updating fails when the next full Vortex release drops I will make necessary fixes. Otherwise, I expect only version bumps to the installer's download link in the future.
Thanks for the time on this @NicBOMB, I am trying to run your installer but when I run the script from Lutris it returns the following: this installer requires steam on your system. Lutris does find my Steam games already
I am trying this script on a Steam Deck also
Thanks for the time on this @NicBOMB, I am trying to run your installer but when I run the script from Lutris it returns the following: this installer requires steam on your system. Lutris does find my Steam games already
I am trying this script on a Steam Deck also
Thanks for trying the installer, and on first party hardware soon too!
If Lutris informs you this installer requires steam on your system
then you are probably missing the steam
/steam-runtime
package. Those are not to be confused for Lutris' WINE steam. My installer dropped support for WINE steam early on. If the command which steam
does not find a steam executable, then you really are missing the steam runtime on your system.
#example commands and expected output
$ which steam
/usr/bin/steam
$ stat /usr/bin/steam
File: /usr/bin/steam -> /usr/bin/steam-runtime
Lutris steam library integration from your steam account is not used by my installer. The script I include reads the library files generated by Steam (native) directly on your system. Lutris' cli argument for finding Steam Libraries will miss empty ones, which would prevent my script from generating relevant errors about your Proton prefixes in the install.log
. I have tested this on 3 devices with steam installed and all of them have not encountered this issue. I added the required-binaries:
directive to my installer because my scripts contain commands which are required. Though they are part of the POSIX standard, not all distros install everything POSIX by default. Since steam is a requirement for the installer, I added it as well and don't plan on removing it unless this becomes a persistent issue. More information about your environment is needed before I can make effective changes to the installer about your issue. What distro are you on?
Hi @NicBOMB so I am on the Steam Deck, with his native distro on desktop mode. I didn't really tinker with it. I do have an SD card for the games but Steam should still be located on the main memory
Lutris is installed through the Discovery store
I would say, try flatseal? maybe Lutris can't access steam without giving it the rights
hi @FederAndInk I installed flatseal and gave Lutris all the directory permissions but still the same error
#example commands and expected output $ which steam /usr/bin/steam $ stat /usr/bin/steam File: /usr/bin/steam -> /usr/bin/steam-runtime
Hi @NicBOMB so I am on the Steam Deck, with his native distro on desktop mode. I didn't really tinker with it. I do have an SD card for the games but Steam should still be located on the main memory
Lutris is installed through the Discovery store
@dglavimans did the commands I suggested find the binaries?
hi @FederAndInk I installed flatseal and gave Lutris all the directory permissions but still the same error
You should follow the instructions on the Lutris download information page to install on Steam OS for the Steam Deck. https://lutris.net/downloads
@NicBOMB the which steam command does return /usr/bin/steam
but the stat /usr/bin/steam returns:
File: /usr/bin/steam -> /usr/bin/steam-jupiter
File: /usr/bin/steam -> /usr/bin/steam-jupiter Size: 22 Blocks: 8 IO Block: 4096 symbolic link Device: 0,32 Inode: 68037 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2022-07-26 21:42:55.000000000 +0200 Modify: 2022-05-26 22:31:36.000000000 +0200 Change: 2022-07-26 21:44:57.419999993 +0200 Birth: 2022-07-26 21:44:57.419999993 +0200
I also installed Lutris with the link you provided (and needed to do a few steps of the flatpak instructions beneath it to get it discovered in the discovery store)
So this is an alternative to This Request. I've been a proponent for a Linux Version of Vortex for quite a while but I've also had to described to me why it's a much better idea to run Vortex through Wine instead, since most of the games Vortex mods also has to be run through Wine (and/or Proton). I've installed Vortex using a Lutris-install script before, but it was an older version and I had to turn off the auto-updates.
When I attempted to install Vortex recently however, it just didn't work, Wine pretty much froze when I tried to start Vortex after the install. I attempted to install the official (and most recent) version of Vortex straight from Nexus, same problem. Lastly I attempted to switch computer that ran a different distro, but still same problem with both versions of Vortex.
So I pretty much request that a Official Lutris Install Script to be made available, so that Linux users can utilize the Vortex Mod manager, without having to make a native Linux version of the manager.