Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Communicate failure of GUI connection #8084

Open
meithecatte opened this issue Mar 9, 2023 · 3 comments
Open

Communicate failure of GUI connection #8084

meithecatte opened this issue Mar 9, 2023 · 3 comments
Labels
C: core C: manager/widget P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: enhancement Type: enhancement. A new feature that does not yet exist or improvement of existing functionality. ux User experience

Comments

@meithecatte
Copy link

This is a follow-up to #8060 – when qubes-gui or Xorg fail, the symptoms to the user are "the VM is not responding to my request to start applications". I believe we should pop up a notification in this case, to make diagnosing the issue easier.

As I've mentioned in #8060, I see two general approaches to this problem:

  1. Pop up a notification when the user tries to do something that requires a GUI connection, and the connection is broken. I believe all cases go through the qubes.StartApp RPC. We could
    • hardcode a check for this particular RPC, or
    • make it configurable in a manner similar to the RPC policy mechanism, or
    • expose another knob at the RPC call, or
    • there is already a gui flag here, perhaps we could add functionality to that
  2. Display a warning icon, with a tooltip explaining the situation, in the domain tray (similar to "has updates available" or "needs to be restarted to apply updates").
@meithecatte meithecatte added P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: enhancement Type: enhancement. A new feature that does not yet exist or improvement of existing functionality. labels Mar 9, 2023
@DemiMarie
Copy link

  1. I believe all cases go through the qubes.StartApp RPC.

This is incorrect: whether or not GUI communication is required is determined by configuration under /etc/qubes/rpc-config/.

@marmarek
Copy link
Member

marmarek commented Mar 9, 2023

Note that many qrexec services will first wait for X server startup. In most cases it's done via wait-for-session=1 in /etc/qubes/rpc-config/<service-name> (for example qubes.StartApp here). This will wait for qubes-session startup indefinitely, so from dom0 point of view, it isn't really different from "application is still starting". This need fixing in the first place. Only then you can think of how to show this failure to the user.

The waiting is done by calling /etc/qubes-rpc/qubes.WaitForSession (it is called as a separate qrexec service in some cases too). Currently it waits for qrexec-fork-service (which is started from qubes-session when it's done). I guess that needs handling failed qubes-gui-agent service and abort?

@andrewdavidwong andrewdavidwong added this to the Release TBD milestone Mar 9, 2023
@andrewdavidwong
Copy link
Member

andrewdavidwong commented Mar 9, 2023

Note that many qrexec services will first wait for X server startup. In most cases it's done via wait-for-session=1 in /etc/qubes/rpc-config/<service-name> (for example qubes.StartApp here). This will wait for qubes-session startup indefinitely, so from dom0 point of view, it isn't really different from "application is still starting". This need fixing in the first place. Only then you can think of how to show this failure to the user.

Sounds like we need a separate issue for this bug. Does one already exist? (My search didn't turn up anything, but I probably don't understand it well enough to run a really thorough search.)

@andrewdavidwong andrewdavidwong removed this from the Release TBD milestone Aug 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: core C: manager/widget P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: enhancement Type: enhancement. A new feature that does not yet exist or improvement of existing functionality. ux User experience
Projects
None yet
Development

No branches or pull requests

4 participants