Last active
March 13, 2026 17:54
-
-
Save Fusl/9086b89e8a7b9dfe84739dc89911e57e to your computer and use it in GitHub Desktop.
Making SteamVR on Linux not suck
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| # ymmv, this works well on my EndeavourOS Ryzen 9950X3D RTX 4090 system | |
| set -euxo pipefail | |
| # installing modern state of the art config management and build dependency packages | |
| # - jq is used for updating the steamvr.vrsettings file | |
| # - vulkan-headers is used to build SteamVRLinuxFixes | |
| if ! pacman -Qi jq vulkan-headers 1>/dev/null 2>&1; then | |
| sudo pacman -S jq vulkan-headers | |
| fi | |
| # steamvr-specific settings | |
| cat ~/.steam/steam/config/steamvr.vrsettings \ | |
| | jq -rM ' | |
| .steamvr.DisableAsyncReprojection = false | | |
| .steamvr.allowAsyncReprojection = true | | |
| .steamvr.disableAsyncReprojection = false | | |
| .steamvr.enableLinuxVulkanAsync = true | | |
| .steamvr.useFacetRenderer = true | |
| ' \ | |
| > ~/.steam/steam/config/steamvr.vrsettings.new | |
| cp -v ~/.steam/steam/config/steamvr.vrsettings ~/.steam/steam/config/steamvr.vrsettings.bak | |
| mv -v ~/.steam/steam/config/steamvr.vrsettings.new ~/.steam/steam/config/steamvr.vrsettings | |
| # building SteamVRLinuxFixes | |
| if ! test -d ./SteamVRLinuxFixes; then | |
| git clone --recursive https://github.com/BnuuySolutions/SteamVRLinuxFixes | |
| cd SteamVRLinuxFixes | |
| else | |
| cd SteamVRLinuxFixes | |
| git pull | |
| fi | |
| mkdir build.new | |
| cd build.new | |
| cmake .. | |
| cmake --build . | |
| cd .. | |
| rm -rf build.bak | |
| mv -v build build.bak || true | |
| mv -v build.new build | |
| # patching vrcompositor to hook SteamVRLinuxFixes | |
| cat ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh \ | |
| | grep -avE -e '^export (VK_ADD_LAYER_PATH|VK_INSTANCE_LAYERS)=' \ | |
| | sed '/^exec /i \ | |
| export VK_ADD_LAYER_PATH="'"${PWD}"'/build" \ | |
| export VK_INSTANCE_LAYERS=VK_LAYER_BNUUY_steamvr_linux_fixes' \ | |
| > ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh.new | |
| chmod +x ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh.new | |
| cp -v ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh.bak | |
| mv -v ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh.new ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher.sh | |
| echo "all done, enjoy motion-sickness-free steamvr on linux" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment