[comp.windows.x] User-WM communication

olin@sics.se (Peter Olin) (09/21/89)

We are implementing a ROOMS-like window manager (in GWM) an have
encountered the following problem:

When starting a client the user should be able to specify which
room(s) the client should appear in.  The transfer of this information
from the user to the window manager must somehow be performed outside
the client since we naturally don't want to rewrite all clients to
work nicely with our window manager.

I can't find any way to do this, not in the ususal doc, nor in the
ICCCM.  Is it at all possible to do this?  Are there any reasons  why
you shouldn't be able to do this?


	/Olin
--
----------------------------------------------------------------------
Peter Olin
SICS, PO Box 1263, S-164 28 KISTA, SWEDEN	Internet: olin@sics.se
Tel: +46 8 752 15 57

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (09/22/89)

    When starting a client the user should be able to specify which
    room(s) the client should appear in.

    I can't find any way to do this, not in the ususal doc, nor in the
    ICCCM.  Is it at all possible to do this?

Since there is no standard for what a pseudo-root or ROOM is, it is not
surprising that there is no standard way to specify this.

olin@DELFI.UDAC.UU.SE (09/22/89)

   From: rws@EXPO.LCS.MIT.EDU (Bob Scheifler)
   Organization: The Internet


       When starting a client the user should be able to specify which
       room(s) the client should appear in.

       I can't find any way to do this, not in the ususal doc, nor in the
       ICCCM.  Is it at all possible to do this?

   Since there is no standard for what a pseudo-root or ROOM is, it is not
   surprising that there is no standard way to specify this.
---

The issue here is not the non-existent standard for pseudo-roots, is it? The problem, 
I think, is that you cannot communicate information about a client to the window
manager without the client knowing it -- no matter what the information is.
It doesn't have anything to do with pseudo-roots.

Suppose I wanted a specific client to be decorated with a frog in the title bar
and jump around on the screen, then I would like to be able to issue a command like:

	xterm -name foo -xrm " foo*WindowType: 'frog' " &

And later let the window manager read this and act accordingly. 

Isn't there any (non-standard) way to do this? If not, why is this so?
Are there any reasons why the user shouldn't give such information to the
window manager?



+-----------------------------------------------------------------------------+
!  Peter Olin, UDAC, Box 2103, S-750 02  UPPSALA, SWEDEN, Phone +46 18-187862 !
!  E-Mail: olin@delfi.udac.uu.se or olin@sics.se +----------------------------+
+------------------------------------------------+

guido@piring.cwi.nl (Guido van Rossum) (09/22/89)

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) writes:
>Since there is no standard for what a pseudo-root or ROOM is, it is not
>surprising that there is no standard way to specify this.

The original question was about rooms.  I suppose a better way to do
rooms than to use pseudo-rooms is to perform room switching in the
window manager by simply iconizing all windows in the current room and
de-iconizing the ones in the new room.  (And I suspect the original
author was planning to do it this way in gwm -- BTW, I'd be interested
in getting a copy of that code).

The question then boils down to "is there a way to pass arbitrary
information?" to a window manager on client invocation, without
modifying clients.  One could qualify this with question with "Xt
clients" or "clients using a particular toolkit" and get different
answers, but I suspect in general the answer is no: all information
(like the -geometry string) you can specify as resources or command line
options on client invocation seem to have very specific uses.
--
Guido van Rossum, Centre for Mathematics and Computer Science (CWI), Amsterdam
guido@cwi.nl or mcvax!guido or guido%cwi.nl@uunet.uu.net
"Repo man has all night, every night."

swick@ATHENA.MIT.EDU (Ralph R. Swick) (09/22/89)

> The issue here is not the non-existent standard for pseudo-roots, is
it? The problem, 
> I think, is that you cannot communicate information about a client to the window
> manager without the client knowing it -- no matter what the information is.

You could certainly prototype something using WM_COMMAND.
'-xrm FunnyWindowManagerResource:VeryFunnyValue' will appear
in the property for any Xt client and (probably) have no
effect on the client.

rws@EXPO.LCS.MIT.EDU (Bob Scheifler) (09/22/89)

	<windows jumping through hoops>
	And later let the window manager read this and act accordingly. 
	Isn't there any (non-standard) way to do this? If not, why is this so?

I'm sure you could invent a non-standard way.  There are window managers
that will read some client-specific resources from (at least) the server's
resource database, you can examine particular vendor window managers to
get details.  I'm sure you could invent a resources property to be stuck
on a client window for a window manager to read.  I don't know off-hand if
any window managers currently do that kind of thing.

But, what you seem to be asking is, "how come there isn't a standard way that
I can type arbitrary non-standard information at the command line of an
arbitrary client, on an arbitrary operating system, and have it not affect the
client but get transferred to the window manager?".  Well, we don't force
standardization of command line syntax, and no one to my knowledge ever
suggested (during the public review of the ICCCM) that this kind of transfer
mechanism was important or should be standardized.

davidh@dent.Berkeley.EDU (David S. Harrison) (09/23/89)

> Isn't there any (non-standard) way to do this? If not, why is this so?
> Are there any reasons why the user shouldn't give such information to the
> window manager?

Maybe I am missing something here but this doesn't seem to be

1. Have the window manager read a profile.  GWM uses this approach.
   Clients are specified by their class name (the standard
   WM_CLASS property).

2. Have the window manager read specifications from the resource
   database.  Clients can be specified using the same mechanism
   given above.

I suspect the second approach is more general and avoids creating
yet another startup file.

			David Harrison
			UC Berkeley Electronics Research Lab
			(davidh@ic.Berkeley.EDU, ...!ucbvax!ucbcad!davidh)

asente@decwrl.dec.com (Paul Asente) (09/23/89)

In article <8909220829.AA00900@korfu.udac.uu.se> olin@DELFI.UDAC.UU.SE writes:
>Suppose I wanted a specific client to be decorated with a frog in the title bar
>and jump around on the screen, then I would like to be able to issue a command like:
>
>	xterm -name foo -xrm " foo*WindowType: 'frog' " &
>
>And later let the window manager read this and act accordingly. 
>
>Isn't there any (non-standard) way to do this? If not, why is this so?
>Are there any reasons why the user shouldn't give such information to the
>window manager?

If you are using the X Toolkit you can write an implementation of
VendorShell that supports the new resources you need.  This is exactly
what VendorShell is for; it's expected that any supplier of a window
manager that supports non-standard protocols will also supply a version of
VendorShell that supports the protocols on the client side.

	-paul asente
	    asente@decwrl.dec.com	decwrl!asente