2

I have a Steam Deck which I dual-booted to Windows. I'm trying to accomplish a facsimile to "game mode" on Steam OS.

I want to boot to big picture automatically/extremely quickly so it functions primarily as a game console first, but then be able to exit to desktop via the menu in Steam.

I know the shell can be switched from explorer.exe to Steam as the shell via changing the registry key from:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

to

"C:\Program Files (x86)\Steam\Steam.exe" -bigpicture

I'm unsure if placing a shortcut to explorer.exe in the startup folder will allow me to exit back to the Windows desktop without any hijinks like creating a shortcut to explorer.exe in Steam which has to be launched first.

If this won't work, is there an alternative? I want the process to be as fluid as possible, so the exit to desktop menu item in Steam functions as expected.

0

2 Answers 2

2

Setting explorer as a startup program will probably cause it and Big Picture to be started at once. You may need to program your own shell replacement.

I would suggest replacing the shell by a PowerShell script that will call up Big Picture, wait for it to terminate, then call up Explorer.

Useful references :

EDIT1:

According to tests done by user @LPChip, the replacement shell needs to terminate in order for Explorer to understand that it needs to create the desktop.

In this case, I suggest dividing the PowerShell script into two scripts, where the first one starts Big Picture and waits for it to terminate, then starts a second script that will wait until its parent terminates, then starts Explorer and terminates itself.

To make the second script independent of its parent, better use a method from the post Launch an unparented process from PowerShell.

EDIT2:

I have looked into how the primary Explorer is started, and the command is C:\Windows\explorer.exe /NoUACCheck, from a scheduled task named CreateExplorerShellUnelevatedTask.

User @LPChip has verified that this command with the /NoUACCheck parameter causes Explorer to put up the desktop, however when closing explorer it restarts automatically. To block this from happening requires setting in the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon the item AutoRestartShell to zero.

11
  • -1 because this is not how shell works. If you don't set explorer to be shell, you lose the taskbar and desktop icons. If you set anything else as shell, and then start explorer, it will only launch a file manager window. I've wanted something similar and tried everything but it just won't work. If Explorer.exe is not set as shell, you simply don't ever get a taskbar. Also, no desktop icons, and no right-click menu. Also, if your previous program ended, and you then start explorer, its still not launched in full desktop mode.
    – LPChip
    Commented Jan 20 at 12:53
  • @LPChip: This is puzzling since one can kill the primary Explorer and restart it, and it works. If you're testing, I have looked into how the primary Explorer is started, and the command is C:\Windows\explorer.exe /NoUACCheck, from a scheduled task named CreateExplorerShellUnelevatedTask. Could you please test these two options of starting Explorer inside a PowerShell script that replaces the shell, by command or by scheduled task? Perhaps there is a trick to making Explorer a desktop one. It might need to run in elevated mode.
    – harrymc
    Commented Jan 20 at 19:04
  • My problem was that you need to have an executable start the shell, so I created a simple .net program to do it for me, but as soon as shell starts any program and that process is active, it doesn't matter how you start explorer, it won't work, and my launcher to start explorer either still runs, or it can't start explorer. If I make sure my program is closed, I can then start explorer normally and get a desktop one.
    – LPChip
    Commented Jan 20 at 19:32
  • @LPChip: Perhaps start a second program/script that will wait while its parent exits, then start Explorer and terminate. Use a method from this post so the child doesn't terminate with its parent.
    – harrymc
    Commented Jan 20 at 19:45
  • I'll give it a go when I have some time. I don't use powershell for this though, I use dot net, but I'll see if I can recreate something like that.
    – LPChip
    Commented Jan 20 at 20:51
1

You can replace the shell and setup steam's big picture mode, but you will lose the desktop environment until you set the shell back and log out and in again.

For that reason, I recommend a slightly different approach.

There are 2 different ways you can approach this, depending on what you seek.

2 profiles

You can create a 2nd user on your system, and call it steam. Set its shell to steam big picture mode, and if you login to that user, you get steam. If you log out and back to your normal user, you get the normal desktop experience again. You can even keep both users logged in at the same time and just switch to go back and forth really quickly.

Keep it running and hibernate the SteamDeck instead of shutdown

Modern windows 10 and 11 are by default setup with Hybrid shutdown. This basically means that when you press start -> Shutdown, all your programs are terminated, and your empty desktop is then placed in hibernation.

If you start the computer again, the desktop is resumed from hibernation, and your startup script is called.

Given that hibernation is already used, there really is no point in favoring shutdown over just putting the system in hibernation with all your programs still running.

The biggest difference is, that when you turn your SteamDeck back on, you immediately get your desktop, the programs you had open in a matter of seconds, rather than to wait for the boot sequence.

You can close steam's big picture, and just open it or from steam's big picture hibernate the computer.

I bet its even possible to add a custom game to steam, link it to a script that does shutdown -h to hibernate the SteamDeck, and you can basically have the experience you are looking for.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .