1 GETTING STEAM OVERLAY TO WORK WITH LUTRIS WINE GAMES (AKA. EASY
2 STEAM CONTROLLER FOR OVERWATCH)
4 [linux_gaming] 2018-10-09_11-00
6 o Reference: 2018-10-09_11-00_Getting_Steam_Overlay_t
7 o News link: https://www.reddit.com/r/linux_gaming/comments/9lcoly/getting_steam_overlay_to_work_with_lutris_wine/
11 So, after wasting countless hours unsuccessfully seeking for a
12 way to execute Lutris Wine games with a Steam Overlay (as I
13 was able to do with PlayOnLinux runners a long time ago) I
14 finally got it working today after finding [1]this post .
15 Following is the procedure using Overwatch as an example
16 (assuming you have it already installed through Lutris).
18 First run lutris -d lutris:rungame/overwatch in a terminal,
19 then exit the game asap and check the log trail. You'll need
20 retrieve a log like this (note this is only a partial stub):
23 INFO 2018-10-04 09:29:46,005 [dxvk]:Replacing
24 /home/qchto/games/lutris/overwatch/drive_c/windows/syswow64/d3-
25 d10_1 with DXVK version
27 INFO 2018-10-04 09:29:46,006 [dxvk]:Replacing
28 /home/qchto/games/lutris/overwatch/drive_c/windows/syswow64/d3-
31 DEBUG 2018-10-04 09:29:46,071 [game]:Launching Overwatch:
32 {'env': {'DXVK_CONFIG_FILE':
33 '/home/qchto/games/lutris/overwatch/dxvk.conf', 'DXVK_HUD':
34 '0', 'DXVK_STATE_CACHE_PATH':
35 '/home/qchto/games/lutris/overwatch', '__GL_SHADER_DISK_CACHE':
36 '1', '__GL_SHADER_DISK_CACHE_PATH':
37 '/home/qchto/games/lutris/overwatch', '__GL_SHADER_DISK_CACHE_-
38 SKIP_CLEANUP': '1', 'DRI_PRIME': '0', 'STEAM_RUNTIME':
39 '/home/qchto/.local/share/lutris/runtime/steam', 'LD_LIBRARY_P-
40 ATH': '/home/qchto/.local/share/lutris/runners/wine/staging-3.-
41 17-x86_64/lib:/home/qchto/.local/share/lutris/runners/wine/sta-
42 ging-3.17-x86_64/lib64:/usr/lib:/usr/lib32:/lib/x86_64-linux-g-
43 nu:/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-
44 linux-gnu:/home/qchto/.local/share/lutris/runtime/lib32:/home/-
45 qchto/.local/share/lutris/runtime/steam/i386/lib/i386-linux-gn-
46 u:/home/qchto/.local/share/lutris/runtime/steam/i386/lib:/home-
47 /qchto/.local/share/lutris/runtime/steam/i386/usr/lib/i386-lin-
48 ux-gnu:/home/qchto/.local/share/lutris/runtime/steam/i386/usr/-
49 lib:/home/qchto/.local/share/lutris/runtime/lib64:/home/qchto/-
50 .local/share/lutris/runtime/steam/amd64/lib/x86_64-linux-gnu:/-
51 home/qchto/.local/share/lutris/runtime/steam/amd64/lib:/home/q-
52 chto/.local/share/lutris/runtime/steam/amd64/usr/lib/x86_64-li-
53 nux-gnu:/home/qchto/.local/share/lutris/runtime/steam/amd64/us-
54 r/lib:$LD_LIBRARY_PATH', 'WINEDEBUG': '-all', 'WINEARCH':
56 '/home/qchto/.local/share/lutris/runners/wine/staging-3.17-x86-
57 _64/bin/wine', 'WINEPREFIX':
58 '/home/qchto/games/lutris/overwatch', 'WINEDLLOVERRIDES':
59 'd3d10,d3d10_1,d3d10core,d3d11,dxgi=n'}, 'command':
60 ['/home/qchto/.local/share/lutris/runners/wine/staging-3.17-x8-
61 6_64/bin/wine', '/home/qchto/games/lutris/overwatch/drive_c/Pr-
62 ogram Files (x86)/Battle.net/Battle.net Launcher.exe']}
64 DEBUG 2018-10-04 09:29:46,072 [thread]:Command env:
65 SDL_VIDEO_FULLSCREEN_DISPLAY="off" DXVK_CONFIG_FILE="/home/qch-
66 to/games/lutris/overwatch/dxvk.conf" DXVK_HUD="0"
67 DXVK_STATE_CACHE_PATH="/home/qchto/games/lutris/overwatch" __G-
68 L_SHADER_DISK_CACHE="1" __GL_SHADER_DISK_CACHE_PATH="/home/qch-
69 to/games/lutris/overwatch" __GL_SHADER_DISK_CACHE_SKIP_CLEANUP-
71 STEAM_RUNTIME="/home/qchto/.local/share/lutris/runtime/steam"
72 LD_LIBRARY_PATH="/home/qchto/.local/share/lutris/runners/wine/-
73 staging-3.17-x86_64/lib:/home/qchto/.local/share/lutris/runner-
74 s/wine/staging-3.17-x86_64/lib64:/usr/lib:/usr/lib32:/lib/x86_-
75 64-linux-gnu:/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu:/us-
76 r/lib/i386-linux-gnu:/home/qchto/.local/share/lutris/runtime/l-
77 ib32:/home/qchto/.local/share/lutris/runtime/steam/i386/lib/i3-
78 86-linux-gnu:/home/qchto/.local/share/lutris/runtime/steam/i38-
79 6/lib:/home/qchto/.local/share/lutris/runtime/steam/i386/usr/l-
80 ib/i386-linux-gnu:/home/qchto/.local/share/lutris/runtime/stea-
81 m/i386/usr/lib:/home/qchto/.local/share/lutris/runtime/lib64:/-
82 home/qchto/.local/share/lutris/runtime/steam/amd64/lib/x86_64-
83 linux-gnu:/home/qchto/.local/share/lutris/runtime/steam/amd64/-
84 lib:/home/qchto/.local/share/lutris/runtime/steam/amd64/usr/li-
85 b/x86_64-linux-gnu:/home/qchto/.local/share/lutris/runtime/ste-
86 am/amd64/usr/lib:$LD_LIBRARY_PATH" WINEDEBUG="-all"
87 WINEARCH="win64" WINE="/home/qchto/.local/share/lutris/runners-
88 /wine/staging-3.17-x86_64/bin/wine" WINEPREFIX="/home/qchto/ga-
89 mes/lutris/overwatch" WINEDLLOVERRIDES="d3d10,d3d10_1,d3d10cor-
92 DEBUG 2018-10-04 09:29:46,073 [thread]:Running command:
93 "/home/qchto/.local/share/lutris/runners/wine/staging-3.17-x86-
94 _64/bin/wine" "/home/qchto/games/lutris/overwatch/drive_c/Prog-
95 ram Files (x86)/Battle.net/Battle.net Launcher.exe"
97 DEBUG 2018-10-04 09:29:46,073 [thread]:Storing environment
98 variable SDL_VIDEO_FULLSCREEN_DISPLAY to off
100 DEBUG 2018-10-04 09:29:46,073 [thread]:Storing environment
101 variable DXVK_CONFIG_FILE to
102 /home/qchto/games/lutris/overwatch/dxvk.conf
106 Proceed by copying everything in the line after
107 [thread]:Command env: , separate every variable in a line and
108 preceed it by an export declaration. Then add the line
109 [thread]:Running command: at the end of your script (or even
110 better, add them to local variables and then execute it to end
111 with a file like this (note that the LUTRIS_WINE and GAME_EXE
112 variables are the "Running command" log line, and GAME_EXE can
113 be replaced to reference another executable, in this case my
114 local Overwatch.exe): #!/bin/bash
116 # used "lutris -d lutris:rungame/overwatch" to retrieve env
119 export SDL_VIDEO_FULLSCREEN_DISPLAY="off"
121 export DXVK_CONFIG_FILE="/home/qchto/games/lutris/overwatch/dx-
126 export DXVK_STATE_CACHE_PATH="/home/qchto/games/lutris/overwat-
129 export __GL_SHADER_DISK_CACHE="1"
131 export __GL_SHADER_DISK_CACHE_PATH="/home/qchto/games/lutris/o-
134 export __GL_SHADER_DISK_CACHE_SKIP_CLEANUP="1"
138 export STEAM_RUNTIME="/home/qchto/.local/share/lutris/runtime/-
141 export LD_LIBRARY_PATH="/home/qchto/.local/share/lutris/runner-
142 s/wine/staging-3.17-x86_64/lib:/home/qchto/.local/share/lutris-
143 /runners/wine/staging-3.17-x86_64/lib64:/usr/lib:/usr/lib32:/l-
144 ib/x86_64-linux-gnu:/lib/i386-linux-gnu:/usr/lib/x86_64-linux-
145 gnu:/usr/lib/i386-linux-gnu:/home/qchto/.local/share/lutris/ru-
146 ntime/lib32:/home/qchto/.local/share/lutris/runtime/steam/i386-
147 /lib/i386-linux-gnu:/home/qchto/.local/share/lutris/runtime/st-
148 eam/i386/lib:/home/qchto/.local/share/lutris/runtime/steam/i38-
149 6/usr/lib/i386-linux-gnu:/home/qchto/.local/share/lutris/runti-
150 me/steam/i386/usr/lib:/home/qchto/.local/share/lutris/runtime/-
151 lib64:/home/qchto/.local/share/lutris/runtime/steam/amd64/lib/-
152 x86_64-linux-gnu:/home/qchto/.local/share/lutris/runtime/steam-
153 /amd64/lib:/home/qchto/.local/share/lutris/runtime/steam/amd64-
154 /usr/lib/x86_64-linux-gnu:/home/qchto/.local/share/lutris/runt-
155 ime/steam/amd64/usr/lib:$LD_LIBRARY_PATH"
157 export WINEDEBUG="-all"
159 export WINEARCH="win64"
161 export WINE="/home/qchto/.local/share/lutris/runners/wine/stag-
162 ing-3.17-x86_64/bin/wine"
164 export WINEPREFIX="/home/qchto/games/lutris/overwatch"
166 export WINEDLLOVERRIDES="d3d10,d3d10_1,d3d10core,d3d11,dxgi=n"
168 LUTRIS_WINE="/home/qchto/.local/share/lutris/runners/wine/stag-
169 ing-3.17-x86_64/bin/wine"
171 GAME_EXE="/home/qchto/games/cache/data/battlenet/Overwatch/Ove-
174 "$LUTRIS_WINE" "$GAME_EXE"
176 Save this file wherever you like (e.g.
177 /home/qchto/games/launchers/overwatch.sh ), give it execution
178 permission (e.g. chmod +x
179 /home/qchto/games/launchers/overwatch.sh ). Now you should be
180 able to execute it in order to test it (e.g.
181 ./home/qchto/games/launchers/overwatch.sh ).
183 Finally, open Steam, add this script as a non-steam game
184 shortcut (make sure to select "All files" in the file selector
185 for the .sh files to appear), and it's done. You can now
186 execute this shortcut and get the Steam Overlay (even in Big
187 Picture with Steam Controller custom controller mappings)
188 working and ready to go.
190 As mentioned, this procedure should also work for any other
191 Lutris Wine game (although be warned that some specific
192 problems may arise depending on wine configuration). I have
193 personally tested it not only with Overwatch but also with
194 StarCraft II and it work perfectly on both.
196 Hope you find this helpful!
200 [1] https://forums.lutris.net/t/how-to-run-games-from-commandl-
201 ine-from-winesteam/95/5
208 Thanks. It's just that figuring out this took me far longer
209 that I expected it would, so if someone is looking into
210 achieving this luckily he/she will be able to just find this
211 post, so imo any effort put is worth to be reported.
215 Maybe i'm missing something, but i don't see the advantage over
216 just adding the launcher Lutris creates as non-Steam game. Works
217 well enough with Heroes of the Storm here...
220 For once, the autogenerated launchers does not save
221 environmental variables, so for games like Overwatch that
222 require them (for things like DXVK) it doesn't even launch
223 the game. And just to clear things up, using a .sh script
224 with lutris lutris:rungame/overwatch makes the app not report
225 properly for the Steam overlay to be recognized.
226 So by this method you're ensuring you're running the same
227 wine environment launched by Lutris without depending on it
228 to manage the process, therefore allowing for the Steam
229 overlay to properly load.
232 DKVK works fine for me. I notice no difference between
233 launching the game from within Lutris, via the launcher in
234 the menu or via the link in Steam.
237 Do you have DXVK installed at system level? Having its
238 variables exported to your session? Because after
239 checking a couple .desktop files generated by Lutris
240 (which tbh I was not even aware were created, as i3
241 makes a desktop seems redundant) I still don't see any
242 declaration other than the WINE prefix, and none of
243 them even launch the application they refer (tested for
244 Overwatch and Battle.net automatically generated
248 I don't have DXVK installed outside of Lutris and
249 have done nothing apart from the things necessary to
250 get the Blizzard app running.
257 Better figure out how to do it without Steam. That's the right
261 While I agree, to provide some background on why I went this
264 I spent a lot of time trying to configure sc-controller to
265 emulate a xbox-controller with gyro controlled right stick
266 but it simply wouldn't allow for a duplicated RStick binding
267 for the Steam Controller in both the right touchpad and the
268 gyro (unlike Steam Overlay that does).
270 Even when I gave up on this and finally tried to test
271 sc-controller in-game for Overwatch, it kept showing an
272 erratic behavior with the game loaded (still not sure why,
273 but when I tried to use the SC left tocuhpad it randomly
274 started sending other outputs that made the game unplayable
277 The Steam Overlay provide much more that just the ability to
278 use the Steam Controller with decent xinput bindings, but
279 also other features like ease to control the game with only a
280 controller (for example allowing to exit the game if
281 soft-locked without having to use kb&m), change the
282 Controller configuration on the fly more easily (without
283 depending on kb&m) and even have a more streamlined
284 experience by using features like the Steam Chord button and
285 Steam enabled screenshots, for example.
286 So it's not that I didn't tried to not use Steam..
289 Yeah, I agree sc-controller can still benefit from some
290 improvements. It's still not using upstream kernel driver
294 Gotta admit though, it's great to have alternatives
298 For sure, especially for those who aren't using
306 Nice work. Would be kinda nice to have a right click option just
307 saying add_to_Steam and this being handled in the background. :)
311 Since you gave it a try why not post benchmarks or general
312 feedback about it? was it worth it running it with proton?
313 GJ btw the linux comunity salutes you brave soldier!