Advanced Window Managers in the UNIX World

In the Unix world of computing, it is possible to exchange your window manager with an advanced one. The window manager’s main purpose is to move/resize windows on the screen. These improved window managers differ from the way people are used to interact with windows in the Microsoft Windows world.Introduction
Click for a larger version The main purpose of a window manager actually should be — well — to manage windows. However, nearly all widespread window managers like those included in Microsoft Windows or in MacOS only allow you to manually move/resize/maximize and minimize windows. In my opinion, it should really try to manage my windows for me by automatically moving or resizing them when appropriate.

This means, that it should dynamically change the window layout when new windows are created or old ones are destroyed. Moreover it is essential that an advanced manager can easily be used with the keyboard only. This can be best described by Tuomo Valkonen — “the” person in terms of innovative user inteface design — himself:

Present-day graphical user interfaces are far less usable than they are praised to be. Usability simply does not equal low learning curve, as the Official Truth seems to be these days. Power and keyboard users, those who just do not like or have medical problems with mice, are forgotten when “modern” graphical programs are designed. Mouse-based search-and-click interfaces simply are not efficient except for some very specific tasks and often involve lots of tedious repetitive tasks. And while most widget-based GUIs provide keyboard shortcuts to some operations, the general application design still makes them difficult to use from the keyboard. For example, tabbing through dialog entries is difficult if the dialog is laid out in a complex fashion. Most command line and other text mode programs are simply much more usable once you get used to them, but are limited in their output capabilities.

1. PWM & Ion

Tuomo Valkonen was the first one who tried in an experiment to create a different kind of window management model. This attempt to create a totally new way to interact with windows was later copied by several other window manager’s like TrsWM or WMI.

1.1 PWM

This was the first window manager which featured tabs in the title bar. If you open up 3 browser windows, normally these windows are all over the screen with different locations and sizes. With a tabbed window manager you can group them together and easily manage all grouped windows simultaneously. In order to add a window to a group you just need to drag it the group and drop it. You can also configure PWM to auto-group certain application windows (in our case, we would set it up to group all browser windows into one group).

So as you can see in the next screenshot, all 3 browser windows share one common title bar, and if I chose to maximize one window, the other two would be maximized too automatically:

1.2 Ion

The solution of PWM solved some problems, but it was still a difficult task to completely manage all windows with the keyboard only. Tuomo Valkonen therefore quickly improved his own PWM and came up with the first tabbed and tiling window manager.

It tries to address the navigation problem by dividing the screen into mutually non-overlapping frames that take up the whole screen. By using this frame-based instead of coordinate-based approach, it is conveniently possible to move between the frames entirely with the keyboard, because by this window layout it’s always possible to say which is the next frame on the right/left/top/bottom side of the current one.

So in the next figure, if I want to quickly switch from my tv application on the bottom right to my browser, I just need to tell Ion (by keyboard shortcuts) to switch to the left window.

Another big advantage of this frame-based layout is scriptability. Since the frame layout is saved after a restart and I can have custom names for all of my frames, I can configure Ion so that if I start large application windows like browsers or e-mail clients, they are moved to the upper left frame. On the other hand, small applications like an MP3 player or instant messanger should go in a small frame on the right. Also moving windows can be done very conveniently, since I don’t need to move them pixelwise, but I just need to drag the window from one frame to another and drop it. Then the window will occupy the full space of the frame.

Describing the full feature set of Ion would surely break the scope of this article, but here are other excellent features of Ion:

– Make all windows full screen
– Fully extendable with Lua scripts
– A Query module with autocompletion. Use this to quickly start programs.
– Small and fast

2. WMI – Window Manager Improved

WMI is a very new project and it’s development started at the end of 2003. It tries to feature all good things from Ion but also to bring tiling window managers to the masses by making them easier to use.

To configure Ion (or newer versions of PWM) you need to have some knowledge of a turing complete scripting language called Lua.

In contrast, WMI let’s you configure some settings at runtime and other things like the keybindings in a simple text file. Furthermore it has an always visible status bar which shows the current time, a pager and something like a task bar which lists running applications. This makes it easier for users who do not want to completely rely on the keyboard for these commands.

WMI also breaks the concept, that all windows must not overlap but combines the advantages of a tiled window manager with the possibility of having some windows floating above the others. While a tiled layout is suitable for most application, for some special applications like a media player, it’s sometimes convenient to be able to move the player around above all other windows.

Another very interesting feature of WMI is the close connection to the famous vi editor. So, people accustomed to this great editor will feel like at home when using WMI.

3. Exposé

To be exact, Exposé is actually not a window manager, but a feature of newer versions of Apple’s window manager for MacOS X. It does not try to arrange windows non-overlapping nor does it try to favor the keyboard in window management. However, by pressing a keyboard shortcut it tries to make it easier to select the next window by temporarily moving (and resizing) all application windows so that they don’t overlap. Now, the user sees all windows at the same time, and can select one with the mouse. Afterwards, all windows are moved to their previous location and the selected window is made topmost.


About the author
This article was written by Martin Stubenschrott. He lives in Austria and studies Computer Science at the Technical University of Vienna. He is a long term Ion user and enjoys editing everything text-based with vim.


  1. 2004-05-06 7:30 am
  2. 2004-05-06 7:37 am
  3. 2004-05-06 7:37 am
  4. 2004-05-06 7:43 am
  5. 2004-05-06 7:43 am
  6. 2004-05-06 7:52 am
  7. 2004-05-06 8:06 am
  8. 2004-05-06 8:12 am
  9. 2004-05-06 8:15 am
  10. 2004-05-06 8:23 am
  11. 2004-05-06 8:31 am
  12. 2004-05-06 8:37 am
  13. 2004-05-06 8:47 am
  14. 2004-05-06 8:54 am
  15. 2004-05-06 9:04 am
  16. 2004-05-06 9:07 am
  17. 2004-05-06 9:09 am
  18. 2004-05-06 9:18 am
  19. 2004-05-06 9:28 am
  20. 2004-05-06 9:36 am
  21. 2004-05-06 9:38 am
  22. 2004-05-06 9:57 am
  23. 2004-05-06 10:02 am
  24. 2004-05-06 10:12 am
  25. 2004-05-06 10:14 am
  26. 2004-05-06 10:17 am
  27. 2004-05-06 10:23 am
  28. 2004-05-06 10:28 am
  29. 2004-05-06 10:29 am
  30. 2004-05-06 10:39 am
  31. 2004-05-06 10:46 am
  32. 2004-05-06 10:52 am
  33. 2004-05-06 11:26 am
  34. 2004-05-06 11:39 am
  35. 2004-05-06 11:55 am
  36. 2004-05-06 12:03 pm
  37. 2004-05-06 12:17 pm
  38. 2004-05-06 12:43 pm
  39. 2004-05-06 12:46 pm
  40. 2004-05-06 12:49 pm
  41. 2004-05-06 1:02 pm
  42. 2004-05-06 1:13 pm
  43. 2004-05-06 1:17 pm
  44. 2004-05-06 1:43 pm
  45. 2004-05-06 2:27 pm
  46. 2004-05-06 2:30 pm
  47. 2004-05-06 2:32 pm
  48. 2004-05-06 2:51 pm
  49. 2004-05-06 3:06 pm
  50. 2004-05-06 3:08 pm
  51. 2004-05-06 3:23 pm
  52. 2004-05-06 3:26 pm
  53. 2004-05-06 3:27 pm
  54. 2004-05-06 3:39 pm
  55. 2004-05-06 4:02 pm
  56. 2004-05-06 4:37 pm
  57. 2004-05-06 4:55 pm
  58. 2004-05-06 5:50 pm
  59. 2004-05-06 6:02 pm
  60. 2004-05-06 6:09 pm
  61. 2004-05-06 6:45 pm
  62. 2004-05-06 7:58 pm
  63. 2004-05-06 8:00 pm
  64. 2004-05-06 8:13 pm
  65. 2004-05-06 9:53 pm
  66. 2004-05-06 9:53 pm
  67. 2004-05-07 1:26 am
  68. 2004-05-07 1:33 am
  69. 2004-05-07 1:58 am
  70. 2004-05-07 8:36 am
  71. 2004-05-07 11:23 am
  72. 2004-05-07 1:40 pm