Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign updispvms fail to start due to missing WaitForSession #3288
Comments
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Nov 7, 2017
Member
This is a duplicate of #3012. The solution here is to start GUI applications using qubes.StartApp service, which include waiting for session.
|
This is a duplicate of #3012. The solution here is to start GUI applications using |
marmarek
closed this
Nov 7, 2017
andrewdavidwong
added
the
duplicate
label
Nov 8, 2017
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
jpouellet
Dec 12, 2017
Contributor
This is a duplicate of #3012. The solution here is to start GUI applications using qubes.StartApp service, which include waiting for session.
That only works if the target VM already happens to have a .desktop file for what you want to do. I can think of many legitimate use cases where this may not be true (for example: specifying arguments, specific fallback programs depending on what's installed, etc.)
That only works if the target VM already happens to have a .desktop file for what you want to do. I can think of many legitimate use cases where this may not be true (for example: specifying arguments, specific fallback programs depending on what's installed, etc.) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Dec 12, 2017
Member
Well, if you want to start GUI application which have no .desktop file, in DispVM, you can also prepend echo user | /etc/qubes-rpc/qubes.WaitForSession; to the command. Or... create a .desktop file for it. Generally the less we use qubes.VMShell (or other over-powered service) the better.
|
Well, if you want to start GUI application which have no .desktop file, in DispVM, you can also prepend |
qubesuser commentedNov 7, 2017
•
edited
Edited 2 times
-
qubesuser
edited Nov 7, 2017 (most recent)
-
qubesuser
edited Nov 7, 2017
Qubes OS version:
R4.0-rc2
Steps to reproduce the behavior:
Expected behavior:
The dispvm is run and xterm appears.
Actual behavior:
Sometimes it fails with this message:
xterm: Xt error: Can't open display: :0
General notes:
The reason is that WaitForSession is not used for dispvms, which means that sometimes the application starts before the X server.
This is because dispvms die after the first qrexec calls, so it's not possible to make two calls (I'm not sure why it was thought to be fine to just skip the call - perhaps because in Qubes 3.2 dispvms started from savefiles that would always be taken after the session is up).
I think this could be solved by adding a "special" qubes.WaitForSession when starting dispvms internally in the qubesd code.
Another option is to add a new qubes.SessionVMShell that waits for the session to be up and then runs qubes.VMShell