In computing, the X Window System (“X”) is a windowing system for bitmap displays. It is a standard toolkit and protocol for building graphical user interfaces (GUIs) on Unix, Unix-like operating systems, and OpenVMS and is available for most modern operating systems.
X provides a basic framework for a GUI environment, including drawing and moving windows on the screen and interacting with a mouse and a keyboard. X does not mandate the user interface; that aspect is handled by individual applications programs. As such, the visual styling of X-based environments varies greatly; different applications may present radically different interfaces.
Currently, in X, a user may either manually position, size, and set other attributes for each X window every time an application (or group of applications) is run or employ one of a variety of methods on a per window basis manually to configure the windows before an application is started.
In other windowing environments, such as Microsoft® Windows, it is a feature of some applications that when a user starts the application, the application window is opened in the same place it was and with the same size and other characteristics it possessed when the application was previously closed. Unfortunately, not all applications possess this feature. Additionally, even for applications that do possess this feature, it would not be uncommon for several instances of such an application to be executing, with application windows for each instance displayed in a different location and with a different size and other characteristics. In this situation, when restarted after being shut down, the application window of the last instance to be closed will dictate the location, size, and other characteristics of the newly opened application window. This will occur even in cases in which the user intended another of the previously opened application windows to be controlling. Moreover, in cases in which multiple instances of an application are running, there is no way to specify different relative positions and sizes for the corresponding windows upon opening; rather, the window for each instance of the application will be opened in the same location and with the same size, at which point it may be reconfigured by the user.
As previously indicated, in X, a user can specify a location and size for the window of a particular application; however, this specification will be applied for all instances of the application. Currently, there is no way for a user to specify a different location and configuration for the respective window of each of the multiple instances of a single application. Additionally, the windows have no ability to “learn” either their preferred location or other attributes such that they are preconfigured and open in a designated location each time the application is opened.
In the drawings, like or similar elements are designated with identical reference numerals throughout the several views thereof, and the various elements depicted are not necessarily drawn to scale.
As will be described in greater detail hereinbelow, in one embodiment, a text file is maintained that includes placement, size, and other attribute information (collectively “window configuration information”) associated with each of a group of windows on a per-window basis. In operation, before creating a window, a window configuration software module examines the text file containing the configuration information for the window being created (which is identified by name) and retrieves the window configuration information for the window. As previously noted, the window configuration information includes, at a minimum, the size and location of the window on the display. The window configuration information may additionally include such attributes as background and foreground color, whether the window is to be iconized, whether the text file is to be updated automatically (e.g., each time the window is moved) or manually (e.g., responsive to the user's entering a command to save the window configuration information corresponding to the current presentation of the window on the display).
Referring now to
In contrast, referring to
It will be recognized that the three configurations 100, 110, and 120, illustrated in
In one embodiment, window configuration software 208 interacts with the windows manager 206 such that when an application 210 the display of which is controlled by the window configuration software is opened, the window configuration software 208 accesses a text file 212 associated with the application 210 and accesses the window configuration information for each window (which is identified by name in the text file 212) to be displayed via the display hardware 202. In one embodiment, the window configuration information for each window comprises a data string associated with the window. This windows configuration information is provided to the window manager 206, which causes the OS 204 to display the windows accordingly.
In one embodiment, each controlled application, such as the application 210, has associated therewith a text file, such as the text file 212. The text file comprises one or more data strings, each of which is associated by name with a window to be displayed in connection with the controlled application. Each data string comprises window configuration information for the window with which it is associated. As previously noted, such window configuration information may include, but is not limited to, window size, location on the display (e.g., x, y coordinates), position of the window relative to other windows (e.g., in cases where the window is cascaded with other windows), background color, foreground color, etc.
For example, referring to
As previously indicated, the text file for a particular controlled application may be updated in several ways. For example, in one implementation, the text file is only updated in response to a command from the user (e.g., via a command line interface or selection of a menu option, for example). In another implementation, the text file is updated each time a window of the controlled application is moved. In yet another implementation, two files may be maintained for a controlled application, in which case one of the text files is updated in response to user commands whereas the other is updated each time a window of the controlled application is moved. In this implementation, one of the text files may be selected as the default configuration or the user may be prompted to specify which text file to use in configuring the application windows.
After the window or windows have been displayed, if the window parameters for any of the displayed windows are to be changed, which may be indicated by the user in any of the manners described above, depending on the particular implementation (block 308), the window configuration for the window is updated in the text file (block 310) and the window or windows are redisplayed (block 306). If the application or group of applications is closed (block 312), the associated windows are removed from the display (block 314).
Based on the foregoing Detailed Description, it should be appreciated that an implementation of the embodiments described herein thus provides system and method for implementing automatic and persistent window control for multiple applications and multiple windows per applications. The embodiments enable application window configurations to be transferred, via the associated text file, to multiple users such that all of them can use the same configuration. Additionally, because the text files can be edited using a text editor, the configuration of an application's windows can be “tweaked” manually to ensure, for example, that windows are an exact size and displayed in an exact location with respect to other windows. Finally, the embodiments enable a user to maintain configuration information for multiple windows per application.
Although the invention has been described with reference to certain exemplary embodiments, it is to be understood that the forms of the invention shown and described are to be treated as illustrative only. Accordingly, various changes, substitutions and modifications can be realized without departing from the scope of the present invention as set forth in the following claims.