qubes-issues icon indicating copy to clipboard operation
qubes-issues copied to clipboard

Disposable (dvm) menu entries don't get generated for Start Qube action

Open Atrate opened this issue 3 weeks ago • 3 comments

Qubes OS release

Qubes OS 4.2, Qubes OS 4.3

Brief summary

Disposable (dvm) menu entries don't get generated for Start Qube action.

Steps to reproduce

  1. Create a disposable template qube (AppVM or SVM)
  2. Add applications: Terminal (optional) and Start Qube

Expected behavior

4 menu entries get created:

  • Terminal
  • Terminal (dvm)
  • Start Qube
  • Start Qube (dvm)

Actual behavior

3 menu entries get created:

  • Terminal
  • Terminal (dvm)
  • Start Qube

Additional information

This is annoying specifically for not gui-virtualized qubes (or, more specifically, qubes without application menu entries, so ones without the qubes tools, such as base Windows and Android qubes).

Having Start Qube (dvm) would be beneficial in this case as it would avoid the need to create a named disposable.

Atrate avatar Dec 07 '25 20:12 Atrate

  • https://github.com/qubesos/qubes-issues/issues/10288
  • https://github.com/QubesOS/qubes-desktop-linux-menu/pull/67

Unsure if you mean the:

a. "Start qube" that appeared on the app menu, when a qube is selected, on the bottom right, near "Settings" of a qube; b. "Start qube" desktop entry, that can be configured for app menus in "VM Settings -> Applications -> Search -> Start qube".

If it is the former, it never worked to start a disposable based on a disposable template, it ran qvm-start $DISP_TEMPLATE, it was confusing for some users (see linked issue), so I removed it. There is no other application that creates disposable qubes without an application besides the QUI Devices Widget.

If it is the latter, it was superseded as there is a "Start qube" button when a qube is selected on the app menu. There is probably some code hiding qubes-start.desktop as there is an alternative now. I don't see the start qube for disposable templates with dmenu desktop. You may check generated applications in ~/.local/share/applications/*dvm* (search for a word, not full name, it is modified) and ~/.local/share/qubes-appmenus/$DISP_TEMPLATE. There you will find that *.qubes-start.desktop generated. It doesn't start disposables, just the disposable template.


This is annoying specifically for not gui-virtualized qubes (or, more specifically, qubes without application menu entries, so ones without the qubes tools, such as base Windows and Android qubes).

Can you explain a bit more how you interact with these qubes? Are these HVM qubes without Qrexec, with gui-emulated feautre (emulated VGA) enabled or gui feautre disabled, without Qubes' packages, and in the case of Windows, without QWT, so you can't launch specific applications?

Having Start Qube (dvm) would be beneficial in this case as it would avoid the need to create a named disposable.

This is a feature request. There is no program ready for it, but you can generate custom desktop applications out of this:

https://doc.qubes-os.org/en/latest/user/how-to-guides/how-to-use-disposables.html#connect-a-device-to-an-unnamed-disposable-from-gui-domain

python3 -c "import qubesadmin; \
    app = qubesadmin.Qubes(); \
    appvm = app.domains['$disp_template']; \
    disp = qubesadmin.vm.DispVM.from_appvm(qubesadmin.Qubes(), appvm); \
    disp.start(); \
    print(disp.name)
"

Or if you can guarantee using bash on the .desktop Exec:

https://forum.qubes-os.org/t/how-to-attach-and-mount-usb-sticks-to-disposable-template-in-dom0-terminal/33828/4

However, "Start qube" in the "APPS" tab, even if starting a disposable qube, can be a bit confusing as no windows will appear for qubes using Qubes' GUI agent. There will be desktop notification of preloaded disposable being used or qube starting, so this indicates the name of the qube. So I think it might be confusing for the default case. Would require watching how users react to the "Start qube" button of disposable templates and what they expect. Note that no window showing is already the behavior of QUI Devices Widget, but I am not sure I want that in the app menu, which is used much more.

If I understood this case correctly, I can add "Start qube" for disposable templates in the "APPS" tab in the case of using HVM with emulated VGA. I'd appreciate the output of the following commands:

qvm-prefs $MY_QUBE
qvm-feature $MY_QUBE

ben-grande avatar Dec 08 '25 07:12 ben-grande

I mean option:

b. "Start qube" desktop entry, that can be configured for app menus in "VM Settings -> Applications -> Search -> Start qube".

Can you explain a bit more how you interact with these qubes? Are these HVM qubes without Qrexec, with gui-emulated feautre (emulated VGA) enabled or gui feautre disabled, without Qubes' packages, and in the case of Windows, without QWT, so you can't launch specific applications?

HVM qubes without qrexec, with not seamless GUI (so emulated VGA as far as I know), without Qubes packages. Used for:

  1. Android (no Qube packages there)
  2. Windows qubes for malware analysis. No QWT as I've been taught that guest-host integration is inadvisable for such use cases

If I understood this case correctly, I can add "Start qube" for disposable templates in the "APPS" tab in the case of using HVM with emulated VGA.

Yeah, that is the use case. Specifically, a "Start qube (dvm)" option, as the "normal" "Start qube" option does exist.

user@dom0 ~ % qvm-prefs windows-11-ltsc-noqwt-svm
audiovm               D  sys-audio
autostart             D  False
backup_timestamp      -  1761279042
bootmode              D  default
debug                 D  False
default_dispvm        D  default-dvm
default_user          D  user
devices_denied        D  
dns                   D  
gateway               D  
gateway6              D  
guivm                 D  dom0
icon                  D  standalonevm-black
include_in_backups    D  True
installed_by_rpm      D  False
ip                    D  
ip6                   D  
kernel                -  
kernelopts            D  
keyboard_layout       D  pl++
klass                 D  StandaloneVM
label                 -  black
mac                   D  00:16:3e:5e:6c:00
management_dispvm     D  default-mgmt-dvm
maxmem                -  0
memory                -  8192
name                  -  windows-11-ltsc-noqwt-svm
netvm                 -  None
provides_network      -  False
qid                   -  92
qrexec_timeout        -  7200
shutdown_timeout      D  60
start_time            D  
stubdom_mem           U
stubdom_uuid          D  
stubdom_xid           D  -1
template_for_dispvms  -  True
updateable            D  True
uuid                  -  1bcdafa3-1dec-4b56-a31e-069994d941b9
vcpus                 -  4
virt_mode             -  hvm
visible_gateway       D  
visible_gateway6      D  
visible_ip            D  
visible_ip6           D  
visible_netmask       D  
xid                   D  -1
user@dom0 ~ % qvm-features windows-11-ltsc-noqwt-svm
qubesmanager.maxmem_value   4000
menu-items                  qubes-start.desktop
service.qubes-update-check  
appmenus-dispvm             1

Atrate avatar Dec 08 '25 08:12 Atrate

For anyone reading this that plans to implement:

  • qubesadmin/tools/qvm_start should have --dispvm that only works if qube is template_for_dispvms
  • qubesappmenus should add a new .desktop for disposable templates, adding the --dispvm option mentioned above. This desktop should only be installed if qube is template_for_dispvms and appmenus-dispvm is enabled. It might be better to only create this features if using emulated VGA (gui feat disable, gui-emulated enabled, hvm virt_mode). I am afraid this may cause a bit of confusion otherwise*

The confusion I am worried about is when using multiple preloaded disposables and requesting one without starting an application, which of the multiple ones being used is the one you just created in case you are spammed with desktop notifications.

ben-grande avatar Dec 09 '25 10:12 ben-grande