Steam for Linux

Steam for Linux

Steam guide : Installing a Windows application as a non-Steam game and Proton (Vortex Mod Manager)
Hello everyone,

Here is my new guide, it covers the installation of the famous Vortex Mod Manager as a non-Steam game but, not just limited to this application, it can be used as a base to install others. It is structured in an educational way and teaches you how to solve various inevitable problems to enjoy Proton to the fullest.

Feel free to use this thread for assistance, it should be more convenient than in the guide comments :)




This guide demonstrates how to install a Windows app as a non-steam game in order to start it with Proton.

In addition it will show you how to :
  • Manage the Proton launch parameters for the Steam and non-Steam games in a single file
  • Install the common redistributables in a Proton prefix without the need for winetricks or protontricks
  • Preserve the integrity of the Proton prefix (no system wine re-configurations for example)
  • How to integrate custom urls (like nxm://) in an application launched with Proton
  • How to create the desktop icon
  • And much more, basically, everything you need to know to handle Proton manually like a pro without third party between you Linux and Steam ;)



The chosen demonstration application is called Vortex Mod Manager, it is written by TanninOne from NexusMods [1] and it is widely used and recommended to install mods in different games such as Skyrim, Fallout 4 and a lot more. It also supports community developed extensions.

The latest Vortex tested version is : 1.4.8, 1.4.6, 1.3.22
The install instructions on Proton : 6.4-GE-1, 6.1-GE-2, 6.1-GE-2, 6.0-GE-1, 5.21-GE-1, 5.13-6, 4.11-13

https://steamcommunity.com/sharedfiles/filedetails/?id=2386287653
< >
Showing 1-4 of 4 comments
Great guide for beginners, nice job
Great guide!
It was all working for me until changing wine over to winxp for the dotnet 4.0 installation when this happened...

WINEPREFIX="${PFX}" "${PROTON_WINE}" winecfg -v winxp64

wineserver: using server-side synchronization.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
002c:fixme:winediag:LdrInitializeThunk wine-staging 8.0 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
006c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
006c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
006c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
006c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
00d8:err:xrandr:xrandr14_get_adapters Failed to get adapters
00d8:err:xrandr:xrandr14_get_adapters Failed to get adapters
00d8:err:xrandr:xrandr14_get_adapters Failed to get adapters
00d8:err:xrandr:xrandr14_get_adapters Failed to get adapters
0114:err:ole:apartment_add_dll couldn't load in-process dll L"C:\\windows\\system32\\uiautomationcore.dll"
0114:err:ole:com_get_class_object no class object {ff48dba4-60ef-4201-aa87-54103eef594e} could be created for context 0x1
0114:err:tabtip:create_uia_event_handler Failed to create IUIAutomation interface, hr 0x80070005

Any advice would be appreciated.
First real step and I couldn't even get past the syntax error. I'm not seeing a problem with ${ge_name} or ${X} and it's making me feel like a moron. I feel like I'm overlooking something super simple.

export GE_VER=
+ export GE_VER=
+ GE_VER=
export X="/home/${USER}/.local/share/Steam"
+ export X=/home/reidmore/.local/share/Steam
+ X=/home/reidmore/.local/share/Steam

if [[ -z "$GE_VER" ]]; then
ge_url="$(curl -s 'https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases' | grep browser_download_url.*gz | head -n 1 | cut -d '"' -f 4)"
else
ge_url="https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${GE_VER}/Proton-${GE_VER}.tar.gz"
fi
+ [[ -z '' ]]
++ curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases
++ grep 'browser_download_url.*gz'
++ head -n 1
++ cut -d '"' -f 4
+ ge_url=https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-32/GE-Proton8-32.tar.gz
ge_tar="$(basename "$ge_url")"
++ basename https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-32/GE-Proton8-32.tar.gz
+ ge_tar=GE-Proton8-32.tar.gz
ge_name="$(basename "$ge_tar" .tar.gz)"
++ basename GE-Proton8-32.tar.gz .tar.gz
+ ge_name=GE-Proton8-32
mkdir -p "${X}/compatibilitytools.d"
+ mkdir -p /home/reidmore/.local/share/Steam/compatibilitytools.d
cd "${X}/compatibilitytools.d"
+ cd /home/reidmore/.local/share/Steam/compatibilitytools.d
[[ -f "$ge_tar" ]] && rm "$ge_tar"
+ [[ -f GE-Proton8-32.tar.gz ]]
[[ -d "$ge_name" ]] && rm -fr "$ge_name"
+ [[ -d GE-Proton8-32 ]]
[[ -d "${X}/steamapps/common/${ge_name}" -o -L "${X}/steamapps/common/${ge_name}" ]] && rm -fr "${X}/steamapps/common/${ge_name}"
script.sh: line 21: syntax error in conditional expression
script.sh: line 21: syntax error near `-o'
script.sh: line 21: `[[ -d "${X}/steamapps/common/${ge_name}" -o -L "${X}/steamapps/common/${ge_name}" ]] && rm -fr "${X}/steamapps/common/${ge_name}"'
< >
Showing 1-4 of 4 comments
Per page: 1530 50

Date Posted: Mar 23, 2021 @ 7:05am
Posts: 4