cross-posted from: https://lemmit.online/post/2209265

This is an automated archive made by the Lemmit Bot.

The original was posted on /r/steamdeck by /u/je7ebel on 2024-02-19 10:49:35.


  1. install sunshine on host (and needed programs: moondeckbuddy, ViGEmBus)

  2. download and install virtual monitor on host, save files on folder C:\IddSampleDriver

  3. From Windows, open display settings and configure the new virtual screen with the steamdeck resolution 1280x800

  4. download multimonitortool From nirsoft and unrar files on C:\IddSampleDriver folder

  5. install moonlight on steamdeck from desktop mode with discover app

  6. pair moonlight with sunshine

  7. from first time run multimonitortool, and write down the names of the adapters, you should have a virtual monitor with adapter IddSampleDriver

  8. write the following cmd scripts in C:\IddSampleDriver folder, note the display names are same From multimonitortool gui (this can vary From yours)

Steamdeck-on.cmd

cd C:\IddSampleDriver
MultiMonitorTool.exe /enable \\.\DISPLAY9
MultiMonitorTool.exe /turnoff \\.\DISPLAY1
MultiMonitorTool.exe /turnoff \\.\DISPLAY2
MultiMonitorTool.exe /SetPrimary \\.\DISPLAY9

Steamdeck-off.cmd

cd C:\IddSampleDriver
MultiMonitorTool.exe /disable \\.\DISPLAY9

  1. Configure sunshine to run scripts when stream is launched and finished, inside Configuration -> General

now every time you launch a game in stream through moonlight + sunshine, the script Steamdeck-on.cmd, will turn off the “real” monitors you have, turn on a virtual monitor with the steam deck resolution, put this virtual monitor as primary and the game will launch and stream from this virtual monitor.

When you finish the game session, the script Steamdeck-off.cmd will disable the virtual monitor (you can add commands to turn on real monitors)

I hope you find it helpful.

  • blindsight@beehaw.org
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    9 months ago

    Seems like a good idea, but why didn’t the off script reset the SetPrimary monitor? And does the “turn off” command just temporarily turn the screens off, so any action on the desktop will turn the screens back on?

    Edit: Also, the cd command seems a bit strange. I haven’t written a batch file in a while, but I think there’s a way to set the path as a variable and then call the executables directly. Probably doesn’t matter, but changing directories in a .bat file just feels wrong for some reason, y’know?

    Regardless, thanks for posting. This is a great idea, regardless of the specific implementation details.

    • Jz5678910@lemdro.idOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 months ago

      So after sitting down and setting it up, I found that on my setup the script above didn’t work for my machine. I had to set up my own scripts that specified the path of the executable, and then I used a command that toggles the monitor instead, it worked much better that way.

      But scripting aside, now that it’s working, it is beautiful! Set it up for my living room TV to be a 4k 120hz virtual monitor.

      • blindsight@beehaw.org
        link
        fedilink
        arrow-up
        2
        ·
        8 months ago

        If you’d be willing to post your .bat file, that would be fabulous! I haven’t had a chance to set this up yet.

        • Jz5678910@lemdro.idOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          8 months ago

          I’m not sure if I did this right, but here it is! This is the script to run on moonlight launch, just reverse the numbers for your script to run on moonlight exit.

          The instructions above worked well with the exception of the script. Make sure that the iddsampledriver folder is on the root of the C: drive. and make sure that Multimonitortool is inside that folder.

          You’ll have to switch the numbers in the script with your monitor values. You’ll get those from MultiMonitorTool. Open MMT, right click on your monitor, click properties, and the value you’re looking for is under “Name”

          @echo off

          :: Path to MultiMonitorTool.exe set “MultiMonitorToolPath=C:\IddSampleDriver\MultiMonitorTool.exe”

          “%MultiMonitorToolPath%” /disable \.\DISPLAY1 “%MultiMonitorToolPath%” /enable \.\DISPLAY21 “%MultiMonitorToolPath%” /setprimary \.\DISPLAY21