February 28, 2004

Desktop functionality I'd like to see

Author: Daryl Blakeslee

Windowing environments are in their third decade, and they still do little more than open and close. There's no reason windows can't be more sophisticated.

A windowing GUI doesn't provide content, it just displays it. As on a real desktop, clutter reduces efficiency. Wouldn't it be nice if you were able to shrink your stapler or tape dispenser down to a third of its size yet still retain full functionality? Windowing environments should be more clever about how they display information. Real objects have limitations that do not apply to virtual ones. Let's push the boundaries by creating a windowing GUI with virtual devices.

When making windows smaller, at some point the content size overflows the window size and scroll bars pop into existence. Why not scale the content instead? Being able to scale a video window down to the size of a postage stamp can be useful if the visual content is of secondary importance. Do that to an Xterm, though, and it becomes unreadable.

Usually, with a console window, a vertical scroll bar is desirable, but the entire width needs to be seen. If the width of the window isn't large enough, why not compress the text horizontally? The text would be somewhat distorted, but still readable.

This could also be useful in a browser. If the Web page were scaled horizontally to fit the window, with a vertical scroll-bar, yet still retain its aspect ratio, it could be pushed off onto some unused portion of the desktop, and yet still remain useful, with no overlapping. To maintain the aspect ratio, you'd need to determine the percentage of scaling based on the horizontal size of the window, and allow a scroll bar vertically, if necessary.

Speaking of the desktop, why do I ever see it? I never need to survey the whole thing while I'm working. Desktop wallpaper and icon storage is wasteful. I tend to use
desktop icons rarely because I don't manage them well. Soon, I have so many icons that finding the one I want on the desktop is no easier than other ways of tracking down a program. If people like seeing attractive art in the form of desktop wallpaper, let them have a window devoted to it that allows them to view the entire image, not bits and pieces buried in work.

The windows that I feel are important should tile the entire desktop, and make room when I decide that more windows need to be open. If too many are open, then my system should group some of them together and display them on another virtual desktop, along with cloned windows for applications that I want visible at all times.

Window settings could displayed in the title bar of each window, rather than wasting all that space with just a name and buttons for minimize, maximize, and close. When I click on a button, I'd like a menu of choices for that setting to pop up, rather than just a boolean on/off effect. Scroll or scale horizontally, scroll or scale vertically, and retain aspect ratio could all be displayed on buttons with a few symbols or letters. What tile groups the window belongs to, what portion of the screen I would like it to appear in, and tile size priority would fit nicely on another button. And speaking of buttons and efficiency, if my taskbar attached itself to whatever window is in focus instead of cowering at the bottom of the screen, it would take less mouse movement to access it.

None of these suggestions needs to take up desktop space all the time. Do I want the title bar displayed when the window isn't in focus? Another setting. Do I want to allow windows to cascade, or do I want to prevent overlap? Scrolling through running applications is not a new idea, but rather than cycling through the window focus, have the applications themselves cycle through the windows that I have open. If I prefer overlapping windows, do I want different settings on the window when it is in focus versus when it is in the background?

Nearly as annoying as Internet Explorer pop-ups are window dialog box pop-ups. Did you ask me if your error messages was a priority for me? Maybe I don't want my defragging to be interrupted even if the computer catches fire. Log the error, or even send me an e-mail or an instant message, instead of popping up a useless dialog box. Even worse are non-X applications run in X that tell me nothing: they quietly die without any messages whatsoever. Every Unix application has an exit code, so why can't it notify me, or not, based on the code?

These ideas might take lots of time and sweat to get working, but they make better use of a computer's memory, video, and processor than what is presently available in KDE and Windows XP. Eye candy is nice, but cleverly programmed substance is more fulfilling.

Click Here!