diff --git a/developer/services/disposablevm-implementation.rst b/developer/services/disposablevm-implementation.rst index d5d9bd713..d41c06f5a 100644 --- a/developer/services/disposablevm-implementation.rst +++ b/developer/services/disposablevm-implementation.rst @@ -113,13 +113,6 @@ Preloaded disposables are paused for various reasons: But this comes at a cost: -- Can only connect to the GUI after the qube is requested (longer run time), else, if `early GUI connection was made before the qube is paused `__: - - - Events such as screen resize by plugging or removing external monitors can't work; - - No easy way to hide autostarted applications, depends on qube collaboration; - - Can only preload after GUI login to be able to establish a connection; - - Can't survive GUI login and logout as the connection might change; - - Memory management before pause may take some seconds, that is not prejudicial to the time to use the qube but it is prejudicial to the system as :doc:`qmemman ` can not balloon/balance other qubes in the mean time due to its design. Preloaded disposable's security @@ -131,12 +124,14 @@ As preloaded disposables are started before being used, methods to prevent accid - The qube has the ``internal`` feature enabled, Qubes GUI applications were patched to hide and show :term:`internal qubes` by handling events for ``domain-feature-((pre-)?set|delete):internal``; - When requesting an unnamed disposable, the qube object is only returned to the user once it has finished preloading; - The qube is paused as the last stage of preloading, this permits receiving :py:meth:`domain-unpaused ` event and be notified that the qube was used, marked as such and removed from the preload list to avoid reuse, even without the qube being requested with :py:meth:`core-admin:qubes.vm.dispvm.DispVM.from_appvm`; -- The GUID only connects to the GUI agent on the qube after the preloaded disposable is marked as used, this prevents that an autostarted application such as a terminal appears on the screen before preloading has finished. Enabling a GUI is is controlled by the :py:attr:`is_preload ` property, that when disabled, allows the GUI connection to initiate. This method delays GUI calls considerably as establishing the connection can take ~2 seconds, research is being done to prevent this delay. +- The GUID and Audio daemon only connects to the GUI agent and audio agent on the qube after the preloaded disposable is marked as used, this prevents that an autostarted applications appearing on the screen before it is ready or before pause, which could be confusing. Enabling a GUI is controlled by the :py:attr:`is_preload ` property, that when disabled, allows the GUI and audio connection to initiate. Another point of security is reliability: - The ``preload-dispvm-threshold`` feature controls how much free memory must be present on the system before attempting to create a new preloaded disposable. Used to ensure preloaded disposables do not consume all available memory, which would prevent starting other qubes. +To have late GUI daemon but an early GUI agent, changes have been made that limit the usability on ``sys-gui``. `Events such as plugging or removing external monitors can't work, it will be ignored by Xephyr `__. + Alternatives considered ^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/user/how-to-guides/how-to-use-disposables.rst b/user/how-to-guides/how-to-use-disposables.rst index 12f6634ae..dada81dc6 100644 --- a/user/how-to-guides/how-to-use-disposables.rst +++ b/user/how-to-guides/how-to-use-disposables.rst @@ -156,7 +156,7 @@ The same can be done from the command line, although more difficult: ")" user@dom0:~$ qvm-device attach -- "$disp" user@dom0:~$ # Do your tasks. - user@dom0:~$ qvm-device dettach -- "$disp" + user@dom0:~$ qvm-device detach -- "$disp" user@dom0:~$ qvm-kill -- "$disp" Retrieve unnamed disposables faster (preloaded disposables)