The present invention relates generally to computer interfaces and, more specifically, to a method for managing windows on a computer desktop.
When computers were first invented, instructions, or programs, and data were entered manually via a series of switches. Soon, program and data entry was performed either by means of punch cards or keyboards coupled to the computing devices. Certainly, one of the primary advances in the computing arts has been the introduction of the graphical user interface (GUI). A GUI enables a user to enter data and commands and to execute programs by means of a keyboard and a computer mouse. In addition, a GUI enables a user to manage several executing programs at one time.
The Windows operating system (OS), published by the Microsoft Corporation of Redmond, Wash., is one example of a GUI that enables users easy access to multiple running programs. In Windows, a display, or “desktop,” includes icons, or “buttons,” for programs that are either executing or may be executed and graphical displays, or “windows,” for programs that are active.
As computers have increased with respect to both speed and memory, a user is able to efficiently run more and more programs simultaneously. Although this improves user efficiency, one issue that arises is desktop clutter. In other words, as additional programs are executed, more and more windows are added to the desktop. Users must sift through open windows to access any one particular window. One way to address desktop clutter is to minimize unused windows, i.e. graphically request that a particular window be displayed as an icon rather than as a full window. Windows and Windows XP provide a desktop tool to clear the clutter but the tool typically minimizes all current windows. Although this method clears the desktop, the tool does not discriminate between windows that the user is currently using and those that the user would like to minimize.
Provided is a system and method that enables a user to manage a computer desktop by eliminating clutter. An enhanced desktop tool enables the user to select and/or define rules for managing the windows in the user's desktop. The rules are selected or defined in one of several manners. For example, a user can choose desktop management options via a desktop properties dialog. In some embodiments, a method of desktop management is based upon the mix of applications present on the desktop or based upon the preferences of the user as learned by the corresponding GUI by means of observing which windows the users tends to minimize.
There are a number of possible schemes for managing a desktop. For example, one or a combination of the following options may be selected:
Of course, the policies listed above are only examples; the claimed subject matter is flexible enough to include many different techniques. A user is able to define rules, such as, but not limited to, rules based upon different criteria for different types of applications. For example, an application that has been designated as a primary application may be have a minimization strategy based upon one time interval and a non-primary application may be subject to a minimization strategy based upon another time interval.
This summary is not intended as a comprehensive description of the claimed subject matter but, rather, is intended to provide a brief overview of some of the functionality associated therewith. Other systems, methods, functionality, features and advantages of the invention will be or will become apparent to one with skill in the art upon examination of the following figures and detailed description.
A better understanding of the present invention can be obtained when the following detailed description of the disclosed embodiments is considered in conjunction with the following figures.
Although described with particular reference to the Windows operating system and desktop management system, the claimed subject matter can be implemented in any desktop management system in which window optimization and management is desirable. Those with skill in the computing arts will recognize that the disclosed embodiments have relevance to a wide variety of computing environments in addition to those described below. In addition, the methods of the disclosed invention can be implemented in software, hardware, or a combination of software and hardware. The hardware portion can be implemented using specialized logic; the software portion can be stored in a memory and executed by a suitable instruction execution system such as a microprocessor, personal computer (PC) or mainframe.
In the context of this document, a “memory” or “recording medium” can be any means that contains, stores, communicates, propagates, or transports the program and/or data for use by or in conjunction with an instruction execution system, apparatus or device. Memory and recording medium can be, but are not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device. Memory an recording medium also includes, but is not limited to, for example the following: a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), and a portable compact disk read-only memory or another suitable medium upon which a program and/or data may be stored.
One embodiment, in accordance with the claimed subject, is directed to a programmed method for managing the appearance of a computer display. The term “programmed method”, as used herein, is defined to mean one or more process steps that are presently performed; or, alternatively, one or more process steps that are enabled to be performed at a future point in time. The term programmed method anticipates three alternative forms. First, a programmed method comprises presently performed process steps. Second, a programmed method comprises a computer-readable medium embodying computer instructions, which when executed by a computer performs one or more process steps. Finally, a programmed method comprises a computer system that has been programmed by software, hardware, firmware, or any combination thereof, to perform one or more process steps. It is to be understood that the term “programmed method” is not to be construed as simultaneously having more than one alternative form, but rather is to be construed in the truest sense of an alternative form wherein, at any given point in time, only one of the plurality of alternative forms is present.
Turning now to the figures,
Attached to CPU 102 is a data storage component 112, which may either be incorporated into CPU 102 i.e. an internal device, or attached externally to CPU 102 by means of various, commonly available connection devices such as but not limited to, a universal serial bus (USB) port (not shown). Data storage 112 is illustrated storing several exemplary applications, including a first application, or “App—1,” 114 and a second application, or “App—2,” 116. Both App_1114 and App_2116 are used for the purpose of illustration only. It should be noted that a typical computing system may include many applications, but for the sake of simplicity only two are shown.
Also stored on data storage 112 is an operating system (OS) 120 and a Desktop Management Tool (DMT) 118 that implements the claimed subject matter. Although shown as a separate module, in an alternative embodiment, DMT 118 may be incorporated into OS 120. DMT 118 is initiated either by a user of computing system 100 or computing system 100 is configured to execute DMT 118 automatically. In this example, DMT 118 executes on CPU 102.
CPU 102 is controlled by operating system (OS) 120, which in this example includes a graphical user interface (GUI), illustrated below in conjunction with
A toolbar 132 extends along the bottom of desktop 106 from the left edge to the right edge of the screen associated with display 104. Within toolbar 132 are a “Start” button 134 and two toolbar separators 136 and 140. In between toolbar separators 136 and 140 is an area that will be referred to a “Quick Launch” area. Quick Launch area displays icons that initiate corresponding applications or utilities when the user positions a cursor (not shown) over a particular icon and presses, or “clicks,” a button (not shown) on mouse 110 (
In
App_1 window_1144 includes two elements, an element_1156 and an element_2158. Element_2158 is the active element in app_1 window_1144, or, in other words, has “focus,” as evidenced by the fact that the border of element_2158 is bolder than the border of element_1156. The significance with respect to the claimed subject matter of which of the windows and elements are active is described in more detail in conjunction with examples below. Finally, app_1 window_2146 includes an element_3160 and app_2 window_1148 includes an elment_4162 and an element_5164.
In this example, the user has initiated DMT 118 by positioning a cursor over DMT button 138 and clicking on mouse 110 (
In
The specific windows that are iconified depend upon prior user input and rules defined by a user for DMT 118.
It should be noted that DMT 118 may be configured with many possible rules other than those illustrated in
The configuration of
As mentioned above, in this example DMT 118 is executing in the background of CPU 102 (
Attribute section 202 includes a dmtID attribute 208, a currentWindows attribute 210, a primaryTime attribute 212, a secondaryTime attribute 214, a timeStamp attribute 216 and a currentConfig attribute 218. DmtID attribute 208 is a variable of type DMTCObjectID that contains a reference to the particular instance of object 200. Each instance of object 200 has a unique value for attribute 208 that allows each instance to be uniquely identified. It should be noted that the following description of memory object 200 employs examples from a time-based heuristic configuration of DMT 118 (
CurrentWindows attribute 210 is a variable of type Vector that stores a list of windowManagmentObjects (WMOs) (not shown), each of which stores information relating to windows either displayed or minimized on a corresponding desktop. Types of information stored in a WMO includes, but is not limited to, an ID to uniquely identify the corresponding window, an application associated with the window, time information specifying the amount of elapsed time since the window and the window's corresponding application were last accessed, and configuration information including whether or not the window is exempt from the window management policies of DMT 118. In this example, currentWindows 210 would include variables that store identifying and configuration information on the windows of desktop 106 (
PrimaryTime attribute 212 is a variable of type Integer that stores the number of seconds that DMT 118 allows to elapse before minimizing windows that are associated with the most recently accessed application. For example, if app_1114 (
Timestamp attribute 216 is a variable of type TimeInfo that stores information corresponding to the times that DMT 118 was executed, instantiated, how often DMT 118 should execute and so on. CurrentConfig attribute 118 is a variable of type ConfigDataObject that stores information concerning the particular window management method currently in use, which as explained above, is a time-based heuristic method in this example.
Method section 204 includes a changeConfig method 220, an updateDesktop method 222, an addWindow method 224, a deleteWindow method 226 and a configureDMT method 228. ChangeConfig method 220 is called when a user desires to change the particular management protocol implemented by DMT 118. As explained above, there are many possible protocols that DMT 118 may implement. In this example, method 220 is called with one parameter, “newConfig,” a variable of type Integer that corresponds to a particular protocol.
UpdateDesktop method 222 is called to execute the window management processes (see
DeleteWindow method 226 is called to remove a window from currentWindows attribute 210 when the corresponding window has been terminated. Among other actions, method 226 removes a reference to the subject window from currentWindows attribute 210. Method 226 is called with one parameter, an “oldWindow” parameter of type WindowID that uniquely identifies the window being deleted. Finally, configureDMT method is called to setup currentConfig attribute 218 so that DMT 118 has ready access to information related to a selected window management scheme. Attribute 228 is called with one parameter, a “newDMT” parameter of type DMTCObject that uniquely identifies the DMT being configured.
During a “Process Desktop Management (DM) Rules” block 256, process 250 calls configureDMT method 228 to set up the instantiation of DMT 118 according to the parameters stored in the configuration file retrieved during block 254. Among the actions taken during block 256 is the inclusion of DMT button 132 (
During an “Auto Execute?” block 260, process 250 determines whether or not DMT 118 is configured to execute automatically or only when DMT button 132 is clicked. If DMT 118 is configured to execute automatically, then process 250 proceeds to an “Execute DMT” block 262 during which an Execute DMT process 300 (see
During a “Retrieve Desktop Management (DM) Objects” block 306, process 300 retrieves the information stored in DMTConfig object 200, for example currentWindows attribute 210 (
If process 300 determines during block 308 that all windows on desktop 106 are represented, process 300 proceeds to DT object block 312 and retrieves information about a window represented in currentWindows attribute 210. With respect to the window information retrieved during block 312, during a “Implement DM Policy” block 314, process 300 applies the current window management policy pointed to by the information stored in currentConfig attribute 218, which was retrieved during block 306. The processing of an exemplary time-based heuristic policy is described in detail below in conjunction with
During a “More Windows?” block 316, process 300 determines whether or not there are any windows represented in currentWindows attribute 210 that have not be processed during this iteration of process 300. If more windows remain to be processed, process 300 returns to block 312, retrieves information about the next unprocessed window and processing continues as described above. If during block 316 process 300 determines that all windows on desktop 106 have been processed, then control proceeds to an “One Time Execution?” block 318 during which process 300 determines whether or not DMT 118 is configures to execute automatically or only when a user or program initiates DMT 118, for example by clicking on DMT button 132 (
If during block 318 process 300 determines that DMT 118 is configured to execute continuously rather than on a one-time basis, control proceeds to a “Wait For Input” block 320 during which process 300 waits for the next window event. Then, process 300 returns to Scan Desktop block 304 and processing continues as described above. If during block 318 process 300 determines that DMT 118 is configured as a one-time event, control proceeds to an “End Execute DMT” block 329 in which process 300 is complete. Finally, an asynchronous OS Interrupt 322 may also cause process 300 to terminate in block 329. Although, interrupt 322 is typically employed to terminate execution of DMT 118 when DMT 118 is configured to operate continuously, interrupt may also be employed any time during execution of process 300 in response to a CPU 102 (
Process 350 starts in a “Begin Manage Window” block 352 and control proceeds immediately to a “Retrieve WMO” block 354. During block 354, process 350 retrieves a WMO corresponding to the subject window or, in this example, window 144. In an alternative embodiment, information about the subject window may be stored in a database accessible by DMT 118. Those with skill in the computing arts should appreciate that are numerous methods of storing and retrieving information about computing components such as windows and the configuration of DMT 118.
During a “Window Minimized?” block 356, process 350 determines whether or not app_1 window_1144 is minimized, i.e. iconified, or on display in desktop 106 (
If, during block 356, process 350 determines that app_1 window_1144 is already displayed on desktop 106, control proceeds to a “Calculate Heuristics” block 362. During block 362, process 350 calculates, in the time-based heuristic example employed here, statistics relevant to the current configuration and governing rules of DMT 118 as defined by currentConfig attribute 218 (
During a “Limit Exceeded?” block 364, process 350 determines whether or not the heuristics calculated during block 362 represent a condition under the current configuration and rules of DMT 118 in which window 144 is to be minimized. If so, process 350 proceeds to a “Minimize Window” block 366 during which the subject window is minimized, i.e. window 144 is replaced on desktop 106 by icon_3174 in this example. During an “Update WMO” block 368, process 350 updates any data associated with DMT 118 and/or window 144 relevant to the implementation of the claimed subject matter, regardless of where and how such data is stored. Finally, process 350 proceeds to an “End Process Window” block 369 in which process 350 is complete.
While the invention has been shown and described with reference to particular embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention, including but not limited to additional, less or modified elements and/or additional, less or modified blocks performed in the same or a different order.