Skip to content

Commit

Permalink
Added "set as dvm template" to VM settings
Browse files Browse the repository at this point in the history
Added an 'Advanced' settings checkbox that allows the user to set a given
VM as template fo dispvms. It sets both the template_for_dispvms property
and the appmenus-dispvm feature - instead of delving into particulars
of how and which should be set, the user can just turn off the
whole setting if they want to make some changes in the vm and then turn
it on again.

fixes QubesOS/qubes-issues#4004
  • Loading branch information
marmarta committed Feb 23, 2019
1 parent 5218831 commit ef6288f
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 4 deletions.
17 changes: 17 additions & 0 deletions qubesmanager/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,11 @@ def __init_advanced_tab__(self):
self.seamless_on_button.clicked.connect(self.enable_seamless)
self.seamless_off_button.clicked.connect(self.disable_seamless)

if hasattr(self.vm, "template_for_dispvms"):
self.dvm_template_checkbox.setChecked(self.vm.template_for_dispvms)
else:
self.dvm_template_checkbox.setVisible(False)

def enable_seamless(self):
self.vm.run_service_for_stdio("qubes.SetGuiMode", input=b'SEAMLESS')

Expand Down Expand Up @@ -759,6 +764,18 @@ def __apply_advanced_tab__(self):
except Exception as ex: # pylint: disable=broad-except
msg.append(str(ex))

if getattr(self.vm, "template_for_dispvms", False) != \
self.dvm_template_checkbox.isChecked():
try:
self.vm.template_for_dispvms = \
self.dvm_template_checkbox.isChecked()
if self.dvm_template_checkbox.isChecked():
self.vm.features["appmenus-dispvm"] = True
else:
del self.vm.features["appmenus-dispvm"]
except Exception as ex: # pylint: disable=broad-except
msg.append(str(ex))

return msg

def include_in_balancing_changed(self, state):
Expand Down
18 changes: 14 additions & 4 deletions ui/settingsdlg.ui
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,7 @@ border-width: 1px;</string>
<property name="topMargin">
<number>15</number>
</property>
<item row="1" column="0">
<item row="2" column="0">
<widget class="QLabel" name="label_26">
<property name="text">
<string>Default DispVM:</string>
Expand All @@ -789,17 +789,17 @@ border-width: 1px;</string>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="2" column="1">
<widget class="QComboBox" name="default_dispvm"/>
</item>
<item row="2" column="0" colspan="2">
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="boot_from_device_button">
<property name="text">
<string>Boot qube from CDROM</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QPushButton" name="seamless_on_button">
Expand All @@ -825,6 +825,16 @@ The qube must be running to disable seamless mode; this setting is not persisten
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="dvm_template_checkbox">
<property name="toolTip">
<string/>
</property>
<property name="text">
<string>Allow starting DisposableVMs from this qube</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
Expand Down

0 comments on commit ef6288f

Please sign in to comment.