|Up to WM Report|
Window Managers Definitions
autohide - autoraise - buttons - click-to-focus - click-to-raise - decoration - desktop - focus - frame - key bindings - menu - pager - raise - raise-on-focus - sliding focus - sloppy focus - tiling - titlebar - taskbar - toolbar - transient window - virtual desktops - viewport - window - window manager - window placement - Xinerama - Xinerama-awareness
There are a lot of terms that are used in relation to Window Managers, and I use most of them at some point. Most of us know what a window is, but do you know what sloppy focus is? How about the difference between that and sliding focus? How about grouping or tiling? I'll run through a text-based description of most of the terms.
A Window Manager is a piece of software that controls the placement and appearance of windows under a graphical display system such as the X window system. There used to other graphical environments for Unix, but X and Xorg have pretty much taken over. The interesting thing if you're moving over from Windows is that X is all about graphics: it doesn't give a damn what you do with it, and the Window Manager knows almost nothing about graphics because X handles it. In Microsoft Windows these two functions are all part of one large package. [More on the X Window System at Wikipedia], [More on Window Managers at Wikipedia]
Applications open windows: windows can contain anything that the application cares to display in them. The Window Manager places and dresses the window. A transient window is one that pops up in front of a parent window to provide information about something unusual. (Think of your web browser asking you what to do with a file you're about to download.) [More on windows at Wikipedia]
Decoration can cover a multitude of sins, and is a very difficult thing to define. Technically, the application discussed in the last paragraph didn't specify anything surrounding itself: the Window Manager handles that. What that means is that you could have absolutely nothing around the rectangular contents of the window - and some WMs do this. However, most WMs apply at the very least a frame, even if it's only 1 pixel of white. Many WMs provide a titlebar as well, showing the name of the application in the window. Titlebars often have buttons, such as the classic "X" to kill the window.
Focus means that an object or window receives all mouse and keyboard key-clicks. How the window gets focus isn't something most people think about, but there are several ways it's handled under Unix. Most people think of Microsoft Windows's behaviour, which is referred to as click-to-focus. This means your mouse pointer can move anywhere on screen, the last window you clicked in will retain focus. Early Unix window managers used sliding focus, which meant that whichever window the pointer was over got all the key clicks. In fact, with that focus model, if the pointer was over the desktop key clicks didn't go to any window at all. A similar model called sloppy focus "fixes" that last problem: whichever window the pointer is over gets the clicks, but if the pointer goes over the desktop the last-focused window continues to get the clicks.
Most people assume (again because of Microsoft) that when a window gets focus that it will raise. This is because Windows implements a policy called raise-on-focus. "Raising" a window means that it comes to the front, above any other visible or overlapping windows. Again, Unix comes with options: many sliding or sloppy focus window managers don't automatically raise a window: if a small corner of a window is sticking out from under some other windows and you put the pointer on it, you can type text into it even though you can't see most of the window. Most of these WMs implement click-to-raise, meaning that if you want to see the whole window, you want to raise it, you have to click on it (some require you click on a specific part of the window, such as the titlebar). Another possible policy (not very common these days, but still out there) is autoraise. This goes with sliding/sloppy focus: if you focus a window for a certain amount of time (usually measured in tenths of seconds), the window will pop to the front.
Under Microsoft Windows, most applications are launched from the infamous "Start" button. This provides you with a hierarchical menu of applications and functions. The "Start" button is on the taskbar (sometimes called the toolbar). The taskbar generally shows the titles of running windows, and sometimes other things like a clock or a load meter. Under Unix there's no set standard or even a general expectation of what you can find on the taskbar, or that you'll even have a taskbar. Sometimes a taskbar will be set to autohide, meaning that when not in use the taskbar withdraws off screen. To activate it you generally push the mouse pointer up against the edge of the screen.
The windows you see and work with are shown on your desktop. At first, this may seem like one of the most obvious words I've chosen to define yet but it's not as clear as most assume, and we have to build on it too. I tend to run two monitors side by side (although at times they have been one above the other). Right at the moment, they're offset so that one is considerably higher than the other. X allows me to run them with a physical offset, so that the top edge of the lower screen is set so a window aligned with that top edge actually appears only part way up the higher screen. X also allows different resolutions on the two screens (but not different colour depths, which is annoying). I make use of this as well because one of the monitors is older and smaller and works much better at a lower res. All this to say that this oddly shaped set of offset monitors is still a "desktop." Virtual desktops are workspaces that each contain a set of windows: you only see one of these desktops at a time. I tend to use four or five of these: one for machine admin, one for network stuff (Firefox and others), PDA, and web editing. Sometimes another is open for photo editing or another special project. You switch desktops with a key combination or a pager. Pagers are often (but not always) built into the taskbar.
Sometimes the desktop has a much larger size in pixels than the resolution of your monitor(s): then we get into the concept of the viewport, which allows you to see a part of your desktop. You move around on your large desktop by pushing the mouse pointer against the edge of the screen, or by clicking on the pager. I'm not a fan of larger desktops, and common usage would seem to indicate that others agree with me: they're not very common anymore. They are most common in older WMs such as FVWM 1 and VTWM, but are sometimes available as configuration options in modern WMs.
Key bindings (or "keybindings") are key combinations that cause some action to happen. In Microsoft Windows, Alt-F4 kills a window and Alt-Tab changes to the next most recently focused window. Alt-Tab is used quite frequently in Unix WMs, but Alt-F4 is much more likely to mean "change to virtual desktop 4." Unix allows incredible flexibility about keybindings: not all WMs allow you to change them, and some don't use them at all, but both X and Unix allow you to make changes - a popular one among some long-time Unix users is to switch the Control and Caps Lock keys.
Xinerama is an extension/module/part of X allowing X to extend the desktop across two or several desktops. My current arrangement is a 19" LCD at 1280x1024 beside a rather older 17" CRT running at 1152x964, both running off an older ATI Radeon dual head video card. Xinerama-awareness in a Window Manager means that the WM knows about my two separate screens: if it's not Xinerama-aware, it sees a single 2432x1024 desktop ... This is kind of a problem in several respects, because 1152x60 of those pixels don't actually exist, and a WM unaware that it's two separate screens can and will try to put stuff in that non-existent space. If a WM isn't Xinerama-aware and you have more than one screen, it's not the end of the WM: maximization probably won't work properly (it will extend across both/all screens), snap-to-edges will only work on the outside edges, taskbars may go funny places, and transient windows tend to be centered on screen joins ... But if you have multiple monitors running at the same resolution this may not be a major issue.
Window placement is handled radically differently in different window managers. Where do we "expect" an application window to appear when we start the application? The "default" behaviour is to take up a large portion of the screen (but not all of it), and just ... somewhere on screen. The whole window will be on screen, but who knows where. Some window managers maximise everything, but more common these days is tiling. Tiling window managers use all screen real estate and don't allow windows to overlap. How they manage this varies from WM to WM.
Other terms I need to tackle:
- tabs (windows, not firefox)
- edge flipping
- edge resistance
- snap to
- sticky windows
- more to come