Patent Description:
<CIT> discloses: The disclosed embodiments provide a system that operates a computer system. During operation, the system detects a first change in a setting associated with a first computing environment executing on the computer system, wherein the first change is associated with at least one of an input/output (I/O) device setting, a regional setting, a network setting, a power setting, and a display setting. Next, the system propagates the first change to one or more other computing environments executing on the computer system.

<CIT> discloses: A virtual application may be configured with several extension points within a host operating system. The virtual application may be configured with a private namespace in which various components, such as registry settings, dynamic linked libraries, and other components may reside. During configuration, links may be placed in the host operating system that may point to objects in the virtual application's private namespace so that the operating system and other applications may launch, control, or otherwise interact with the virtual application. The links may be located in a file system, registry, or other locations and may be available to other applications, including other virtual applications. A configuration routine may place the links into the host operating system at the time the application may be configured.

<NPL> presents DAOW, a game-oriented Android emulator implementing the idea of direct Android emulation, which eliminates the overhead of full virtualization by directly executing Android app binaries on top of x86-based Windows. Based on pragmatic, efficient instruction rewriting and syscall emulation, DAOW offers foreign Android binaries direct access to the domestic PC hardware through Windows kernel interfaces, achieving nearly native hardware performance. Moreover, it leverages graphics and security techniques to enhance user experiences and prevent cheating in gaming. As of late <NUM>, DAOW has been adopted by over <NUM> million PC users to run thousands of heavy 3D Android games. Compared with AOVB, DAOW improves the smoothness by <NUM>% on average, decreases the game startup time by <NUM>%, and reduces the memory usage by <NUM>%.

The following presents a simplified summary of one or more implementations of the present disclosure in order to provide a basic understanding of such implementations. This summary is not an extensive overview of all contemplated implementations, and is intended to neither identify key or critical elements of all implementations nor delineate the scope of any or all implementations. Its sole purpose is to present some concepts of one or more implementations of the present disclosure in a simplified form as a prelude to the more detailed description that is presented later.

In an aspect, a method includes determining, via a synchronization client executing on a host operating system, system-wide configuration information associated with a first host system configuration parameter and a first configuration value of the host operating system; transmitting, by the synchronization client, a synchronization notification to a synchronization application executing on a guest operating system, the synchronization notification corresponding to the system-wide configuration information; configuring, via the synchronization application executing on the guest operating system, a guest system configuration parameter to a second configuration value based on the synchronization notification, executing a first guest application on the guest operating system based on the second configuration value; detecting, by the synchronization application, a guest system request, initiated by a second guest application executing on the guest operating system, to modify a second guest system configuration parameter of the guest operating system; transmitting, by the synchronization application to the synchronization client, a configuration request corresponding to the second guest system configuration parameter; presenting, based on the configuration request, a host system configuration graphical user interface (GUI) configured to modify a second host system configuration parameter associated with the second guest system configuration parameter; receiving, via the host system configuration GUI, a user-submitted configuration value for the second host system configuration parameter; and executing a third guest application on the guest operating system or the host operating system based on the user-submitted configuration value.

In another aspect, a device includes a memory; and at least one processor coupled to the memory and configured to: determine, via a synchronization client executing on a host operating system, system-wide configuration information associated with a first host system configuration parameter and a first configuration value of the host operating system; transmit, by the synchronization client, a synchronization notification to a synchronization application executing on a guest operating system, the synchronization notification corresponding to the system-wide configuration information; configure, via the synchronization application executing on the guest operating system, a guest system configuration parameter to a second configuration value based on the synchronization notification; execute a first guest application on the guest operating system based on the second configuration value; detect, by the synchronization application, a guest system request, initiated by a second guest application executing on the guest operating system, to modify a second guest system configuration parameter of the guest operating system; transmit, by the synchronization application to the synchronization client, a configuration request corresponding to the second guest system configuration parameter; present, based on the configuration request, a host system configuration graphical user interface (GUI) configured to modify a second host system configuration parameter associated with the second guest system configuration parameter; receive, via the host system configuration GUI, a user-submitted configuration value for the second host system configuration parameter; and execute a third guest application on the guest operating system or the host operating system based on the user-submitted configuration value.

Additional advantages and novel features relating to implementations of the present disclosure will be set forth in part in the description that follows, and in part will become more apparent to those skilled in the art upon examination of the following or upon learning by practice thereof.

The Detailed Description is set forth with reference to the accompanying figures, in which the left-most digit of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in the same or different figures indicates similar or identical items or features.

This disclosure describes techniques for synchronizing system settings in a computing environment. In particular, aspects of the present disclosure provide syncing of configuration settings between a first host operating system and one or more incompatible guest operating systems.

In accordance with some aspects of the present disclosure, a computing system may include a first plurality of applications executing on a host operating system of the computing device, and a second plurality of applications executing within a guest operating system of the computing device. As used herein, in some aspects, an "application" may refer to software applications, mobile applications, mobile apps, computer programs, software programs, etc. Some examples of the applications that may execute within the host operating system and/or the guest operating system may include productivity applications, application stores, media applications, web browsers, calendar applications, navigation applications, video game applications, social media applications, fitness applications, etc. In addition, as used herein, in some aspects, a "host operating system" may refer to an operating system on the computing device that interacts with hardware of the computing device. As used herein, in some aspects, a "guest operating system" may refer to an operating system installed with a virtual machine of the computing device. Some examples of the host operating system or the guest operating system include Microsoft Windows operating systems, Google Chrome OS operating system, Google Android operating systems, Apple OS and iOS operating systems, Linux operating systems, BSD operating systems, and UNIX operating systems.

In addition, the operating systems may have system-wide configuration settings applicable to the first plurality of applications and the second plurality of applications, respectively. In addition, each individual application may have application-specific configuration settings. Some examples of configuration settings include, but are not limited to, language settings, date and time settings, accessibility settings, battery settings, location information settings, user settings, security settings, and/or a privacy settings. As used herein, in some aspects, an "incompatible guest operating system" may refer to a guest operating system with one or more settings parameters and/or settings values that are different from the host operating system. For example, the guest operating system may use the settings parameter "volume," and the host operating system may use the settings parameter "sound" or "master volume. " As another example, the guest operating system may set the font size of text displayed by the guest operating system using a quantitative value (e.g., numeric font size), and the host operating system may set the font size of text displayed by the host operating system using a qualitative value (e.g., small, medium, large).

As described herein, the computing device may seamlessly synchronize system-wide configuration settings between the host operating system and the guest operating system and employ the host operating system to modify application settings of individual applications executing on the guest operating system to improve ease of use, usability, and/or user experience. For instance, as described in detail herein, the system-wide configuration settings of the guest operating system may be based on the system-wide configuration settings of the host operating system even when the configuration settings of the guest operating system are not identical to the configuration settings of the host operating system. For example, a user may update the language setting of the host operating system from English to Spanish, and the computing device may automatically update a corresponding setting of the guest operating system from English to Spanish even though the setting name or setting value for the language settings are not identical. Further, in some instances, a user may modify configuration settings for an application executing within the guest operating system using a settings management module of the host operating system. Additionally, in some instances, a user may be required to modify system-wide settings of the guest operating system by modifying the configuration settings of the host operating system. For example, if a user attempts to launch a settings management module of the guest operating system from within an application executing within the guest operating system, the computing device will instead present the setting management module of the host operating system, which is configured to modify the system-wide settings of the host operating system and the guest operating system.

Seamlessly synchronizing system-wide configuration settings between the host operating system and the guest operating system and employing the host operating system to modify application settings of individual applications executing on the guest operating system provides a uniform configuration (e.g., language, presentation, accessibility, etc.) and/or configuration process for applications executing within the host operating system and the guest operating system. Accordingly, the systems, devices, and methods described herein provide techniques for employing virtualization techniques to increase the amount of applications accessible on a computing device while increasing the usability and integration of guest applications executing on a guest operating system of the computing device.

<FIG> is a schematic diagram showing an example computing device <NUM> for synchronizing configuration setting across incompatible operating systems, in accordance with some aspects of the present disclosure.

As illustrated in <FIG>, the computing device <NUM> may include a host operating system <NUM> and a synchronization client <NUM> executing on the host operating system <NUM>. Further, the computing device <NUM> may include a virtual machine <NUM> configured to provide virtualized resources to a guest operating system <NUM>. In particular, a synchronization application <NUM> and a guest application <NUM> may execute on the guest operating system <NUM> using the virtualized resources provided by the virtual machine <NUM>. Although <FIG> illustrates one virtual machine <NUM> operating on the computing device <NUM>, the computing device <NUM> may include a plurality of virtual machines each implementing aspects of the present disclosure.

As described herein in detail, the synchronization client <NUM> and the synchronization application <NUM> may be configured to synchronize configuration settings between the host operating system <NUM> and the applications (e.g., the guest application <NUM>) executing on the guest operating system <NUM>. For example, the guest application <NUM> may be an electronic book (e-book) reader application. Further, a user of the computing device <NUM> may enable one or more accessibility features (e.g., keyboard, mouse, and screen options for users who have difficulty typing or viewing a display of the computing device <NUM>) of the host operating system <NUM> to assist user interaction with the computing device <NUM>. In some aspects, the synchronization client <NUM> may determine configuration information (e.g., the enabled accessibility settings and the values of the enabled accessibility settings selected by the user), and provide the configuration information to the synchronization application <NUM>. Upon receipt of the configuration information, the synchronization application <NUM> may determine corresponding accessibility settings of the guest operating system <NUM>, and enable the corresponding accessibility settings on the guest operating system <NUM> using values corresponding to the values selected by the user. As a result, the accessibility settings will also be applied to the applications executing on the guest operating system <NUM>. For example when the endeavors to read an e-book via the guest application <NUM>, the user will have the benefit of the accessibility settings enabled for improving readability of documents within the host operating system <NUM>.

Further, in some aspects, the host operating system <NUM> may be configured to provide similar operations for accessing application-specific configuration settings of applications executing on the host operating system (e.g., the synchronization client <NUM>) and applications executing on the guest operating system <NUM> (e.g., the guest application <NUM>). For example, the host operating system <NUM> may be configured to display a GUI that lists applications executing on the host operating system <NUM> and applications executing on the guest operating system <NUM>. In addition, individual applications may be selectable within the list, and the host operating system <NUM> may be configured to cause display of a GUI for modifying the configuration settings of the guest application <NUM>. In some instances, the host operating system <NUM> may be configured to cause the guest application <NUM> to display of a GUI for modifying the configuration settings of the guest application <NUM>.

Additionally, in some aspects, the synchronization application <NUM> may be configured to detect request to modify the configuration settings of the guest operating system <NUM>, and cause the host operating system <NUM> to display a GUI for modifying the configuration settings of the host operating system <NUM>. In addition, once the user modifies the configuration settings within the GUI displayed by the host operating system <NUM>, the synchronization client <NUM> may update the configuration settings of the guest operating system <NUM> in view of the modifications to the configuration settings of the host operating system <NUM>. For example, the user may select a GUI control for updating the configuration settings of the guest operating system <NUM> while reading an e-book within the guest application <NUM>. In response, the synchronization application <NUM> may cause the host operating system <NUM> to display a GUI for modifying the configuration settings of the host operating system <NUM>, while prohibiting the guest operating system <NUM> from displaying a GUI for modifying the configuration settings of the guest operating system <NUM>.

<FIG> illustrates an example architecture <NUM> of the example computing device <NUM> for synchronizing configuration settings across incompatible operating systems, in accordance with some aspects of the present disclosure. As illustrated in <FIG>, the computing device <NUM> may include the host operating system <NUM>, the synchronization client <NUM>, the virtual machine application <NUM>, a plurality of other applications <NUM>(<NUM>)-(N) executing on the host operating system <NUM>, and one or more virtual machines <NUM>(<NUM>)-(N) executing on the host operating system <NUM>.

The host operating system <NUM> may include configuration settings <NUM> defining system-wide settings applicable to the host operating system <NUM>, the synchronization client <NUM>, the virtual machine application <NUM>, the plurality of other applications <NUM>, and/or the guest applications <NUM>(<NUM>)-(N) of the virtual machines <NUM>(<NUM>)-(N). For example, the configuration settings <NUM> may include, but are not limited to, the language settings, date and time settings, accessibility settings, battery settings, location information settings, user settings, security settings, and/or a privacy settings applicable to the host operating system <NUM>, the synchronization client <NUM>, the virtual machine application <NUM>, the plurality of other applications <NUM>, and/or the guest applications <NUM>(<NUM>)-(N) of the virtual machines <NUM>(<NUM>)-(N). Further, the host operating system <NUM> may include a settings module <NUM> configured to modify the configuration settings <NUM> and facilitate the modification of application-specific settings for the host operating system <NUM>, the synchronization client <NUM>, the virtual machine application <NUM>, the plurality of other applications <NUM>, and/or the guest applications <NUM>(<NUM>)-(N) of the virtual machines <NUM>(<NUM>)-(N). In addition, the host operating system <NUM> may include one or more registries <NUM> configured to store information on the applications installed on the computing device <NUM>, and one or more listeners <NUM> configured to detect updates to the configuration settings <NUM> and notify the synchronization client <NUM> of the occurrence of an update.

The virtual machine application <NUM> may be configured to generate and execute the virtual machines <NUM>(<NUM>)-(N). Further, the virtual machine application <NUM> may be configured to facilitate communications between the synchronization client <NUM> and the virtual machines <NUM>(<NUM>)-(N). For example, in some aspects, the virtual machine application <NUM> may be configured to provide a channel over a virtual machine bus for communication between the synchronization client <NUM> and the virtual machine <NUM>(<NUM>). In some aspects, the virtual machine application <NUM> may be a hypervisor.

The synchronization client <NUM> may be configured to determine configuration information <NUM>, and provide the configuration information <NUM> to the synchronization application <NUM>. Further, in some aspects, the synchronization client <NUM> may possess standard application privileges as opposed to one or more privileges associated with the host operating system <NUM> or a manufacturer of the computing device <NUM> or the host operating system <NUM>. As illustrated in <FIG>, the synchronization client <NUM> may include a synchronization manager <NUM> and a conversion module <NUM>. The synchronization manager <NUM> may be configured to determine the configuration information based on the configuration settings <NUM>. In some aspects, the configuration information may include a configuration parameter of the host operating system <NUM> and an acceptable configuration value for the configuration parameter within the host operating system <NUM>. As an example, the configuration parameter may be "system language," and the configuration value may be "EN" which may represent a recent update of the "system language" to the English language in the host operating system <NUM>.

In some instances, the synchronization manager <NUM> may determine the configuration information <NUM> by transmitting a request to the host operating system <NUM> for the configuration settings <NUM> and/or transmitting a request to the host operating system <NUM> for any updates to the configuration settings <NUM> over a predefined period of time (e.g., since the last request was transmitted). In response, the host operating system <NUM> may transmit the configuration information <NUM> to the synchronization client <NUM>. In some aspects, the synchronization manager <NUM> may employ a public application programming interface (API) provided by the host operating system <NUM> to execute the request.

Additionally, or alternatively, the synchronization manager <NUM> may configure a listener <NUM> to transmit a listener notification to the synchronization manager <NUM> when the configuration settings <NUM> have been updated. In some instances, the listener notification may include the configuration information <NUM>. In some other instances, the synchronization client <NUM> may request and receive the configuration information <NUM> in response to receipt of the listener notification.

Further, as illustrated in <FIG>, the synchronization manager <NUM> may transmit a synchronization notification <NUM> to the virtual machine <NUM>(<NUM>). In some aspects, the synchronization client <NUM> may employ the conversion module <NUM> to convert the configuration information <NUM>, which is not usable by the guest operating system <NUM>, to an intermediate representation, and transmit the intermediate representation within the synchronization notification <NUM>. In some instances, the intermediate representation may be a platform-independent (i.e., independent of the parameters or values of the operating systems) representation of the configuration information <NUM> of the host operating system <NUM>. Further, in some aspects, the platform independence of the intermediate representation may establish a contract that provides extensibility and stability, as any guest operating system may be used in accordance with the present disclosure if logic for converting from the intermediate representation to a representation compatible with the guest operating system is provided. In some aspects, transmitting the synchronization client <NUM> may include serializing the intermediate representation and transmitting the serialized information via a channel of a virtual machine bus provided by the virtual machine application <NUM>.

As an example, the conversion module <NUM> may convert the configuration parameter "system language" of the configuration information <NUM> to an intermediate representation of "locale," and the configuration value "English" of the configuration information <NUM> to an intermediate representation of a language tag representing American English (e.g., "en-US", an Internet Engineering Task Force (IETF) best current practice (BCP) <NUM> tag). As another example, the conversion module <NUM> may convert the configuration parameter "geotracking" of the configuration information <NUM> to an intermediate representation of "location privacy," and the configuration value "enabled" of the configuration information <NUM> to an intermediate representation of "permit. " In some aspects, the conversion module <NUM> may include mapping information that maps the configuration parameters and configuration values of the host operating system <NUM> to intermediate representations. Further, the conversion module <NUM> may determine the intermediate representations based on the mapping information. Additionally, or alternatively, in some aspects, the conversion module <NUM> may determine a configuration format of the guest operating system <NUM>, and determine a destination representation based upon the configuration format of the guest operating system <NUM>. Further, the synchronization manager <NUM> may transmit the destination representation within the synchronization notification <NUM>. In some instances, the destination representation may be a representation compatible with and/or at least partially acceptable by the guest operating system <NUM>.

The synchronization application <NUM> may configure the settings <NUM> of the guest operating system <NUM>. For example, the synchronization manager <NUM> associated with the guest operating system <NUM> may receive the synchronization notification <NUM>(<NUM>) and configure the settings <NUM> of the guest operating system <NUM> based on the synchronization notification <NUM>(<NUM>). In some aspects, the synchronization manager <NUM> may employ the conversion module <NUM> to convert intermediate representations included in the synchronization notifications <NUM>(<NUM>)-(N) to destination representations applicable using the guest operating system <NUM>. For example, the conversion module <NUM> may convert the intermediate representation configuration parameter "locale" to a destination representation of "region," and the intermediate representation configuration value "en-US" to a destination representation of "United States. " As another example, the conversion module <NUM> may convert the intermediate representation configuration parameter "location privacy" to a destination representation of "location tracking," and the intermediate representation configuration value "permit" to a destination representation of "allow. " In some aspects, the conversion module <NUM> may include mapping information that maps the intermediate representations to configuration parameters and configuration values at the guest operating system information <NUM>(<NUM>). Further, the conversion module <NUM> may determine the configuration parameters and configuration values based on the mapping information. Once the conversion module <NUM> determines the destination representations, the synchronization manager <NUM> may update the settings <NUM> based on the destination representations. For example, the synchronization manager <NUM> may set "location tracking" to "allow" within the settings <NUM>. As a result, one or more location tracking operations performed by the guest application <NUM>(<NUM>) will be permitted based on configuration settings <NUM>. In some instances, the synchronization application <NUM> may require one or more elevated privileges to modify the settings <NUM> of the guest operating system <NUM>. As such, the synchronization application <NUM> may possess one or more credentials associated with a developer and/or publisher of the guest operating system <NUM>.

Further, as illustrated in <FIG>, the guest application <NUM>(<NUM>) may include settings <NUM> and a settings module <NUM> for configuring the settings <NUM> of the guest application <NUM>. In some aspects, upon installation of the guest application <NUM> on the virtual machine <NUM>(<NUM>), the guest application <NUM> may be registered within the one or more registries <NUM> of the host operating system <NUM>. As a result of the registration, a custom link to the settings module <NUM> is associated with the guest application <NUM>. Further, the custom link may be displayed within a configuration GUI for modifying application settings of individual applications installed on the host operating system <NUM>. Upon activation of the custom link (e.g., a selection of the guest application <NUM> within the configuration GUI), the host operating system <NUM> may be configured to cause execution of the settings module <NUM> in order to permit modification to the settings <NUM> of the guest application <NUM>(<NUM>). As a result, the configuration GUI presented to the user may be a centralized location for modifying the settings of applications on the computing device <NUM> independent of whether the application executes on the host operating system <NUM> or the guest operating systems <NUM>(<NUM>)-(N). For instance, the settings module <NUM> may cause transmission of a configuration request <NUM>(<NUM>) via the synchronization client <NUM> to the guest operating system <NUM> to execute the settings module <NUM>. Alternatively, the settings module <NUM> may transmit the configuration request <NUM>(<NUM>) directly to the guest operating system <NUM> without using the synchronization client <NUM>. In some aspects, the guest operating system <NUM> may be the Google Android operating system, and the configuration requests <NUM>(<NUM>)-(N) may be an Intent within the Google Android operating system.

Further, in some aspects, a user may endeavor to modify the settings <NUM> of the guest operating system <NUM> from the guest application <NUM>(<NUM>). In some aspects, the action may be intercepted, and the guest operating system <NUM> and/or the synchronization manager <NUM> may transmit a configuration request <NUM> via the synchronization client <NUM> to the host operating system <NUM>. Alternatively, the guest operating system <NUM> and/or the synchronization manager <NUM> may transmit the configuration request <NUM> directly to the host operating system <NUM> without using the synchronization client <NUM>. In response to receipt of the configuration request <NUM>, the host operating system <NUM> may execute the settings module <NUM>, which may be configured to modify the configuration settings <NUM>. As such, the user may be denied access to a native settings module <NUM> of the guest operating system <NUM> for modifying the settings <NUM>. Instead, the user may be forced to make all modifications to the settings <NUM> using the same mechanism for modifying the configuration settings <NUM>. In some aspects, the guest operating system <NUM> may be the Google Android operating system, and the intercepted action may be an Intent within the Google Android operating system.

<FIG> illustrate a configuration GUI <NUM> configured to modify configuration settings of a guest application within a host operating system, in accordance with some aspects of the present disclosure. As illustrated in <FIG>, the host operating system <NUM> may display a configuration GUI <NUM> including a list <NUM> of the applications executing on the host operating system <NUM> and the applications executing on the virtual machines <NUM>(<NUM>)-(N). Further, as illustrated in <FIG>, when a user selects an application within the list <NUM>, the configuration GUI <NUM> may present an advanced options control <NUM>. As illustrated in <FIG>, upon selection of the advanced options control <NUM>, the configuration GUI <NUM> may display modifiable settings <NUM> for the selected application. For example, as described in detail herein, the host operating system <NUM> may be configured to cause execution of the settings module <NUM> in order to permit modification to the settings <NUM> of the guest application <NUM>(<NUM>) within the configuration GUI <NUM>. Further, in some aspects, the appearance and/or style (e.g., user interface elements, themes, fonts, etc.) of the settings module <NUM> within the configuration GUI <NUM> may differ from the appearance and/or style of the advanced options control <NUM>. For example, the settings module <NUM> may employ a GUI library of the guest operating system <NUM> while the advanced options control <NUM> may employ a GUI library of the host operating system <NUM>.

<FIG> illustrate a configuration GUI <NUM> configured to modify system-wide configuration settings applied to host applications and guest applications, in accordance with some aspects of the present disclosure. As illustrated in <FIG>, the host operating system <NUM> may display a configuration GUI <NUM> including a list <NUM> of categories for the configuration settings <NUM>. Further, as illustrated in <FIG>, when a user selects a category within the list <NUM>, e.g., "Privacy" in this non-limiting example, the configuration GUI may present a list <NUM> of individual settings of the configuration settings <NUM>. Further, as illustrated in <FIG>, upon selection of an individual setting control, e.g., "Location" in this non-limiting example, the configuration GUI <NUM> may display modifiable settings <NUM> for the selected configuration setting <NUM>. As described in detail herein, modification to the selected configuration setting <NUM> may be applied to the applications executing on the host operating system <NUM> (e.g., synchronization client <NUM>, the plurality of other applications <NUM>(<NUM>)-(N)) and applications executing on the guest operating systems <NUM>(<NUM>)-(N) (e.g., guest application <NUM>(<NUM>)).

The processes described in <FIG> below are illustrated as a collection of blocks in a logical flow graph, which represent a sequence of operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the blocks represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described blocks can be combined in any order and/or in parallel to implement the processes. The operations described herein may, but need not, be implemented using the computing device <NUM>. By way of example and not limitation, the method <NUM> is described in the context of the computing device <NUM> of <FIG> and <FIG>, and the GUIs of <FIG> and <FIG>. For example, the operations may be performed by one or more of the host operating system <NUM>, the synchronization client <NUM>, the virtual machine <NUM>(<NUM>)-(N), the guest operating system <NUM>, the synchronization application <NUM>, the guest application <NUM>(<NUM>), the virtual machine application <NUM>, the synchronization manager <NUM>, and/or the conversion module <NUM>.

<FIG> is a flow diagram showing an example method <NUM> for synchronizing configuration setting across incompatible operating systems, in accordance with some aspects of the present disclosure.

At block <NUM>, the computing device may determine, via a first application executing on a host operating system, system-wide configuration information associated with a host system configuration parameter and a first configuration value of the host operating system.

For example, the synchronization manager <NUM> may determine the configuration information <NUM> by transmitting a request to the host operating system <NUM> for the configuration settings <NUM> and/or transmitting a request to the operating system for any updates to the configuration settings <NUM> over a predefined period of time (e.g., since the last request was transmitted). In response, the host operating system <NUM> may transmit the configuration information <NUM> (i.e., the system-wide configuration information) to the synchronization client <NUM>. Further, the configuration information <NUM> may include the configuration parameter "system language," and the configuration value "English. " As another example, the synchronization manager <NUM> may configure a listener <NUM> to transmit a listener notification to the synchronization manager <NUM> when the configuration settings <NUM> have been updated. In some instances, the listener notification may include the configuration information <NUM>. In some other instances, the synchronization client <NUM> may request and receive the configuration information <NUM> in response to receipt of the listener notification.

Accordingly, the computing device <NUM> or the processor <NUM> executing the synchronization client <NUM> may provide means for determining, via a first application executing on a host operating system, system-wide configuration information associated with a host system configuration parameter and a first configuration value of the host operating system.

At block <NUM>, the computing device transmits a synchronization notification to a second application executing on a guest operating system, the synchronization notification corresponding to the system-wide configuration information. For example, the synchronization manager <NUM> may transmit a synchronization notification <NUM>(<NUM>) to the synchronization application <NUM>. In some aspects, the synchronization client <NUM> may employ the conversion module <NUM> to convert the configuration information <NUM> to an intermediate representation, and transmit the intermediate representation within the synchronization notification <NUM>(<NUM>). As an example, the conversion module <NUM> may convert the configuration parameter "system language" to "locale," and the configuration value "English" to a language tag representing American English (e.g., "en-US").

Accordingly, the computing device <NUM> or the processor <NUM> executing the synchronization manager <NUM> may provide means for transmitting a synchronization notification to a second application executing on a guest operating system, the synchronization notification corresponding to the system-wide configuration information.

At block <NUM>, the computing device configures, via the second application executing on the guest operating system, a guest system configuration parameter to a second configuration value based on the synchronization notification. For example, the synchronization manager <NUM> may receive the synchronization notification <NUM>(<NUM>) and configure the settings <NUM> of the guest operating system <NUM> based on the synchronization notification <NUM>(<NUM>). In particular, the synchronization manager <NUM> may employ the conversion module <NUM> to convert the configuration parameter "locale" to "region," and "en-US" to "United States. " Further, the synchronization manager <NUM> may set the "region" setting to "United States" within the settings <NUM> of the guest operating system <NUM> based upon the conversion operations.

Accordingly, the computing device <NUM>, or the processor <NUM> executing the synchronization manager <NUM> may provide means for configuring, via the second application executing on the guest operating system, a guest system configuration parameter to a second configuration value based on the synchronization notification.

At block <NUM>, the computing device executes a third application on the guest operating system based on the second configuration value. For example, the guest application <NUM> will execute the guest application <NUM> with text and images in English based on the region setting in the settings <NUM>.

Accordingly, the computing device <NUM>, or the processor <NUM> executing the guest operating system <NUM> may provide means for executing a third application based on the second configuration value.

In an additional aspect, in order to determine the system-wide configuration information, the method <NUM> comprises transmitting, to the host operating system, a request for updates to a plurality of system-wide setting parameters of the host operating system, and receiving, in response to the request, the system-wide configuration information indicating a selection of the first configuration value for the host system configuration parameter. In an alternative or additional aspect, in order to determine the system-wide configuration information, the method <NUM> comprises receiving, from a listener registered to monitor for an update to the host system configuration parameter, the system-wide configuration information indicating a selection of the first configuration value.

In an additional aspect, in order to transmit the synchronization notification, the method <NUM> may comprise converting at least one of the host system configuration parameter and/or the first configuration value to a platform independent intermediate representation. In an alternative or additional aspect, in order to configure the guest system configuration parameter, the method <NUM> comprises determining at least one of the guest system configuration parameter or the second configuration value based at least in part on the platform independent intermediate representation.

The host system configuration parameter is a first host system configuration parameter, the guest system configuration parameter is first guest system configuration parameter, and the method <NUM> further comprises detecting a guest system request, initiated by a fourth application executing on the guest operating system, to modify a second guest system configuration parameter of the guest operating system; transmitting, by the second application to the first application, a configuration request corresponding to the second guest system configuration parameter; presenting, based on the configuration request, a host system configuration GUI configured to modify a second host system configuration parameter associated with the second guest system configuration parameter; receiving, via the host system configuration GUI, a user-submitted configuration value for the second host system configuration parameter; and executing a fifth application on the guest operating system or the host operating system based on the user-submitted configuration value.

In an additional aspect, the method <NUM> may further comprise presenting a host system configuration GUI including a control for modifying configuration parameters of a plurality of applications executing on the host operating system and a plurality of applications executing on the guest operating system; transmitting, by the host operating system, a configuration request to modify a configuration parameter of a fourth application on the guest operating system based on a selection within the host system configuration GUI; and presenting, via a virtualization platform of the host operating system, a settings module of the fourth application.

In an additional aspect, the host system configuration parameter may include at least one of a language setting, a date setting, a time setting, an accessibility setting, a battery setting, a location information setting, a user setting, and/or a privacy setting.

While the operations are described as being implemented by one or more computing devices, in other examples various systems of computing devices may be employed. For instance, a system of multiple devices may be used to perform any of the operations noted above in conjunction with each other. For example, a car with an internal computing device along with a mobile computing device may be employed in conjunction to perform these operations.

Referring now to <FIG>, an example <NUM> of the computing device <NUM> in accordance with an implementation includes additional component details as compared to <FIG>. In one example, the computing device <NUM> includes the processor <NUM> for carrying out processing functions associated with one or more of components and functions described herein. The processor <NUM> can include a single or multiple set of processors or multi-core processors. Moreover, the processor <NUM> may be implemented as an integrated processing system and/or a distributed processing system. In an example, the processor <NUM> includes, but is not limited to, any processor specially programmed as described herein, including a controller, microcontroller, a computer processing unit (CPU), a graphics processing unit (GPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a system on chip (SoC), or other programmable logic or state machine. Further, the processor <NUM> may include other processing components such as one or more arithmetic logic units (ALUs), registers, or control units.

In an example, the computing device <NUM> also includes the memory <NUM> for storing instructions executable by the processor <NUM> for carrying out the functions described herein. The memory <NUM> may be configured for storing data and/or computer-executable instructions defining and/or associated with the host operating system <NUM>, synchronization client <NUM>, the virtual machines <NUM>(<NUM>)-(N), the guest operating system <NUM>, the synchronization application <NUM>, the guest applications <NUM>(<NUM>)-(N), the virtual machine application <NUM>, and the plurality of other applications <NUM>(<NUM>)-(N), and the processor <NUM> may execute the host operating system <NUM>, synchronization client <NUM>, the virtual machines <NUM>(<NUM>)-(N), the guest operating system <NUM>, the synchronization application <NUM>, the guest applications <NUM>(<NUM>)-(N), the virtual machine application <NUM>, and the plurality of other applications <NUM>(<NUM>)-(N),. An example of memory <NUM> may include, but is not limited to, a type of memory usable by a computer, such as random access memory (RAM), read only memory (ROM), tapes, magnetic discs, optical discs, volatile memory, non-volatile memory, and any combination thereof. In an example, the memory <NUM> may store local versions of applications being executed by processor <NUM>.

The example computing device <NUM> also includes a communications component <NUM> that provides for establishing and maintaining communications with one or more parties utilizing hardware, software, and services as described herein. The communications component <NUM> may carry communications between components on the computing device <NUM>, as well as between the computing device <NUM> and external devices, such as devices located across a communications network and/or devices serially or locally connected to the computing device <NUM>. For example, the communications component <NUM> may include one or more buses, and may further include transmit chain components and receive chain components associated with a transmitter and receiver, respectively, operable for interfacing with external devices.

The example computing device <NUM> also includes a data store <NUM>, which may be any suitable combination of hardware and/or software, that provides for mass storage of information, databases, and programs employed in connection with implementations described herein. For example, the data store <NUM> may be a data repository for the host operating system <NUM>, synchronization client <NUM>, the virtual machines <NUM>(<NUM>)-(N), the guest operating system <NUM>, the synchronization application <NUM>, the guest applications <NUM>(<NUM>)-(N), the virtual machine application <NUM>, and the plurality of other applications <NUM>(<NUM>)-(N),.

The example computing device <NUM> also includes a user interface component <NUM> operable to receive inputs from a user of the computing device <NUM> and further operable to generate outputs for presentation to the user. The user interface component <NUM> may include one or more input devices, including but not limited to a keyboard, a number pad, a mouse, a touch-sensitive display (e.g., display <NUM>), a digitizer, a navigation key, a function key, a microphone, a voice recognition component, any other mechanism capable of receiving an input from a user, or any combination thereof. Further, the user interface component <NUM> may include one or more output devices, including but not limited to a display (e.g., display <NUM>), a speaker, a haptic feedback mechanism, a printer, any other mechanism capable of presenting an output to a user, or any combination thereof.

In an implementation, the user interface component <NUM> may transmit and/or receive messages corresponding to the operation of the host operating system <NUM>, synchronization client <NUM>, the virtual machines <NUM>(<NUM>)-(N), the guest operating system <NUM>, the synchronization application <NUM>, the guest applications <NUM>(<NUM>)-(N), the virtual machine application <NUM>, and the plurality of other applications <NUM>(<NUM>)-(N),. In addition, the processor <NUM> executes the host operating system <NUM>, synchronization client <NUM>, the virtual machines <NUM>(<NUM>)-(N), the guest operating system <NUM>, the synchronization application <NUM>, the guest applications <NUM>(<NUM>)-(N), the virtual machine application <NUM>, and the plurality of other applications <NUM>(<NUM>)-(N), and the memory <NUM> or the data store <NUM> may store them.

Claim 1:
A method (<NUM>) comprising:
determining, via a synchronization client (<NUM>) executing on a host operating system (<NUM>), system-wide configuration information (<NUM>) associated with a first host system configuration parameter and a first configuration value of the host operating system (<NUM>);
transmitting, by the synchronization client (<NUM>), a synchronization notification (<NUM>) to a synchronization application (<NUM>) executing on a guest operating system (<NUM>), the synchronization notification (<NUM>) corresponding to the system-wide configuration information (<NUM>);
configuring, via the synchronization application (<NUM>) executing on the guest operating system (<NUM>), a guest system configuration parameter to a second configuration value based on the synchronization notification (<NUM>);
executing a first guest application on the guest operating system based on the second configuration value;
detecting, by the synchronization application (<NUM>), a guest system request, initiated by a second guest application (<NUM>) executing on the guest operating system (<NUM>), to modify a guest system configuration parameter of the guest operating system (<NUM>);
transmitting, by the synchronization application (<NUM>) to the synchronization client (<NUM>), a configuration request corresponding to the guest system configuration parameter;
presenting, based on the configuration request, a host system configuration graphical user interface, GUI, configured to modify a second host system configuration parameter associated with the guest system configuration parameter;
receiving, via the host system configuration GUI, a user-submitted configuration value for the second host system configuration parameter; and
executing a third guest application (<NUM>) on the guest operating system or the host operating system (<NUM>) based on the user-submitted configuration value.