- Tabbed windows. Notice in the screenshot, how the instances of Netscape are "tabbed" together, as are those of Xterm. Tabbed windowing is a great way to save desk space and switch between windows -- it even reduces the need for a "task bar" or "dock," either of which often shows you what windows are available. All windows in almost every WM I can think of have "title bar". Often, this title bar extends the length of the screen -- which wastes screen real-estate. Those that don't, and haved "tabbed windows" like BeOS, often don't take advantage of it. One should be able to arrange tabbed windows in a maximized form, like a configuration box. This allows many windows to be maximized at once, but yet gives us (the users) a way to easily switch between them -- just like in a control panel. Ideally, when all windows are maximized, there should be tabs for the application along the top of the screen, and tabs for the specific instance of that application running along the right hand side of the screen. I.e., the top of a screen would look something like this going accross -- Galeon, Rxvt, GIMP, OpenOffice, Pine; the left side of a screen, assuming Galeon in focus, would look something like this going accross, and with the text at 90 degrees -- Slashdot, InfoAnarchy, FreeIPX, WSJ. Furthermore, when tabbed windows are not maximized, instances of the same program should automatically be grouped into a horizontal tabbing. There should also be dynamically customizable tabbing of windows -- i.e., the user should be able to manually group certain windows together into tabs.
- Cascade retention. Part of the reason why things like minimization, tabbed windows, and docks were invented is because of crappy cascading. Cascading is great, until you decide to bring a window to focus at the middle of the cascade -- then the whole cascade is sent into anarchy. A cascade should be automatically retained, so that bringing one window in a cascade group to the front causes the others to be automatically rearranged to maintain the cascade, and not give you a sloppy mix-mosh. There are two ways in which the cascade can be rearranged (and retained) -- minimal rearrangement and order retention. Under minimial rearrangement, the only thing that changes is the window select -- it moves to the front and the right, while the others adjust to maintain the cascade: i.e., A, B, C, D, becomes A, B, D, C when window C is selected. Under order retention, the cascaded windows automatically retain their circular order when one is brought to the front: i.e., A, B, C, D becomes C, D, A, B when window C is selected.
- Window Arrangement. The user should have flexible choice on how to arrange his windows -- not to mention the ability to create his own window arrangement schemes and rules. There should be more than cascade, tile vertically, tile horizontally, maximize all, tab. There should be options like tile horizontally, with formats like 1,2 for 1 window on the top of the screen, 2 on the bottom. And so on and so forth. Users should also be able to define their own arrangements, as well as arrangement rules.
- Window Switching. Pressing
ALT+TAB should switch between the different applications, ALT+~
between the various instances of the application in focus, and
ALT+ESC between all windows. Pressing ALT+TAB repeatedly should allow
one to switch from app to app, and should also bring up a temporary
(so long as ALT is held down after TAB) menu, as such:
1 App1 >
2 App2 >
3 App3 >
4 App4 >
In this menu system, pressing 1, 2, 3, or 4 could select the different apps, while the arrow keys could select a particular instance of the app which the highlight is over.
- Hard Focusing. I hate sloppy focusing. Sloppy focusing allows one to accidentally switch the focus from one window to another. You may say that's ok -- just switch it back. But its really annoying when one is typing.
- Automatic Cursor Movement. The mouse cursor should automatically move to the active application and the default location (i.e, default button). This saves the user alot of hand motion. The user should also be able to define automatic mouse movement; i.e., maybe the user doesn't want the mouse to automatically move to a certain program when launched.
- Complete Keyboard Control. One should not need a mouse at all. One should be able to completely control one's WM from the keyboard. By the way, the old menu/keyboard system was vastly superior to the new one. F1 should bring up menu 1, F2 menu 2, and so on and so forth; this will probably mean that F1 brings up File, F2 brings up edit, F3 View, etc. Why should the user have to press two buttons (i.e., ALT+F) when one (F1) will do?
- Minimization. Sometimes, we want to put a window away -- even though tabbed windowing is nice, sometimes we still want to minimize. Also, minimization should not be chaotic. Windows should minimize to a specific place, and preferrably that would be the dock -- not a separate minimization place, as is used for WindowMaker. This is the way minimization (and new programs not on the dock) are dealt with in MacOSX. Well, partly. When a window is minimized, it should go to its appicon on the dock. If there isn't an appicon for that program on the dock by default, one should be temporarily placed there when that application is run. Holding clicking on the appicon would bring up a list (iconified or not) of the various instances of that application running.
- Universal Hide-Away File Menu . Apple has seen the light of the universal file menu, so has lwm. Why hasn't anyone else? Its idiotic to have a separate menu for every window open, when one universal menu at the top of the screen will do. This saves alot of screen space. Also, to save more screen space, that menu should automatically hide away when the mouse isn't at the far top of the screen. This saves more screen space.
- Universal Hide-Away Toolbar. Just as its dumb for every window to have its own menu, its also dumb for every window to have its own toolbar. Why hasn't Apple figured that one out, you'd think it would be an obvious step along with making a universal file menu. This just wastes space. There should be a universal toolbar at the bottom of the screen for all programs, which would change when diffferent programs are brought into focus; alternatively, one could attach the universal toolbar to the universal file menu at the top of the screen, making them one “panel” and hide-away. Also, this universal toolbar should be hide-away, as is should the universal file menu.
- Unique features for Right/Middle Mouse Clicks. Idealy, right clicking should bring up options menus, while middle clicking would bring up program menus. Why make the user go to the menu, when the menu can come to the user? I.e., middle clicking would bring up the file menu for that program, while right clicking would bring up options for the thing that's being right clicked on.
- Root Menu . Should be brought up by middle click on the desktop. Should effectively be like the Apple Menu in OS X and the Start Menu -- provide alot of options/configurations, and all of the programs, utilities, and commands on your system.
- Pinnable Menus . Users should be able to stick menu's -- dynamically -- in places they like them. Menus, however, should not have a title bar -- that just wastes space. Hold middle clicking on a menu and dragging it should "pin it".
- Hide-Away Dock Docks are great, but they take up alot of space. Thus, they should hide away to the far left side of the screen, as can MacOSX's dock. Docks, however, should not shrink icons when there are many on them -- a "scroll down" feature (i.e., by hovering over a down arrow, or using the wheel button while over the dock) should be provided. By the way, while we're on docks, lets get rid of the squares in the WindowMaker like docks, and make the docks look more like OSX's dock -- not transparent, or animated, or that fancy stuff, but simply seamless, without the hard box-borders. Also, dragging a icon off of a dock should quit that program; middle clicking and dragging it off should remove that icon from the dock.
- Desktop. For the most part, docks make desktops completely obsolete. Some people feel that docks are bit too rigid -- they feel trapped by them. I can understand that, as in WindowMaker, the dock is all icons enclosed in a square -- this does make you feel kind of trapped; however, this need not be. But despite the nice ordered benefits of docks, sometimes it nice to be able to go crazy with a desktop -- though I'm not in favor of forced desktop chaos. More options than "auto arrange" and "clena up" should be provided for the desktop. Users should be able to create icon alignment templates -- to, for example, automatically align icons in A L-shape.
- Virtual Desktops. Sometimes, niceties like a dock for all applications running just aren't enough to manage what your doing. One may have several projects opened at once, and may want to organize them on entirely different "screens".
- Column file navigation. Ok, this really doesn't have to do with the WM -- more to do with the file-navigator. But, still, this type of file navigator is great. I do not, however, encourage people who make WM's to get into the MS crazyness and blurry the boundaries of what's what. But perhaps a suggestion, for example, to try out the column file navigator would be good. Maybe even a link to the download.
- Minimalism, minimal screen use, minimal resource utilization. None of these features require the WM to be a CPU/memory/hard-drive hog, nor do they require the WM to hog up screen space, nor do they require useless features like animation or the "X-clock". (clocks should be text-based). No one needs useless gadgets like the "resource graphs". A WM is not that cool; its not too sexy for me. I do not need to see it when I'm doing whatever I'm doing -- I need to see what I'm doing, not the WM. A good WM should be nearly transparent -- both in resource utilization and screen-space utilization.
- Open Source Software/Free Software. This one is so obvious I almost forgot to mention it. If a WM is to succeed, it needs to have the benefits of an Open Source Software / Free Software community. This prevents it from being locked into a proprietary format. It also ensures that anyone can contribute to the code, or just look at it to analyze it. This means it would be covered under the GPL, LGPL, BSD, licenses, or any other license certified by the Open Source Inititive of the Free Software Foundation.