pseudo transparency



Hi,

There is two methods that an application can use to achieve
"pseudo transparency".
One method, the E method, is to have a pixmap in memory and
to indicate the id of this pixmap with a root atom. The second
method is to use parental relativity.
Each method has some advantages I do not think that the wm-spec
should choose one of them. I think that it will be good that
the wm-spec support both.

One problem with parental relativity is that a priori the
application has to set the background of the frame window(s)
set by the window manager. It seems to me that this leads to
a bad hack. So I suggest to add a new window state:

  _NET_WM_STATE_PARENTRELATIVE_BACKGROUND indicates that the window
  use the ParentRelative pixmap for its background. The window manager
  should set the frame window(s) background accordingly.

maybe the name is bad and also maybe it is better to have a
separated atom for this property. The advantage of using a state
is that an application can ask to set/unset this property.

About the E method. Here there is a de facto standard which
uses the ESETROOT_PMAP_ID and the _XROOTPMAP_ID atoms. Maybe,
this can be documented in the wm-spec? If I well understand
this method, applications should use the _XROOTPMAP_ID and
setroot programs should destroy the pixmap if
	ESETROOT_PMAP_ID == _XROOTPMAP_ID
before setting the background with its own pixmap (and
then set _XROOTPMAP_ID and also ESETROOT_PMAP_ID if its
own pixmap can be destroyed). That's it?

Now one problem with the E method is that it may need
a lot of memory (this depends on the memory you have and
the size of your screen(s)). So, some environment/users
may prefer to do not use an E setroot compatible program.
But, in this case there is no way to know that the
background have changed.
So, if there is some plan to document the E method in the
wm-spec I suggest to add a weak form of the E method for
set root programs: a set root program may set _XROOTPMAP_ID
to None (or to ParentRelative) if the root background is not
keep in memory.

Olivier



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]