Using funscripts on Linux with SteamVR

Using funscripts on Linux is hard. Most software is released for Windows, and even if a Linux version exists, a different component in your software chain likely doesn’t support Linux. Here is the method I’ve used to get my funscript playback working, both with and without VR, on Linux. I use Valve Index and SR6.

Software needed

  • SteamVR: Only supports X11. I couldn’t get this working on Wayland.
  • XTPlayer: The only natively Linux funscript player I know of. However, I encountered a few problems and fixed them in my fork. I don’t have releases yet, but I’ll see if the developer wants these changes merged.
  • vr-video-player: The only VR player that I could get working on Linux. DeoVR, Whirligig, and others either don’t start or have issues. Unfortunately this means no passthrough. Only works on X11.
  • xdotool: Only on X11. You might be able to work without this.

Process

  • Boot XTPlayer and ensure your Funscript-compatible device works correctly by playing any video
  • Start SteamVR and wait for homescreen
  • Start playing your VR video of choice in XTPlayer, then double click the video to go fullscreen
  • Alt tab to terminal, then start vr-video-player:
./vr-video-player $(xdotool selectwindow) # For rectangular video
./vr-video-player --sphere $(xdotool selectwindow) # For spherical video
  • The xdotool selectwindow command waits for you to click an X11 window. Click the fullscreened XTPlayer.
  • vr-video-player should now display the VR video while XTPlayer is controlling the playback + Funscript operation
  • If you need to change the video / you go out from fullscreen, you have to restart vr-video-player
  • If you want to jump to a different part in the video, you need to alt tab to XTPlayer. If you need to change your position / zoom level, you need to alt tab to vr-video-player.
  • As a bonus, for playing VR videos on Linux without Funscripts, I recommend mpv. Start video playback using mpv, fullscreen the video, and use vr-video-player as above. This way you don’t have to use the more complicated XTPlayer that has more nuances than the more basic mpv.

Also note this earlier topic that is a bit outdated now: Simple Linux guide for TCode devices

4 Likes

I use VR on Linux.

Previously(a few years ago) I used whirligig by installing LAVfilters into its proton prefix and using DirectShow. Of course no hardware acceleration so it was limiting.

Installing LAV Filters is no longer necessary to get media playback to work using windows applications; Although some applications like heresphere seem to perform better with LAV filters/Directshow (You can use steamtinkerlaunch to install LAV filters into the prefix, make sure to run it using the same version of proton that you use to launch the application.)

I have been using DeoVR (Streaming content from SLR) with Proton-GE-10.25 and it works fine up to 4K (1920P per eye) due to no hardware acceleration.

PLAY’A VR has audio/video sync issues.

The issue with higher resolution videos is that WINE’s current media foundation implementation does not support hardware acceleration and building and adding the VA-API or NV codec to the proton build is not enough. It will require changes to DXVK and WINE’s media foundation implementation to get hardware acceleration to work due to having to access VRAM.

As for getting SteamVR working on Wayland add this launch option to SteamVR:
GDK_BACKEND=x11 WAYLAND_DISPLAY=“” %command%

It should force SteamVR to use X11.

1 Like