Opening URL's in a dispvm no longer works

I have used Qubes for quite some time, and this is the first time this issue has happened. I don’t know what I did when it happened, but I’m pretty sure I wasn’t making any changes to the dispvm.

Since a few days, I have been unable to open a URL in a dispvm. That is to say that qvm-open-in-vm '$dispvm' http://some.url/ fails. What happens is that the dispvm starts, and immediately shuts down.

Manually opening Firefox in a dispvm works fine. And I’m also able to open other file types in a dispvm (such as PDF’s).

I’ve run out of ideas as to what to check, so I’m coming here in case someone has seen it before. Is there anyone that can provide advice?

What template is the dispVM based on, and what modifications have you made
to it?

In the disposableVM Template, I would check that you have lost the
connection between http://foo requests and Firefox, or any other browser
you have set as default.

qvm-open-in-vm has a special case for inputs *://* - it calls a qrexec
function that calls qubes.OpenURL on the target.
That file is found in /etc/qubes-rpc/ - you’ll see it calls
qubes-open, and that file is a wrapper to xdg-open

So, in brief, see what qubes-open and xdg-open
do in the disposableVM Template.

Thank you for the tips.

I’ve looked at the rpc definitions, and I note that qubes.OpenURL calls qubes-open in the DVM. I tried starting the DVM and run that commend manually, and it does open the URL properly.

I also tried switching to feodra-32-dvm, which I still have installed, and the problem remains there as well. So I don’t think the problem is related to the DVM itself.

I also tried running qvm-open-in-dvm from a VM with a Debian template, in case the problem is in my Fedora template, but the issue remains.

So I’ve tried changing templates for dispvm as well as the calling system, which suggests the problem must be in dom0. I have no idea where to look though.

Right - can you try crafting a command by hand:
/usr/lib/qubes/qrexec-client-vm <name> qubes.OpenURL /bin/echo ""

Then confirm that qvm-open-in-vm works.
Since the disposableVM opens it suggests that there’s nothing wrong at
the policy end, but in the way that parameters are being passed
through to the disposableVM.
qvm-open-in-dvm should have this line as call:
exec qvm-open-in-vm '$dispvm' "$@"
But since your problem crosses templates, it’s unlikely to be there.

What shell are you using in the caller and the disposableVM?