ValveSoftware / SteamVR-for-Linux

Issue tracker for the Linux port of SteamVR
923 stars 45 forks source link

[BUG] Launching SteamVR creates a seemingly un-killable blank window [1.26.1] #577

Open nervyalloy51 opened 1 year ago

nervyalloy51 commented 1 year ago

Describe the bug When SteamVR is launched it spawns two windows: -The settings menu (which functions normally, and is closable with no issues) -A blank window labled "Unknown" that is roughly the same size as the settings window

The blank window is seemingly impossible to close without re-logging into the desktop.

The x button on the titlebar is un-clickable, pressing the x button on the activities view does nothing, even xkill fails to close it. I can't seem to find any process attached to the window, closing all Steam/SteamVR processes does not close them.

Loading SteamVR again simply spawns a duplicate of the window and the original is not affected.

Opening the desktop settings menu through the hamburger menu on the VRmonitor opens both the (once again functionall) settings menu and another blank window, Though the window labels are now switched (Blank window is "SteamVR Settings" and settings is "Unknown").

To Reproduce

  1. Switch to the SteamVR Beta Update
  2. Open SteamVR
  3. Optionally open the settings menu again and spawn another window

Expected behavior SteamVR should not spawn an un-killable window.

System Information

Screenshots Initial Launch: image

Opening Settings Manually. image

After A few Launches: image

Additional context I am also affected by https://github.com/ValveSoftware/SteamVR-for-Linux/issues/572 though im not sure if the issues are related.

Note: Commenters who are also experiencing this issue are encouraged to include the "System Information" section in their replies.

ZarathustraDK commented 1 year ago

Experiencing the same problem here, both on KDE (Arch) and Gnome (Nobara)

System Information

Patola commented 1 year ago

A possible workaround: xdotool selectwindow windowunmap ; xdotool selectwindow windowunmap click on the window. it will become a grey square. click on it again. It will disappear.

amalon commented 1 year ago

Yeh, I've just been doing Ctl+Alt+Esc and click on it to get rid of it

ClearlyClaire commented 1 year ago

Same thing here with gnome 43.6

System Information:

mtfurlan commented 1 year ago

xdotool selectwindow windowunmap made it look like I minimized the window, but I couldn't open it again. I eventually killed all of them by doing xwininfo and xkill -id $whateverID at one of them. This doesn't happen every time I open steamvr, just 4/5 times.

System Information:

SentineI commented 1 year ago

Same here with Gnome 42.9 but it used to work fine. I also get bug #595, but I'm not sure if this is related.

System Information:

MalikuMane commented 10 months ago

In ~.steam/steam/config/steamvr.vrsettings, remove the entry with no title in the DesktopUI section to get rid of it.

Patola commented 10 months ago

In ~.steam/steam/config/steamvr.vrsettings, remove the entry with no title in the DesktopUI section to get rid of it.

What if there's no entry with no title? My DesktopUI section is like that:

    2    "DesktopUI" : {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
    3       "controllerbinding_desktop" : "737,130,1915,1075,0",
    4       "pairing" : "1320,420,799,599,0",
    5       "settings_desktop" : "1995,481,799,599,0"
    6    },

And I got the dreaded unkillable blank window.

MalikuMane commented 10 months ago

Disregard, it came back for me too. Thought i had it.

MalikuMane commented 10 months ago

Okay i got it this time. ~/.local/share/Steam/steamapps/common/SteamVR/resources/webhelperoverlays.json set "preload": false in the settings_desktop section.

DASPRiD commented 10 months ago

That does get rid of the settings window starting up, though the blank unkillable window still comes up.

MalikuMane commented 10 months ago

Okay, tried it several times last night and it was gone. It came back this morning! DesktopUI in the steamvr.vrsettings is a saved list of windows to reopen. Clear this array. The blank one is pairing. The preload options in the webhelperoverlays.json files appear to mean always open on launch. Idk why anyone would want this ever!

The pairing window comes from: ~.local/share/Steam/steamapps/common/SteamVR/drivers/lighthouse/resources/webhelperoverlays.json and settings_desktop: .local/share/Steam/steamapps/common/SteamVR/resources/webhelperoverlays.json vrlink_pairing: .local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/resources/webhelperoverlays.json

Set preload false for all just be sure. I launched several times and it still did not come back today! @kisak-valve

ClearlyClaire commented 10 months ago

I can confirm that setting preload to false in all the aforementioned files. Opening the settings opens two windows: one without title but showing the settings, and a blank window with “SteamVR Settings”. Both can be closed, and are closed when SteamVR exits.

Hicks79 commented 10 months ago

Hi me too https://github.com/ValveSoftware/SteamVR-for-Linux/issues/646#issuecomment-1837144139

ZarathustraDK commented 10 months ago

Confirmed. Clearing the DesktopUI-section of stuff in steamv.vrsettings and setting preload to false on the three files got rid of the black window.

Why it got there in the first place is strange though. I distinctly remember not having the problem on first runs/new installs. Perhaps the settings window needs to be accessed manually from the desktop first --> something bugs out --> now you can't get rid of it because the window is never closed properly so SteamVR effectively remembers it in perpetuity.

I suppose if it was working as intended, Steamvr would remember your open settings-window and respawn it on next run, but stop spawning it on new runs if you manage to close it correctly.

founta commented 9 months ago

Thanks! Setting preload false in those three files did the trick for me. It looks like changes to those files get wiped out if you eg switch to the steamvr beta branch, so maybe they will also get wiped when steamvr updates. I've been running this:

sed -ri 's/"preload"(.*)true/"preload"\1false/g' $HOME/.steam/steam/steamapps/common/SteamVR/drivers/lighthouse/resources/webhelperoverlays.json
sed -ri 's/"preload"(.*)true/"preload"\1false/g' $HOME/.steam/steam/steamapps/common/SteamVR/resources/webhelperoverlays.json
sed -ri 's/"_preload"(.*)true/"_preload"\1false/g' $HOME/.steam/steam/steamapps/common/SteamVR/drivers/vrlink/resources/webhelperoverlays.json
SentineI commented 9 months ago

Great, thanks for the fix! For what it's worth, I'm using this slightly shortened script:

sed -ri 's/("preload".*)true/\1false/g' ~/.steam/steam/steamapps/common/SteamVR/drivers/lighthouse/resources/webhelperoverlays.json
sed -ri 's/("preload".*)true/\1false/g' ~/.steam/steam/steamapps/common/SteamVR/resources/webhelperoverlays.json
#sed -ri 's/("_preload".*)true/\1false/g' ~/.steam/steam/steamapps/common/SteamVR/drivers/vrlink/resources/webhelperoverlays.json

The last line is commented-out, as currently it doesn't seem to be necessary (but YMMV).

rdeforest commented 8 months ago

Changing the preload setting prevented the settings window from coming up when I start SteamVR, but now when I go to settings via the hamburger menu in the small window on the desktop, it still creates both windows AND I can't make the blank one go away. Seems like something is preventing the two windows from being one fully functional window.

FathomRaven commented 7 months ago

Same issue for me on Linux Mint 21.3. Followed the same instructions to get rid of the blank window, but now the settings one has to be manually opened, which makes the ghost window appear too.

Patola commented 7 months ago

I have the same issue when I try to go to SteamVR settings. I get two windows and it eventually crashes.

rdeforest commented 7 months ago

This may not be much help since I can't isolate what the relevant change is, but my symptoms are now that the dead window only sticks around the second or third time I start up SteamVR. After a clean reboot the window closes correctly. Renaming my settings file kept the window from opening up in the first place, but once I invoked the settings menu to bring the window back manually the problem was back.

Other changes I've made should be unrelated, but who knows: updated to all the latest packages again, installed mldonkey-server from oldoldstable, poked around to get my headphones to work with bluetooth, poked around to get sound working in the HMD.

I'll keep watching this thread so I can help verify a work-around if someone comes up with something that sticks and is repeatable.

PhilT commented 7 months ago

I was getting this same issue on NixOS unstable/dwm but after a SteamVR update my Steam library window disappears as well!

I've posted a community ticket here but I guess I should create a separate issue on GitHub.

tobico commented 7 months ago

I'm seeing the same issue, running PopOS, with Nvidia GPU.

ehwelbon commented 7 months ago

I am seeing this on Ubuntu 22.04.4 LTS, It happens mostly when the SteamVR fails to start, or is crashes and is restarted, It leaves a dead window that can not be used or killed:

image

If I run the following command, I can see a BadWindow indicated that I am confident is the dead window:

$ xprop -root _NET_CLIENT_LIST | pcregrep -o1 '# (.*)' | sed 's/, /\n/g' | xargs -I{} -n1 xprop -id {} _NET_WM_NAME
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  20 (X_GetProperty)
  Resource id in failed request:  0x6200004
  Serial number of failed request:  13
  Current serial number in output stream:  13
  ...

So far, nothing short of restarting the xserver or rebooting will kill the window. I tried the work-around shown in this thread (setting preload to false) which seems to help somewhat, but I'll need to see an error condition occur to be sure.

Comment: This dead window issue ought to be fixed. Getting Linux SteamVR to start and run most games, is already fiddly, having additional hurdles such as this is not going to endear Linux SteamVR to anyone that is not extremely persistent and/or proficient. Most people (even Linux Support Techs), conclude after one failed attempt with Linux SteamVR that it either doesn't work or isn't worth the effort. While that's not my view at all (I use VR on Linux much more often than Windows) that is what I hear when I try to evangelize the platform to my fundamentally tech compatriot gamers.

Boyfinn commented 5 months ago

This also occurs to me with Linux Mint 21.3. It also creates a new black window if i open the settings menu. Doing this opens 2 windows, first the settings windows(which works fine), and then one of these blank unkillable windows alongside it. Closing the settings window has no effect on the second blank window.

ehwelbon commented 5 months ago

Try this workaround, it has worked for me: https://github.com/ValveSoftware/SteamVR-for-Linux/issues/577#issuecomment-1872245424 or this one which is equivalent (somewhat shorter). https://github.com/ValveSoftware/SteamVR-for-Linux/issues/577#issuecomment-1872400869 No more dead/black windows from SteamVR on Ubuntu 22.04 (I tried a few days ago). I haven't yet updated to latest LTS version.

mtfurlan commented 2 weeks ago

Still have the issue, but less often than in the past

This script has has been helpful to me for the past year, just be very careful to click on the window you want to kill and not something else

#!/bin/bash
# https://github.com/ValveSoftware/SteamVR-for-Linux/issues/577#issuecomment-1627614326
read -r -p "gonna kill something, cool [y/N] " response
case "$response" in
  [yY][eE][sS]|[yY]|'')
      xkill -id "$(xwininfo | sed -n 's/xwininfo: Window id: \([^ ]*\).*/\1/p')"
    ;;
esac