Friday, January 06, 2006

Applications vs. windows

One of the things that I've come to love about Mac OS X is the way it handles the active applications. Let's first see what other systems do in order to talk about the advantages of this approach.

All other desktop environments — strictly speaking, the ones I've used, which include GNOME, KDE and Windows — seem to treat a single window as the most basic object. For example: the task manager shows all visible windows; the key bindings switch between individual windows; the menu bar belongs to a single window and an application can have multiple menu bars; etc.

If you think about it, this behavior doesn't make much sense and this may be one of the reasons why Windows and KDE offer MDI interfaces. (Remember that an MDI interface is generally a big window that includes several other within it; the application is then represented by a single window, thus removing auxiliary windows — e.g., a tool palette &mdash, from the task switcher, etc.) Unfortunately, other systems such as GTK/GNOME do not have this interface and the application's windows are always treated individually (just think how annoying it is to manage The GIMP).

So, why is (IMHO) Mac OS X better in this aspect? This OS's interface always groups windows by the application they belong to. The dock (which is similar to a task bar, but better ;-) shows application icons; the task switcher (the thing that appears in almost any environment when you press Alt+Tab) lets you switch between applications, not windows; there is a single menu bar per application; etc. Whenever you select an application, all of its windows become active and are brought to the front layer automatically. In general, you have many different windows visible at a time, but they all belong to a rather small subset of applications. Therefore, this makes sense.

At last, let me talk about the menu-bar-at-top-of-screen thing I mentioned above, which is what drove me to write this post in the first place. Before using a Mac, I always thought that having the menu bar detached from the window didn't make any sense, specially because different windows from a single applications often have different menus. I had even tried enabling a setting in KDE that simulates this behavior, but didn't convince me at all because the desktop as a whole doesn't follow the concept of treating applications as a unit, as described above (plus the applications are not designed to work in such a interface).

However, after using Mac OS X for a while, I'm hooked to this "feature". Accessing the menu bar is a lot easier than when it is inside the window. And being able to do some actions on the application, no matter which of its windows is visible, is nice. You must try it to understand my comments ;-)

9 comments:

  1. I'm a complete ignorant when it comes to MacOS X (I have never used it), but doesn't GNUstep have many of its (interface-related) benefits as well? I.e. how comfortable would you be with GNUstep running on NetBSD, being used to MacOS X?

    ReplyDelete
  2. Yeah. I recently used WindowMaker again and it manages application windows as a whole. It also lets you hide applications (a la Mac OS X) and the icons in the dock can be used to start, switch to and unhide an application (just like in OS X's dock).

    However, WindowMaker is just a window manager. Using some of the GNUstep applications makes it nicer but, frankly, their interface is really ugly, IMVHO, and I don't feel comfortable with them (e.g., with GWorkspace).

    I could stand the ugly look if there was a wide variety of GNUstep applications; but the problem is, there are few of them, and they seem to be dead (except for the development ones, but I don't want to develop for GNUstep!).

    GNUstep may end up providing something good. Theorically, they can replace the look and feel to be more "modern" without touching the applications (or at least that's what I read in some mailing list or wiki or...). And if they do that, I think more people will start using some of their apps ;)

    Note to me: Should try again GNUstep now that I have a bigger display and windows don't overlap so much.

    ReplyDelete
  3. I also tried GNUstep, and noticed that it has the same concept of a global, shared menu bar as Mac OS. This made it really unusable for me, as I could not use focus-follow-mouse - if I moved the mouse, over some windows, the menu changed rapidly as different windows gained focus. Mac OS X probably can't have focus-follow-mouse for the same reason.

    WindowMaker alone is nice, however. And it seems to be more flexible than Mac OS X (for example it allows focus-follow-mouse and allows to raise/lower individial windows). Moving and resizing windows with mouse anywhere in a window is also very useful.

    -- Pavel Cahyna

    ReplyDelete
  4. I've never got used to sloppy focus, so I can't miss it ;) But you've got a point; this looks like a reason as for this feature not to be included.

    As regards WindowMaker, I used it for a long while some years ago. But since I got a decent computer to run either KDE or GNOME, I prefer to use a complete desktop environment rather than a simple window manager.

    ReplyDelete
  5. Nothing prevents you from using WindowMaker as a window manager with Gnome (instead of metacity or sawfish). It is a bit complicated because WindowMaker does not support session management, but it can be done. I'm using it now and it is a great combination, because I find gnome-panel very usable (unfortunately very buggy too) and WindowMaker is good at window management.

    -- Pavel Cahyna

    ReplyDelete
  6. Guys...
    Sincerely, you should try going beyond the mainstreamish kde/gnome and even windowmaker.
    There are reeeeealy cool things around with other concepts and that, to my experience, are not such a love-at-first sight thing as the Tiger interface aims at being, but the reveal extremely practical and even good looking if u invest some time exploring them.
    I recommend people to try fluxbox, xfce, enlightenment and things alike.
    My personal choice's fluxbox:
    - slick clean
    - lightweight (didn't remember having so much free RAM and battery lifetime before...)
    - can group windows (from same application or not) and TAB between them
    - do window resize, move, go up and down a layer with the mouse without needing particular widget buttons (to save precious working space i do turnoff window borders sometimes and uses mouse buttons/alt/mouse slide combinations to do the work, bu that's up to you)
    - application list!!! accessible through middle mouse button or whatever else u may define (this is hyper cool and kills the need for a dock, but u can have it nevertheless)
    - multiple desktops with superb navigation between desktops
    - capability to memorize properties of a window of a certain kind (like place where it pops, geometry, etc)
    - pop menus from the root screen, i.e, the desktop

    U guys should all give it a try, honestly.
    If u want a prettier and more modern looking thing, try enlightenment. It's my second favourite thing! Includes all the stuff plus some new properties.

    ReplyDelete
  7. To the last anonymous: I have used all the features you mention in many, many window managers. They are indeed useful but some of them are not really needed if the UI is good enough (e.g., I've forgotten about virtual desktops after trying Exposé). Of course, it is all up to your preferences.

    Before I switched to desktop environments, WindowMaker was possibly my favourite WM, although I used others (fluxbox, fvwm, icewm...) for long periods of time.

    With a faster computer, I gave a serious try to GNOME and KDE. And I do not regret the switch. For deskop use these are much better: integration between applications (appearance, key bindings, IPC...), which I value a lot; no need to use the terminal to do relatively complex things; many features...

    Of course, if all I have to do is develop, sometimes I start a light WM alone and do all my work there. In that case, I do not need the other fancy features and they behave faster.

    Fortunately, we can choose :-)

    ReplyDelete
  8. Hi All,

    One I'm severely missing on OSX as a linx (gnome/metacity) user, is being able to drag windows around without grabbing them by there top bar.

    So alt+left-mouse instantly lets you move windows wherever you grab them and alt+right-mouse lets you resize them instantly.

    Only working with OSX for a month now (due to my employer), I must say I'm charmed by OSX, although my 'alt' and 'ctrl' sense is somehwat screwed up.

    If someone knows if the mentioned key combinations are possible (even via scripting or whatever) would make me an absolute OSX Geek (if there is such a thing .. :-)

    Regards,

    Gerard.

    ReplyDelete
  9. hi there again
    (I'm the "anonymous" who wrote the post 3 slots above)
    (and replying to julio)

    Hmmm... i don't think i can get rid of the multiple desktop thing. And truly speaking, the exposé is not a substitute. I pursue a daily fight against messy mac os x screens at work and I just had to install the fancy multiple desktop extension on it. It's just a must have. (*)
    But still, i can't have no control over the layering of the windows, i.e, they're always ordered in an last-used-on-top fashion. Am I a sissy?
    Well, it's just that i do need many many windows at the same time (tipically a couple of terminals, some text editor windows and other few graphical output windows), writing some stuff on one and seeing the results on other(s).
    To come back to the subject:
    Mac OS X interface doesn't really convince me. The "grouping windows by application" feature is indeed interesting, but i'd be rather more useful if it followed some other functional grouping criteria (why should I group two windows of the same applications if they're being used for different purposes, say a browser window where u check your personal webmail and other where u're doing some serious research, or whatever?) -- even if that means the user setting its own groups.
    The screen-top application menu is quite cool on the other hand, mostly for saving screen space in my opinion (individual apps don't include a menu bar o each window).

    - Agrião -

    (*) by the way, and what about virtual desktops, i.e, desktops larger than the screen area? It may be funny if one can slide around the screen arbitrarily

    ReplyDelete