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