diff --git a/pressure-vessel/pressure-vessel-test-ui b/pressure-vessel/pressure-vessel-test-ui index 1dc760e266a266eaf1128df251f8fa73c8adbfba..b00a6d9ffb96697b790265a5925c8a7cf9c4a384 100755 --- a/pressure-vessel/pressure-vessel-test-ui +++ b/pressure-vessel/pressure-vessel-test-ui @@ -395,18 +395,47 @@ class Gui: self.grid.attach(label, 1, row, 1, 1) row += 1 - self.host_graphics_check = Gtk.CheckButton.new_with_label( - 'Use host-system graphics stack' - ) - value = boolean_environment('PRESSURE_VESSEL_HOST_GRAPHICS', True) - self.host_graphics_check.set_active(value) - self.grid.attach(self.host_graphics_check, 1, row, 1, 1) + label = Gtk.Label.new('Graphics stack') + self.grid.attach(label, 0, row, 1, 1) + + self.graphics_provider_combo = Gtk.ComboBoxText.new() + + env = os.getenv('PRESSURE_VESSEL_GRAPHICS_PROVIDER') + + if env is not None: + self.graphics_provider_combo.append( + env, '$PRESSURE_VESSEL_GRAPHICS_PROVIDER ({})'.format( + env or 'empty' + ), + ) + + if env is None or env != '/': + self.graphics_provider_combo.append( + '/', 'Current execution environment', + ) + + if ( + (env is None or env != '/run/host') + and os.path.isdir('/run/host/etc') + and os.path.isdir('/run/host/usr') + ): + self.graphics_provider_combo.append( + '/run/host', 'Host system', + ) + + if env is None or env != '': + self.graphics_provider_combo.append( + '', "Container's own libraries (probably won't work)", + ) + + self.graphics_provider_combo.set_active(0) + self.grid.attach(self.graphics_provider_combo, 1, row, 1, 1) row += 1 label = Gtk.Label.new('') label.set_markup( '<small><i>' - "Most games and GPUs won't work when this is disabled." + "Most games and GPUs won't work if this is changed." '</i></small>' ) label.set_halign(Gtk.Align.START) @@ -602,11 +631,11 @@ class Gui: if combo.get_active_id() == '/': self.copy_runtime_check.set_sensitive(False) self.gc_runtimes_check.set_sensitive(False) - self.host_graphics_check.set_sensitive(False) + self.graphics_provider_combo.set_sensitive(False) else: self.copy_runtime_check.set_sensitive(True) self.gc_runtimes_check.set_sensitive(True) - self.host_graphics_check.set_sensitive(True) + self.graphics_provider_combo.set_sensitive(True) def run_cb(self, _ignored=None): # type: (typing.Any) -> None @@ -633,16 +662,10 @@ class Gui: else: argv.append('--runtime=' + id) - if self.host_graphics_check.get_active(): - if ( - os.path.isdir('/run/host/etc') - and os.path.isdir('/run/host/usr') - ): - argv.append('--graphics-provider=/run/host') - else: - argv.append('--graphics-provider=/') - else: - argv.append('--graphics-provider=') + argv.append( + '--graphics-provider=' + + self.graphics_provider_combo.get_active_id() + ) if self.copy_runtime_check.get_active(): os.makedirs(self.var_path, mode=0o755, exist_ok=True)