Factor in config settings when enabling/disabling the effect

This commit is contained in:
wheaney 2024-05-14 10:08:26 -07:00
parent 43cbd0bc48
commit 03f2712e6f
4 changed files with 25 additions and 7 deletions

View File

@ -58,7 +58,6 @@ cp -r $VULKAN_DIR/config $PACKAGE_DIR
# build xreal driver
XREAL_BINARY=$XREAL_DRIVER_DIR/build/xrealAirLinuxDriver.tar.gz
pushd $XREAL_DRIVER_DIR
if [ ! -e "$XREAL_BINARY" ] || [ "$1" != "--skip-module-builds" ]; then
# if a file exists at custom_banner_config.yml, copy it to the xrealAirLinuxDriver directory
@ -66,7 +65,10 @@ if [ ! -e "$XREAL_BINARY" ] || [ "$1" != "--skip-module-builds" ]; then
cp $VULKAN_DIR/custom_banner_config.yml $XREAL_DRIVER_DIR
fi
pushd $XREAL_DRIVER_DIR
bin/package
else
pushd $XREAL_DRIVER_DIR
fi
XREAL_MANIFEST_LINE=$(sha256sum build/driver_air_glasses/manifest)

View File

@ -13,7 +13,7 @@
"--device=shm",
"--talk-name=ca.desrt.dconf",
"--filesystem=xdg-run/dconf",
"--filesystem=host:ro",
"--filesystem=host",
"--env=DCONF_USER_CONFIG_DIR=.config/dconf",
"--env=GIO_EXTRA_MODULES=/app/lib/gio/modules/",
"--talk-name=org.freedesktop.Flatpak",

View File

@ -39,6 +39,7 @@ class ConnectedDevice(Gtk.Box):
self.settings = SettingsManager.get_instance().settings
self.ipc = XRDriverIPC.get_instance()
self.extensions_manager = ExtensionsManager.get_instance()
self.settings.bind('display-distance', self.display_distance_adjustment, 'value', Gio.SettingsBindFlags.DEFAULT)
@ -65,8 +66,22 @@ class ConnectedDevice(Gtk.Box):
ExtensionsManager.get_instance().bind_property('breezy-enabled', self.effect_enable_switch, 'active', GObject.BindingFlags.BIDIRECTIONAL)
def _refresh_inputs_for_enabled_state(self, switch, param):
requesting_enabled = switch.get_active()
self.extensions_manager.set_property('breezy-enabled', requesting_enabled)
if requesting_enabled:
config = self.ipc.retrieve_config()
config_enabled = config.get('disabled') == False and 'breezy_desktop' in config.get('external_mode', [])
if not config_enabled:
# do this so that it doesn't use headset_mode to override our external_mode
config.pop('ui_view')
config['disabled'] = False
config['output_mode'] = 'external_only'
config['external_mode'] = ['breezy_desktop']
self.ipc.write_config(config)
for widget in self.all_enabled_state_inputs:
widget.set_sensitive(switch.get_active())
widget.set_sensitive(requesting_enabled)
def _request_follow_mode(self, switch, param):
if (self.state_manager.follow_mode == switch.get_active()):

View File

@ -44,7 +44,7 @@ CONFIG_DEFAULT_VALUE_INDEX = 1
CONFIG_ENTRIES = {
'disabled': [parse_boolean, True],
'output_mode': [parse_string, 'mouse'],
'external_mode': [parse_array, 'none'],
'external_mode': [parse_array, ['none']],
'mouse_sensitivity': [parse_int, 30],
'display_zoom': [parse_float, 1.0],
'look_ahead': [parse_int, 0],
@ -118,11 +118,12 @@ class XRDriverIPC:
# Since the UI doesn't refresh the config before it updates, the external_mode can get out of sync with
# what's on disk. To avoid losing external_mode values, we retrieve the previous configs to preserve
# any non-managed external modes.
old_config = self._retrieve_config(self)
old_config = self.retrieve_config()
# remove the UI's "view" data, translate back to config values, and merge them in
view = config.pop('ui_view', None)
config.update(self.headset_mode_to_config(view['headset_mode'], view['is_joystick_mode'], old_config['external_mode']))
if view:
config.update(self.headset_mode_to_config(view.get('headset_mode'), view.get('is_joystick_mode'), old_config.get('external_mode')))
for key, value in config.items():
if key != "updated":
@ -145,7 +146,7 @@ class XRDriverIPC:
os.replace(temp_file, self.config_file_path)
os.chmod(self.config_file_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
config['ui_view'] = self.build_ui_view(self, config)
config['ui_view'] = self.build_ui_view(config)
return config
except Exception as e: