WM managed MDI (was Re: Three different tab implementations)

Waldo Bastian bastian at kde.org
Mon Feb 3 17:35:40 GMT 2003


On Monday 03 February 2003 17:49, Neil Stevens wrote:
> But KDevelop *shoudln't* tell KWin how to manage windows.  If every app is
> responsible for its own management, we're little better off than we are
> now.

KDevelop (or any application for that matter) should tell KWin enough 
information about the window it is about to create in order for KWin to make 
an informed decission about how to place it. A dialog box needs to be treated 
differently from a main-window. For KWin they are both simply windows unless 
the application tells it about their different roles. 

At the moment a number of window manager hints are defined (and used) for this 
purpose, the latest additions being in the NETWM standard. In order to 
support MDI like behaviour such as tabbed-grouping you need additional hints 
(or whatever) that makes it possible for the application to inform the window 
manager e.g. that a certain window is part of a certain group. *)

With the proper hints the window manager can decide whether a newly created 
konqy window should become a new tab or a new window.

Example:
In konqueror you may want to open a new view side-by-side the old view, or you 
may want to open a new view as a tab. That is a decision that can only be 
made by the user depending on his/her task at hand. So when the user tells 
the application to open the new view, it will also want to tell which of
those two ways it prefers. (For example by holding Shift while clicking a link 
it could select one or the other). When the application creates the view, it 
will need to inform the window manager about the decission of the user so 
that the window manager can act accordingly.

The hard part is now to a) design a proper set of hints that allows to make 
the window manager the desired placement decision b) implement these hints in 
KWin so that it actually does that.

As for your suggestion of using command line arguments to indicate a grouping:
The window manager operates in terms of windows and has no knowledge 
whatsoever about processes or their command line options. In order for such 
command line option to have any effect it would need to be passed (e.g. via a 
window manager hint) by the application to the window manager whenever the 
process creates a window. This is how for example the --caption command line 
argument is handled.

Cheers,
Waldo

*) We already use the "class" attribute for grouping in the taskbar. Would it 
be possible to use this attribute for tab-based grouping as well?
-- 
bastian at kde.org -=|[ SuSE, The Linux Desktop Experts ]|=- bastian at suse.com





More information about the kde-core-devel mailing list