Disposable (dvm) menu entries don't get generated for Start Qube action
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
- Create a disposable template qube (AppVM or SVM)
- 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.
- 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
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:
- Android (no Qube packages there)
- 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
For anyone reading this that plans to implement:
qubesadmin/tools/qvm_startshould have--dispvmthat only works if qube istemplate_for_dispvmsqubesappmenusshould add a new .desktop for disposable templates, adding the--dispvmoption mentioned above. This desktop should only be installed if qube istemplate_for_dispvmsandappmenus-dispvmis enabled. It might be better to only create this features if using emulated VGA (guifeat disable,gui-emulatedenabled,hvmvirt_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.