Proposal for a Shadow extension

Martin Gräßlin <[email protected]> Sun, 08 May 2011 10:32:49 +0200
Newsgroups gmane.comp.gnome.wm-spec
Message-ID <1336155.VjHeQenYvD@martin-desktop>
Hi all,

at KDE we designed a new system to allow clients to specify the shadow to be rendered by 
the compositor. It is our belief that only the client can know how the shadow has to look like 
(e.g. consistent light model). We think that this system is not only useful for KDE, but for all 
compositors/Desktop Shells and therefore I propose it here as an idea for addition to the 
NetWM spec.

The general idea of our system is that the client specifies a hint and passes eight pixmap ids 
(four corners and four sides) and the offset in all directions to the compositor through the 
hint. The compositor then can decide to render the shadow based on the hint. A full 
description can be found in [1].

We currently have three parties implementing the system: 
* Oxygen Qt style
* Oxygen GTK style
* Plasma Desktop Shell

And there has already been further interest by other application with a custom style such as 
Yakuake. For such applications it would be of most interest to have a cross-desktop solution. 
[2]

If there is interest in such a system in a standardized way, I would draft an addition to the 
NetWM spec. Of course we are willing to change the code and have not yet added new 
methods to our public API in order to be able to integrate feedback from the broader 
community.

Kind Regards

Martin Gräßlin
KWin Maintainer

[1]: http://community.kde.org/KWin/Shadow
[2]: Yes I know that this would improve CSD and that this sounds like being a hypocrite. But I 
prefer having a proper system instead of clients starting to extend their window size to get 
custom drop shadows and causing major breakage.

_______________________________________________
wm-spec-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/wm-spec-list
signature.asc (application/pgp-signature, 198 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEABECAAYFAk3GVTEACgkQqVXwidMiVrrlbgCfVeNk+/fVoWbeV9myo7bjkLlE
m2MAn1EfURfE1qepEYZi3EgewavNtpU5
=RPps
-----END PGP SIGNATURE-----