Installer vortex-mod-manager-wine

files:
- setup: https://github.com/Nexus-Mods/Vortex/releases/download/v1.5.13/vortex-setup-1.5.13.exe
game:
  args: -d
  exe: drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe
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:
    app: win10 dotnet48 corefonts
    description: Installing .NET 4.8 and Corefonts via winetricks
    name: winetricks
    prefix: $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
- 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

      Updating Symbolic Links Targeting Known Game Locations'
    working_dir: $GAMEDIR
- task:
    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:
  HOME: $HOME
  USER: $USER
  VERSION: 1.5.13
description: A Wine prefix installer for Vortex mod manager! Includes full Steam Library
  detection across any mount points. Steam Deck compatible!
game_slug: vortex-mod-manager
gogslug: ''
humblestoreid: ''
installer_slug: vortex-mod-manager-wine
name: Vortex Mod Manager
notes: "Games installed in any detected steam library will be linked.\r\nGames not\
  \ supported by any Vortex Extension will still be linked.\r\nDoesn't include support\
  \ for Lutris' WINE Steam, only native.\r\nIncludes a manual script which adds any\
  \ games to the Vortex prefix WITHOUT REINSTALLING.\r\n\r\nThis installer requires\
  \ the following:\r\nSteam https://store.steampowered.com/about/\r\nbash https://www.gnu.org/software/bash/\r\
  \nsed https://www.gnu.org/software/sed/\r\ngrep https://www.gnu.org/software/grep/\r\
  \nsqlite3 https://www.sqlite.org/\r\nxdg-utils https://freedesktop.org/wiki/Software/xdg-utils/\r\
  \ncoreutils https://www.gnu.org/software/coreutils/\r\nfindutils https://www.gnu.org/software/findutils/"
runner: wine
script:
  files:
  - setup: https://github.com/Nexus-Mods/Vortex/releases/download/v1.5.13/vortex-setup-1.5.13.exe
  game:
    args: -d
    exe: drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe
  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:
      app: win10 dotnet48 corefonts
      description: Installing .NET 4.8 and Corefonts via winetricks
      name: winetricks
      prefix: $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
  - 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

        Updating Symbolic Links Targeting Known Game Locations'
      working_dir: $GAMEDIR
  - task:
      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:
    HOME: $HOME
    USER: $USER
    VERSION: 1.5.13
slug: vortex-mod-manager-wine
steamid: null
version: wine
year: 2016
{
  "game_slug": "vortex-mod-manager",
  "version": "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.\r\nGames not supported by any Vortex Extension will still be linked.\r\nDoesn't include support for Lutris' WINE Steam, only native.\r\nIncludes a manual script which adds any games to the Vortex prefix WITHOUT REINSTALLING.\r\n\r\nThis installer requires the following:\r\nSteam https://store.steampowered.com/about/\r\nbash https://www.gnu.org/software/bash/\r\nsed https://www.gnu.org/software/sed/\r\ngrep https://www.gnu.org/software/grep/\r\nsqlite3 https://www.sqlite.org/\r\nxdg-utils https://freedesktop.org/wiki/Software/xdg-utils/\r\ncoreutils https://www.gnu.org/software/coreutils/\r\nfindutils https://www.gnu.org/software/findutils/",
  "name": "Vortex Mod Manager",
  "year": 2016,
  "steamid": null,
  "gogslug": "",
  "humblestoreid": "",
  "runner": "wine",
  "slug": "vortex-mod-manager-wine",
  "installer_slug": "vortex-mod-manager-wine",
  "script": {
    "files": [
      {
        "setup": "https://github.com/Nexus-Mods/Vortex/releases/download/v1.5.13/vortex-setup-1.5.13.exe"
      }
    ],
    "game": {
      "args": "-d",
      "exe": "drive_c/Program Files/Black Tree Gaming Ltd/Vortex/Vortex.exe"
    },
    "install_complete_text": "Vortex was installed successfully!\nRECOMMENDED:\n\nUse the \"Execute script\" context menu option to remove unnecessary files added by wine during setup.\n\nOPTIONAL:\n\nClose Vortex, then Move/Copy your %APPDATA%/Vortex folder from a previous install into the appropriate location.\nThis will launch Vortex with your previous preferences including your nexus account, game extensions, themes, and storage locations.\nOnly 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.\n\nQUESTIONS & ANSWERS:\n\nQ: Can I use the Lutris or Steam shortcuts provided by Lutris?\nA: Yes! Steam will track when Lutris closes. Launching using these methods also appears to track Vortex processes for playtime/up-time more accurately too.\n\nQ: How do I add new Steam games to Vortex?\nA: This installer includes three bash scripts.\nThey can be triggered from within Lutris via the \"Execute script\" context menu option.\nvortex-prefix-updater.sh launches the next two scripts and writes their output to the install.log file.\nvortex-steam-symlinker.sh will update your games list. Newly added steam games will be linked to Vortex.\nvortex-entry-writer.sh will update your link handler and set it as the default for nxm: links.\nAll scripts can be run outside of Lutris safely by launching them from your file manager or on the command line.\n\nQ: Can I move Vortex via its game directory configuration in Lutris?\nA: Yes, though you should use the updater script immediately after the move to fix the download handler.\n\nQ: Where are my files when browsing within Vortex?\nA: The \"Z:\" drive points to \"/\", the root of your filesystem.\n\nQ: Can I make changes to the Vortex Lutris configuration?\nA: DO NOT CHANGE \"Prefix Command\" or \"Manual Script\" in the advanced options of the Lutris configuration for Vortex.\nGamemode has been tested and does work with Vortex, though is likely unnecessary.\nAll other options are untested and may have no affect on Vortex due to the Prefix Command completely overriding normal command execution.\n\nQ: Can I use Symlink Deployment or Move Deployment?\nA: Only Hardlink Deployment has been tested.\nSome untested game extensions may automatically select other deployment strategies.\nSee this issue comment for more information: https://github.com/Nexus-Mods/Vortex/issues/9629#issuecomment-1013658187\n\nQ: Vortex is running but Lutris thinks it has stopped?\nA: Lutris detects the restart of a monitored process as Vortex stopping when a Vortex download link is handled while Vortex is already running.\n\nQ: How does the url get to Vortex?\nA: This installer creates a hidden launcher to handle nxm links for Lutris.\n\nQ: Why is the url so slow to open in Vortex?\nA: The hidden launcher has to open the Lutris sqlite game database twice and write the url to a file before even launching Lutris.\nUnless 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.\nThe link handler may speed up when opening subsequent links (as in after the first link).\n\nQ: Why not make the scripts strictly sh POSIX compliant?\nA: 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.\n\nQ: Hello I represent the desktop entry escape character parser.\nA: 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": {
          "app": "win10 dotnet48 corefonts",
          "description": "Installing .NET 4.8 and Corefonts via winetricks",
          "name": "winetricks",
          "prefix": "$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"
        }
      },
      {
        "write_file": {
          "content": "#!/usr/bin/bash\nif [ ! -d \"$VORTEX_PREFIX\" ]; then\nVORTEX_PREFIX=\"$PWD\";\nfi;\nif [ ! -d \"$VORTEX_PREFIX\" ]; then\nVORTEX_PREFIX=\"$(realpath \"$(dirname \"$0\";)\";)\";\nfi;\nif [ -d \"$VORTEX_PREFIX\" ]; then\nprintf \"%s\\n\" \"INFO: Using Vortex prefix at \\\"$VORTEX_PREFIX\\\"\";\nelse\nprintf \"%s\\n\" \"EROR: Invalid Vortex prefix at \\\"$VORTEX_PREFIX\\\"\";\nexit 1;\nfi;\nDESKTOP=~/Desktop;\nDESKTOP_FNAME=\"vortex-downloads-handler.desktop\";\nDESKTOP_APPLS=~/.local/share/applications/;\nDESKTOP_FPATH=\"$DESKTOP_APPLS$DESKTOP_FNAME\";\nLUTRIS_DB_PATH=~/.local/share/lutris/pga.db;\nLUTRIS_CONFIGS=~/.config/lutris/games/;\nif [ -f \"$DESKTOP_APPLS/wine/Programs/Black Tree Gaming Ltd/Vortex.desktop\" ]; then\nrm -f \"$DESKTOP_APPLS/wine/Programs/Black Tree Gaming Ltd/Vortex.desktop\";\nrmdir --ignore-fail-on-non-empty -p \"$DESKTOP_APPLS/wine/Programs/Black Tree Gaming Ltd\";\nfi;\nif [ -f \"$DESKTOP_FPATH\" ]; then\nrm -f \"$DESKTOP_FPATH\";\nfi;\nprintf \"%s\\n\" \"INFO: Updating nxm link handling for Vortex!\";\nprintf \"%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\" \\\n\"[Desktop Entry]\" \\\n\"Categories=Game;Network;\" \\\n\"Comment[en_US]=NXM Protocol Download Handler\" \\\n\"Comment=NXM Protocol Download Handler\" \\\n\"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;\\\\\\\\\\\")\\\"\" \\\n\"GenericName[en_US]=Writes the provided nxm url as an argument to Vortex by editing the Lutris game config for Vortex twice before launching.\" \\\n\"GenericName=Writes the provided nxm url as an argument to Vortex by editing the Lutris game config for Vortex twice before launching.\" \\\n\"Icon=lutris_vortex-mod-manager\" \\\n\"MimeType=x-scheme-handler/nxm-protocol;x-scheme-handler/nxm;\" \\\n\"Name[en_US]=Vortex\" \\\n\"Name=Vortex\" \\\n\"NoDisplay=true\" \\\n\"Path=$VORTEX_PREFIX\" \\\n\"StartupNotify=true\" \\\n\"Terminal=false\" \\\n\"Type=Application\" \\\n> \"$DESKTOP_FPATH\";\nxdg-mime default \"$DESKTOP_FPATH\" x-scheme-handler/nxm x-scheme-handler/nxm-protocol;\nfix_mimetypes(){\nif [ -f \"$1\" ]; then\nprintf \"%s\\n\" \"INFO: Fixing mimetype association of nxm: links in \\\"$1\\\"\";\nsed -E -i \"s/x-scheme-handler\\/nxm=[^[=$=]]\\+/x-scheme-handler\\/nxm=$DESKTOP_FNAME;/\" \"$1\";\ncheck=\"$(grep -a -o -e \"x-scheme-handler/nxm=$DESKTOP_FNAME;\" \"$1\")\";\nif [ -z \"$check\" ]; then\nprintf \"%s\\n\" \"x-scheme-handler/nxm=$DESKTOP_FNAME;\" >> \"$1\";\nfi;\nsed -E -i \"s/x-scheme-handler\\/nxm-protocol=[^[=$=]]\\+/x-scheme-handler\\/nxm-protocol=$DESKTOP_FNAME;/\" \"$1\";\ncheck=\"$(grep -a -o -e \"x-scheme-handler/nxm-protocol=$DESKTOP_FNAME;\" \"$1\")\"\nif [ -z \"$check\" ]; then\nprintf \"%s\\n\" \"x-scheme-handler/nxm-protocol=$DESKTOP_FNAME;\" >> \"$1\";\nfi;\nelse\nprintf \"%s\\n%s\\n%s\\n\\n\" \"$2\" \"x-scheme-handler/nxm=$DESKTOP_FNAME;\" \"x-scheme-handler/nxm-protocol=$DESKTOP_FNAME;\" > \"$1\";\nfi;\n};\nfix_mimetypes \"$DESKTOP_APPLS\"mimeinfo.cache \"[MIME Cache]\";\nfix_mimetypes \"$DESKTOP_APPLS\"defaults.list \"[Default Applications]\";\nprintf \"%s\\n\" \"DONE: Made a desktop entry for Vortex at \\\"$DESKTOP_FPATH\\\"\";\n",
          "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\nif [ ! -d \"$VORTEX_PREFIX\" ]; then\nVORTEX_PREFIX=\"$PWD\";\nfi;\nif [ ! -d \"$VORTEX_PREFIX\" ]; then\nVORTEX_PREFIX=\"$(realpath \"$(dirname \"$0\";)\";)\";\nfi;\nif [ -d \"$VORTEX_PREFIX\" ]; then\nprintf \"%s\\n\" \\\n\"INFO: Using Vortex prefix at \\\"$VORTEX_PREFIX\\\"\";\nelse\nprintf \"%s\\n\" \\\n\"EROR: Invalid Vortex prefix at \\\"$VORTEX_PREFIX\\\"\";\nexit 1;\nfi;\nrmlink(){\nif [ -h \"$1\" ];\nthen unlink \"$1\";\nfi;\n}\nmklink(){\nrmlink \"$2\";\nln -s -T \"$1\" \"$2\";\n}\nmanifest_attribute(){\ngrep -a -o -e \"\\\"$2\\\"[[:space:]]*\\\".*\\\"$\" \"$1\" \\\n| sed \"s/\\\"$2\\\"[[:space:]]*\\\"//;s/\\\"$//\";\n};\nmanifest_userconfig_attribute(){\nmanifest_attribute \\\n<(grep \\\n-a -o -P -z \\\n\"\\\"UserConfig\\\"\\s*{(\\s*[^}]*\\s*)*}\" \\\n\"$1\"\\\n) \"$2\";\n};\nmanifest_mountedconfig_attribute(){\nmanifest_attribute \\\n<(grep \\\n-a -o -P -z \\\n\"\\\"MountedConfig\\\"\\s*{(\\s*[^}]*\\s*)*}\" \\\n\"$1\"\\\n) \"$2\";\n};\nlink_sub_targets(){\nTARGET=\"\";\nDIR_LS=(\"$2\"/*);\nfor TARGET in \"${DIR_LS[@]}\"; do\nfoldername=\"$(basename \"$TARGET\")\";\nchecklink=\"$1/$foldername\";\nrmlink \"$checklink\";\nif [ \"$foldername\" != \"Vortex\" ] && \\\n[ \"$foldername\" != \"openvr\" ] && \\\n[ \"$foldername\" != \"Microsoft\" ] && \\\n[ -d \"$TARGET\" ]; then\nln -s \"$TARGET\" \"$1/\";\nfi;\ndone;\n};\nmkdir -p \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/Documents/My Games\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/Local Settings\" \\\n\"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common\" \\\n\"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config\";\nmklink \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/Documents\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/My Documents\";\nmklink \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/Application Data\";\nmklink \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local\" \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/Local Settings/Application Data\";\nsed \"s/\\\"\\/.*\\\"$/\\\"C:\\\\\\\\\\\\\\\\Program Files \\(x86\\)\\\\\\\\\\\\\\\\Steam\\\"/g\" < \\\n~/.steam/steam/steamapps/libraryfolders.vdf |& tee \\\n\"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/libraryfolders.vdf\" \\\n\"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/config/libraryfolders.vdf\" \\\n1>/dev/null;\nSTEAM_LIBRARY_PATHS=();\nwhile read -r library; do\nrmdir --ignore-fail-on-non-empty \"$library\"/steamapps/common/* 2>/dev/null;\nif [ -d \"$library\" ] && [ -d \"$library/steamapps/common\" ]; then\nif [ -d \"$library/steamapps/compatdata/\" ]; then\nSTEAM_COMPATDATA=(\"$(find \"$library/steamapps/compatdata/\" -type d -name \"pfx\")\");\nfor compatdata in \"${STEAM_COMPATDATA[@]}\"; do\nrmdir --ignore-fail-on-non-empty \"$compatdata\" 2>/dev/null;\ndone;\nfi;\nSTEAM_LIBRARY_PATHS+=(\"$library\");\nfi;\ndone < <(grep -a -o -e \"/[^\\\"]*\" ~/.steam/steam/steamapps/libraryfolders.vdf);\nfor library in \"${STEAM_LIBRARY_PATHS[@]}\"; do\nprintf \"%s\\n\" \"INFO: Found Steam Library at \\\"$library\\\"! Linking all games in the library:\";\nMANIFESTS=();\nreadarray -t MANIFESTS < <(find \"$library/steamapps\" -mindepth 1 -maxdepth 1 -type f -name \"appmanifest_*\\.acf\");\nfor CURRENT_APPMANIFEST in \"${MANIFESTS[@]}\"; do\nCURRENT_APPID=\"$(manifest_attribute \"$CURRENT_APPMANIFEST\" \"appid\")\";\nCURRENT_GAME=\"$(manifest_attribute \"$CURRENT_APPMANIFEST\" \"name\")\";\nCURRENT_INSTALLDIR=\"$(manifest_attribute \"$CURRENT_APPMANIFEST\" \"installdir\")\";\nprintf \"%s\\n\" \\\n\"INFO: \\\nCURRENT_APPID=\\\"$CURRENT_APPID\\\" \\\nCURRENT_GAME=\\\"$CURRENT_GAME\\\" \\\nCURRENT_INSTALLDIR=\\\"$CURRENT_INSTALLDIR\\\"\\\n\";\ncheckdir=\"$(\\\nprintf \"%s\" \"$CURRENT_APPMANIFEST\" | \\\nsed \"s/\\/steamapps\\/.\\+/\\/steamapps\\/common\\//\"\\\n)$CURRENT_INSTALLDIR\";\nif [ -d \"$checkdir\" ]; then\nCURRENT_INSTALL_PATH=\"$checkdir\";\ncheckdir=\"$(\\\nprintf \"%s\" \"$CURRENT_APPMANIFEST\" | \\\nsed \"s/\\/steamapps\\/.\\+/\\/steamapps\\/compatdata\\/$CURRENT_APPID\\/pfx/\"\\\n)\";\nprintf \"%s\\n\" \\\n\"GOOD: Found $CURRENT_GAME installation at \\\"$CURRENT_INSTALL_PATH\\\"\";\nif [ \"$(manifest_userconfig_attribute \\\n\"$CURRENT_APPMANIFEST\" \\\n\"platform_override_dest\"\\\n)\" == \"linux\" ] && \\\n[ \"$(manifest_userconfig_attribute \\\n\"$CURRENT_APPMANIFEST\" \\\n\"platform_override_source\"\\\n)\" == \"windows\" ];\nthen\nprintf \"%s\\n\" \\\n\"INFO: platform_override_dest: \\\n\\\"$(manifest_userconfig_attribute \\\n\"$CURRENT_APPMANIFEST\" \\\n\"platform_override_dest\"\\\n)\\\" platform_override_source: \\\n\\\"$(manifest_userconfig_attribute \\\n\"$CURRENT_APPMANIFEST\" \\\n\"platform_override_source\"\\\n)\\\"\\\n\";\nif [ -d \"$checkdir\" ]; then\nCURRENT_PREFIX_PATH=\"$checkdir\";\nprintf \"%s\\n\" \\\n\"GOOD: Found $CURRENT_GAME \\\nProton Prefix at \\\n\\\"$CURRENT_PREFIX_PATH\\\"\\\n\";\nelse\ncheckdir=\"${STEAM_LIBRARY_PATHS[0]}/steamapps/compatdata/$CURRENT_APPID/pfx/\";\nprintf \"%s\\n%s\\n\" \\\n\"INFO: Proton Prefix for \\\n$CURRENT_GAME not found at \\\"$checkdir\\\".\" \\\n\"INFO: Trying \\\"$checkdir\\\" instead!\";\nif [ -d \"$checkdir\" ]; then\nCURRENT_PREFIX_PATH=\"$checkdir\";\nprintf \"%s\\n%s\\n\" \\\n\"GOOD: Found $CURRENT_GAME Proton Prefix \\\nin default Steam Library at \\\n\\\"$CURRENT_PREFIX_PATH\\\"\" \\\n\"WARN: This feature should only be \\\nautomatically used on a Steam Deck!\";\nelse\nCURRENT_PREFIX_PATH=\"\";\nprintf \"%s\\n%s\\n%s\\n\" \\\n\"WARN: $CURRENT_GAME is configured for Proton but no Prefix was found!\" \\\n\"WARN: Its Proton Prefix is missing or has not been run yet!\" \\\n\"WARN: Launch the game with Proton via Steam before modding!\";\nfi;\nfi;\nelif [ -d \"$checkdir\" ]; then\nCURRENT_PREFIX_PATH=\"$checkdir\";\nprintf \"%s\\n%s\\n\" \\\n\"WARN: $CURRENT_GAME isn't configured for Proton but a Prefix was found!\" \\\n\"GOOD: Found $CURRENT_GAME Proton Prefix at \\\"$CURRENT_PREFIX_PATH\\\"\";\nelse\nCURRENT_PREFIX_PATH=\"\";\nprintf \"%s\\n\" \"INFO: No Proton Prefix for $CURRENT_GAME found!\";\nfi;\nelse\nCURRENT_INSTALL_PATH=\"\";\nCURRENT_PREFIX_PATH=\"\";\ncheckdir=\"$CURRENT_INSTALL_PATH/steamapps/compatdata/$CURRENT_APPID/pfx\";\nif [ -d \"$checkdir\" ]; then\nprintf \"%s\\n%s\\n\" \\\n\"WARN: A Proton Prefix for $CURRENT_GAME exists at \\\"$checkdir\\\" but no installation was detected!\" \\\n\"WARN: If $CURRENT_GAME was uninstalled, Steam may have left behind files, like save data it syncs with the Steam Cloud.\";\nelse\nprintf \"%s\\n\" \"INFO: No installation or Proton Prefix of $CURRENT_GAME found!\";\nfi;\nfi;\nif [ -d \"$CURRENT_INSTALL_PATH\" ]; then\ncheckdir=\"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/$CURRENT_INSTALLDIR\";\nrmlink \"$checkdir\";\ncheckdir=\"$CURRENT_INSTALL_PATH\";\nif [ -d \"$checkdir\" ]; then\nln -s \"$checkdir\" \"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/common/\";\nfi;\ncheckdir=\"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/appmanifest_$CURRENT_APPID.acf\";\nrmlink \"$checkdir\";\ncheckdir=\"$CURRENT_APPMANIFEST\";\nif [ -f \"$checkdir\" ]; then\nln -s \"$checkdir\" \"$VORTEX_PREFIX/drive_c/Program Files (x86)/Steam/steamapps/\";\nfi;\nfi;\nif [ -d \"$CURRENT_PREFIX_PATH\" ]; then\nlink_sub_targets \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/My Documents/My Games\" \\\n\"$CURRENT_PREFIX_PATH/drive_c/users/steamuser/My Documents/My Games\";\nlink_sub_targets \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Roaming\" \\\n\"$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Roaming\";\nlink_sub_targets \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/Local\" \\\n\"$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/Local\";\nlink_sub_targets \\\n\"$VORTEX_PREFIX/drive_c/users/$USER/AppData/LocalLow\" \\\n\"$CURRENT_PREFIX_PATH/drive_c/users/steamuser/AppData/LocalLow\";\nfi;\ndone;\ndone;\nprintf \"%s\\n\" \"DONE: Finished linking all detected Steam Library folders!\";\n",
          "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\nif [ ! -d \"$VORTEX_PREFIX\" ]; then\nVORTEX_PREFIX=\"$PWD\";\nfi;\nif [ ! -d \"$VORTEX_PREFIX\" ]; then\nVORTEX_PREFIX=\"$(realpath \"$(dirname \"$0\";)\";)\";\nfi;\nif [ -d \"$VORTEX_PREFIX\" ]; then\nprintf \"%s\\n\" \\\n\"INFO: Using Vortex prefix at \\\"$VORTEX_PREFIX\\\"\" \\\n| tee install.log;\nelse\nprintf \"%s\\n\" \\\n\"EROR: Invalid Vortex prefix at \\\"$VORTEX_PREFIX\\\"\" \\\n| tee install.log;\nexit 1;\nfi;\n\"$VORTEX_PREFIX\"/vortex-steam-symlinker.sh 2>&1 | tee -a install.log;\n\"$VORTEX_PREFIX\"/vortex-entry-writer.sh 2>&1 | tee -a install.log;\n",
          "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": {
          "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": {
      "HOME": "$HOME",
      "USER": "$USER",
      "VERSION": "1.5.13"
    }
  }
}
Back to game