As computational efficiency has improved, computing devices have been able to run an increased number of applications, thereby delivering diverse functionality to individuals and enterprises. Computing devices may generate indicators, such as icons, corresponding to the applications. These indicators may include a branded visualization or control (e.g., user interface element) useful in visually distinguishing the applications from one another. To help a user find a target application, computing devices have implemented various organizational strategies. For example, certain computing systems generate a scrollable list of applications, while others generate pages of application indicators. Other organizational strategies include a task bar of pinned or popular application indicators to facilitate access to the corresponding pinned application.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The technologies described in this disclosure are directed toward computerized systems and methods for automatically generating an overflow tool that is dynamically updated and chronologically organized to provide improved access to popular or recently used applications. At a high level and according to some embodiments, this occurs by first generating, via a computing device, a graphical user interface (GUI) that may include a task bar, a most recently used (MRU) slot, and/or an overflow expansion control. Since space on the task bar may be limited, the number of application indicators that may be added to the task bar may be limited. As such, embodiments of the present disclosure provide an overflow tool that generates an overflow panel for display proximate to the task bar. The overflow panel includes a dynamically arranged listing of application indicators that correspond to applications that are currently in use on the computing device, and that are not already directly selectable from the task bar. The overflow panel may be generated based on a determination that certain application indicators do not fit on the task bar. In addition or alternatively, the overflow panel may be generated in response to a user interaction. The application indicators on the overflow panel are hereinafter referred to as “overflow application indicators”).
In certain embodiments, the overflow panel includes a collinear listing of overflow application indicators that are chronologically arranged based on which overflow applications were most recently used. The overflow panel may receive a user interaction with an overflow application indicator. In response to the user interaction with the overflow application indicator, the computing device may generate an extended user interface element providing a preview of the overflow application corresponding to the overflow application indicator with which the user has interacted. The extended user interface element may be located proximate to the overflow panel.
With this in mind, various embodiments of the present disclosure addresses problems associated with the limited space on a display and on a task bar, while not compromising the selection precision, such as for computing device allowing for touch selection. As such, the user experience may be improved by enhancing the efficiency by which users are able to access applications which may be running either in an active or suspended state, but not pinned or present on the task bar. Moreover, in accordance with various embodiments of the present disclosure, the overflow panel may be employed as an extension of the task bar, such that the overflow application indicators are configured to be placed after or proximate to the application indicators of the task bar, but the coordinate space of the overflow panel is offset from that of the task bar to appear as a separate feature on the GUI. In this manner, computational efficiency may be improved since existing layouts and designs of the GUI may be leveraged in generating the overflow panel.
Aspects of the disclosure are described in detail below with reference to the attached drawing figures, wherein:
The subject matter of aspects of the present disclosure is described with specificity herein to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, the inventors have contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Moreover, although the terms “step” and/or “block” may be used herein to connote different elements of methods employed, the terms should not be interpreted as implying any particular order among or between various steps herein disclosed unless and except when the order of individual steps is explicitly described. Each method described herein may comprise a computing process that may be performed using any combination of hardware, firmware, and/or software. For instance, various functions may be carried out by a processor executing instructions stored in memory. The methods may also be embodied as computer-usable instructions stored on computer storage media. The methods may be provided by a standalone application, a service or hosted service (standalone or in combination with another hosted service), or a plug-in to another product, to name a few.
Conventional application organizational technologies do not provide efficient access to an ever-increasing number of applications. Some solutions may allow users to organize application indicators into target placements on a home screen, into different pages, into folders, and the like. For example, some approaches may allow users to pin indicators of selected applications to a task bar. However, these task bars may quickly run out of space, generally limiting the convenience and ease of accessing applications that do not fit on the task bar. Accordingly, there is a need to improve the ease by which users are able to access certain applications, while preserving aspects of the GUI design, such as the task bar, which provides at least some base functionality to users.
With this in mind, the technologies described in this disclosure are generally directed to computerized systems and methods for automatically generating an overflow panel that is dynamically updated to display the most relevant overflow applications, thereby improving the ease of access to overflow applications. As used herein and as set forth above, “overflow applications” generally refers to applications that are not associated with or pinned to a task bar. At a high level, certain embodiments include generating a graphical user interface (GUI) that includes various applications and a task bar, for example, that may be positioned along a width of the bottom of the GUI.
Generation of the GUI may be based on an operating mode or orientation of the computing device. For example, a computing device oriented in a tablet mode may display a GUI that includes application indicators presented in a landscape view having a width that is greater than a height of the display surface. As another example, a computing device oriented in a desktop mode may display a GUI that includes application indicators presented in a portrait view having a height that is greater than a width of the display surface.
In either case, the GUI may include a task bar on which indicators corresponding to target or popular applications may be pinned manually or automatically. The popularity of an application may be based on frequency of use, duration of use, or a combination of the two. Applications that are associated with the task bar and/or pinned to the task bar are herein referred to as “pinned applications.” As set forth above, the number of application indicators the task bar may accommodate is limited by the size of the display screen. While the size of the application indicators presented on the GUI may be reduced to accommodate more application indicators, it may be desirable to avoid reducing the size of the application indicators to facilitate precision when selecting the application indicator via any number of selection methods, such as a touch selection, click, and the like. Moreover, existing task bars may not be touch friendly since pinned application indicators presented on task bars are not within the reach of the user's thumb's while the user is holding a computing device, such as a tablet, with both hands. As a result, a user may have to reposition the computing device to be able to remove one hand from the computing device and execute a touch selection of an application indicator.
To address these issues, among others, some embodiments of the present disclosure include generating an overflow tool that including an overflow panel that includes a dynamically updated listing of application indicators that are not already easily accessible via or associated with the task bar. Certain embodiments include determining that there is insufficient space available on the task bar for the overflow application indicators and assigning the overflow application indicators to an overflow panel. The overflow panel may be generated in response to a first user interaction (such as a selection input, a voice activated command, a hovering over input, or a touch input) with an overflow expansion control positioned collinearly with the task bar. As used herein, when referring to an application, “in use” generally means having been launched and remaining open in either an active or a suspended state. For example, when an application is launched it may remain “in use” until the application is closed and the session is terminated.
In certain embodiments, the overflow panel includes a collinear listing of overflow application indicators in use that are chronologically organized based on which overflow applications were most recently used. The overflow panel may be presented above the task bar and along the right or left regions of the GUI to facilitate selection of the overflow application indicators, for example, when the computing device is in tablet mode. As used herein, “most recently used” applications refers to applications that remain in use (as defined above) and were most recently interacted with by any suitable user action, such as launching the corresponding application, providing an input within the application, minimizing the application, and the like. For example, the overflow panel may present overflow application indicators horizontally from left to right with the indicator for most recently used application on one end, such as the far left end, and the indicator for the overflow application that was last used on the other end, such as the far right end. Alternatively, the overflow panel may include overflow application indicators vertically arranged with the indicator for the most recently used overflow application on one end, such as the top end, and the indicator for the application that was last used on the other end, such as the bottom end.
In certain embodiments, the overflow panel may include any number of features adding additional functionality to the overflow panel. In some embodiments, the indicators for the overflow applications may receive user interactions to assign the corresponding indicator to the task bar. For example, the indicators for the overflow applications may be draggable, such that a user may drag and drop a corresponding overflow application indicator from the overflow panel to the task bar to pin the corresponding overflow application indicator to the task bar. As another example, the indicators for the overflow applications may be selected (e.g., right-clicked) to be added to the task bar.
Additionally or alternatively, the overflow panel may include a panel size adjuster that, when selected, expands or increases the size of the overflow panel, for example, to allow more overflow application indicators to be presented on the overflow panel. The overflow panel may receive a user interaction with an overflow application indicator. In response to the user interaction with the overflow application indicator, the computing device may generate an extended user interface element providing a preview, such as a smaller rendition, of content of the overflow application corresponding to the indicator with which the user interacted. The extended user interface element may be positioned proximate to the overflow panel. For example, the computing device may present the extended user interface element, such that the overflow panel is positioned between the extended user interface element and the task bar. In this manner, the extended user interface element is positioned near the overflow panel to facilitate user selection of the extended user interface element. As another example, the computing device may position the extended user interface element such that one border of the extended user interface element abuts the overflow panel and another border abuts the task bar.
In this manner, the overflow panel addresses problems associated with the limited space on a display, while not compromising the selection precision provided by certain computing devices, such as those allowing for touch selection. As such, the user experience may be improved by enhancing the efficiency by which users are able to access open applications, but not pinned or present on the task bar. Moreover, the overflow panel may be programmed as an extension of the task bar, such that the overflow application indicators are placed after or proximate to the application indicators of the task bar, and the coordinate space of the overflow panel is offset from that of the task bar. In this manner, computational efficiency may be improved since existing layouts and designs of the GUI may be leveraged in generating the overflow panel.
Turning now to
Among other components not shown, example operating environment 100 includes a number of user devices, such as user devices 102an and 102b through 102n; a number of data sources, such as data sources 104an and 104b through 104n; server 106; displays 103an and 103b through 103n; and network 110. It should be understood that environment 100 shown in
It should be understood that any number of user devices, servers, and data sources may be employed within operating environment 100 within the scope of the present disclosure. Each may comprise a single device or multiple devices cooperating in a distributed environment. For instance, server 106 may be provided via multiple devices arranged in a distributed environment that collectively provide the functionality described herein. Additionally, other components not shown may also be included within the distributed environment.
User devices 102an and 102b through 102n can be client devices on the client-side of operating environment 100, while server 106 can be on the server-side of operating environment 100. Server 106 can comprise server-side software designed to work in conjunction with client-side software on user devices 102an and 102b through 102n to implement any combination of the features and functionalities discussed in the present disclosure. This division of operating environment 100 is provided to illustrate one example of a suitable environment, and there is no requirement for each implementation that any combination of server 106 and user devices 102an and 102b through 102n remain as separate entities. The displays 103an and 103b through 103n may be integrated into the user devices 102an and 102b through 102n. In one embodiment, the displays 103an and 103b through 103n are touchscreen displays.
User devices 102an and 102b through 102n may comprise any type of computing device capable of use by a user. For example, in one embodiment, user devices 102a through 102n may be the type of computing device described in relation to
Data sources 104an and 104b through 104n may comprise data sources and/or data systems, which are configured to make data available to any of the various constituents of operating environment 100, or system 200 described in connection to
Operating environment 100 can be utilized to implement one or more of the components of system 200, described in
Example system 200 includes network 110, which is described in connection to
In one embodiment, the functions performed by components of system 200 are associated with one or more applications, services, or routines. In one embodiment, certain applications, services, or routines may operate on one or more user devices (such as user device 102a), servers (such as server 106), may be distributed across one or more user devices and servers, or may be implemented in a cloud-based system. Moreover, in some embodiments, these components of system 200 may be distributed across a network, including one or more servers (such as server 106) and client devices (such as user device 102a), in the cloud, or may reside on a user device (such as user device 102a). Moreover, these components, functions performed by these components, or services carried out by these components may be implemented at appropriate abstraction layer(s) such as the operating system layer, application layer, hardware layer, and so forth, of the computing system(s). Alternatively, or in addition, the functionality of these components and/or the embodiments of the disclosure described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Application-specific Integrated Circuits (ASICs), Application-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), and so forth. Additionally, although functionality is described herein with reference to specific components shown in example system 200, it is contemplated that in some embodiments functionality of these components can be shared or distributed across other components.
Continuing with
In some embodiments, application metric collection component 210 may be employed to facilitate the accumulation of application metric data 232 associated with a plurality of application running on a particular device, or in some cases, a plurality of applications running on two or more associated devices, such as a tablet device communicatively coupled to or associated with a laptop device. The application metric data 232 may be received or accessed, and optionally accumulated, reformatted and/or combined, by application metric collection component 210 and stored in one or more data stores such as storage 230, where it may be available to the components or subcomponents of system 200. For example, the application metric data 232 may be associated with a corresponding application, as described herein. Furthermore, the application metric data 232 may be used to classify the application (by the application identifier 222) as a pinned application or an unpinned application, as described below.
Application metric data 232 may be obtained in response to any number of events indicative of actions taken on a computing device, such as the user device 102a of
Application metric data 232 may be any type of data associated with an application, such as a time at which the application was last opened or accessed, a request for a user input, a status indicating whether the application is in use or closed (for example, as determined based on the computational resources being utilized by an application), and so forth. By way of example and not limitation, application metric data 232 may include data that is determined based on a user device 102a from
Continuing with
In either case, the presentation component 212 may locate a task bar on any suitable positon on the GUI. In one embodiment, the presentation component 212 generates a task bar that is located at the bottom of the screen. For example, when presenting content in the tablet mode, the presentation component 212 may locate the task bar along the bottom width (which is less than the height). As another example, when presenting content in the desktop mode, the presentation component 212 may locate the task bar along the bottom width (which is greater than the height).
The task bar may include any number of application indicators associated to the task bar. For example, the presentation component 212 may determine that certain applications have been pinned to the task bar (by a user), such that only indicators corresponding to the pinned applications are located on the task bar, and indicators corresponding to overflow or unpinned applications are not included on the task bar. Instead, indicators corresponding to overflow or unpinned applications may be presented through the overflow tool, as discussed herein. As used herein, pinned application refers to any application that has been specially designated or categorized to have a corresponding selectable indicator included on the task bar by the presentation component 212. The pinned applications may be manually or automatically associated with any suitable designation or category indicating that the pinned application indicator is to be included on the task bar. For example, the pinned applications may be favorited such that only indicators corresponding to favorited applications are displayed on the task bar and indicators corresponding to non-favorited applications are displayed on the overflow tool, as discussed herein.
Continuing with
The application identifier 222 may determine whether an application is an overflow application based on the application metric data 232 determined by the application metric collection component 210 and/or stored in storage 230. In certain embodiments, the presentation component 212 is configured to generate the pinned application indicators that are displayed on the task bar and the overflow application indicators that are displayed on the overflow tool, as discussed herein.
In certain embodiments, the application identifier 222 may determine an available space on the task bar (i.e., an area or region configured to present application indicators on the taskbar that does not include application indicators) and determine a number of overflow applications that are in use. Based on an available space on the task bar, the application identifier 222 may determine a threshold number of additional application indicators that can fit on the task bar. In response to the number of overflow applications in use exceeding the threshold number of additional application indicators, the application identifier 222 may assign the overflow applications to the overflow panel. Alternatively, in response to the number of overflow applications in use exceeding the threshold number of additional application indicators, the application identifier 222 may assign to the task bar the overflow applications equal or less than the threshold number of additional application indicators and assign to the overflow panel the overflow applications greater than the threshold number of additional application indicators.
Continuing with
In some embodiments, the most recently used overflow application may be assigned a first position for the arrangement on the overflow panel and the last used overflow application may be assigned a last position for the arrangement on the overflow panel. Alternatively, in an embodiment, the most recently minimized (but still open and running) overflow application may be ordered first and the overflow application that was minimized the longest time ago may be ordered last. In this manner, the overflow application sequencer 224 may arrange the overflow applications from first to last based on a timestamp associated with when a user interacted with (e.g., opened, minimized, and/or closed) the overflow applications.
In certain embodiments, the overflow application sequencer 224 may receive an indication of when an overflow application was interacted with. In response to receiving this indication, the indicator for the interacted-with overflow application may be repositioned to be arranged toward the front of the order of overflow applications. In this manner, the order associated with the overflow applications and the arrangement of their corresponding indicators is dynamically updated in response to a user interaction with an overflow application.
Continuing with
The overflow tool provider 226 may generate the overflow panel in response to certain trigger events. For example, in response to receiving an indication of a first user interaction (such as a selection input, hovering over input, a voice command, or touch input) with the overflow selection indicator, the overflow tool provider 226 may generate the overflow panel including an ordered arrangement of indicators for the most recently used overflow application as described below with respect to
As previously described, in some cases, the order for displaying the overflow application indicators can be determined, obtained, or derived. As such, overflow application logic 235 may be utilized for determining and assigning an order to the overflow application indicators, and the like. Overflow application logic 235 may include rules, conditions, associations, classification models, or other criteria to determine an order for displaying the overflow application indicators on the overflow panel. For example, in one embodiment, overflow application logic 235 may include comparing a time at which different overflow applications were opened to determine that the indicator for the most recently opened overflow application that should be moved to the front of the order of overflow application indicators. The overflow application logic 235 can take many different forms depending on the mechanism used to determine the order of the overflow applications. For example, the overflow application logic 235 may comprise training data used to train a neural network that is used to evaluate application metric data 232 (e.g., received via the application metric collection component 210) to determine an order for any number of overflow application indicators. The overflow application logic 235 may comprise static rules (which may be predefined or may be set based on settings or preferences in a preferred order of the overflow application indicators), Boolean logic, fuzzy logic, neural network, finite state machine, support vector machine, logistic regression, clustering, or machine learning techniques, similar statistical classification processes, other rules, conditions, associations, or combinations of these to rearrange an order for presenting the overflow application indicators on the overflow panel. For instance, the overflow application logic 235 may specify types of user interaction(s) information that are associated with an event triggering for the rearrangement of the order for presenting the overflow applications, such as an overflow application being launched, an overflow application closing, an overflow application being accessed at frequency exceeding a threshold value, a priority level of an overflow application, or the like.
As shown, example system 200 includes a presentation component 212 that is generally responsible for presenting content and related information to a user, such as the overflow tool. Presentation component 212 may comprise one or more applications or services on a user device, across multiple user devices, or in the cloud. For example, in one embodiment, presentation component 212 manages the presentation of content to a user across multiple user devices associated with that user. In some embodiments, presentation component 212 may determine in what format content it is presented. In some embodiments, presentation component 212 generates user interface features, as described below. Such features can include interface elements (such as graphics buttons, sliders, menus, audio prompts, alerts, alarms, vibrations, pop-up windows, notification-bar or status-bar items, in-app notifications, or other similar features for interfacing with a user), queries, and prompts. In certain embodiments, the presentation component 212 may generate the GUI based on whether the computing device is operating in a tablet mode or desktop mode, as discussed herein.
As shown, the presentation component 212 includes an overflow tool positioner 240 configured to calculate a position of the overflow panel on the GUI. After the overflow applications have been identified and ordered, the presentation component may determine the position on the screen in which the overflow panel will be positioned to present the overflow application indicators. In one embodiment, the overflow application indicators are presented after the pinned application indicators on the task bar and then offset from the task bar to display an overflow panel separate from the task bar, as discussed herein. Generation of the overflow panel may be based on whether the computing device is in the desktop mode or the tablet mode.
The overflow panel may be programmed into the computing device as an extension of the task bar, such that the overflow tool positioner 240 calculates a distance offset from the task bar to display the overflow panel. For example, in one embodiment, the overflow tool positioner calculates x and y coordinates by which the overflow panel will be displayed offset relative to the task bar. In one embodiment, the overflow tool positioner 240 calculates a distance offset relative to the end of the task bar to which a center or beginning of the overflow panel will be displayed. The overflow tool positioner 240 generates the overflow panel so that the overflow application indicators are placed after or proximate to the pinned application indicators of the task bar, but the coordinate space of the overflow panel is offset from that of the task bar. In this manner, computational efficiency may be improved since existing layouts and designs of the GUI may be leveraged in displaying the overflow panel, which in certain embodiments, may be an extension of the task bar.
Turning to
In certain embodiments, the task bar 310 is positioned along a border of the display, in this example, toward the bottom border of the display. Similarly, the MRU slot 320 may be positioned along a border of the display, in this example, toward the bottom of the display. In certain embodiments, the task bar 310 and the MRU slot 320 may be positioned along the same border, such that the MRU slot 320 is positioned collinearly with respect to the task bar 310. Alternatively, the task bar 310 and the MRU slot 320 may be presented along different borders. As illustrated, the GUI may also include a work region 330, which may occupy a greater display area as compared to the task bar 310 and MRU slot 320. In some embodiments, selection of a pinned application indicator 312 or an overflow application indicator 322 may cause content corresponding to the selected application indicator to be presented on the entirety of the work region 330 or a portion of the work region 330. It should be understood that any number or combination of pinned application indicators 312 and/or an overflow application indicators 322 may be used or running at the same time, such that their corresponding content may be presented or stacked on the work region 330. In an embodiment, presentation of content associated with an application may be restricted to the work region 330, such that an application may not cover any portion of the task bar 310, the MRU slot 320, and/or widgets tool bar 340. The widgets tool bar 340 may include indicators corresponding to various functional widgets, such as a clock, date, battery life, signal strength, volume, and the like.
As discussed above, the presentation component 212 of
Continuing with
For the case in which the MRU slot 320 is configured to present one overflow application indicator, the MRU slot 320 may display an indicator corresponding to the most recently used overflow application. The most recently used overflow application indicator 322 may correspond to the overflow application that was last presented on the work region 330 or otherwise launched, and that is still open. In one embodiment, an overflow application that is currently running or displayed on the work region 330 is omitted from the determination of the most recently used overflow application indicator 322. As such, the MRU slot 320 may present the most recently used overflow application indicator other than the indicator for the overflow application currently running on the computing device presenting the GUI 300.
For the case in which the MRU slot 320 is configured to present more than one overflow application indicators, the MRU slot 320 may display indicators corresponding to the most recently used overflow applications ordered from (1) most recently used to (2) used the longest time ago. The most recently used overflow application indicator 322 may correspond to the overflow application that was last presented on the work region 330 or otherwise launched, and that is still open. In one embodiment, an overflow application that is currently running or displayed on the work region 330 is omitted from the determination of the most recently used overflow application indicators 322 presented on the MRU slot 320. As such, the MRU slot 320 may present more than one of the most recently used overflow application indicators other than the indicator for the overflow application currently running In one embodiment, the overflow application that is currently running or displayed on the work region 330 is factored into the determination of the most recently used overflow application indicators 322 presented on the MRU slot.
Turning to
As set forth above, to improve the user experience by providing a tool for more easily accessing application indicators that are not pinned to the task bar, the overflow tool 420 provides a mechanism (e.g., the MRU slot 320) for viewing and selecting the most recently used overflow application indicator 322; a mechanism (e.g., the overflow expansion control 410) for viewing an dynamically updated listing of overflow application indicators; and a mechanism (e.g., the overflow panel 421) for selecting one of the overflow application indicators 422 in the ordered listing. In some embodiments, the ordered listing may be dynamically ordered, such that the ordered listing is updated based on any event, such as a user toggling between overflow applications.
As described above, the overflow engine 220 of
To that end,
In accordance with the disclosed embodiments, by arranging the overflow application indicators 422 along a different axis from which the pinned application indicators 312 on the task bar 310 are arranged, the GUI may facilitate distinguishing the pinned applications from the overflow applications.
In some embodiments, the overflow panel 421 includes a panel size adjuster 720. The panel size adjuster 720 may be displayed toward one or more ends of the overflow panel, such has the top and/or bottom ends or portions of the overflow panel 421. In response to selection of the panel size adjuster 720, the overflow panel 421 may increase in size to accommodate more overflow application indicators 422. Selection of the panel size adjuster 720 may cause the overflow panel 421 to increase in height or width to accommodate additional rows or columns of overflow application indicators.
To provide another example of a panel size adjuster,
Turning to
Turning to
As set forth above, in some embodiments, the overflow tool 420 provides a mechanism (e.g., the MRU slot 320) for viewing and selecting the most recently used overflow application indicator 322; a mechanism (e.g., the overflow expansion control 410) for viewing an ordered listing of overflow application indicators; a mechanism (e.g., the overflow panel 421) for selecting one of the overflow application indicators 422 in the ordered listing; and a mechanism (e.g., the extended user interface element 1110) for previewing a particular overflow application corresponding to the overflow application indicators 422 in the overflow panel 421. In some embodiments, the extended user interface element 1110 provides a preview window corresponding to the overflow application corresponding to the interacted indicator from the overflow panel 421. In this manner, the GUI 1100 may provide a user a preview of an application without causing the application to open and occupy more space on the work region 330. Indeed, in some embodiments, the extended user interface element 1110 may occupy a smaller portion on the work region 330 than if the corresponding application was launched or opened.
Turning now to
Per block 1210, particular embodiments determine an orientation or mode of a computing device, such as the user device 102a (
Per block 1220, some embodiments generate a task bar 310 (
Per block 1230, certain embodiments determine a coordinate space of the task bar 310. Certain embodiments may determine a position and size of the region on which the pinned application indicators are positioned. For example, certain embodiments may determine that the task bar 310 is positioned toward the bottom border of the GUI and is sized to accommodate one row or one column of pinned application indicators. Some embodiments of block 1230 may be carried out using the overflow tool positioner 240 (
Per block 1240, certain embodiments determine or calculate a distance offset from the coordinate space of the task bar 310. Determination or calculation of the distance offset may be based on a number of overflow applications that are in use, as discussed above with respect to the application identifier 222 (
Continuing with
Turning now to
Per block 1310, particular embodiments determine available space on the task bar 310. The available space on the task bar may correspond to the region on the task bar that is not yet occupied by pinned application indicators. Some embodiments of block 1310 may be carried out using the application identifier 222 (
Per block 1320, certain embodiments determine a number of overflow applications in use. As discussed above, “in use” generally means having been launched and remaining open in either an active or suspended state. For example, when an application is launched it may remain “in use” until the application is closed and the session is terminated. Some embodiments of block 1320 may be carried out using the application identifier 222. Additional details of the embodiments of block 1320, or for carrying out the operations of block 1320, are described in connection with
Per block 1330, certain embodiments determine that the number of overflow applications in use correspond to overflow application indicators 412 (
Per block 1340, certain embodiments assign the overflow application indicators 412 to the overflow panel 421 in response to determining that the overflow application indicators corresponding to the number of overflow applications in use exceeds the available space on the task bar 310. In some embodiments, whether the overflow application indicators 412 are assigned to the overflow panel 421 may be based on the application metric data 232 (
Per block 1350, certain embodiments generate the overflow panel 421 including the overflow application indicators 412. Examples of the generated overflow panel 421 are illustrated in the screenshots of
In some embodiments, a computerized system, such as the computerized system described in any of the embodiments above, comprises one or more processors, computer storage memory having computer-executable instructions stored thereon which, when executed by the one or more processors, implement a method. The method comprises from a plurality of signals associated with a task indicating an action to be accomplished by at least one person, determining a subset of signals such that each signal in the subset is associated with an indication of completion of the task. The method further includes, based at least in part on the determination, monitoring a user device for the subset of signals. The method further includes, based at least in part on the monitoring and the task, detecting at least one signal, of the subset of signals. The method further includes, based at least in part on the detecting the at least one signal, detecting, from natural language content, the indication of completion of the task. The method further includes, based at least in part on the detecting of the indication of completion of the task, causing presentation, at the user device, of an indicator representing the completion of the task. Advantageously, these and other embodiments, as described herein, improve the way computers operate in terms of computer resource consumption (e.g., CPU, memory, I/O, network latency). Instead of walking entire decision trees or other data structures when engaging in task completion detection, particular embodiments can determine that a subset of signals are likely to include an indication of completion of the candidate task. And based on the determination, monitor an object for only the subset. For instance, if each node represents a signal or data source to poll or monitor for completion, embodiments can “prune” or remove particular nodes of a graph that does not represent the subset of signals. In this way, the entire graph does not have to be walked, and more specifically, each signal does not have to be listened to or monitored. Accordingly, there is a decrease in storage device I/O (e.g., excess physical read/write head movements on non-volatile disk), a decrease in CPU utilization, and/or network latency because fewer nodes are walked or fewer signals are monitored. Accordingly, components do not have to repetitively reach out to the storage device to perform read/write operations. Likewise, there are not as many packet generation and other network costs because there are fewer signals to monitor and thus fewer network protocol sessions to establish. Additionally, some embodiments do not have to store or transmit entire decision trees or other data structures representing these signals, so there is no unnecessary consumption of memory.
In any combination of the above embodiments of the computerized system, the subset of signals comprises a particular set of words based on a semantic meaning of the task, and wherein the detecting includes detecting the particular set of words from the natural language content.
In any combination of the above embodiments of the computerized system, the subset of signals comprises an indication that a particular application is being used, and wherein the detecting includes detecting the indication that the particular application is being used.
In any combination of the above embodiments of the computerized system, the plurality of signals includes at least one signal of a group of signals consisting of: a particular attachment file name, a particular attachment file type, a set of words, an indication that a meeting application is being used, an indication that an email application is being used, and an indication that a telecommunications channel is opened.
In any combination of the above embodiments of the computerized system, the method can further comprise pruning a data structure for the monitoring, in response to the determining that the subset of signals is likely to be associated with the indication of completion of the task.
In any combination of the above embodiments of the computerized system, the task is indicative of a question asked by a user, and wherein the indication of completion is indicative of an answer to the question.
In any combination of the above embodiments of the computerized system, the natural language content includes at least one of: audio natural language content and written natural language content.
In any combination of the above embodiments of the computerized system, the indicator representing the completion of the task includes highlight indicia superimposed over words of at least a portion of the natural language content, the highlight indicia indicating the completion of the task.
In any combination of the above embodiments of the computerized system, the method can further comprise causing presentation, at the user device, of a user interface element indicative of removal of the task upon user-selection of the user interface element.
In any combination of the above embodiments of the computerized system, the method can further comprise causing presentation, at the user device, of a set of user interface elements that indicate a list of tasks and an indication of whether each task of the list has been completed.
In any combination of the above embodiments of the computerized system, the method can further comprise automatically removing the task for completion by a user based on a confidence level associated with the detecting of the indication of completion.
In any combination of the above embodiments of the computerized system, the detecting of the indication of the completion of the task is based on a machine learning model trained to learn a relationship between tasks and a first set of replies that belong to the tasks and a second set of replies that do not belong to the tasks.
In some embodiments, a computer-implemented method is provided. The method may include receiving first natural language content, and/or detecting, from the first natural language content, a task, the task indicates an action to be accomplished by one or more users. The method further includes determining contextual information associated with the task, wherein the contextual information includes an indication of an attachment file name or attachment file type associated with the task. The method further includes, based at least in part on the attachment file name or the attachment file type, detecting, from a second natural language content, an indication that the task has been completed. The method further includes, based at least in part on the detecting of the indication that the task has been completed, causing presentation, at a user device, of an indicator representing completion of the task. Advantageously, these and other embodiments, as described herein, improve existing word processing applications, meeting applications, and virtual assistants, among others, by providing functionality that automatically detects indications that tasks have been completed via new logic or rules (e.g., a file name or file type specified in the indication). As described above, tasks must be manually performed or marked as completed in various existing technologies, and have only been historically performed by humans or manual input of users. In particular embodiments, incorporating these particular rules improves existing technological processes by providing new functionality that effectively performs these tasks automatically and more accurately. Particular embodiments notify users when such tasks have been completed or are no longer relevant or delete such tasks so that users will not see them as tasks. Accordingly, users are not unnecessarily reminded of tasks. This not only improves the user experience relative to existing technologies, but improves the accuracy relative to existing technologies because such tasks are deleted or at least marked as completed.
In any combination of the above embodiments the detecting of the indication that the task has been completed includes determining that the second natural language content includes at least one word that match the attachment file name, and determining that the at least one word is indicative of a response to the task.
In any combination of the above embodiments, the method may further comprise, based at least in part on a meaning of the task, determining that a subset of signals, of a plurality of signals, is associated with the indication that the task has been completed, the plurality of signals including a plurality of applications, the subset of signals including a first application.
In any combination of the above embodiments, the method may further comprise, based at least in part on the determination that the subset of signals is associated, monitoring the user device for an indication that the first application is being used.
In any combination of the above embodiments, the method may further comprise, based at least in part on the monitoring, detecting that the first application is being used, wherein the detecting of the indication that the task has been completed is further based at least in part on detecting that the first application is being used.
In any combination of the above embodiments the first natural language content and the second natural language content include at least one of: audio natural language content and written natural language content.
In any combination of the above embodiments the determining contextual information includes identifying a natural language phrase corresponding to request for a particular file, and wherein the detecting of the indication that the task has been completed includes determining that a user has sent the particular file based on the file attachment name indicating the particular file.
In some embodiments, one or more computer storage media having computer-executable instructions embodied thereon that when executed by one or more processors, cause the one or more processors to perform a method. The method may include detecting, from first natural language content, a task, the task indicates an action to be accomplished by one or more users. The method further includes, based at least in part on the task, determining that a subset of signals, of a plurality of signals, is associated with an indication of completion of the task. The method further includes, based on the determining, pruning a data structure that indicates the plurality of signals, the pruning includes removing a portion of the data structure that does not represent the subset of signals. The method further includes, based at least in part on the pruning, monitoring a user device for the subset of signals. The method further includes, based at least in part on the monitoring, detecting at least one signal, of the subset of signals. The method further includes, based at least in part on the detecting of at least one signal, detecting, from second natural language content, the indication of completion of the task. Advantageously, these and other embodiments, as described herein, improve the functionality relative to existing machine learning models. Particular embodiments use models that are more accurate because they use certain inputs and are optimized to specifically train by learning the relationships between tasks and responses that indicate completion of those tasks (e.g., via a modified pre-training and fine-tuning phase). For example, some embodiments use models that take, as input, an attachment name or type mentioned or otherwise associated with a task to better detect the indication of completion (e.g., an upload of the particular file).
In any combination of the above embodiments the determining that a subset of signals, of a plurality of signals, is associated with an indication of completion of the task includes determining that a set of words that are a part of the task will also be indicated in a reply to the task.
In any combination of the above embodiments the detecting, from second natural language content, the indication of completion of the task includes detecting, from the second natural language content, the set of words.
In any combination of the above embodiments the method may further include causing presentation, at the user device, of a user interface element indicative of removal of the task upon user-selection of the user interface element.
Having described various embodiments of the disclosure, an exemplary computing environment suitable for implementing embodiments of the disclosure is now described. With reference to
Embodiments of the disclosure may be described in the general context of computer code or machine-useable instructions, including computer-useable or computer-executable instructions, such as program modules, being executed by a computer or other machine, such as a personal data assistant, a smartphone, a tablet PC, or other handheld device. Generally, program modules, including routines, programs, objects, components, data structures, and the like, refer to code that performs particular tasks or implements particular abstract data types. Embodiments of the disclosure may be practiced in a variety of system configurations, including handheld devices, consumer electronics, general-purpose computers, more specialty computing devices, etc. Embodiments of the disclosure may also be practiced in distributed computing environments where tasks are performed by remote-processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computing device 1400 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by computing device 1400 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage median and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 1400. Computer storage media does not comprise signals per se. Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
Memory 1412 includes computer storage media in the form of volatile and/or nonvolatile memory. The memory may be removable, non-removable, or a combination thereof. Exemplary hardware devices include solid-state memory, hard drives, optical-disc drives, etc. Computing device 1400 includes one or more processors 1414 that read data from various entities such as memory 1412 or I/O components 1420. Presentation component(s) 1416 presents data indications to a user or other device. Exemplary presentation components include a display device, speaker, printing component, vibrating component, and the like.
The I/O ports 1418 allow computing device 1400 to be logically coupled to other devices, including I/O components 1420, some of which may be built in. Illustrative components include a microphone, joystick, game pad, satellite dish, scanner, printer, wireless device, etc. The I/O components 1420 may provide a natural user interface (NUI) that processes air gestures, voice, or other physiological inputs generated by a user. In some instances, inputs may be transmitted to an appropriate network element for further processing. An NUI may implement any combination of speech recognition, touch and stylus recognition, facial recognition, biometric recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, and touch recognition associated with displays on the computing device 1400. The computing device 1400 may be equipped with depth cameras, such as stereoscopic camera systems, infrared camera systems, red-green-blue (RGB) camera systems, and combinations of these, for gesture detection and recognition. Additionally, the computing device 1400 may be equipped with accelerometers or gyroscopes that enable detection of motion. The output of the accelerometers or gyroscopes may be provided to the display of the computing device 1400 to render immersive augmented reality or virtual reality.
Some embodiments of computing device 1400 may include one or more radio(s) 1424 (or similar wireless communication components). The radio 1424 transmits and receives radio or wireless communications. The computing device 1400 may be a wireless terminal adapted to receive communications and media over various wireless networks. Computing device 1400 may communicate via wireless protocols, such as code division multiple access (“CDMA”), global system for mobiles (“GSM”), or time division multiple access (“TDMA”), as well as others, to communicate with other devices. The radio communications may be a short-range connection, a long-range connection, or a combination of both a short-range and a long-range wireless telecommunications connection. When we refer to “short” and “long” types of connections, we do not mean to refer to the spatial relation between two devices. Instead, we are generally referring to short range and long range as different categories, or types, of connections (i.e., a primary connection and a secondary connection). A short-range connection may include, by way of example and not limitation, a Wi-Fi® connection to a device (e.g., mobile hotspot) that provides access to a wireless communications network, such as a wireless local-area network (WLAN) connection using the 802.11 protocol; a Bluetooth connection to another computing device is a second example of a short-range connection, or a near-field communication connection. A long-range connection may include a connection using, by way of example and not limitation, one or more of CDMA, GPRS, GSM, TDMA, and 802.16 protocols.
Referring now to
Data centers can support distributed computing environment 1500 that includes cloud computing platform 1510, rack 1520, and node 1530 (e.g., computing devices, processing units, or blades) in rack 1520. The technical solution environment can be implemented with cloud computing platform 1510 that runs cloud services across different data centers and geographic regions. Cloud computing platform 1510 can implement fabric controller 1540 component for provisioning and managing resource allocation, deployment, upgrade, and management of cloud services. Typically, cloud computing platform 1510 acts to store data or run service applications in a distributed manner Cloud computing infrastructure 1510 in a data center can be configured to host and support operation of endpoints of a particular service application. Cloud computing infrastructure 1510 may be a public cloud, a private cloud, or a dedicated cloud.
Node 1530 can be provisioned with host 1550 (e.g., operating system or runtime environment) running a defined software stack on node 1530. Node 1530 can also be configured to perform specialized functionality (e.g., compute nodes or storage nodes) within cloud computing platform 1510. Node 1530 is allocated to run one or more portions of a service application of a tenant. A tenant can refer to a customer utilizing resources of cloud computing platform 1510. Service application components of cloud computing platform 1510 that support a particular tenant can be referred to as a multi-tenant infrastructure or tenancy. The terms service application, application, or service are used interchangeably herein and broadly refer to any software, or portions of software, that run on top of, or access storage and compute device locations within, a datacenter.
When more than one separate service application is being supported by nodes 1530, nodes 1530 may be partitioned into virtual machines (e.g., virtual machine 1552 and virtual machine 1554). Physical machines can also concurrently run separate service applications. The virtual machines or physical machines can be configured as individualized computing environments that are supported by resources 1560 (e.g., hardware resources and software resources) in cloud computing platform 1510. It is contemplated that resources can be configured for specific service applications. Further, each service application may be divided into functional portions such that each functional portion is able to run on a separate virtual machine. In cloud computing platform 1510, multiple servers may be used to run service applications and perform data storage operations in a cluster. In particular, the servers may perform data operations independently but exposed as a single device referred to as a cluster. Each server in the cluster can be implemented as a node.
Client device 1580 may be linked to a service application in cloud computing platform 1510. Client device 1580 may be any type of computing device, such as user device 102a described with reference to
Many different arrangements of the various components depicted, as well as components not shown, are possible without departing from the scope of the claims below. Embodiments of the present disclosure have been described with the intent to be illustrative rather than restrictive. Alternative embodiments will become apparent to readers of this disclosure after and because of reading it. Alternative means of implementing the aforementioned can be completed without departing from the scope of the claims below. Certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations and are contemplated within the scope of the claims.
This application is a continuation of U.S. patent application Ser. No. 17/506,580, filed Oct. 20, 2021. The entire contents of which are incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
Parent | 17506580 | Oct 2021 | US |
Child | 18523451 | US |