Windowing container

Examples of the present disclosure describe systems and methods for a windowing container that enables two or more windows associated with application(s) to be grouped within the container such that the windows may behave or function uniformly as a single window. For example, responsive to a request to group two windows, a container may be generated to include the windows arranged based on one or more rules and features enabling group functions associated with the container to be performed. When a group function is performed on the container, the function may be performed to each of the windows arranged therein as if they were a single window. As new windows are grouped within or existing windows are released from the container, the container and/or windows may be rearranged based on the rules. A state of the container may be stored to enable subsequent invocation of the container after closing.

BACKGROUND

A user may access and interact with multiple different applications concurrently via a user interface of an operating system that is executing the applications on the user's computing device. For example, to enable interaction with each application, a respective window may be opened for display on the user interface. As the number of applications concurrently accessed and interacted with increases, the user interface may become increasingly cluttered as the windows associated with each of the different applications begin to overlap and occupy the entire (or a significant portion of) display space. This occurrence is particularly problematic in handheld devices with smaller screen sizes.

SUMMARY

Examples of the present disclosure describe systems and methods for a windowing container. The windowing container may enable two or more windows associated with application(s) to be grouped within the container such that the windows may behave or function uniformly as a single window. For example, at least two windows may be opened for display on a user interface of an operating system to enable a user to interact with one or more applications executed by the operating system. In some examples, each of the two windows may be associated with a different application (e.g., a first and second application). In other examples, each of the two windows may be associated with a different instance of the same application. A request may be received to group these two windows, and a container may be generated. The container may include the windows arranged based on one or more rules and features enabling group functions associated with the container to be performed. A request to perform one of the group functions may be received, and the group function associated with the container may be performed causing the windows arranged therein to behave uniformly as a single window in accordance with the group function.

As the windows are grouped and arranged within the container, the windows may be automatically sized and positioned within the container based on the one or more rules. The windows may also be automatically resized and positioned as new windows are grouped within or existing windows are released from the container. Further, a state of the container may be stored to enable subsequent invocation of the container in accordance with the stored state after the container has been closed.

DETAILED DESCRIPTION

As briefly discussed above, users may interact with multiple different applications executed by an operating system via respective windows displayed on a user interface of the operating system. As the number of applications concurrently accessed and interacted with increases, the user interface may become increasingly cluttered as the windows associated with each of the different applications begin to overlap and occupy the entire (or a significant portion of) display space. This occurrence is particularly problematic in handheld devices with smaller screen sizes. To mitigate the clutter, users have to spend time and effort in resizing and repositioning each window relative to one another to organize the windows in a manner that best suits their workflow.

Examples of the present disclosure describe systems and methods for a windowing container to automate and improve organization of windows on the operating system user interface. The container may enable two or more windows associated with one or more applications that are displayed on the user interface of the operating system to be grouped within the container such that the windows may behave or function uniformly as a single window. For example, performance of group functions enabled by features of the container, such as minimizing, maximizing, restoring, closing, resizing, snapping, or repositioning the container, may cause the function to be performed on each of the windows arranged therein. Therefore, a single input associated with the container received via the user interface may cause performance of the function on each of the windows grouped within the container, rather than requiring several inputs (e.g., one input for each window) to individually perform the function on each window. Based on the reduction in the number of inputs received to perform a same function, processing resources utilized to process and understand those inputs may be conserved.

As the windows are grouped and arranged within the container, the windows may be automatically sized and positioned within the container based on one or more rules. The windows may also be automatically resized and repositioned as new windows are grouped within or existing windows are released from the container. In addition to saving the user the time and effort of manual arrangement, this rule-based automatic arrangement enables the windows within the container to be aligned pixel-by-pixel, which, as discussed in more detail below, avoids dead space or accidental overlap that often results from manual arrangement. This allows a maximized display space to be utilized for each and every window within the container, while also conserving (e.g., preventing the waste of) user interface display area on an output device. Additionally, one or more states of the container may be stored and accessible for subsequent invocation by a user such that the user may quickly and easily return to the container at a later time, thereby improving user efficiency and interactivity with the operating system user interface.

Accordingly, the present disclosure provides a plurality of technical benefits including, but not limited to, an improved operating system user interface for computing devices that provides and stores states of a container in which two or more windows may be grouped to enable the two or more windows to behave as a single window. The container enables performance of group functions via one input to the container, rather than requiring multiple inputs to each window that reduces processing resources, to improve the functionality of the computing device. Additionally, the specific and particular manner in which the windows are arranged within the container may maximize display space within the container and conserve user interface display area on an output device, which is particularly critical for smaller screen devices such as smart phones. Further, by storing the state of the container, subsequent invocation of the container in accordance with the stored state is enabled to improve interactivity with the operating system user interface.

FIG. 1illustrates an overview of an example system100wherein a windowing container may be implemented. In some aspects, system100comprises a client computing device102, a network104, and one or more cloud-based services106(hereinafter referred to as services106) that may each be hosted by one or more servers105. The services106may include productivity services (e.g., word processing, presentation, spreadsheet, note-taking, document management and collaboration services), search services, storage services, and virtual desktops, among other service types. In some examples, at least a portion of the services106may be associated with and capable of interacting with one another. For example, the portion of the services106may be provided by a same service provider or affiliated service providers to enable varying levels of integration.

In some aspects, the services106may be hosted by one or more datacenters. The datacenters may include multiple computing devices (e.g., servers) that operate a plurality of virtual machines. A virtual machine may be an isolated software container that has an operating system and an application, similar to the device described below inFIG. 14. In some examples, each of the services106may be a separate logical entity operated or executed independently of one another (e.g., executed by a separate virtual machine in a same or different datacenter). In other examples, one or more of these services106may be operated or executed by a same virtual machine. In further examples, one or more of these services may be operated or executed by other components (e.g., by one or more servers in a distributed environment). One of skill in the art will appreciate that the scale of systems such as system100may vary and may include additional or fewer components than those described inFIG. 1.

Examples of the client computing device102, include, but are not limited to, personal computers (PCs), server devices, mobile devices (e.g., smartphones, tablets, laptops, personal digital assistants (PDAs)), and wearable devices (e.g., smart watches, smart eyewear, fitness trackers, smart clothing, body-mounted devices). The client computing device102may include a memory108and a processing unit110, among other components described in more detail with reference toFIG. 14. The memory108may include one or more program modules112suitable for running applications114, including at least a first application116and a second application118. The memory108may also include an operating system120that controls operation of the client computing device102by managing hardware components and software resources to, among other things, support and enable execution of the applications114executed by the program modules112. For instance, the operating system120may control the execution of the applications114on the processing unit110.

In some examples, the applications114may be associated with respective services106, and the client computing device102may be capable of accessing the services106over a network, such as network104, through the applications114that are associated with the respective services106. The client computing device102may execute a thin version of the applications114(e.g., a web application running via a web browser) or a thick version of the applications114(e.g., a locally installed application) on the client computing device102. Examples of the network104over which the client computing devices102access the plurality of services include, but are not limited to, personal area networks (PANs), local area networks (LANs), metropolitan area networks (MANs), and wide area networks (WANs).

A user interface122of the operating system120may allow user interaction with the client computing device102. For example, the user interface122may request services from the operating system120to acquire data from input devices (e.g., a keyboard, a mouse, a touchpad, a pen, a sound or voice input device, a touch or swipe input device) and to display content on output devices, such as a screen124of the client computing device102or on another display device communicatively coupled to the client computing device102, such as monitor126.

In some examples, in response to a user interacting with the user interface122to open one or more applications114, a user interface of each application may be opened into a separate window on the user interface122for display to the user via the one or more output devices. In other examples, in response to a user interacting with the user interface122to open one or more content items, each content item may be displayed in a user interface of a respective application used to author, view, edit, or access the content item. For example, the content items may include documents, images, video, audio, media, or other similar items. The user interface of the respective application may be opened into a separate window on the user interface122for display to the user via the one or more output devices.

As illustrated herein, a first window128and a second window130may be opened on the user interface122for display on the screen124of the client computing device102. The first window128and second window130may be associated with one or more of the applications114that are executing on the client computing device102. In some examples, the first window128and the second window130may be associated with at least two applications. For instance, the first window128may be associated with the first application116and the second window130may be associated with the second application118, where the first application116may be a different application than the second application118. As one illustrative example that will be continued throughout the disclosure, the first application116may be a word processing application through which the user is drafting a document to highlight features of a product or service to be offered by an organization associated with the user (e.g., the user's employer). The second application118may be a document management and collaboration application connected to an account of the organization, for example, through which the user is searching for and accessing organizational documents associated with the product or service to aid the user in drafting the document. In other examples, the first window128and the second window130may be respectively associated with a first instance and a second instance of the same application (e.g., first and second instances of the first application116or first and second instances of the second application118). For example, the first window128may enable the user to interact with a first content item accessible via an application and the second window130may enable the user to interact with a second content item accessible via the same application.

The user interface122of the operating system120may provide the user with the means for manipulating the one or more applications114graphically, by allowing for individual operations (e.g., opening, closing, minimizing, maximizing, restoring repositioning, resizing, snapping) for each of the first window128and the second window130, as well as switching focus between the first window128and the second window130. Each of the first window128and the second window130may have a predefined size (e.g., a minimum pixel size and a maximum pixel size). In some examples, the predefined size is based on the type of application associated with the window.

As the number of applications114concurrently accessed or interacted with increases (e.g., if a third application, fourth application and so on are opened and interacted with), the user interface122may become increasingly cluttered. For example, the windows associated with each of the applications114may begin to overlap with one another and occupy larger amounts of display space on the screen124, particularly in handheld devices with smaller screen sizes. Resizing and repositioning each window relative to one another to organize the windows in a manner that best suits the user's workflow can be time and effort consuming.

Additionally, when windows overlap and the user performs manual repositioning to mitigate overlapping (e.g., by graphically manipulating the windows in the user interface122), the user's manual repositioning may result in at least a portion of pixels of two or more windows continuing to overlap. Overlapping affects which windows are in focus, which may negatively affect a speed at which the applications114are rendered. For example, if the first window128and the second window130are slightly overlapping, and the first window128is on top of the second window130based on their z-order along the z-axis of the user interface122, the second window130may have a portion of its pixels occluded (e.g., not displayed). Resultantly, the second application118associated with the second window130may not render as quickly or as often as the first application116or, in other examples, the second instance of one of the applications114associated with the second window130may not render as quickly or as often as the first instance of the same one of the applications114associated with the first window128. Alternatively, the user's manual repositioning to mitigate overlapping may instead result in additional pixel space (e.g., dead space) between the windows. This is particularly likely to occur when the output device has a high-density pixel display. The dead space prevents efficient utilization of the display area of the output device.

Further, if the user pauses their interactions with the client computing device102(e.g., at a break time, at the end of the day, when switching from a workstation to a home office station), the application windows may be individually closed, particularly if the user is powering down or will have to restart the client computing device102. As a result, to return to their previous workflow, the user may have to spend the additional time to individually reopen, resize, and reposition the application windows of interest upon resuming their interactions with the client computing device102.

Aspects of this disclosure are directed to a container that enables at least two windows to behave or function as a single window (e.g., as a group). For example, and as described in greater detail in the Figures below, the container may be a window that is generated upon receipt of an input indicating to group at least two windows. The two windows may be associated with one or more applications. In some examples, the two windows may be associated with two different applications. In other examples, the two windows may be associated with two instances of a same application. Along with the windows, which may be automatically sized and positioned within the container based on one or more rules, the container may have a plurality of features that can be interacted with to perform a plurality of functions associated with the container. At least a subset of the plurality of functions include group functions. These group functions may include the same or similar functions that can be performed on individual windows, such as opening, closing, minimizing, maximizing, restoring, repositioning, resizing, and snapping. However, a single input corresponding to a group function associated with the container may result in the function being performed on each of the container and the windows arranged therein as if the windows were a single window. Additionally, the user may request to group one or more additional windows to or release existing windows from the container. In response to an addition or release of a window, the container and/or the windows within the container may be automatically rearranged (e.g., resized and/or repositioned) based on the set of rules. In some examples, the container may also be automatically (re)named.

Using the set of rules for the automatic arrangement or rearrangement of windows within the container, the windows may be sized and positioned and/or resized and repositioned in the container such that the windows are aligned pixel-by-pixel along at least one axis of the display to avoid window overlap or dead space. Additionally, one or more states of the container may be stored and accessible for subsequent invocation by a user such that the user may quickly and easily return to the container at a later time improving user efficiency and interactivity with the client computing device102.

While the specific examples provided in this disclosure describe windows associated with applications that may be grouped together to behave as a single window within the container, it is not so limited. In other examples, windows associated with two or more widgets (e.g., widget windows configured to look and behave differently than default application windows) may be similarly grouped together to behave as a single window within the container. However, because the sizing among widgets may be more standardized (e.g., predefined rather than variable based on application type), the set of rules utilized for sizing and positioning the windows associated with the widgets may be less complex than the set of rules described in detail herein. As one specific example, sizing among widgets windows may be fixed without the option to be resized automatically by the system or manually by the user. In other examples, rules utilized for sizing the widget windows may be based on specified sizing behaviors for the widget windows. In further examples, a combination of windows associated with applications and windows associated with widgets may be grouped together to behave as a single window within the container.

Example system100as presented is a combination of interdependent components that interact to form an integrated whole. Components of the system100may be hardware components or software components implemented on and/or executed by hardware components of the system100. In some examples, the components of the system100disclosed herein may be distributed across multiple devices. For instance, applications running on client computing devices, such as applications114running on the client computing device102, may be utilized to access other devices in a network, such as one or more remote servers105, that enable access to the hosted services106.FIG. 14provides example processing devices of the system100, such as the client computing device102and the remote servers105.

Having described an example system that may be employed by the aspects disclosed herein, this disclosure will now describe various user interfaces inFIGS. 2A through 12to illustrate the windowing container and functions thereof, and an example windowing method inFIG. 13that may be performed by various aspects of the disclosure. In aspects, method1300ofFIG. 13may be performed by a system such as system100ofFIG. 1. However, method1300is not limited to such examples.

FIGS. 2A to 2Gdepict example user interface configurations illustrating grouping and ungrouping of windows within a container. The user interface may be an operating system user interface of a computing device, such as the user interface122of the client computing device102. Referring generally toFIGS. 2A to 2G, the user interface122may include a work area202and a task bar204. The task bar204, among other graphical control elements or features, may include a start button206, a search bar208and one or more icons210. The start button206may be a graphical control element that, upon selection, causes a start menu to be rendered for display. Using the start menu, a user may navigate to applications114installed on the client computing device102, as well as access content items stored locally on the client computing device102, a user account associated with the client computing device102, and/or settings associated with the client computing device102. The search bar208displayed on the task bar204may alternatively be used to search for and navigate to the applications114, the locally stored content items, the user account information, and settings. The icons210displayed on the task bar204may represent a respective one or more applications114that are at least one of currently executing on the client computing device102or have been pinned or added to the task bar204. Icons210that have been pinned to the task bar204may remain displayed on the task bar204even if the respective applications114are closed to enable a user quick access to the applications114. For example, a user selection of an icon210that is pinned to the task bar204may cause the operating system120to execute, launch, or otherwise provide access to the respective application represented by the selected icon210.

When a user selects to open one or more of the applications114or content items authored, edited, or accessible via the applications114using one of the above discussed methods (e.g., via the start button206, the search bar208, and/or the icons210) or another suitable method, a window associated with each of the one or more applications114may be opened and rendered for display within the work area202on the user interface122.

FIG. 2Ais a user interface diagram200A depicting one example input type received that is indicative of a request to group at least two windows displayed on the user interface122. For example, continuing the illustrative example fromFIG. 1, where at least the first application116and the second application118have been opened, the first window128associated with the first application116and the second window130associated with the second application118may be displayed as separate windows within the work area202on the user interface122.

The first window128may include a title bar212and a border214(weighted for emphasis). The title bar212may be a graphical control element that includes a plurality of features that can be interacted with via the user interface122to perform a plurality of individual functions associated with the first window128. These individual functions may include at least minimizing, maximizing, restoring if already maximized, closing, snapping, and repositioning the first window128. At least a portion of these functions, such as minimizing, maximizing, restoring if already maximized, and closing may be visually represented by buttons216on the title bar212. Other of the functions, such as snapping or repositioning, may be performed by selecting a portion of the title bar212and moving (e.g., dragging) the first window128in a particular direction on the user interface122.

The border214may provide resizing functions by allowing a user to select a side or a corner of the border214to resize the first window128by dragging the side or corner of the first window128in a particular direction. For example, the user may select along one of the top or bottom sides of the border214to resize the first window128in a vertical direction (e.g., along the y-axis of the user interface122), where the particular top or bottom side selected and direction (e.g., up or down) in which the selected side is dragged affects whether the first window128is made larger or smaller along the vertical direction. The user may select along one of the right or left sides of the border214to resize the first window128in a horizontal direction (e.g., along the x-axis of the user interface122), where the particular right or left side selected and direction (e.g., right or left) in which the selected side is dragged affects whether the first window128is made larger or smaller along the horizontal direction. The user may select a corner of the border214to resize the first window128simultaneously and proportionally in a horizontal and vertical direction (e.g., along the x- and y-axes of the user interface122), where the direction (e.g., outward from or inward to the center of the first window128) in which the selected corner is dragged affects whether the container is made proportionally larger or smaller along the horizontal and vertical direction.

The first window128may also include a workspace217through which content items that may be read, authored, and/or edited by the particular application type of the first application116may be displayed and further interacted with using functionalities of first application116. In some examples, at least a portion of the functionalities may be provided in a selectable form within a tool bar or ribbon (e.g., displayed between the title bar212and the workspace217).

The second window130may include, among other features, a title bar218including buttons222, a border220, and a workspace223that function the same or similarly to the title bar212, the buttons216, the border214, and the workspace217of the first window128as described in detail above.

In some scenarios, a user may desire to group the first and second windows128,130such that the first and second windows128,130can behave or function as a single window. One example scenario when grouping may be desirable is when the user plans to concurrently refer to or interact with the first application116and the second application118as part of the user's workflow to complete a task or project. Continuing the illustrative example described inFIG. 1, the example user task or project may be to author the document associated with the product or service associated with the user's organization. In order to do so, the user may need to search for and access documents or other content items of the organization that include details on the features or specifications of this product or service. Therefore, at least initially in the user's workflow, the first application116and second application118may be open on the client computing device and interacted with concurrently or alternatingly, where the first application116may be the word processing application through which the user is authoring the document and the second application118may be the document management and collaboration application connected to the user's organizational account to aid the user in searching for and accessing other content useful in drafting the document.

In some examples, to indicate a request to group at least the first window128and the second window130, a first type of user input224may be received in which at least one of the windows (e.g., first window128as illustrated) is selected and moved proximate to, inside of, or overlapping the other, unselected window (e.g., the second window130as illustrated). For example, the first type of user input224may include moving the selected first window128to an edge or border220of the second window130. This first type of user input224may also be referred to as a grouping gesture, particularly when the user utilizes touch or swipe input to perform the gesture. In response to receiving the first type of user input224, a container may be generated into which the selected first and second windows128,130may be grouped as shown inFIG. 2C. In other examples, other types of user input may be received to indicate a request to group at least the first window128and the second window130, such as at least a second type of user input described inFIG. 2B.

FIG. 2Bis a user interface diagram200B depicting another example (e.g., a second) input type received that is indicative of a request to group at least two windows, such as the first and second windows128,130displayed on the user interface122of the client computing device102. The second type of user input may include an initial selection225of each of the first and second windows128,130to be grouped, the selection illustrated using the dashed lines. The second type of user input may further include a subsequent selection226of at least a portion of the work area202of the user interface122to cause display of a context menu227. The context menu227may include, among other selectable options, a group option228that when selected causes a container230to be generated into which the selected first and second windows128,130may be grouped as shown inFIG. 2C.

In addition or alternatively to the input types described above with reference toFIGS. 2A and 2B, in other examples, voice commands may be received via a voice interface supported by the operating system120and interpreted to execute the grouping of the first and second windows128,130. As one illustrative example, the user may provide the voice command “group windows” causing the container230to be generated and all currently displayed or active windows on the user interface122to be grouped into the container230. As another illustrative example, the user may provide a voice command that identifies specific applications, content items, or window titles/names for grouping to cause a subset of the currently displayed or active windows that are associated with the applications, content items, or window titles/names to be grouped into the container230.

FIG. 2Cis a user interface diagram200C depicting an example container230. The container230may be generated in response to receiving a request to group at least two windows, such as the first and second windows128,130. In some examples, receipt of an input type, such as the first or second input types described above with reference toFIGS. 2A and 2B, may be indicative of the request to group. Once generated, the container230may be displayed on the work area202of the user interface122.

The container230may be a window that includes a workspace232comprising the first window128and the second window130, as well as a title bar234and a border236(weighted for emphasis) that have associated functionalities for interacting with the container230. In some examples, the container230may be referred to as a board or a floating board.

Generally, the container230and the first and second windows128,130comprised therein may form a hierarchy-based windowing system. That is, the windowing system may include different hierarchies or levels, where each level may be associated with a set of functionalities related to controlling at least the respective level itself and, for higher levels, one or more lower levels. As one example, the container230may be a higher level having a set of functionalities for controlling each of the first and second windows128,130. Each of the first and second windows128,130may be lower levels having individual windowing components or functionalities that enable user interaction with the first and second windows128,130.

Within the workspace232of the container230, the first and second windows128,130may be automatically arranged. The automatic arrangement may include a sizing and a positioning of each of the first and second windows128,130. The first and second windows128,130and the arrangement thereof within the container230, among other properties associated with the container230, may be stored locally on the client computing device102to identify a state of the container230. In some examples, any time properties of the container230change, such as the windows and/or arrangement thereof, a new or current state of the container230may be stored. In other examples, the state may be stored in response to a closing of the container230such that a current state of the container230just prior to closing is stored. Storage of the state of the container enables the container to be subsequently invoked and provided for display on the user interface122, as discussed in detail with reference toFIGS. 10A to 10C.

Arrangement of the first and second windows128,130within the container230may be based on a set of rules. The arrangement of the first and second windows128,130may include an automatic sizing and positioning of the first and second windows128,130. In some examples, the rules associated with the automatic sizing and positioning may be based in part on a window size for the application type with which the first and second windows128,130are associated. For example, windows for an application type may have a predefined minimum pixel size and a maximum pixel size. A window having a larger minimum pixel size may be prioritized over other windows as a main or primary window within the container230.

In other examples, the rules associated with automatic sizing and positioning may be based in part on known or learned user preferences for particular application types or content items. For example, preferences may be known based on settings associated with the user account. Alternatively or additionally, preferences may be learned over time from trends in how the user and/or other users similar to the user interact with various different containers having windows associated with particular application types.

In further examples, the rules associated with arrangement of the windows may be based in part on determinations of current usage associated with windows. As one illustrative example, even if the first application116may have a larger minimum pixel size for windows than the second application118, the second window130may nonetheless be arranged as a primary window of larger size and/or more prominent position if the user has been interacting with the second application118more frequently prior to the grouping of the first and second windows128,130within the container230. In some examples, current window or application usage may be tracked using functionalities of a tracking program or application installed and executed by the operating system120. Such usage tracking may also cause a rearrangement of the first and second windows128,130within the container230after initial generation (e.g., creating a new state of the container230). To ensure data privacy, the user may opt-in (with the ability to later opt-out) to activity tracking before such window or application usage is tracked and utilized as part the rules for window arrangement within the container230. Additionally, when opted-in, the users may be provided within information related to the collection and use of the tracked data, including a capability to correct the data and/or override the data with user preferences.

The rules for window arrangement within the container230may also include hierarchies. The hierarchies may relate to at least one or more of size, alignment, and proximity associated with the container230and/or the first and second windows128,130included therein. One example size-related hierarchy may be based on an initial size of each window. For example, when a large window is grouped with a smaller window and the container230is to be resized, the initial size of each window may be taken into account when deciding which window should be larger as part of the resizing process. That is, the large window may occupy more space in the container than the smaller window based on the decision. One example alignment-related hierarchy may be to maintain as many currently-aligned edges of existing windows within the container230as possible when adding a new window to or releasing an existing window from the container230. One example proximity-related hierarchy may be to arrange two or more windows that are proximate to one another on the user interface122prior to grouping adjacently to one another when generating the container230. Another example proximity-related hierarchy included in the rules may be that once two or more windows are arranged adjacent to one another within the container230, the adjacency of the two or more windows may be maintained within the container230when a new window is added or an existing window is released.

The title bar234and the border236may have similar features to the title bars212,218of the first and second windows128,130. For example, the title bar234may be a graphical control element that includes a plurality of features that can be interacted with via the user interface122to perform a plurality of group functions associated with the container230. Performance of such a group function may cause each of the first and second windows128,130to behave or function uniformly as a single window in accordance with the function. These group functions associated with the title bar234may include at least minimizing, maximizing, restoring if already maximized, closing, snapping, and repositioning. At least a portion of these functions, such as minimizing, maximizing, restoring if already maximized, and closing, may be visually represented by buttons238on the title bar234of the container230. Other of the functions, such as repositioning, may be performed by selecting a portion of the title bar234to move (e.g., drag) the container230from a current, first location to a second location on the user interface122. Such movement of the container230may also include movement across one or more monitors or display screens, as well as movement across virtual desktops.

The border236may provide resizing functions by allowing a user to select a side or a corner of the border236and drag the container230in a particular direction to proportionally resize the first and second windows128,130within the workspace232of the container230. For example, the user may select along one of the top or bottom sides of the border236to resize the container230in a vertical direction (e.g., along the y-axis of the user interface122), where the particular top or bottom side selected and direction (e.g., up or down) in which the selected side is dragged affects whether the container230is made larger or smaller along the vertical direction. The user may select along one of the right or left sides of the border236to resize the container230in a horizontal direction (e.g., along the x-axis of the user interface122), where the particular right or left side selected and direction (e.g., right or left) in which the selected side is dragged affects whether the container230is made larger or smaller along the horizontal direction. The user may select a corner of the border236to resize the container230simultaneously and proportionally in a horizontal and vertical direction (e.g., along the x- and y-axes of the user interface122), where the direction (e.g., outward from or inward to the center of the container230) in which the selected corner is dragged affects whether the container is made proportionally larger or smaller along the horizontal and vertical direction.

Specific examples of the above-discussed group functions performed in association with the container230are illustrated and described in greater detail inFIGS. 3A to 8B.

Although the first and second windows128,130are grouped within the container230and may behave or function as a single window upon a selection of one or more group functions associated with the container230, each window may also maintain its individual functionalities as described in detail inFIG. 2A. For instance, each window may still be individually minimized, maximized, restored, closed, resized, snapped, or repositioned. In some examples, the individual functionalities may be executed relative to the container230. As one illustrative example, if a window in the container230is individually minimized to allow the user more space to interact with a primary window, for example, a visual representation of the minimized window may be presented within the container230to allow the user to more easily access and bring back the previously minimized window. As another illustrative example shown inFIGS. 9A and 9Bbelow, the user may still be enabled to utilize functionalities of the border214of the first window128to resize the first window128within the container230. In some examples, when the first window128is resized, the container230and/or the second window130may be resized and the second window130may additionally or alternatively be repositioned based on the set of rules for arranging grouped windows.

In some examples, the title bar234may also include a name240associated with the container230. The name240may be automatically populated. In some examples, the name240may be determined based on content items or applications associated with the first and second windows128,130in the container230. For example, the name240may be extracted from a title of a content item being authored and/or edited using the first application116associated with the first window128. Continuing the illustrative example where the first application116is a word processing application through which the user is authoring a document for a product or service, the title of the document may be extracted for inclusion as the name240. In another example, the name240may be populated based on a derived topic associated with the contents of one or more of the windows128,130. For example, if a document being edited in one window is about dogs and another window associated with a web browser is displaying a website about different dog breeds, the document and website may be analyzed to determine that the word “dog” (and synonyms or related terms) appears frequently. Dog may be derived as a topic and included as part of the name240. In some examples, as new windows are added to the container230and/or as existing windows are released, the automatically populated name240may be updated. Additionally, the user may be enabled to manually enter the name240or change an automatically populated name240of the container230. In some examples, once the user enters or changes the name240, automatic updates to the name240upon addition or release of windows may be disabled. The name240may be stored as a property of the state of the container230.

Also, in some examples, when the container230is open on the user interface122, a grouping icon242may be included as one of the icons210displayed on the task bar204of the user interface122. Display of the grouping icon242may be maintained, even if the container230is minimized or otherwise hidden, until the container230is closed.

In addition to interacting with the container230and the first and second windows128,130therein, the user may select244one of the icons210from the task bar204, such as an icon246associated with a third application (e.g., one of the applications114). In some examples, the third application may be currently executing on the client computing device102but a third window250associated with the third application is hidden from the user interface (e.g., the third window was previously minimized, and thus the icon246appears in the task bar204). In other examples, the third application may be pinned or added to the task bar204and thus the icon246may be present on the task bar204regardless of whether the third application is currently executing on the client computing device102. When an icon is pinned, a graphical scheme, such as shading, underlining, shadowing, or highlighting, among other examples, may be applied to indicate whether the third application is currently executing on the client computing device102. Selection244of the icon246may cause the operating system120to execute the third application on the client computing device102, if not already executing, and open the third window250for display on the user interface122. The third window250may be displayed separate from the container230as shown inFIG. 2D.

In this illustrative example, the third application may be a communication application for sending and receiving electronic communications. The electronic communications may include electronic mail (“e-mail”), instant messages, SMS messages, and other similar electronic communications. For example, as the user is authoring the document using the first application116via the first window128and intermittently searching for and accessing supportive content items using the second application118via the second window130, the user may pause and select244the icon246to open the communication application in order to check for any new electronic communications received and/or to search for a specific electronic communication related to the document, among other examples.

FIG. 2Dis a user interface diagram200D depicting an example addition of a new window, such as the third window250, to the container230. Upon the selection244of the icon246associated with the third application illustrated inFIG. 2C, the operating system120may execute the third application on the client computing device102, if not already executing, and open the third window250on the user interface122for display separate from the container230. The third window250may include, among other features, a title bar252including buttons256, a border254, and a workspace257that function the same or similarly to the title bar212, the buttons216, the border214, and the workspace217of the first window128as described in detail above with reference toFIG. 2A.

In some examples, the container230may automatically maintain a forward position in the z-order along the z-axis of the user interface122such that the container230appears on top of any other windows displayed on the user interface122that at least partially overlap with the container230. For example, if the third window250partially overlapped with the container230, the container230may appear on top causing the overlapping portion of the third window250to be hidden. An example of this overlapping is shown with reference toFIG. 2G. In other examples, a window (or container) that was most recently opened or interacted with may maintain the forward position in the z-order along the z-axis of the user interface122.

To add the third window250to the container230for grouping of the first window128, the second window130, and the third window250, the user may select and move258the third window250proximate to the container230. For example, the selected third window250may be moved (e.g., dragged) to at least an edge (e.g., the border236) of the container230. In some examples, the selected third window250may be further moved into the container230itself. This selection and movement258may be one example form of a request to add or group a new window to an existing container, such as container230.

FIG. 2Eis a user interface diagram200E depicting automatic window arrangement upon addition of a new window, such as the third window250, to the container230. For example, in response to the addition of the third window250to the container230, the container230, the first window128, the second window130, and the third window250may be arranged based on the set of rules (including the hierarchies) described in detail with references toFIG. 2C.

In one example, the container230may be a predefined size adjustable by the user, where the first, second, and third windows128,130,250may be arranged (e.g., based on size and/or position) within the workspace232of the container230to fit within the predefined size of the container230. For example, the added third window250may be automatically sized and positioned, and the existing first and second windows128,130may be automatically resized and/or repositioned based on a set of rules. In another example, the size of the container230may be automatically adjustable to fit each of the first, second, and third windows128,130,250. In a further example, the container230may reject the new window added (e.g., the third window250) if, based on the minimum pixel size of the new window, there is not enough space within the container230for the inclusion of the new window. Alternatively, in the scenario where there is not enough space, instead of rejecting the new window, the container230may instead eject or release another existing window within the container (e.g., release the first window128or the second window130) to enable space for the new window. The determination of which existing window to eject or remove may be based on current usage associated with windows or associated applications, where the least used or interacted with window over a most recent, predefined period of time (e.g., within the last hour) is released. The ejection determination may additionally or alternatively be based on defined user preferences, a most recent or least recent window added to the container230, and/or a least recent window receiving user content or interaction, etc.

In some examples, once the third window250is added and the automatic arrangement has been performed, a current state of the container230that identifies the first, second, and third windows128,130,250and their arrangement within the container230, among other properties of the container, may be stored locally on the client computing device102.

Additionally, the name240of the container230may be automatically updated upon the addition of the third window250. For example, the name240may be updated based on content items or applications associated with the third window250. Continuing with the illustrative example, initially the title of the document being authored using the first application116associated with the first window128may be extracted and used as the name240. Based on the addition of the third window250associated with the communication application, and a determination that the content items being viewed therein include electronic communications between the user and a colleague, the name240may be automatically updated to further include an indication that this project or task is a collaboration with the colleague. In other examples, if the user had already entered or changed a previous name240, the automatic updates to the name upon addition of new windows may be disabled. Also, upon the addition of the third window250, the user may be enabled to manually change the previous name240or change the automatically updated name240of the container230. Any manual or automatic updates to the name240may be stored as a property of the current state of the container230.

Additionally, now that the third window250is added to the container230(e.g., is grouped with the first window128and the second window130), group functions performed in association with the container230may affect each of the first window128, the second window130, and the third window250. In other words, the first window128, the second window130, and the third window250may function or behave as a single window in response to a group function being performed in association with the container230.

FIG. 2Fis a user interface diagram200F depicting an example release of an existing window, such as the second window130, from the container230depicted inFIG. 2E. Once the user has found and accessed the content items they need to aid them in drafting the document using the second application118(e.g., the document management and collaboration application), the user may no longer need to interact with the second application118via the second window130and may want to ungroup the second window130from the first window128(e.g., release the second window130from the container230).

In response to receiving a request to ungroup the second window130from the first window128, the second window130may be released from the container230. In some examples, and as illustrated, the request to ungroup may be in a form of a user selection and movement260of the window to be ungrouped or released (e.g., a drag of the second window130) outside of the container230. This form of request may be referred to as an ungrouping gesture, particularly when the user utilizes touch or swipe input to perform the gesture. In other examples, closing of a window individually (e.g., using the functionalities of the window itself such as a close button of the window) within the container230may cause the closed window to be released from the container230. In further examples, voice commands may be received via a voice interface supported by the operating system120and interpreted to execute the ungrouping of a window from the container230. As one illustrative example, the user may provide a voice command that identifies a specific application, content item, or window title/name associated with the window to be released from the container230.

FIG. 2Gis a user interface diagram200G that depicts an example automatic window arrangement within the container230subsequent to the release of an existing window, such as the second window130released from the container inFIG. 2D. For example, in response to the release of the second window130from the container230, the container230, the first window128, and/or the third window250may be automatically arranged based on the set of rules (including the hierarchies) associated with window arrangement within the container230described in detail with reference toFIG. 2C. In one example, container230may be a predefined size adjustable by the user, where the first and third windows128,250may be arranged (e.g., based on size and/or position) within the workspace232of the container230to fit within the predefined size of the container230. For example, the existing first and third windows128,250may be automatically resized and/or repositioned based on the rules. In another example, the size of the container230may be automatically adjustable to fit each of the first and third windows128,250.

In some examples, once the second window130is released and the automatic arrangement has been performed within the container230, a current state of the container230that identifies the first and third windows128,250and their arrangement within the container230, among other properties of the container, may be stored or updated locally on the client computing device102.

In some examples, the name240of the container230may also be automatically updated upon the release of the second window130. For example, the name240may be updated based on content items or applications associated with the remaining windows, particularly if a previous name was based on at least a portion of the content items or applications associated with the released window. In other examples, if the user had already entered or changed a previous name240, the automatic updates to the name upon removal of existing windows may be disabled. Also, upon the release of the second window130, the user may be enabled to manually change the previous name240or change the automatically updated name240of the container230. Any manual or automatic updates to the name240may be stored as a property of the current state of the container230.

Additionally, in some examples, once the second window130is released, the second window130may remain open and displayed within the work area202on the user interface122. As illustrated, the container230may maintain a forward position in the z-order along the z-axis of the user interface122such that the container230appears on top of any other windows displayed on the user interface122that at least partially overlap with the container230, such as the removed second window130. For example, at least a portion of the second window130overlaps the container230on the user interface122, causing that overlapping portion of the second window130to be hidden.

Further, now that the second window130is removed from the container230, group functions performed in association with the container230may only affect the first window128and the third window250. Instead, the user may utilize individual functions of the second window130to manipulate the second window130. For example, and as illustrated, the user may close the second window130by selecting270, from the buttons222in the title bar218, a close button272. Selection of the close button272may cause the second window130to be removed from display on the user interface122and cause the operating system120to stop executing the second application118associated with the second window130.

FIGS. 3A to 8Binclude example user interface configurations illustrating various group functions performed in association with the container230having a current state as described with respect toFIG. 2G. For example, the container230may include the first window128and the third window250within the workspace232of the container230.

FIGS. 3A to 3Cdepict example user interface configurations illustrating performance of a group minimize function in association with the container230.FIG. 3Ais a user interface diagram300A that depicts one example input type to request minimization of the container230. For example, a user may select302a minimize button304from the buttons238of the title bar234to cause the container230to be minimized, as shown inFIG. 3C.FIG. 3Bis a user interface diagram300B that depicts another example input type to request minimization of the container230. For example, a user may select308the grouping icon242that is displayed among the icons210on the task bar204of the user interface122. When the container230is open and displayed within the work area202on the user interface122as illustrated, selection of the grouping icon242may cause the container230to be minimized, as shown inFIG. 3C. In another example (not illustrated herein), a user selection of the grouping icon242may cause a menu of options to be displayed, where the options may include to minimize the container230, among other similar group functions. The input types described inFIGS. 3A and 3Bare non-limiting, non-exhaustive input types for requesting minimization of the container230.

FIG. 3Cis a user interface diagram300C that depicts minimization of the container230in response to an input type requesting minimization of the container230, such as one of the input types illustrated and described with reference toFIGS. 3A and 3B. As illustrated, minimization of the container230causes the container230to be hidden from display within the work area202of the user interface122. Because the minimization function was performed in association with the container230(e.g., was a group minimize function), the first window128and the third window250grouped within the container230may function and behave uniformly as a single window such that the first window128and the third window250are hidden in conjunction with the container230. In some examples, to indicate that the container230and the first and third windows128,250therein remain open but are currently hidden from display, a graphical scheme310, such as shading, highlighting, underlining, etc., may be applied to the grouping icon242that is displayed among the icons210on the task bar204of the user interface122.

FIGS. 4A to 4Bdepict example user interface configurations illustrating performance of a group maximize function associated with the container230.FIG. 4Ais a user interface diagram400A that depicts one example input type to request maximization of the container230. For example, a user may select402a maximize button404from the buttons238displayed on the title bar234to cause the container230to be maximized, as shown inFIG. 4B.

FIG. 4Bis a user interface diagram400B that depicts maximization of the container230in response to an input type requesting maximization of the container230, such as the non-limiting example input type described with reference toFIG. 4A. Maximization of the container230causes the container230to be enlarged such that the container230occupies an entirety of the work area202on the user interface122. Because the maximization function was performed in association with the container230(e.g., was a group maximize function), the first window128and the third window250grouped within the container230may function and behave uniformly as a single window such that the first window128and the third window250are enlarged within the workspace232of the container230. The first window128and the third window250may be enlarged proportionally to the container230. For example, if prior to maximization of the container130, the first window128occupies 25% of the container230and the third window250occupies 75% of the container230, the same window occupation percentages for each of the first window230and the third window250apply when the container230is maximized (or is in any other non-maximized size). In some examples, when the container230is maximized, the maximize button404described and illustrated inFIG. 4Amay be replaced with the restore button406among the buttons238of the title bar234of the container230. The restore button406may be a selectable button that causes the container230to be restored to its previous size and position within the work area202on the user interface122prior to the maximization of the container230.

FIGS. 5A to 5Bdepict example user interface configurations illustrating performance of a group close function associated with the container230.FIG. 5Ais a user interface diagram500A that depicts one example input type to request closing of the container230. For example, a user may select502a close button504from the buttons238displayed on the title bar234of the container230to cause the container230to close, as shown inFIG. 5B.

FIG. 5Bis a user interface diagram500B that depicts a closing of the container230in response to an input type requesting to close the container230, such as the non-limiting example input type described with reference toFIG. 5A. Closing of the container230causes the container230to be entirely removed from display within the work area202of the user interface122and any programs or applications associated therewith to stop being executed or be deactivated by the operating system120. For example, because the closing function was performed in association with the container230(e.g., was a group close function), the first window128and the third window250grouped within the container230may function and behave uniformly as a single window such that the first window128and the third window250are removed from display and the applications associated therewith are no longer executed by the operating system120. The grouping icon242, which was previously present inFIG. 5A, may also be removed from the icons210displayed among the task bar204to indicate that the container230is no longer open.

FIGS. 6A to 6Bdepict example user interface configurations illustrating performance of a group resize function associated with the container230.FIG. 6Ais a user interface diagram600A that depicts one example input type602to resize the container230. For example, the input type602may include the user selecting along a side or a corner of the border236of the container230to resize the container230by moving or dragging the container230in a particular direction to cause the container230to be resized. In this particular example, the user may be selecting a bottom, right corner of the border236of the container230and moving the selected corner outward from the container230to cause the container230to be resized simultaneously and proportionally in both a vertical and horizontal direction. The outward motion may be vertically downward and horizontally to the right. Therefore, in the vertical direction, the container230may be extended downward along the y-axis, and in the horizontal direction, the container230may be extended to the right along the x-axis, as shown inFIG. 6B.

User selections of other parts of the border236(e.g., along the sides or of different corners) of the container230, may cause the container230to be resized in a different manner in accordance with a particular direction that the selected part of the border236is moved.

FIG. 6Bis a user interface diagram600B depicting a container230that has been resized in response to an input type to resize the container230, such as the non-limiting example input type described with reference toFIG. 6A. Because the resizing function was performed in association with the container230(e.g., was a group resize function), the first window128and the third window250grouped within the container230may function and behave uniformly as a single window such that the first window128and the third window250are resized within the workspace232of the container230simultaneously and proportionally in both a vertical and horizontal direction with respect to each other and the container230. For example, if prior to the resizing of the container130, the first window128occupies 25% of the container230and the third window250occupies 75% of the container230, the same window occupation percentages for each of the first window230and the third window250apply when the container230is resized.

FIGS. 7A to 7Bdepict example user interface configurations illustrating performance of a group reposition function associated with the container230.FIG. 7Ais a user interface diagram700A that depicts one example input type702to reposition the container230. For example, the input type702may include the user selecting a portion of the title bar234of the container230and moving or dragging the container230in a particular direction to move the container230from a current, first position to a second position on the user interface122, as shown inFIG. 7B. In this particular example, upon selecting the portion of the title bar234of the container230, the user may move the container230vertically upward and horizontally to the right across the work area202of the user interface122. Therefore, in comparison to the first position, the second position of the container230subsequent to the move may be vertically upward along the y-axis and horizontally to the right along the x-axis on the user interface122. In this example, the container230is moved across the user interface122for display within a same screen (e.g., the screen124of the client computing device102). In other examples, the container230may be similarly moved across the user interface122for display on another display device, such as the monitor126communicatively coupled to the client computing device102, or across virtual desktops.

FIG. 7Bis a user interface diagram700B depicting the container230that has been repositioned in response to an input type to reposition the container230, such as the non-limiting example input type702described with reference toFIG. 7A. Because the reposition function was performed in association with the container230(e.g., was a group reposition function), the first window128and the third window250grouped within the container230may function and behave uniformly as a single window such that the first window128and the third window250are moved as part of or along with the container230. For example, the first window128and the third window250may remain a same size and within a same position in the workspace232of the container230as the container is moved.

FIGS. 8A to 8Bdepict example user interface configurations illustrating performance of a group snap function associated with the container230.FIG. 8Ais a user interface diagram800A that depicts one example input type802to snap the container230. For example, the input type802may include the user selecting a portion of the title bar234of the container230and moving or dragging the container230in a horizontal direction toward either a right or left edge of the user interface122displayed on the screen124of the client computing device102, for example. As the container230approaches the edge, the user may provide, for example, a swipe input to indicate a request to snap the container230. In this particular example, upon selecting the portion of the title bar234of the container230, the user may move the container230horizontally to the right across the work area202of the user interface122toward the right edge of the user interface122.

FIG. 8Bis a user interface diagram800B depicting the container230that has been snapped to the right edge of the user interface122in response to receiving a request to snap the container230, such as the non-limiting example input type802described with reference toFIG. 8A. Because the snap function was performed in association with the container230(e.g., was a group snap function), the first window128and the third window250grouped within the container230may function and behave uniformly as a single window such that the first window128and the third window250are snapped as part of or along with the container230. As illustrated, snapping of the container230to the right edge of the user interface122may cause the work area202of the user interface122to separate into two portions (emphasized by dashed lines).

A first portion804on the right side of the work area202may include the container230, which has been resized to occupy an entirety of the first portion804. Accordingly, the first window128and the third window250may be rearranged within the workspace232of the resized container230based on the set of rules (including the hierarchies) described in detail with references toFIG. 2C. For example, one or both of the first and third windows128,250may be resized, repositioned, or resized and repositioned to fit within the workspace232of the resized container230.

A second portion806on the left side of the work area202may include a display panel808. In some examples, the display panel808may occupy an entirety of the second portion806such that any other objects present on the left side of the work area202are covered by the display panel808. The display panel808may include one or more additional windows810that may be open (e.g., including those that are open but hidden or minimized) on the user interface122. User selection of one of these additional windows within the display panel808may cause the selected window to be displayed within the second portion806. The selected window may occupy an entirety of the second portion806.

FIGS. 3A to 8Bdescribed above included example user interface configurations illustrating various group functions performed in association with the container230displayed within the work area202on the user interface122. While touch or swipe-based input types or interactions were primarily described, other input types associated with other input devices, such as those described with reference toFIG. 14, may similarly trigger the various requests (e.g., the requests to minimize, maximize, close, resize, reposition, and snap). As one illustrative example, for operating systems supporting voice interfaces, voice commands requesting to perform the various group functions in association with the container230may be received and interpreted to perform the requests. In addition to being able to perform group functions in association with the container230that cause the first window128and second window130to behave uniformly as a single window, the first window128and third window250may maintain individual functions to enable a user to interact with just one of the windows individually. As one non-limiting example,FIG. 9A-9Bdepict example user interface configurations illustrating an individual resizing of a window, such as the first window128, within the container230.

FIG. 9Ais a user interface diagram900A that depicts one example input type902to individually resize the first window128in the container230. For example, the input type902may include the user selecting along a side or a corner of the border214of the first window128to resize the first window128by moving or dragging the first window128in a particular direction to cause the first window128to be resized. In this particular example, the user may be selecting a portion along a right side of the border214of the first window128and moving the selected portion to the right to cause the first window128to be resized in the horizontal direction. Therefore, in the horizontal direction, a length of the first window128may be extended to the right along the x-axis, as shown inFIG. 9B.

User selections of other parts of the border214(e.g., along other sides or of corners) of the first window128, may cause the first window128to be resized in a different manner in accordance with a particular direction that the selected part of the border214is moved.

FIG. 9Bis a user interface diagram900B depicting the container230that includes the first window128having been individually resized in response to an input type to individually resize the first window128, such as the non-limiting example input type902described with reference toFIG. 9A. In some examples, based on the size and/or position of the first window128after being resized within the workspace232of the container230, the container230and/or other windows within the workspace232, such as the third window250, may be automatically updated or changed based on the set of rules (including hierarchies) for arranging grouped windows within the container230. For example, as illustrated inFIG. 9B, the container230may be resized to be larger in both the vertical and horizontal directions (e.g., extended along the x and y-axes), and the third window250may be resized and repositioned beneath the first window128within the workspace232of the container230.

FIGS. 9A-9Brepresent one non-limiting example of performance of individual functions to a window within a container. In other examples, a window may be individually repositioned, minimized, maximized, restored to the container if previously maximized, and closed.

FIGS. 10A-11Bdepict example user interfaces illustrating example methods for invoking a stored container. As previously discussed, one or more states of a container may be stored and accessible for later selection by a user such that the user may quickly and easily return to the container at a later time with minimal input, rather than having to individually re-open all associated windows, improving user efficiency and interactivity with the client computing device102. In some examples, any time a number of windows and/or an arrangement of the container or windows within the container changes or is updated, a current state of the container may be stored. In other examples, the state may be stored in response to a closing of the container such that a current state of the container just prior to closing may be later retrievable and provided for display on the user interface122.

In some scenarios, a user may manually close the container, as illustrated for the container230with respect toFIGS. 5A and 5B. In other scenarios, the operating system may be rebooted, which may cause the container to be automatically closed. For example, the client computing device may be restarted (manually or automatically) or powered off and back on. After the container has been closed, and the user desires to return to the container, the container may be invoked using a variety of methods.

FIGS. 10A-10Cdepict one example method for invoking a stored container.FIG. 10Ais a user interface diagram1000A that depicts one example input type1002to invoke a stored container, such as container230. For example, the input type1002may include the user selecting a portion of the work area202of the user interface122that does not contain other objects near a right side of the user interface122and performing a swipe motion in a horizontal direction (e.g., along the x-axis) toward the left side of the user interface122to cause a display panel1004to be displayed as shown inFIG. 10B. This input type1002may also be referred to as a switch gesture, particularly when the user utilizes touch or swipe input to perform the gesture. In other examples, if the client computing device102includes a touchpad, the display panel1004may be performed in response to a user providing a particular type of swipe input (e.g., a multi-finger swipe) to the touchpad. In further examples, the request to invoke the stored container may include any action indicating to present a display panel listing one or more containers having stored states, such as the display panel1004.

FIG. 10Bis a user interface diagram1000B depicting the display panel1004presented in the work area202of the user interface122in response to an input type to invoke a stored container, such as the non-limiting example input type1002described with reference toFIG. 10A. In some examples, the display panel1004may occupy an entirety of the work area202of the user interface122. The display panel1004may include a plurality of portions, including at least a first portion1006and a second portion1008. The first portion1006may display windows or containers, if any, that are currently open and executing on the client computing device102. The second portion1008may include stored containers, including at least the stored container230. The stored containers may be associated with a state. The state may identify a size of the container, a position of the container on the user interface122, a name of the container, an application with which each window included in the container is associated, a content item with which one or more windows included in the container is associated, a size and a position of each window included in the container, and other stylistic and/or visual characteristics as defined by the set of rules, for example. In some examples, the stored containers as displayed within the second portion1008of the display panel1004may visually represent at least certain aspects of the associated states of the stored containers.

Referring back to the grouping and ungrouping sequences described with respect toFIGS. 2A to 2G, the container230displayed within the second portion1008of the display panel1004inFIG. 10Bmay be in a state of the container230as described with respect toFIG. 2G. This state may be a most current state (e.g., a state of the container230prior to a most recent closing of the container230). In some examples, the second portion1008may include more than one state of the container230as it was changed and updated. For example, the second portion1008may include a state associated with the container as described with reference toFIG. 2A, a state associated with the container as described with reference toFIG. 2E, and the state associated with the container as described with reference toFIG. 2G. When multiple states for the same container are displayed, the states may be ordered chronologically, where the most recent state is displayed more prominently (e.g., forward of or above) the remaining states.

In response to a user selection1010of the container230displayed in the second portion1008of the display panel1004, the container230may be re-opened and displayed on the user interface122in accordance with the associated state of the container230, as shown inFIG. 10C. This allows the user to quickly resume progress on an ongoing project rather than having to spend time individually re-opening, re-sizing, and re-positioning windows on the user interface122. For example, the container230may have a same name, size, and position on the user interface122inFIG. 10Cas the container has inFIG. 2G. Similarly, the container230may include the same first and third windows130,250and each of the first and third windows130,250may be a same size and position within the workspace232of the container230inFIG. 10Cas the container inFIG. 2G. The container230may further include the same visual and style characteristics.

Additionally, in some examples, once the container230is re-opened, the grouping icon242may be included as one of the icons210displayed on the task bar204of the user interface122.

FIGS. 11A and 11Binclude user interface configurations illustrating another example method for invoking a stored container. For example,FIG. 11Ais a user interface diagram1100A depicting another example input type1102to invoke a stored container. The example input type1102may include the user selection of an icon1104associated with an application, such as the first application116, from the task bar204of the user interface122. In this example, the icon1104may be a pinned icon such that the icon1104remains on the task bar204even when the first application116is currently not being executed or is inactive on the client computing device102and no windows associated with the first application116are open and displayed on the user interface122.

Upon user selection of the icon1104, a determination may be made as to whether any locally stored containers include a window associated with the first application116. In response to a determination that the first application116is not included in one of the locally stored containers, the first application116may be executed and a window associated with the first application116may be opened for display on the user interface122. As shown in a user interface diagram1100B ofFIG. 11B, in response to a determination that the first application116is included in one of the locally stored containers, such as the container230, the entirety of the container230(including the first window128and the third window250) may be re-opened and displayed on the user interface122in accordance with the associated state of the container230. Additionally, in some examples, once the container230is re-opened, the grouping icon242may be included as one of the icons210displayed on the task bar204of the user interface122.

FIG. 12depicts an example configuration1200of the user interface122illustrating a default container1202open for display within the work area202of the user interface122. The default container1202includes a title bar1204including buttons1210, a workspace1206, and a border1208that include the same features and functionalities as the title bar234, buttons238, workspace232, and border236of container230, respectively, as described in great detail with reference toFIG. 2C. For example, the same group functions performed in association with the container230may be performed in association with the default container1202to cause any windows included therein to behave or function as a single window in accordance with the group function.

However, inFIG. 2C, the container230may be generated in response to receiving example input types, such as those illustrated inFIG. 2A or 2B, indicative of a request to group at least two windows, such as the first window128and the second window130. In contrast, inFIG. 12, the default container1202may be automatically populated with a plurality of windows1212associated with various application types and provided on the user interface122without user input. In some examples, the default container1202may include windows for each of the application types currently active or open the client computing device102. The application types may be one of or a combination of multiple instances of a same application or different applications. In other examples, a portion of the application types may be selected for inclusion based on total usage or user preference (e.g., known based on settings or learned based on past activity). The user may then request to release one or more of the windows by performing an ungrouping gesture, for example, as shown and described in detail with reference toFIGS. 2F and 2G. In another example, one or more of the windows be automatically ejected based on non-use. As an illustrative example, initially all applications may be included within the default container1202, and after a predefined period of time (e.g., 15 minutes, 30 minutes, an hour) of non-use of one or more applications, the applications may be ejected from the default container1202.

Aspects of this disclosure are not limited to the non-exhaustive user interface configurations illustrated inFIGS. 2A to 12. The user interfaces and objects therein, including the container230or default container1202, may be displayed using varying textual schemes, graphical schemes, audio schemes, animation schemes, coloring schemes, highlighting schemes, and/or shading schemes. Additionally, while touch or swipe-based input types or interactions were primarily described, other input types associated with other input devices, such as those described with reference toFIG. 14, may similarly trigger the various requests (e.g., the requests to group, ungroup, minimize, maximize, close, resize, reposition, and snap). As one illustrative example, for operating systems supporting voice interfaces, voice commands requesting to group and ungroup the windows, as well as perform the various group functions may be received and interpreted to perform the requests. Further, while a single container is described, in other aspects, a plurality of containers can be generated and interacted with concurrently on the user interface.

FIG. 13illustrates an example windowing method1300. The method1300may be provided by one or more components of the system100described inFIG. 1, such as the operating system120of the client computing device102having the user interface122. The method1300begins at operation1302where at least two windows associated with one or more applications being executed by the operating system may be opened for display on the user interface of the operating system. For example, the two windows may include the first window128and the second window130as illustrated and described with reference toFIG. 1. In some examples, the first window128and the second window130may be associated with at least two different applications114. For instance, the first window128may be associated with the first application116and the second window130may be associated with the second application118. In other examples, the first window128and the second window130may be respectively associated with a first instance and a second instance of the same application114. For example, the first window128and the second window130may be associated with first and second instances of the first application116or first and second instances of the second application118.

At operation1304, a request to group the two windows may be received via the user interface. Example input types indicative of the request to group the two windows are illustrated and described in detail with reference toFIGS. 2A and 2B. At operation1306, a container may be generated that includes the two windows arranged based on one or more rules and a plurality of features enabling a plurality of group functions associated with the container to be performed.

As described in detail with reference toFIG. 2C, the container (e.g., container230) may be a window including a title bar, a workspace, and a border surrounding the title bar and workspace area. The two windows may be arranged within the workspace, where the arrangement may include an automatic sizing and positioning of the two windows within the container based on the one or more rules. The rules for the automatic sizing and positioning may be based at least in part on a minimum window size associated with each respective application type. In other examples, the rules for the automatic sizing and positioning may also be based on predefined settings and/or window usage. The rules for the arrangement may further include hierarchies relating to at least size, alignment, and proximity associated with the container and objects, including each window, comprised therein. The title bar and border of the container may include the features enabling the group functions associated with the container to be performed. Example group functions may include minimizing, maximizing, restoring, closing, resizing, snapping, or repositioning the container.

At operation1308, a request to perform a group function from the plurality of group functions associated with the container may be received via the user interface. Example input types to request the various types of group functions are illustrated and described with reference toFIGS. 3A, 3B, 4A, 5B, 6A, 7A, 8A.

At operation1310, the group function associated with the container may be performed to cause the two windows to behave uniformly as a single window in accordance with the group function. For example, performance of one of the group functions of minimizing, maximizing, restoring, closing, resizing, snapping, or repositioning the container may cause each of the container and the two windows arranged therein to be correspondingly minimized, maximized, restored, closed, resized, snapped, or repositioned.

In other examples, a new window may be added to the container in response to receiving a request to group the new window, or an existing window may be released from the container in response to receiving a request to ungroup the existing window. Upon the addition or release, the windows within the container may be automatically re-arranged based on the rules. Additionally, a state of the container may be stored in a local data store of the system such that the container may be subsequently invoked and opened for display on the user interface in accordance with the stored state. In some examples, a new state of the container is saved each time the container is updated or changed (e.g., new windows, release of windows, new name, resizing, etc.). In other examples, the state of the container is stored in response to a closing of the container. In either example, after the container is closed, a request to invoke the container may be received, the state of the container may be retrieved from storage, and the container may be opened for display on the user interface in accordance with the retrieved state.

FIG. 14is a block diagram illustrating physical components (e.g., hardware) of a computing device1400with which aspects of the disclosure may be practiced. For example, the computing device1400may illustrate components of processing devices or servers of the system100, including the client computing device102and the servers105hosting the services106. The computing device components described below may be suitable for the computing devices and systems described above. In a basic configuration, the computing device1400may include at least one processing unit1402and a system memory1404(such as processing unit110and memory108of the client computing device102). Depending on the configuration and type of computing device, the system memory1404may comprise, but is not limited to, volatile storage (e.g., random access memory), non-volatile storage (e.g., read-only memory), flash memory, or any combination of such memories.

The system memory1404may include an operating system1405and one or more program modules1406suitable for running software application1420, such as the operating system120and program modules112suitable for running software applications114on the client computing device102, as well as the one or more virtual machines and/or one or more components associated with the hosted services106that are supported by the systems described herein. The operating system1405, for example, may be suitable for controlling the operation of the computing device1400.

Furthermore, embodiments of the disclosure may be practiced in conjunction with a graphics library, other operating systems, or any other application program and is not limited to any particular application or system. This basic configuration is illustrated inFIG. 14by those components within a dashed line1408. The computing device1400may have additional features or functionality. For example, the computing device1400may also include additional data storage devices (removable and/or non-removable) such as, for example, solid-state drives, magnetic disks, optical disks, or tape. Such additional storage is illustrated inFIG. 14by a removable storage device1409and a non-removable storage device1410.

As stated above, a number of program modules and data files may be stored in the system memory1404. While executing on the processing unit1402, the program modules1406(e.g., application1420) may perform processes including, but not limited to, the aspects, as described herein. Other program modules that may be used in accordance with aspects of the present disclosure may include virtual machines, hypervisors, and other types of applications such as electronic mail and contacts applications, word processing applications, spreadsheet applications, note taking applications, database applications, slide presentation applications, drawing or computer-aided application programs, etc.

The computing device1400may also have one or more input device(s)1412such as a keyboard, a mouse, a pen, a sound or voice input device, or a touch or swipe input device, among other similar input device types. The output device(s)1414such as a display, speakers, or a printer may also be included. The aforementioned devices are examples and others may be used. The computing device1400may include one or more communication connections1416allowing communications with other computing devices1450. Examples of suitable communication connections1416include, but are not limited to, radio frequency (RF) transmitter, receiver, and/or transceiver circuitry; universal serial bus (USB), parallel, and/or serial ports.

As previously discussed, the aspects and functionalities described herein may operate over distributed systems such as the system100described inFIG. 1, where application functionality, memory, data storage and retrieval and various processing functions may be operated remotely from each other over a distributed computing network, such as the Internet or an intranet. Resultantly, users may utilize associated client computing devices102to interact with the hosted services106. User interfaces and information of various types may be displayed via on-board computing device displays or via remote display units associated with such computing devices. For example, user interfaces and information of various types may be displayed and interacted with on a wall surface onto which user interfaces and information of various types are projected. Interaction with the multitude of computing systems with which embodiments of the invention may be practiced include, keystroke entry, touch screen entry, voice or other audio entry, gesture entry where an associated computing device is equipped with detection (e.g., camera) functionality for capturing and interpreting user gestures for controlling the functionality of the computing device, and the like.

According to some aspects, systems are described herein. An example system includes at least one processor and at least one memory coupled to the at least one processor. The memory includes an operating system that is executing at least two different applications. The memory also stores instructions that, when executed by the at least one processor, cause the system to receive a request via a user interface of an operating system to group at least two windows displayed on the user interface that are associated with the at least two different applications, and generate a container. The container may include the two windows arranged based on one or more rules, and the arrangement may include an automatic sizing and positioning of the two windows within the container. The container may also include a plurality of features enabling a plurality of group functions associated with the container to be performed. The instructions, when executed by the at least one processor, further cause the system to receive a request to perform a group function from the plurality of group functions associated with the container via the user interface, and perform the group function associated with the container to cause the two windows to behave uniformly as a single window in accordance with the group function.

In some examples, the plurality of group functions associated with the container include minimizing, maximizing, restoring, closing, resizing, snapping, and/or repositioning the container, and to perform the group function associated with the container, the group function may be applied to each of the two windows. The rules for the automatic sizing and positioning of the two windows within the container may be based, at least in part, on a minimum window size associated with each respective application type. The rules may further include hierarchies relating to size, alignment, and/or proximity associated with the container and/or the two windows comprised therein.

In other examples, a request to ungroup the two windows may be received via the user interface, one of the two windows from the container may be released in response to the request to ungroup the two windows such that one window remains in the container, and the remaining one window in the container may be automatically resized and/or automatically repositioned. A state of the container may be stored in a local data store of the system to enable the container to be subsequently invoked and opened for display on the user interface in accordance with the stored state. The state of the container may identify a size of the container, a position of the container on the user interface, a name of the container, an application associated with each window included in the container, a content item associated with one or more windows included in the container, and/or a size or a position of each window included in the container.

In further examples, the operating system may be executing at least three applications, a third window associated with a third of the at least three applications may be open for display on the user interface separate from the container, and a request to group the third window with the two windows may be received via the user interface. The third window may be added into the container such that the container includes the two windows and the third window, where the two windows and the third window may be arranged within the container based on the rules. The arrangement based on the rules may cause an automatic sizing and positioning of the third window within the container, an automatic resizing of at least one of the two windows or the container, an automatic repositioning of at least one of the two windows, and/or an automatic ejecting of one of the two windows from the container in response to a determination that a minimum size of the third window exceeds an amount of remaining space available in the container.

In yet further examples, a name for the container may be automatically determined and displayed in a title bar of the container. The name for the container may be updated in response to receiving input associated with a modification to the name via the user interface, one or more new windows being grouped into the container, and/or one or more existing windows being released from the container. The container may be a window, a workspace of the window may comprise the two windows, and a title bar and/or a border of the window may comprise the plurality of features enabling the plurality of group functions associated with the container to be performed.

According to some aspects, computer-implemented methods are described herein. An example method may include receiving, via a user interface of an operating system, a request to group at least two windows displayed on the user interface that are associated with at least two different applications being executed by the operating system, and generating a container. The container may include the two windows arranged based on one or more rules, where the arrangement may include an automatic sizing and positioning of the two windows within the container. The container may also include a plurality of features enabling a plurality of group functions associated with the container to be performed. The method may also include receiving, via the user interface, a request to perform a group function from the plurality of group functions associated with the container, and performing the group function associated with the container to cause the two windows to behave uniformly as a single window in accordance with the group function.

In some examples, the received request to group the two windows may be an input type that includes a movement of one of the two windows in proximity to the other of the two windows. The received request to group the two windows may be an input type that includes a selection of a group option of a context menu displayed on the user interface in response to a particular input received via the user interface subsequent to a selection of the two windows.

In other examples, a request to ungroup the two windows, including an input type received via the user interface comprising a selection and movement of one of the two windows out of the container, may be received via the user interface, the one of the two windows selected and moved out of the container may be released such that the other window remains in the container, and the remaining other window may be automatically resized and/or automatically repositioned in the container based on the rules.

In further examples, a state of the container may be stored in a local data store, where the state of the container identifies a size of the container, a position of the container on the user interface, a name of the container, an application associated with each window included in the container, a content item associated with one or more windows included in the container, and/or a size and a position of each window included in the container. A request to invoke the container may be received, the stored state of the container may be retrieved from the local data store, and the container may be opened, for display on the user interface, in accordance with the stored state. The request to invoke the container may include: a first input type received via the user interface that includes a selection to open one or more of an application and a content item associated with an application that is identified in the stored state of the container; a second input type received via the user interface that includes an action indicating to present a display panel listing a plurality of containers having stored states; and/or a reboot of the operating system.

In yet further examples, performing the group function associated with the container may include performing a minimizing, maximizing, restoring, closing, resizing, snapping, and/or repositioning of the container, and the group function may be applied to each of the two windows. The rules for the automatic sizing and positioning of the two windows within the container may be based, at least in part, on a minimum window size associated with each respective application type.

In further aspects, computer storage media are described. An example computer storage media stores instructions that, when executed by a processor, cause the processor to perform operations. The operations may include receiving, via a user interface of the operating system, a request to group at least two windows displayed on the user interface that are associated with at least two different applications being executed by the operating system, and generating a container. The container may include the two windows arranged based on one or more rules, where the arrangement may include an automatic sizing and positioning of the two windows within the container. The container may also include a plurality of features enabling a plurality of group functions associated with the container to be performed. The operations may also include receiving, via the user interface, a request to perform a group function from the plurality of group functions associated with the container, and performing the group function associated with the container to cause the two windows to behave uniformly as a single window in accordance with the group function.

Aspects of the present disclosure, for example, are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products according to aspects of the disclosure. The functions/acts noted in the blocks may occur out of the order as shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Further, as used herein and in the claims, the phrase “at least one of element A, element B, or element C” is intended to convey any of: element A, element B, element C, elements A and B, elements A and C, elements B and C, and elements A, B, and C.