<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-1405</id>
	<title>Nabble - Gnome - Window Manager Spec</title>
	<updated>2009-12-02T08:14:42Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Gnome---Window-Manager-Spec-f1405.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gnome---Window-Manager-Spec-f1405.html" />
	<subtitle type="html">Discuss the creation of a new specification for Window Manager hints to augment those found in the ICCCM.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26611577</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-12-02T08:14:42Z</published>
	<updated>2009-12-02T08:14:42Z</updated>
	<author>
		<name>Cody Russell-2</name>
	</author>
	<content type="html">On Wed, 2009-11-25 at 07:21 +0100, Fredrik Höglund wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; The other hint that would be useful is a hint similar to
&lt;br&gt;&amp;gt; &amp;gt; _NET_FRAME_EXTENTS that specifies client-side drop shadow extents.
&lt;br&gt;&amp;gt; The
&lt;br&gt;&amp;gt; &amp;gt; main idea here being that the WM could take advantage of this to
&lt;br&gt;&amp;gt; know
&lt;br&gt;&amp;gt; &amp;gt; where to perform window snapping for windows whose decorations and
&lt;br&gt;&amp;gt; &amp;gt; drop-shadows are drawn client-side. &amp;nbsp;This might be called
&lt;br&gt;&amp;gt; &amp;gt; _NET_SHADOW_EXTENTS.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I think this is a good idea, but maybe it should have a more generic
&lt;br&gt;&amp;gt; name, since the client may draw something other than a shadow
&lt;br&gt;&amp;gt; around the window.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Also, while the spec doesn't say, I think the convention is that
&lt;br&gt;&amp;gt; properties
&lt;br&gt;&amp;gt; set by the client start with _NET_WM, while properties set by the
&lt;br&gt;&amp;gt; window
&lt;br&gt;&amp;gt; manager start with _NET. 
&lt;/div&gt;&lt;br&gt;Perhaps instead of using a shadow/whatever extents region, we mark the
&lt;br&gt;'content' region instead. &amp;nbsp;So, _NET_WM_CONTENT_AREA would describe
&lt;br&gt;everything inside the drop-shadow/glow/padding and would be used by the
&lt;br&gt;WM to determine window snapping regions and such.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26611577&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26611577.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26522573</id>
	<title>Re: struts, workareas and xinerama</title>
	<published>2009-11-25T16:11:18Z</published>
	<updated>2009-11-25T16:11:18Z</updated>
	<author>
		<name>Tomáš Janoušek</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;On Wed, Nov 25, 2009 at 06:39:57PM -0500, Dana Jansens wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; 2009/11/25 Tomáš Janoušek &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26522573&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tomi@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt; This looks reasonable, the only problem I can think of is this setup:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;  11112222
&lt;br&gt;&amp;gt; &amp;gt;  11112222
&lt;br&gt;&amp;gt; &amp;gt;  11112222 &amp;lt;-- taskbar spanning screens 1 and 2
&lt;br&gt;&amp;gt; &amp;gt;  33334444
&lt;br&gt;&amp;gt; &amp;gt;  33334444
&lt;br&gt;&amp;gt; &amp;gt;  33334444
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; It's something that can be done for struts at the top and bottom of the root
&lt;br&gt;&amp;gt; &amp;gt; window using monitor = 0xFFFFFFFF, so we might want to support it for inner
&lt;br&gt;&amp;gt; &amp;gt; edges as well. I'm not sure if anyone actually wants to use something like
&lt;br&gt;&amp;gt; &amp;gt; that. I'm fine with that not being addressed, personally.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; It could be done by using two windows, one appearing (and setting a
&lt;br&gt;&amp;gt; strut) on each monitor. &amp;nbsp;I'm not sure that is a reasonable thing to
&lt;br&gt;&amp;gt; expect though.
&lt;/div&gt;&lt;br&gt;I didn't realize that, now it makes sense :-). I have no further comments and
&lt;br&gt;will be happy to implement that into xmonad and xmobar, as soon as it's
&lt;br&gt;accepted in wm-spec.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;-- 
&lt;br&gt;Tomáš Janoušek, a.k.a. Liskni_si, &lt;a href=&quot;http://work.lisk.in/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://work.lisk.in/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26522573&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/struts%2C-workareas-and-xinerama-tp11089888p26522573.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26522276</id>
	<title>Re: struts, workareas and xinerama</title>
	<published>2009-11-25T15:39:57Z</published>
	<updated>2009-11-25T15:39:57Z</updated>
	<author>
		<name>Dana Jansens-2</name>
	</author>
	<content type="html">2009/11/25 Tomáš Janoušek &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26522276&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tomi@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; thanks for your quick reply.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Sat, Nov 21, 2009 at 12:45:13PM -0500, Dana Jansens wrote:
&lt;br&gt;&amp;gt;&amp;gt; Secondly, as Lubus suggested, I have extended the STRUT property to
&lt;br&gt;&amp;gt;&amp;gt; allow for placing struts on boundaries between monitors.  This
&lt;br&gt;&amp;gt;&amp;gt; addresses the use case presented by Tomáš. To keep the property
&lt;br&gt;&amp;gt;&amp;gt; similar to what has been done in the past, my proposed property looks
&lt;br&gt;&amp;gt;&amp;gt; like this:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; _NET_WM_STRUT_AREAS, monitor, left, right, top, bottom, left_start_y,
&lt;br&gt;&amp;gt;&amp;gt; left_end_y,
&lt;br&gt;&amp;gt;&amp;gt; right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
&lt;br&gt;&amp;gt;&amp;gt; bottom_end_x, CARDINAL[13]/32
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; As you can see it is exactly the _NET_WM_STRUT_PARTIAL hint, with a
&lt;br&gt;&amp;gt;&amp;gt; monitor field added, so that the window can request the monitor on
&lt;br&gt;&amp;gt;&amp;gt; which the strut should be reserved.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; In both cases of these hints, monitor may be set to 0xFFFFFFFF, in
&lt;br&gt;&amp;gt;&amp;gt; which case the geometry is relative to the root window and ignores
&lt;br&gt;&amp;gt;&amp;gt; everything about multiple monitors, essentially using the same
&lt;br&gt;&amp;gt;&amp;gt; behavior as the old hints.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This looks reasonable, the only problem I can think of is this setup:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  11112222
&lt;br&gt;&amp;gt;  11112222
&lt;br&gt;&amp;gt;  11112222 &amp;lt;-- taskbar spanning screens 1 and 2
&lt;br&gt;&amp;gt;  33334444
&lt;br&gt;&amp;gt;  33334444
&lt;br&gt;&amp;gt;  33334444
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It's something that can be done for struts at the top and bottom of the root
&lt;br&gt;&amp;gt; window using monitor = 0xFFFFFFFF, so we might want to support it for inner
&lt;br&gt;&amp;gt; edges as well. I'm not sure if anyone actually wants to use something like
&lt;br&gt;&amp;gt; that. I'm fine with that not being addressed, personally.
&lt;/div&gt;&lt;br&gt;It could be done by using two windows, one appearing (and setting a
&lt;br&gt;strut) on each monitor. &amp;nbsp;I'm not sure that is a reasonable thing to
&lt;br&gt;expect though.
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26522276&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/struts%2C-workareas-and-xinerama-tp11089888p26522276.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26521488</id>
	<title>Re: struts, workareas and xinerama</title>
	<published>2009-11-25T14:35:43Z</published>
	<updated>2009-11-25T14:35:43Z</updated>
	<author>
		<name>Tomáš Janoušek</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;thanks for your quick reply.
&lt;br&gt;&lt;br&gt;On Sat, Nov 21, 2009 at 12:45:13PM -0500, Dana Jansens wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Secondly, as Lubus suggested, I have extended the STRUT property to
&lt;br&gt;&amp;gt; allow for placing struts on boundaries between monitors. &amp;nbsp;This
&lt;br&gt;&amp;gt; addresses the use case presented by Tomáš. To keep the property
&lt;br&gt;&amp;gt; similar to what has been done in the past, my proposed property looks
&lt;br&gt;&amp;gt; like this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _NET_WM_STRUT_AREAS, monitor, left, right, top, bottom, left_start_y,
&lt;br&gt;&amp;gt; left_end_y,
&lt;br&gt;&amp;gt; right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
&lt;br&gt;&amp;gt; bottom_end_x, CARDINAL[13]/32
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; As you can see it is exactly the _NET_WM_STRUT_PARTIAL hint, with a
&lt;br&gt;&amp;gt; monitor field added, so that the window can request the monitor on
&lt;br&gt;&amp;gt; which the strut should be reserved.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In both cases of these hints, monitor may be set to 0xFFFFFFFF, in
&lt;br&gt;&amp;gt; which case the geometry is relative to the root window and ignores
&lt;br&gt;&amp;gt; everything about multiple monitors, essentially using the same
&lt;br&gt;&amp;gt; behavior as the old hints.
&lt;/div&gt;&lt;br&gt;This looks reasonable, the only problem I can think of is this setup:
&lt;br&gt;&lt;br&gt;&amp;nbsp; 11112222
&lt;br&gt;&amp;nbsp; 11112222
&lt;br&gt;&amp;nbsp; 11112222 &amp;lt;-- taskbar spanning screens 1 and 2
&lt;br&gt;&amp;nbsp; 33334444
&lt;br&gt;&amp;nbsp; 33334444
&lt;br&gt;&amp;nbsp; 33334444
&lt;br&gt;&lt;br&gt;It's something that can be done for struts at the top and bottom of the root
&lt;br&gt;window using monitor = 0xFFFFFFFF, so we might want to support it for inner
&lt;br&gt;edges as well. I'm not sure if anyone actually wants to use something like
&lt;br&gt;that. I'm fine with that not being addressed, personally.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;-- 
&lt;br&gt;Tomáš Janoušek, a.k.a. Liskni_si, &lt;a href=&quot;http://work.lisk.in/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://work.lisk.in/&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26521488&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/struts%2C-workareas-and-xinerama-tp11089888p26521488.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26521243</id>
	<title>Re: New hints for compositing window managers</title>
	<published>2009-11-25T14:16:40Z</published>
	<updated>2009-11-25T14:16:40Z</updated>
	<author>
		<name>Bugzilla from fredrik@kde.org</name>
	</author>
	<content type="html">On Wednesday 25 November 2009, Denis Dzyubenko wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Fredrik,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 2009/11/25 Fredrik Höglund &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26521243&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fredrik@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; &amp;gt; I want to propose a new set of window manager hints that lets a client
&lt;br&gt;&amp;gt; &amp;gt; specify that a compositing window manager should extend the window frame
&lt;br&gt;&amp;gt; &amp;gt; behind the client window.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; The _NET_WM_FRAME_OVERLAP hint is intentionally designed to be compatible
&lt;br&gt;&amp;gt; &amp;gt; with the DwmExtendFrameIntoClientArea API on Windows, to make life easier
&lt;br&gt;&amp;gt; &amp;gt; for cross platform toolkits and applications.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; When I discussed this idea with Carsten Haitzler on IRC a while back,
&lt;br&gt;&amp;gt; &amp;gt; he convinced me that a single rectangle might not be sufficient for all use
&lt;br&gt;&amp;gt; &amp;gt; cases.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; That sounds like an excellent idea, I really look forward to having
&lt;br&gt;&amp;gt; more control over window decorations. I know that Qt already uses
&lt;br&gt;&amp;gt; DwmExtendFrameIntoClientArea for QWizard dialogs on Windows and it
&lt;br&gt;&amp;gt; would be really nice to be able to implement it for X11 as well.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is there anyone from a compositing manager camp interested in this?
&lt;br&gt;&amp;gt; Will enlightenment or kde support this addition? (I can imagine that
&lt;br&gt;&amp;gt; it might require a bit of effort to support this feature in a themable
&lt;br&gt;&amp;gt; window manager).
&lt;/div&gt;&lt;br&gt;The themes would have to be designed for it, but implementing it is
&lt;br&gt;actually pretty easy. The window manager just draws the decoration
&lt;br&gt;on the backbuffer, and then composites the client window over the
&lt;br&gt;decoration.
&lt;br&gt;&lt;br&gt;I can't speak for others, but KDE will support this hint.
&lt;br&gt;&lt;br&gt;&amp;gt; Also it should be necessary to be able to figure out if the window
&lt;br&gt;&amp;gt; manager supports this feature - probably we can add a new hint for
&lt;br&gt;&amp;gt; _NET_SUPPORTED property.
&lt;br&gt;&lt;br&gt;The window manager would just add _NET_WM_FRAME_OVERLAP
&lt;br&gt;to the list of properties in _NET_SUPPORTED. Applications that want
&lt;br&gt;to use this feature will of course have to provide a fallback path in
&lt;br&gt;case the window manager doesn't support it.
&lt;br&gt;&lt;br&gt;&amp;gt; Also, your suggestion doesn't say anything about the content of the
&lt;br&gt;&amp;gt; window that is supposed to be transparent - should clients fill it
&lt;br&gt;&amp;gt; with some value of just leave it uninitialized and the compositor will
&lt;br&gt;&amp;gt; (somehow) take care of it?
&lt;br&gt;&lt;br&gt;The client just leaves the parts of the window where it wants the
&lt;br&gt;decoration to &amp;quot;shine through&amp;quot; transparent.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I also fail to see what will the compositor do with
&lt;br&gt;&amp;gt; _NET_WM_FRAME_OVERLAP hint - lets say the client sets it to be
&lt;br&gt;&amp;gt; -1,-1,-1,-1 - what does it mean? Will the window be opaque,
&lt;br&gt;&amp;gt; transparent or semi-transparent with a blur like on Windows when using
&lt;br&gt;&amp;gt; DwmExtendFrameIntoClientArea? I would expect the behavior whatever it
&lt;br&gt;&amp;gt; is to be fixed so that clients can rely on it. Also, if it's the
&lt;br&gt;&amp;gt; latter and the window will be &amp;quot;blurry&amp;quot; I actually fail to see how the
&lt;br&gt;&amp;gt; compositor can implement this partual blur without knowing which areas
&lt;br&gt;&amp;gt; inside the client window should be blurred (if I remember correctly,
&lt;br&gt;&amp;gt; on Windows when using the DwmExtendFrameIntoClientArea function the
&lt;br&gt;&amp;gt; client has to fill the transparent area with a specific color to tell
&lt;br&gt;&amp;gt; the compositor where the blur should go).
&lt;/div&gt;&lt;br&gt;The text in the patch attached to my original email explains in detail
&lt;br&gt;how the values should be interpreted by the window manager. If all
&lt;br&gt;values are set to -1, the window manager must extend the decoration
&lt;br&gt;behind the whole window.
&lt;br&gt;&lt;br&gt;I agree that applications need more control over where the blur effect
&lt;br&gt;is applied, but I think this is needed regardless of whether the window
&lt;br&gt;frame is extended behind the client window or not. This is why I didn't
&lt;br&gt;include a hint for it in my patch.
&lt;br&gt;&lt;br&gt;On Windows, applications can toggle the blur effect on and off for specific
&lt;br&gt;windows, and define the region where the blur should be applied.
&lt;br&gt;The region is defined in the struct passed to DwmEnableBlurBehindWindow.
&lt;br&gt;&lt;br&gt;Adding a _NET_WM_BLUR_REGION would give us the same functionality.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Fredrik
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26521243&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/New-hints-for-compositing-window-managers-tp26508195p26521243.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26518001</id>
	<title>Re: New hints for compositing window managers</title>
	<published>2009-11-25T10:33:08Z</published>
	<updated>2009-11-25T10:33:08Z</updated>
	<author>
		<name>Bugzilla from shadone@gmail.com</name>
	</author>
	<content type="html">Hi Fredrik,
&lt;br&gt;&lt;br&gt;2009/11/25 Fredrik Höglund &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26518001&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fredrik@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I want to propose a new set of window manager hints that lets a client
&lt;br&gt;&amp;gt; specify that a compositing window manager should extend the window frame
&lt;br&gt;&amp;gt; behind the client window.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The _NET_WM_FRAME_OVERLAP hint is intentionally designed to be compatible
&lt;br&gt;&amp;gt; with the DwmExtendFrameIntoClientArea API on Windows, to make life easier
&lt;br&gt;&amp;gt; for cross platform toolkits and applications.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; When I discussed this idea with Carsten Haitzler on IRC a while back,
&lt;br&gt;&amp;gt; he convinced me that a single rectangle might not be sufficient for all use
&lt;br&gt;&amp;gt; cases.
&lt;/div&gt;&lt;br&gt;That sounds like an excellent idea, I really look forward to having
&lt;br&gt;more control over window decorations. I know that Qt already uses
&lt;br&gt;DwmExtendFrameIntoClientArea for QWizard dialogs on Windows and it
&lt;br&gt;would be really nice to be able to implement it for X11 as well.
&lt;br&gt;&lt;br&gt;Is there anyone from a compositing manager camp interested in this?
&lt;br&gt;Will enlightenment or kde support this addition? (I can imagine that
&lt;br&gt;it might require a bit of effort to support this feature in a themable
&lt;br&gt;window manager).
&lt;br&gt;&lt;br&gt;Also it should be necessary to be able to figure out if the window
&lt;br&gt;manager supports this feature - probably we can add a new hint for
&lt;br&gt;_NET_SUPPORTED property.
&lt;br&gt;&lt;br&gt;Also, your suggestion doesn't say anything about the content of the
&lt;br&gt;window that is supposed to be transparent - should clients fill it
&lt;br&gt;with some value of just leave it uninitialized and the compositor will
&lt;br&gt;(somehow) take care of it?
&lt;br&gt;&lt;br&gt;I also fail to see what will the compositor do with
&lt;br&gt;_NET_WM_FRAME_OVERLAP hint - lets say the client sets it to be
&lt;br&gt;-1,-1,-1,-1 - what does it mean? Will the window be opaque,
&lt;br&gt;transparent or semi-transparent with a blur like on Windows when using
&lt;br&gt;DwmExtendFrameIntoClientArea? I would expect the behavior whatever it
&lt;br&gt;is to be fixed so that clients can rely on it. Also, if it's the
&lt;br&gt;latter and the window will be &amp;quot;blurry&amp;quot; I actually fail to see how the
&lt;br&gt;compositor can implement this partual blur without knowing which areas
&lt;br&gt;inside the client window should be blurred (if I remember correctly,
&lt;br&gt;on Windows when using the DwmExtendFrameIntoClientArea function the
&lt;br&gt;client has to fill the transparent area with a specific color to tell
&lt;br&gt;the compositor where the blur should go).
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I've therefore included a _NET_WM_FRAME_CLIP hint for specifying multiple
&lt;br&gt;&amp;gt; rectangles. These two hints could be merged, but I think that the
&lt;br&gt;&amp;gt; expectations are slightly different. It's less reasonable for the window
&lt;br&gt;&amp;gt; manager to draw an inner frame around the rectangles specified in the
&lt;br&gt;&amp;gt; property, since they they may form a complex region. Even when they don't,
&lt;br&gt;&amp;gt; the client won't know how much space is needed between the rectangles in
&lt;br&gt;&amp;gt; order for the window manager to be able to draw the frame.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It's also unlikely that the client wouldn't need to update this property
&lt;br&gt;&amp;gt; each time the window is resized. So for these reasons I prefer keeping these
&lt;br&gt;&amp;gt; properties separate.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There's also a _NET_FRAME_TEXT_COLOR hint set on the window by the
&lt;br&gt;&amp;gt; window manager for use by the client.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; These hints provide an interesting contrast to the hints just proposed by
&lt;br&gt;&amp;gt; Cody Russell, but they don't conflict or overlap.
&lt;/div&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Best regards,
&lt;br&gt;Denis.
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26518001&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/New-hints-for-compositing-window-managers-tp26508195p26518001.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26516292</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-25T08:55:38Z</published>
	<updated>2009-11-25T08:55:38Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Le mercredi 25 novembre 2009 à 10:46 -0600, Cody Russell a écrit :
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, 2009-11-25 at 17:30 +0100, Yann Droneaud wrote:
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; They don't draw shadows on RGBA windows currently do they?
&lt;br&gt;&amp;gt; &amp;gt; Otherwise it
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; would be making some pretty big assumptions wouldn't it?
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Some do.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Sorry, I forgot to be more specific.. but on *undecorated* RGBA windows?
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;Did you mean on unredirected (override_redirect = True) RGBA window ?
&lt;br&gt;&lt;br&gt;Examples of undecorated window showed in the thread uses an
&lt;br&gt;override_redirect window.
&lt;br&gt;&lt;br&gt;Regards.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26516292&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26516292.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26516247</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-25T08:52:14Z</published>
	<updated>2009-11-25T08:52:14Z</updated>
	<author>
		<name>Cody Russell-2</name>
	</author>
	<content type="html">On Wed, 2009-11-25 at 11:03 -0500, Dana Jansens wrote:
&lt;br&gt;&amp;gt; How would a compositing manager which decorates windows with, for
&lt;br&gt;&amp;gt; example, shadows, know not to draw shadows around/over/under the
&lt;br&gt;&amp;gt; client's shadows? &amp;nbsp;I believe that window frames and other decorations
&lt;br&gt;&amp;gt; should each be done by a single client or there will be innumerable
&lt;br&gt;&amp;gt; conflicts involved. 
&lt;br&gt;&lt;br&gt;Sorry, I'm getting off topic a bit. &amp;nbsp;To answer your question, the hint
&lt;br&gt;I'm proposing that I called _NET_SHADOW_EXTENTS could solve this. &amp;nbsp;If
&lt;br&gt;those extents are set by the application, then the CM might know from
&lt;br&gt;this that the application intends to draw its own shadow (or glow, or
&lt;br&gt;whatever).
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26516247&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26516247.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26516155</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-25T08:46:21Z</published>
	<updated>2009-11-25T08:46:21Z</updated>
	<author>
		<name>Cody Russell-2</name>
	</author>
	<content type="html">On Wed, 2009-11-25 at 17:30 +0100, Yann Droneaud wrote:
&lt;br&gt;&amp;gt; &amp;gt; They don't draw shadows on RGBA windows currently do they?
&lt;br&gt;&amp;gt; Otherwise it
&lt;br&gt;&amp;gt; &amp;gt; would be making some pretty big assumptions wouldn't it?
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Some do.
&lt;br&gt;&lt;br&gt;Sorry, I forgot to be more specific.. but on *undecorated* RGBA windows?
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26516155&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26516155.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26515870</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-25T08:30:15Z</published>
	<updated>2009-11-25T08:30:15Z</updated>
	<author>
		<name>Yann Droneaud</name>
	</author>
	<content type="html">Le mercredi 25 novembre 2009 à 10:12 -0600, Cody Russell a écrit :
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, 2009-11-25 at 11:03 -0500, Dana Jansens wrote:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; How would a compositing manager which decorates windows with, for
&lt;br&gt;&amp;gt; &amp;gt; example, shadows, know not to draw shadows around/over/under the
&lt;br&gt;&amp;gt; &amp;gt; client's shadows? &amp;nbsp;I believe that window frames and other decorations
&lt;br&gt;&amp;gt; &amp;gt; should each be done by a single client or there will be innumerable
&lt;br&gt;&amp;gt; &amp;gt; conflicts involved. 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; They don't draw shadows on RGBA windows currently do they? &amp;nbsp;Otherwise it
&lt;br&gt;&amp;gt; would be making some pretty big assumptions wouldn't it?
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;Some do.
&lt;br&gt;&lt;br&gt;&amp;gt; Perhaps the spec should specifically say that this applies to RGBA
&lt;br&gt;&amp;gt; windows only. &amp;nbsp;What about shaped windows? &amp;nbsp;Do compositors generally draw
&lt;br&gt;&amp;gt; shadows for these?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Some do it too.
&lt;br&gt;&lt;br&gt;&lt;br&gt;See thread 
&lt;br&gt;&lt;a href=&quot;http://lists.freedesktop.org/archives/xorg/2009-September/047361.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freedesktop.org/archives/xorg/2009-September/047361.html&lt;/a&gt;&lt;br&gt;Especially my post
&lt;br&gt;&lt;a href=&quot;http://lists.freedesktop.org/archives/xorg/2009-September/047415.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.freedesktop.org/archives/xorg/2009-September/047415.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Yann Droneaud
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26515870&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26515870.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26515523</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-25T08:12:44Z</published>
	<updated>2009-11-25T08:12:44Z</updated>
	<author>
		<name>Cody Russell-2</name>
	</author>
	<content type="html">On Wed, 2009-11-25 at 11:03 -0500, Dana Jansens wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How would a compositing manager which decorates windows with, for
&lt;br&gt;&amp;gt; example, shadows, know not to draw shadows around/over/under the
&lt;br&gt;&amp;gt; client's shadows? &amp;nbsp;I believe that window frames and other decorations
&lt;br&gt;&amp;gt; should each be done by a single client or there will be innumerable
&lt;br&gt;&amp;gt; conflicts involved. 
&lt;br&gt;&lt;br&gt;They don't draw shadows on RGBA windows currently do they? &amp;nbsp;Otherwise it
&lt;br&gt;would be making some pretty big assumptions wouldn't it?
&lt;br&gt;&lt;br&gt;Perhaps the spec should specifically say that this applies to RGBA
&lt;br&gt;windows only. &amp;nbsp;What about shaped windows? &amp;nbsp;Do compositors generally draw
&lt;br&gt;shadows for these?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&amp;nbsp; &amp;nbsp;Cody
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26515523&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26515523.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26515370</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-25T08:03:28Z</published>
	<updated>2009-11-25T08:03:28Z</updated>
	<author>
		<name>Dana Jansens-2</name>
	</author>
	<content type="html">2009/11/25 Fredrik Höglund &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26515370&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;fredrik@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wednesday 25 November 2009, Cody Russell wrote:
&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I'm working on adding support to GTK+ for doing client-side window
&lt;br&gt;&amp;gt;&amp;gt; decorations, and there are a couple additional hints that seem like they
&lt;br&gt;&amp;gt;&amp;gt; would be useful to propose.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Part of this work is involving changing GTK+ to use RGBA windows by
&lt;br&gt;&amp;gt;&amp;gt; default.  For this, I'd like to propose an XserverRegion hint that
&lt;br&gt;&amp;gt;&amp;gt; contains a region marking what parts of the window are known to be
&lt;br&gt;&amp;gt;&amp;gt; opaque.  The idea being that this could be used by a WM/compositor to
&lt;br&gt;&amp;gt;&amp;gt; optimize which parts of the window it needs to composite, if it's useful
&lt;br&gt;&amp;gt;&amp;gt; to the WM/compositor (or it could be ignored; a GL compositor may not
&lt;br&gt;&amp;gt;&amp;gt; find this kind of information very useful, for example).  This might be
&lt;br&gt;&amp;gt;&amp;gt; called _NET_OPAQUE_REGION.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think it would be preferable to store the rectangles directly in the
&lt;br&gt;&amp;gt; property.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The reason is that if the window manager wants to fetch the rectangles,
&lt;br&gt;&amp;gt; it first has to make a synchronous call to fetch the ID, followed by another
&lt;br&gt;&amp;gt; synchronous call to fetch the rectangles, while it only has to make
&lt;br&gt;&amp;gt; one such call if the rectangles are stored directly in the property.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; If the window manager needs an XserverRegion it would have to create
&lt;br&gt;&amp;gt; it, but this is an asynchronous call.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The other hint that would be useful is a hint similar to
&lt;br&gt;&amp;gt;&amp;gt; _NET_FRAME_EXTENTS that specifies client-side drop shadow extents.  The
&lt;br&gt;&amp;gt;&amp;gt; main idea here being that the WM could take advantage of this to know
&lt;br&gt;&amp;gt;&amp;gt; where to perform window snapping for windows whose decorations and
&lt;br&gt;&amp;gt;&amp;gt; drop-shadows are drawn client-side.  This might be called
&lt;br&gt;&amp;gt;&amp;gt; _NET_SHADOW_EXTENTS.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think this is a good idea, but maybe it should have a more generic
&lt;br&gt;&amp;gt; name, since the client may draw something other than a shadow
&lt;br&gt;&amp;gt; around the window.
&lt;/div&gt;&lt;br&gt;How would a compositing manager which decorates windows with, for
&lt;br&gt;example, shadows, know not to draw shadows around/over/under the
&lt;br&gt;client's shadows? &amp;nbsp;I believe that window frames and other decorations
&lt;br&gt;should each be done by a single client or there will be innumerable
&lt;br&gt;conflicts involved.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Dana
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26515370&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26515370.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26508195</id>
	<title>New hints for compositing window managers</title>
	<published>2009-11-24T22:40:37Z</published>
	<updated>2009-11-24T22:40:37Z</updated>
	<author>
		<name>Bugzilla from fredrik@kde.org</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I want to propose a new set of window manager hints that lets a client
&lt;br&gt;specify that a compositing window manager should extend the window frame
&lt;br&gt;behind the client window.
&lt;br&gt;&lt;br&gt;The _NET_WM_FRAME_OVERLAP hint is intentionally designed to be compatible
&lt;br&gt;with the DwmExtendFrameIntoClientArea API on Windows, to make life easier
&lt;br&gt;for cross platform toolkits and applications.
&lt;br&gt;&lt;br&gt;When I discussed this idea with Carsten Haitzler on IRC a while back,
&lt;br&gt;he convinced me that a single rectangle might not be sufficient for all use
&lt;br&gt;cases.
&lt;br&gt;&lt;br&gt;I've therefore included a _NET_WM_FRAME_CLIP hint for specifying multiple
&lt;br&gt;rectangles. These two hints could be merged, but I think that the
&lt;br&gt;expectations are slightly different. It's less reasonable for the window
&lt;br&gt;manager to draw an inner frame around the rectangles specified in the
&lt;br&gt;property, since they they may form a complex region. Even when they don't,
&lt;br&gt;the client won't know how much space is needed between the rectangles in
&lt;br&gt;order for the window manager to be able to draw the frame.
&lt;br&gt;&lt;br&gt;It's also unlikely that the client wouldn't need to update this property
&lt;br&gt;each time the window is resized. So for these reasons I prefer keeping these
&lt;br&gt;properties separate.
&lt;br&gt;&lt;br&gt;There's also a _NET_FRAME_TEXT_COLOR hint set on the window by the
&lt;br&gt;window manager for use by the client.
&lt;br&gt;&lt;br&gt;These hints provide an interesting contrast to the hints just proposed by
&lt;br&gt;Cody Russell, but they don't conflict or overlap.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Fredrik
&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[wm-spec.diff]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;Index: wm-spec.xml
&lt;br&gt;===================================================================
&lt;br&gt;RCS file: /cvs/icccm-extensions/wm-spec/wm-spec.xml,v
&lt;br&gt;retrieving revision 1.30
&lt;br&gt;diff -u -3 -p -r1.30 wm-spec.xml
&lt;br&gt;--- wm-spec.xml	17 Mar 2008 14:48:05 -0000	1.30
&lt;br&gt;+++ wm-spec.xml	25 Nov 2009 06:25:13 -0000
&lt;br&gt;@@ -1538,6 +1538,58 @@ window's frame. &amp;nbsp;left, right, top and bo
&lt;br&gt;&amp;nbsp;respective borders added by the Window Manager.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;/sect2&amp;gt;
&lt;br&gt;+
&lt;br&gt;+	&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_FRAME_OVERLAP&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting&amp;gt;&amp;lt;![CDATA[ &amp;nbsp;
&lt;br&gt;+_NET_WM_FRAME_OVERLAP, left, right, top, bottom, CARDINAL[4]/32
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This optional property MAY be set by the client to indicate that the Window
&lt;br&gt;+Manager should extend the frame behind the client window, so that the frame
&lt;br&gt;+can serve as the backdrop for the window contents.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;para&amp;gt;
&lt;br&gt;+The four values indicate how far the frame should extend behind the window on
&lt;br&gt;+each side. If all four values are set to -1, the Window Manager MUST extend
&lt;br&gt;+the window frame behind the whole client window. Negative values MUST
&lt;br&gt;+otherwise be interpreted by the Window Manager as if they were zero.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;para&amp;gt;
&lt;br&gt;+The Window Manager MAY draw an inner frame around the inner rectangle.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+	&amp;lt;/sect2&amp;gt;
&lt;br&gt;+
&lt;br&gt;+	&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_FRAME_CLIP&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting&amp;gt;&amp;lt;![CDATA[ &amp;nbsp;
&lt;br&gt;+_NET_WM_FRAME_CLIP, x, y, width, height, CARDINAL[][4]/32
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This optional property MAY be set by the client to indicate that the Window
&lt;br&gt;+Manager should extend the window frame behind the whole client window,
&lt;br&gt;+while leaving the rectangles specified in this property transparent.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;para&amp;gt;
&lt;br&gt;+If both this property and the _NET_WM_FRAME_OVERLAP property are set,
&lt;br&gt;+the Window Manager MUST ignore the _NET_WM_FRAME_OVERLAP property, and
&lt;br&gt;+use the values in this property instead.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/sect2&amp;gt;
&lt;br&gt;+
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_FRAME_TEXT_COLOR&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting&amp;gt;&amp;lt;![CDATA[ &amp;nbsp;
&lt;br&gt;+_NET_FRAME_TEXT_COLOR, CARDINAL/32
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This property MUST be set by the Window Manager if it supports the
&lt;br&gt;+_NET_WM_FRAME_OVERLAP or _NET_WM_FRAME_CLIP properties.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;para&amp;gt;
&lt;br&gt;+This property should be interpreted as an ARGB32 pixel value, and
&lt;br&gt;+is intended to be used by the client as the text color in areas of
&lt;br&gt;+the window where the window frame is used as the background.
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/sect2&amp;gt;
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;&amp;lt;/sect1&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;sect1&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;title&amp;gt;Window Manager Protocols&amp;lt;/title&amp;gt;
&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26508195&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/New-hints-for-compositing-window-managers-tp26508195p26508195.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26508081</id>
	<title>Re: Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-24T22:21:11Z</published>
	<updated>2009-11-24T22:21:11Z</updated>
	<author>
		<name>Bugzilla from fredrik@kde.org</name>
	</author>
	<content type="html">On Wednesday 25 November 2009, Cody Russell wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm working on adding support to GTK+ for doing client-side window
&lt;br&gt;&amp;gt; decorations, and there are a couple additional hints that seem like they
&lt;br&gt;&amp;gt; would be useful to propose.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Part of this work is involving changing GTK+ to use RGBA windows by
&lt;br&gt;&amp;gt; default. &amp;nbsp;For this, I'd like to propose an XserverRegion hint that
&lt;br&gt;&amp;gt; contains a region marking what parts of the window are known to be
&lt;br&gt;&amp;gt; opaque. &amp;nbsp;The idea being that this could be used by a WM/compositor to
&lt;br&gt;&amp;gt; optimize which parts of the window it needs to composite, if it's useful
&lt;br&gt;&amp;gt; to the WM/compositor (or it could be ignored; a GL compositor may not
&lt;br&gt;&amp;gt; find this kind of information very useful, for example). &amp;nbsp;This might be
&lt;br&gt;&amp;gt; called _NET_OPAQUE_REGION.
&lt;/div&gt;&lt;br&gt;I think it would be preferable to store the rectangles directly in the
&lt;br&gt;property.
&lt;br&gt;&lt;br&gt;The reason is that if the window manager wants to fetch the rectangles,
&lt;br&gt;it first has to make a synchronous call to fetch the ID, followed by another
&lt;br&gt;synchronous call to fetch the rectangles, while it only has to make
&lt;br&gt;one such call if the rectangles are stored directly in the property.
&lt;br&gt;&lt;br&gt;If the window manager needs an XserverRegion it would have to create
&lt;br&gt;it, but this is an asynchronous call.
&lt;br&gt;&lt;br&gt;&amp;gt; The other hint that would be useful is a hint similar to
&lt;br&gt;&amp;gt; _NET_FRAME_EXTENTS that specifies client-side drop shadow extents. &amp;nbsp;The
&lt;br&gt;&amp;gt; main idea here being that the WM could take advantage of this to know
&lt;br&gt;&amp;gt; where to perform window snapping for windows whose decorations and
&lt;br&gt;&amp;gt; drop-shadows are drawn client-side. &amp;nbsp;This might be called
&lt;br&gt;&amp;gt; _NET_SHADOW_EXTENTS.
&lt;br&gt;&lt;br&gt;I think this is a good idea, but maybe it should have a more generic
&lt;br&gt;name, since the client may draw something other than a shadow
&lt;br&gt;around the window.
&lt;br&gt;&lt;br&gt;Also, while the spec doesn't say, I think the convention is that properties
&lt;br&gt;set by the client start with _NET_WM, while properties set by the window
&lt;br&gt;manager start with _NET.
&lt;br&gt;&lt;br&gt;&amp;gt; Lastly, after reading the documentation about _NET_FRAME_EXTENTS [1] it
&lt;br&gt;&amp;gt; says that &amp;quot;the window manager MUST set _NET_FRAME_EXTENTS to the extents
&lt;br&gt;&amp;gt; of the window's frame.&amp;quot; &amp;nbsp;If an application is drawing the decorations,
&lt;br&gt;&amp;gt; should it set this property?
&lt;br&gt;&lt;br&gt;I imagine that the window manager would set all values to 0 if it doesn't
&lt;br&gt;draw the decoration itself.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Fredrik
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26508081&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26508081.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26507374</id>
	<title>Client-side decorations, RGBA opaque regions</title>
	<published>2009-11-24T20:22:13Z</published>
	<updated>2009-11-24T20:22:13Z</updated>
	<author>
		<name>Cody Russell-2</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I'm working on adding support to GTK+ for doing client-side window
&lt;br&gt;decorations, and there are a couple additional hints that seem like they
&lt;br&gt;would be useful to propose.
&lt;br&gt;&lt;br&gt;Part of this work is involving changing GTK+ to use RGBA windows by
&lt;br&gt;default. &amp;nbsp;For this, I'd like to propose an XserverRegion hint that
&lt;br&gt;contains a region marking what parts of the window are known to be
&lt;br&gt;opaque. &amp;nbsp;The idea being that this could be used by a WM/compositor to
&lt;br&gt;optimize which parts of the window it needs to composite, if it's useful
&lt;br&gt;to the WM/compositor (or it could be ignored; a GL compositor may not
&lt;br&gt;find this kind of information very useful, for example). &amp;nbsp;This might be
&lt;br&gt;called _NET_OPAQUE_REGION.
&lt;br&gt;&lt;br&gt;The other hint that would be useful is a hint similar to
&lt;br&gt;_NET_FRAME_EXTENTS that specifies client-side drop shadow extents. &amp;nbsp;The
&lt;br&gt;main idea here being that the WM could take advantage of this to know
&lt;br&gt;where to perform window snapping for windows whose decorations and
&lt;br&gt;drop-shadows are drawn client-side. &amp;nbsp;This might be called
&lt;br&gt;_NET_SHADOW_EXTENTS.
&lt;br&gt;&lt;br&gt;Lastly, after reading the documentation about _NET_FRAME_EXTENTS [1] it
&lt;br&gt;says that &amp;quot;the window manager MUST set _NET_FRAME_EXTENTS to the extents
&lt;br&gt;of the window's frame.&amp;quot; &amp;nbsp;If an application is drawing the decorations,
&lt;br&gt;should it set this property?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;&amp;nbsp; &amp;nbsp;Cody
&lt;br&gt;&lt;br&gt;[1]. &lt;a href=&quot;http://standards.freedesktop.org/wm-spec/1.3/ar01s05.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://standards.freedesktop.org/wm-spec/1.3/ar01s05.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26507374&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Client-side-decorations%2C-RGBA-opaque-regions-tp26507374p26507374.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26458798</id>
	<title>Re: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint</title>
	<published>2009-11-21T09:59:10Z</published>
	<updated>2009-11-21T09:59:10Z</updated>
	<author>
		<name>Dana Jansens-2</name>
	</author>
	<content type="html">2009/11/6 Giles Atkinson &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458798&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Giles.Atkinson@...&lt;/a&gt;&amp;gt;:
&lt;br&gt;&amp;gt; That makes sense to me, but also prompts me to make an additional point about this property:  why is not specified as a conventional window hint, as well a client message to request a change?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The only way I was able to get this to work with Metacity was to map the window, pause a little with XSync() and then follow up with the client message.  That does work fine, but means there is a race that could cause a flicker as the window is first mapped on the WM's chosen default monitor and then moved.  Specifying it in the same way as _NET_WM_STATE, as both an initial property before initial (or first post-withdrawal) mapping, and a client message to change, would fix that and seems more consistent and logical.
&lt;br&gt;&lt;br&gt;I agree, the functionality as only a message completely misses windows
&lt;br&gt;that want to map in fullscreen mode. &amp;nbsp;I would support this change.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458798&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458798&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list-bounces@...&lt;/a&gt;] On Behalf Of Jason 'vanRijn' Kasper
&lt;br&gt;&amp;gt; Sent: 05 November 2009 22:32
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458798&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Subject: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; re, all.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The EWMH spec does not provide a way to disable or &amp;quot;turn off&amp;quot; the _NET_WM_FULLSCREEN_MONITORS hint. In other words, whatever 4 monitor indices were last used for a fullscreen window will continue to be used ad infinitum, and the only current recourse for an app that has set this hint is to keep setting it every time it wants to fullscreen, even if it's only on a single head.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I've done a bit of testing with 2 heads and the latest Compiz, KWin, and Metacity window managers and it looks like it's possible to at least confuse these WMs into not using previous monitor indices for _NET_WM_FULLSCREEN_MONITORS by passing a -1 (0xFFFFFFFF) for the 4 monitor indices. I think what this is really doing is providing an invalid monitor index that doesn't (and can't possibly) exist in Xinerama, so it's ending up being not used by the WMs.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'd like to propose that an addition be made to the EWMH spec that makes this the official route to asking the WM to disable the _NET_WM_FULLSCREEN_MONITORS hint for a given window. It seems to follow the spirit of both the existing _NET_WM_FULLSCREEN_MONITORS section as well as _NET_WM_DESKTOP (via using 0xFFFFFFFF as an otherwise invalid and special index).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'd like to provide a patch to the spec to provide a way to completely turn off and disable the _NET_WM_FULLSCREEN_MONITORS after it's been set. I will provide a patch to the EWMH XML file (is wm-spec-1.4.xml the right one?), but before I do that, I wanted to check with the group on my approach. Does this approach (passing 0xFFFFFFFF as monitor indices in the XClientMessageEvent that is sent to the root window) sound good to everyone? Or would it be preferable to use a different approach?
&lt;/div&gt;&lt;br&gt;I believe that it's the same but technically the file you'd want to
&lt;br&gt;edit is here: &lt;a href=&quot;http://webcvs.freedesktop.org/icccm-extensions/wm-spec/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://webcvs.freedesktop.org/icccm-extensions/wm-spec/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; The advantage I see to doing it this way would mean that what currently works via sending an invalid monitor index would be made the official spec standard and require only minor patches to the implementing WM's to document this as opposed to using some other mechanism which would require more intrusive rework.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks in advance, all! =:)
&lt;br&gt;&lt;br&gt;This also sounds reasonable to me, as there is no &amp;quot;add/remove/toggle&amp;quot;
&lt;br&gt;state indicator or anything of the type in the message now, and &amp;quot;all
&lt;br&gt;monitors&amp;quot; (the usual use for 0xFFFFFFFF) can already be achieved
&lt;br&gt;through using indices.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Dana
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458798&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-to-provide-a-way-to-disable-_NET_WM_FULLSCREEN_MONITORS-hint-tp26223486p26458798.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26458677</id>
	<title>Re: struts, workareas and xinerama</title>
	<published>2009-11-21T09:45:13Z</published>
	<updated>2009-11-21T09:45:13Z</updated>
	<author>
		<name>Dana Jansens-2</name>
	</author>
	<content type="html">2009/11/20 Tomáš Janoušek &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458677&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tomi@...&lt;/a&gt;&amp;gt;:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Thu, Jan 24, 2008 at 07:19:10PM +0100, Lubos Lunak wrote:
&lt;br&gt;&amp;gt;&amp;gt; On Wednesday 13 of June 2007, Dana Jansens wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Secondly, I am in need of some clarification in terms of struts with
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Xinerama. In the above example, say an application set a strut on the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; &amp;quot;right side&amp;quot; with a length of the 1st monitor.  Where exactly does
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; this strut reside? It could reside entirely on the first monitor, it
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; could reside on the second monitor (and the nowhereland above it) or
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; it could be split between the two monitors.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; I expect there is no answer to this question, which is frustrating
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; because this is a real-life setup that one of my users has talked
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; about recently.  Perhaps _NET_WM_STRUT_PARTIAL is just not enough, and
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; needs to be able to specify the monitor as well as start/length.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;  Correct. The strut hints talk about desktop (root window) edges, so they
&lt;br&gt;&amp;gt;&amp;gt; don't support reserved areas &amp;quot;inside&amp;quot;. That basically matches _NET_WORKAREA,
&lt;br&gt;&amp;gt;&amp;gt; so if you want to extend one, you probably want to do the same with the other
&lt;br&gt;&amp;gt;&amp;gt; one.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I encountered this issue as well and I got an idea for a simple workaround.
&lt;br&gt;&amp;gt; Imagine a screen layout like this:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;    11111111
&lt;br&gt;&amp;gt;    11111111
&lt;br&gt;&amp;gt;    11111111
&lt;br&gt;&amp;gt;     222222    &amp;lt;--- strut here
&lt;br&gt;&amp;gt;     222222
&lt;br&gt;&amp;gt;     222222
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; We want to place a panel at the top of screen 2. A naive panel application may
&lt;br&gt;&amp;gt; set a partial strut where top = top coordinate of screen 2 + height of panel.
&lt;br&gt;&amp;gt; This is wrong, as it indicates that the entire screen 1* is covered, *but* the
&lt;br&gt;&amp;gt; interpretation may as well be different. If we agree that struts covering an
&lt;br&gt;&amp;gt; entire xinerama screen are nonsense, we may interpret such struts as not
&lt;br&gt;&amp;gt; covering those screens at all, just those that they don't cover entirely. This
&lt;br&gt;&amp;gt; way _NET_WM_STRUT_PARTIAL can be used for struts covering any edge of any
&lt;br&gt;&amp;gt; Xinerama screen.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; * I know, not really entire screen. Just a horizontal strut whose height is
&lt;br&gt;&amp;gt;  greater than the height of screen 1. Please read &amp;quot;entire&amp;quot; as &amp;quot;entire in
&lt;br&gt;&amp;gt;  their primary dimension&amp;quot;.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This naive way of setting _NET_WM_STRUT_PARTIAL is used in xmobar and I have
&lt;br&gt;&amp;gt; implemented this semantics for xmonad:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.haskell.org/pipermail/xmonad/2009-November/009148.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/pipermail/xmonad/2009-November/009148.html&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I can't think of any use for struts that span multiple screens in their primary
&lt;br&gt;&amp;gt; dimension (height for horiz. struts, width for vert. struts), personally.
&lt;br&gt;&amp;gt; If wm-spec is extended in the way Dana and Lubos said (which didn't happen yet
&lt;br&gt;&amp;gt; even though it's been almost 2 years already), I'll be happy to implement it,
&lt;br&gt;&amp;gt; but this &amp;quot;hack&amp;quot; seemed easier and compatible with what was in the wild.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What's your opinion?
&lt;/div&gt;&lt;/div&gt;I apologize I dropped the ball on this one and forgot about it until
&lt;br&gt;quite recently when another issue came up.
&lt;br&gt;&lt;br&gt;I have attached a suggested patch to the wm-spec to improve its
&lt;br&gt;relation to multi-monitor environments.
&lt;br&gt;&lt;br&gt;First, it adds a multi-monitor-friendly _NET_WORKAREAS hint, replacing
&lt;br&gt;the _NET_WORKAREA hint. &amp;nbsp;I thought that _NET_WORKAREAS sounded a bit
&lt;br&gt;better than _NET_WORKAREA_AREAS, though it may be too close to the
&lt;br&gt;original hint. &amp;nbsp;The hint is slightly different from the one I
&lt;br&gt;suggested previously. &amp;nbsp;It looks like this:
&lt;br&gt;&lt;br&gt;_NET_WORKAREAS,	monitor, x, y, width, height, CARDINAL[][5]/32
&lt;br&gt;&lt;br&gt;I included a monitor index to each geometry so that a client can tell
&lt;br&gt;how many monitors and desktops are being represented in this hint
&lt;br&gt;independent of the value in _NET_NUM_DESKTOPS. &amp;nbsp;If decoding the values
&lt;br&gt;in this required knowing the value of _NET_NUM_DESKTOPS, it would lead
&lt;br&gt;to some ugly race conditions.
&lt;br&gt;&lt;br&gt;The proposed property lists the geometry of work areas on each monitor
&lt;br&gt;for the first desktop, followed by the work areas on each monitor for
&lt;br&gt;the second desktop, and so on. &amp;nbsp;The geometries are given for monitors
&lt;br&gt;in the same order as the monitors appear in the list returned by the
&lt;br&gt;Xinerama extension, and the &amp;quot;monitor&amp;quot; field is an index into this
&lt;br&gt;list.
&lt;br&gt;&lt;br&gt;Secondly, as Lubus suggested, I have extended the STRUT property to
&lt;br&gt;allow for placing struts on boundaries between monitors. &amp;nbsp;This
&lt;br&gt;addresses the use case presented by Tomáš. To keep the property
&lt;br&gt;similar to what has been done in the past, my proposed property looks
&lt;br&gt;like this:
&lt;br&gt;&lt;br&gt;_NET_WM_STRUT_AREAS, monitor, left, right, top, bottom, left_start_y,
&lt;br&gt;left_end_y,
&lt;br&gt;right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
&lt;br&gt;bottom_end_x, CARDINAL[13]/32
&lt;br&gt;&lt;br&gt;As you can see it is exactly the _NET_WM_STRUT_PARTIAL hint, with a
&lt;br&gt;monitor field added, so that the window can request the monitor on
&lt;br&gt;which the strut should be reserved.
&lt;br&gt;&lt;br&gt;In both cases of these hints, monitor may be set to 0xFFFFFFFF, in
&lt;br&gt;which case the geometry is relative to the root window and ignores
&lt;br&gt;everything about multiple monitors, essentially using the same
&lt;br&gt;behavior as the old hints.
&lt;br&gt;&lt;br&gt;&lt;br&gt;I would however like to understand why the _NET_WM_STRUT (and then
&lt;br&gt;_NET_WM_STRUT_PARTIAL) hint allows a window to reserve space along
&lt;br&gt;more than one edge of the screen. &amp;nbsp;This makes it very difficult for a
&lt;br&gt;window manager to do anything intelligent with strut windows, as it
&lt;br&gt;can not always tell what edge they are on if they request space on
&lt;br&gt;multiple edges. &amp;nbsp;What use case was considered when allowing this
&lt;br&gt;behaviour? &amp;nbsp;It is included in the notes that &amp;quot;A corner panel that does
&lt;br&gt;not extend for the full length of a screen border SHOULD only set one
&lt;br&gt;strut.&amp;quot; &amp;nbsp;I would perfer to make the _NET_WM_STRUT_AREAS hint only
&lt;br&gt;allow an application to reserve one rectangular area along one edge of
&lt;br&gt;one monitor. &amp;nbsp;Applications which wanted to use multiple edges could
&lt;br&gt;still do so through multiple windows.
&lt;br&gt;&lt;br&gt;Restricting a window to reserving a strut along only one edge would
&lt;br&gt;not affect most (any?) uses of the STRUT property for applications,
&lt;br&gt;but would allow a Window Manager to treat strut windows more
&lt;br&gt;intelligently. &amp;nbsp;The use case I am considering this for is when more
&lt;br&gt;than one window reserve the same edge of a screen [1]. &amp;nbsp;Currently
&lt;br&gt;applications are trying to place themselves relative to the WORKAREA,
&lt;br&gt;which causes race conditions between clients and does not allow them
&lt;br&gt;to properly move dynamically as strut windows are added/removed along
&lt;br&gt;the edge. &amp;nbsp;The window manager should be able to place windows along a
&lt;br&gt;strut edge when there are more than one so that they do not overlap.
&lt;br&gt;This would be much simpler and more predictable if a window is only
&lt;br&gt;attached to a single edge (has a single reserved edge reserved in its
&lt;br&gt;strut).
&lt;br&gt;&lt;br&gt;I have added a comments in the diff that reflect the problems
&lt;br&gt;introduced in this scenario. &amp;nbsp;First that the STRUT should be relative
&lt;br&gt;to the screen edge, not to the WORKAREA, and second that the window
&lt;br&gt;manager may place windows with struts away from the edge of the
&lt;br&gt;monitor. &amp;nbsp;However, implementations will be somewhat limited by the
&lt;br&gt;STRUT hint in its current form. &amp;nbsp;These are important things that will
&lt;br&gt;affect how well applications will be able to make use of struts, and
&lt;br&gt;cooperate with each other, so I hope that these issues will be looked
&lt;br&gt;at seriously.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Dana
&lt;br&gt;&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=551807&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=551807&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[multi-monitor-workarea-and-strut.diff]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;commit 39d82f6ff7ed2a552fbecd8c032e0190f918135f
&lt;br&gt;Author: Dana Jansens &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458677&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;danakj@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: &amp;nbsp; Fri Nov 20 23:25:20 2009 -0500
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Add _NET_WORKAREAS and _NET_WM_STRUT_AREAS.
&lt;br&gt;&lt;br&gt;diff --git a/wm-spec.xml b/wm-spec.xml
&lt;br&gt;index f45e284..f3ed0fc 100644
&lt;br&gt;--- a/wm-spec.xml
&lt;br&gt;+++ b/wm-spec.xml
&lt;br&gt;@@ -340,7 +340,7 @@ _NET_NUMBER_OF_DESKTOPS
&lt;br&gt;&amp;nbsp; &amp;nbsp;other data.l[] elements = 0
&lt;br&gt;&amp;nbsp;]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;-The Window Manager is free to honor or reject this request. If the request is honored _NET_NUMBER_OF_DESKTOPS MUST be set to the new number of desktops, _NET_VIRTUAL_ROOTS MUST be set to store the new number of desktop virtual root window IDs and _NET_DESKTOP_VIEWPORT and _NET_WORKAREA must also be changed accordingly. The _NET_DESKTOP_NAMES property MAY remain unchanged.
&lt;br&gt;+The Window Manager is free to honor or reject this request. If the request is honored _NET_NUMBER_OF_DESKTOPS MUST be set to the new number of desktops, _NET_VIRTUAL_ROOTS MUST be set to store the new number of desktop virtual root window IDs and _NET_DESKTOP_VIEWPORT and _NET_WORKAREAS must also be changed accordingly. The _NET_DESKTOP_NAMES property MAY remain unchanged.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt; 
&lt;br&gt;&amp;nbsp;If the number of desktops is shrinking and _NET_CURRENT_DESKTOP is out of the new range of available desktops, then this MUST be set to the last available desktop from the new set. &amp;nbsp;Clients that are still present on desktops that are out of the new range MUST be moved to the very last desktop from the new set. For these _NET_WM_DESKTOP MUST be updated.
&lt;br&gt;@@ -479,24 +479,71 @@ Depending on the information provided with the message, the Window Manager may
&lt;br&gt;&amp;nbsp;decide to refuse the request (either completely ignore it, or e.g. use
&lt;br&gt;&amp;nbsp;_NET_WM_STATE_DEMANDS_ATTENTION).
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/para&amp;gt;
&lt;br&gt;+	&amp;lt;/sect2&amp;gt;&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WORKAREAS&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;+_NET_WORKAREAS, monitor, x, y, width, height, CARDINAL[][5]/32
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This property MUST be set by the Window Manager upon calculating the work area
&lt;br&gt;+for each desktop. Contains a geometry of the working area on each physical
&lt;br&gt;+monitor (provided by the Xinerama extension), for each virtual desktop.
&lt;br&gt;+All connected monitors SHOULD have a geometry included,
&lt;br&gt;+and the same monitors MUST be represented for all desktops.
&lt;br&gt;+The monitor is an index into the list of monitors returned by the Xinerama
&lt;br&gt;+extension, starting from 0, or can be a value of 0xFFFFFFFF to indicate the
&lt;br&gt;+Window Manager does not support multiple monitors, and the work area is
&lt;br&gt;+spread across the entire root window. &amp;nbsp;The geometry for each monitor MUST
&lt;br&gt;+appear in this property, for each desktop, in the same order reported by the
&lt;br&gt;+Xinerama extension.
&lt;br&gt;+These geometries are specified relative to the viewport on each
&lt;br&gt;+desktop, not relative to the monitor, and specify an area that is completely
&lt;br&gt;+contained within the viewport.
&lt;br&gt;+Work areas SHOULD be used by desktop applications to place desktop icons
&lt;br&gt;+appropriately.
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This property holds a list of work areas for the first desktop, across all
&lt;br&gt;+monitors, followed by a list of work areas for the second desktop, and so on.
&lt;br&gt;+For example, consider the scenario where there is one monitor of size
&lt;br&gt;+1280x1024 and a second monitor of size 1024x768. &amp;nbsp;The Window Manager has
&lt;br&gt;+2 desktops, and there are is a reserved area of 20 pixels at the top of the
&lt;br&gt;+second monitor on only the second desktop. &amp;nbsp;Then this property would look like:
&lt;br&gt;+&amp;quot;0, 0, 0, 1280, 1024, 1, 0, &amp;nbsp;0, 1024, 768,
&lt;br&gt;+ 0, 0, 0, 1280, 1024, 1, 0, 20, 1024, 748&amp;quot;.
&lt;br&gt;+Alternatively, consider if a Window Manager does not support multiple monitors
&lt;br&gt;+through Xinerama, but sees a root window of size 2304x1024 with 2 desktops
&lt;br&gt;+and 20 pixels reserved at the top of the screen on the second desktop.
&lt;br&gt;+Then this property would look like:
&lt;br&gt;+&amp;quot;0xFFFFFFFF, 0, 0, 2304, 1024, 0xFFFFFFFF, 0, 20, 2304, 1004&amp;quot;.
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+The Window Manager SHOULD calculate this space by taking the current
&lt;br&gt;+page minus space occupied by dock and panel windows, as indicated by
&lt;br&gt;+the &amp;lt;link linkend=&amp;quot;NETWMSTRUTAREAS&amp;quot;&amp;gt;_NET_WM_STRUT_AREAS&amp;lt;/link&amp;gt;
&lt;br&gt;+property set on client windows (or
&lt;br&gt;+&amp;lt;link linkend=&amp;quot;NETWMSTRUT&amp;quot;&amp;gt;_NET_WM_STRUT&amp;lt;/link&amp;gt; and
&lt;br&gt;+&amp;lt;link linkend=&amp;quot;NETWMSTRUTPARTIAL&amp;quot;&amp;gt;_NET_WM_STRUT_PARTIAL&amp;lt;/link&amp;gt; properties
&lt;br&gt;+for legacy clients).
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;/sect2&amp;gt;&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WORKAREA&amp;lt;/title&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;programlisting&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;&amp;nbsp;_NET_WORKAREA, x, y, width, height CARDINAL[][4]/32
&lt;br&gt;-]]&amp;gt;
&lt;br&gt;-	&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;-This property MUST be set by the Window Manager upon calculating the work area for &amp;nbsp;
&lt;br&gt;+This property has been DEPRECATED in favor of _NET_WORKAREAS. &amp;nbsp;When
&lt;br&gt;+_NET_WORKAREAS has been set, clients MUST ignore the value of this
&lt;br&gt;+property, and use _NET_WORKAREAS instead. Window Managers MAY
&lt;br&gt;+continue to update this property for legacy applications.
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This property MAY be set by the Window Manager upon calculating the work area for
&lt;br&gt;&amp;nbsp;each desktop. &amp;nbsp;Contains a geometry for each desktop. &amp;nbsp;These geometries are 
&lt;br&gt;&amp;nbsp;specified relative to the viewport on each desktop and specify an area that is
&lt;br&gt;&amp;nbsp;completely contained within the viewport.
&lt;br&gt;- Work area SHOULD be used by desktop applications to place desktop icons appropriately.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;-The Window Manager SHOULD calculate this space by taking the current
&lt;br&gt;-page minus space occupied by dock and panel windows, as indicated by
&lt;br&gt;-the &amp;lt;link linkend=&amp;quot;NETWMSTRUT&amp;quot;&amp;gt;_NET_WM_STRUT&amp;lt;/link&amp;gt; or &amp;lt;link
&lt;br&gt;-linkend=&amp;quot;NETWMSTRUTPARTIAL&amp;quot;&amp;gt;_NET_WM_STRUT_PARTIAL&amp;lt;/link&amp;gt; properties set on
&lt;br&gt;-client windows.
&lt;br&gt;+The Window Manager SHOULD calculate this space as a subset of the areas
&lt;br&gt;+described in _NET_WORKAREAS.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;/sect2&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;sect2&amp;gt;
&lt;br&gt;@@ -1332,48 +1379,59 @@ _NET_WM_ACTION_BELOW indicates that the window may placed in the &amp;quot;below&amp;quot; layer o
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;/sect2&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;-&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_STRUT&amp;lt;/title&amp;gt;
&lt;br&gt;-	&amp;lt;programlisting id=&amp;quot;NETWMSTRUT&amp;quot;&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;-_NET_WM_STRUT, left, right, top, bottom, CARDINAL[4]/32
&lt;br&gt;-]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;-	&amp;lt;para&amp;gt;
&lt;br&gt;-This property is equivalent to a _NET_WM_STRUT_PARTIAL property where all start
&lt;br&gt;-values are 0 and all end values are the height or width of the logical screen.
&lt;br&gt;-_NET_WM_STRUT_PARTIAL was introduced later than _NET_WM_STRUT, however, so
&lt;br&gt;-clients MAY set this property in addition to _NET_WM_STRUT_PARTIAL to ensure
&lt;br&gt;-backward compatibility with Window Managers supporting older versions of the
&lt;br&gt;-Specification.
&lt;br&gt;-	&amp;lt;/para&amp;gt;
&lt;br&gt;-&amp;lt;/sect2&amp;gt;
&lt;br&gt;-&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_STRUT_PARTIAL&amp;lt;/title&amp;gt;
&lt;br&gt;-	&amp;lt;programlisting id=&amp;quot;NETWMSTRUTPARTIAL&amp;quot;&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;-_NET_WM_STRUT_PARTIAL, left, right, top, bottom, left_start_y, left_end_y,
&lt;br&gt;+&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_STRUT_AREAS&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting id=&amp;quot;NETWMSTRUTAREAS&amp;quot;&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;+_NET_WM_STRUT_AREAS, monitor, left, right, top, bottom, left_start_y, left_end_y,
&lt;br&gt;&amp;nbsp;right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
&lt;br&gt;-bottom_end_x,CARDINAL[12]/32
&lt;br&gt;+bottom_end_x, CARDINAL[13]/32
&lt;br&gt;&amp;nbsp;]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;-This property MUST be set by the Client if the window is to reserve space at the
&lt;br&gt;-edge of the screen. &amp;nbsp;The property contains 4 cardinals specifying the width of
&lt;br&gt;+This property MUST be set by the Client if the window is to reserve space
&lt;br&gt;+at the edge of a screen. &amp;nbsp;The property contains 1 cardinal specifying the
&lt;br&gt;+monitor on which to reserve space, with 4 cardinals specifying the width of
&lt;br&gt;&amp;nbsp;the reserved area at each border of the screen, and an additional 8 cardinals
&lt;br&gt;-specifying the beginning and end corresponding to each of the four struts. &amp;nbsp;The
&lt;br&gt;-order of the values is left, right, top, bottom, left_start_y, left_end_y,
&lt;br&gt;+specifying the beginning and end corresponding to each of the four struts.
&lt;br&gt;+The order of the values is left, right, top, bottom, left_start_y, left_end_y,
&lt;br&gt;&amp;nbsp;right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
&lt;br&gt;-bottom_end_x. All coordinates are root window coordinates. The client MAY change
&lt;br&gt;+bottom_end_x. The monitor is specified as an index from 0 into the list
&lt;br&gt;+of monitors given by the Xinerama extension, or may be 0xFFFFFFFF to
&lt;br&gt;+specify that the strut is to be placed along the edge of the root window
&lt;br&gt;+(the combination of all monitors).
&lt;br&gt;+All coordinates are relative to edge of the physical monitor on which space
&lt;br&gt;+is being requested (not relative to the values in _NET_WORKAREAS).
&lt;br&gt;+The client MAY change
&lt;br&gt;&amp;nbsp;this property at any time, therefore the Window Manager MUST watch for
&lt;br&gt;&amp;nbsp;property notify events if the Window Manager uses this property to assign
&lt;br&gt;&amp;nbsp;special semantics to the window.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;-If both this property and the _NET_WM_STRUT property are set, the Window Manager
&lt;br&gt;-MUST ignore the _NET_WM_STRUT property values and use instead the values for
&lt;br&gt;-_NET_WM_STRUT_PARTIAL. &amp;nbsp;This will ensure that Clients can safely set both
&lt;br&gt;+A client MUST NOT attempt to set its strut according to other windows
&lt;br&gt;+with struts on the monitor, or according to the _NET_WORKAREAS property,
&lt;br&gt;+as these create race conditions between clients. Instead the size of the
&lt;br&gt;+reserved area MUST always be relative to the screen edge, as if the
&lt;br&gt;+client is the only window with a strut along that edge. If multiple
&lt;br&gt;+windows have overlapping struts along a screen edge, the Window Manager
&lt;br&gt;+MAY adjust the positions of the windows on screen to prevent the
&lt;br&gt;+windows from visibly overlapping by moving the windows away from the
&lt;br&gt;+reserved edge of the screen. Thus a client with a strut window MUST allow
&lt;br&gt;+for the Window Manager to place the window in a different position than
&lt;br&gt;+requested, though it can expect to be placed logically along the edge
&lt;br&gt;+requested.
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+If both this property and the _NET_WM_STRUT or _NET_WM_STRUT_PARTIAL property
&lt;br&gt;+are set, the Window Manager
&lt;br&gt;+MUST ignore the _NET_WM_STRUT and _NET_WM_STRUT_PARTIAL property values and use
&lt;br&gt;+instead the values for
&lt;br&gt;+_NET_WM_STRUT_AREAS. &amp;nbsp;This will ensure that Clients can safely set both
&lt;br&gt;&amp;nbsp;properties without giving up the improved semantics of the new property.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;&amp;nbsp;The purpose of struts is to reserve space at the borders of the
&lt;br&gt;&amp;nbsp;desktop. &amp;nbsp;This is very useful for a docking area, a taskbar or a panel,
&lt;br&gt;-for instance. The Window Manager should take this reserved area into
&lt;br&gt;-account when constraining window positions - maximized windows, for
&lt;br&gt;+for instance. The Window Manager SHOULD take this reserved area into
&lt;br&gt;+account when determining the desktop geometry in _NET_WORKAREAS,
&lt;br&gt;+and when constraining window positions - maximized windows, for
&lt;br&gt;&amp;nbsp;example, should not cover that area.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt; 
&lt;br&gt;@@ -1389,13 +1447,13 @@ screen, 50 pixels tall, and occupying the space from 200-600 pixels
&lt;br&gt;&amp;nbsp;from the left of the screen edge would set a bottom strut of 50, and
&lt;br&gt;&amp;nbsp;set bottom_start_x to 200 and bottom_end_x to 600. &amp;nbsp;Another example is
&lt;br&gt;&amp;nbsp;a panel on a screen using the Xinerama extension. &amp;nbsp;Assume that the set
&lt;br&gt;-up uses two monitors, one running at 1280x1024 and the other to the
&lt;br&gt;-right running at 1024x768, with the top edge of the two physical
&lt;br&gt;-displays aligned. &amp;nbsp;If the panel wants to fill the entire bottom edge
&lt;br&gt;+up uses two monitors, the first one running at 1280x1024 and a second
&lt;br&gt;+one to the right running at 1024x768.
&lt;br&gt;+If the panel wants to fill the entire bottom edge
&lt;br&gt;&amp;nbsp;of the smaller display with a panel 50 pixels tall, it should set a
&lt;br&gt;-bottom strut of 306, with bottom_start_x of 1280, and bottom_end_x of
&lt;br&gt;-2303. &amp;nbsp;Note that the strut is relative to the screen edge, and not the
&lt;br&gt;-edge of the xinerama monitor.
&lt;br&gt;+bottom strut of 50 on monitor 1, with bottom_start_x of 0, and bottom_end_x of
&lt;br&gt;+768. &amp;nbsp;Note that the strut is relative to the edge of the xinerama monitor on
&lt;br&gt;+which it is being placed.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;	&amp;lt;para&amp;gt;
&lt;br&gt;&amp;nbsp;Rationale: A simple &amp;quot;do not cover&amp;quot; hint is not enough for dealing with e.g.
&lt;br&gt;@@ -1407,6 +1465,38 @@ A &amp;quot;corner&amp;quot; panel that does not extend for the full length of a screen border
&lt;br&gt;&amp;nbsp;SHOULD only set one strut.
&lt;br&gt;&amp;nbsp;	&amp;lt;/para&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;/sect2&amp;gt;
&lt;br&gt;+&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_STRUT&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting id=&amp;quot;NETWMSTRUT&amp;quot;&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;+_NET_WM_STRUT, left, right, top, bottom, CARDINAL[4]/32
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This property is equivalent to a _NET_WM_STRUT_AREAS property where all start
&lt;br&gt;+values are 0, all end values are the height or width of the logical screen,
&lt;br&gt;+and the monitor is the first monitor.
&lt;br&gt;+_NET_WM_STRUT_AREAS was introduced later than _NET_WM_STRUT, however, so
&lt;br&gt;+clients MAY set this property in addition to _NET_WM_STRUT_AREAS when a Window
&lt;br&gt;+Manager advertises support for it, but not for _NET_WM_STRUT_AREAS, to ensure
&lt;br&gt;+backward compatibility with Window Managers supporting older versions of the
&lt;br&gt;+Specification.
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;+&amp;lt;/sect2&amp;gt;
&lt;br&gt;+&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_STRUT_PARTIAL&amp;lt;/title&amp;gt;
&lt;br&gt;+	&amp;lt;programlisting id=&amp;quot;NETWMSTRUTPARTIAL&amp;quot;&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;+_NET_WM_STRUT_PARTIAL, left, right, top, bottom, left_start_y, left_end_y,
&lt;br&gt;+right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
&lt;br&gt;+bottom_end_x,CARDINAL[12]/32
&lt;br&gt;+]]&amp;gt;&amp;lt;/programlisting&amp;gt;
&lt;br&gt;+	&amp;lt;para&amp;gt;
&lt;br&gt;+This property is equivalent to a _NET_WM_STRUT_AREAS property with the same
&lt;br&gt;+start and end values, for the first monitor reported by the Xinerama
&lt;br&gt;+extension.
&lt;br&gt;+_NET_WM_STRUT_AREAS was introduced later than _NET_WM_STRUT_PARTIAL, however, so
&lt;br&gt;+clients MAY set this property in addition to _NET_WM_STRUT_AREAS when a Window
&lt;br&gt;+Manager advertises support for it, but not for _NET_WM_STRUT_AREAS, to ensure
&lt;br&gt;+backward compatibility with Window Managers supporting older versions of the
&lt;br&gt;+Specification.
&lt;br&gt;+	&amp;lt;/para&amp;gt;
&lt;br&gt;+&amp;lt;/sect2&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;sect2&amp;gt;&amp;lt;title&amp;gt;_NET_WM_ICON_GEOMETRY&amp;lt;/title&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;lt;programlisting&amp;gt;&amp;lt;![CDATA[
&lt;br&gt;&amp;nbsp;_NET_WM_ICON_GEOMETRY, x, y, width, height, CARDINAL[4]/32
&lt;br&gt;@@ -2245,6 +2335,14 @@ OR OTHER DEALINGS IN THE SOFTWARE.
&lt;br&gt;&amp;nbsp; 		&amp;lt;title&amp;gt;Changes since 1.3&amp;lt;/title&amp;gt;
&lt;br&gt;&amp;nbsp; 		&amp;lt;itemizedlist&amp;gt;
&lt;br&gt;&amp;nbsp; 			&amp;lt;listitem&amp;gt;&amp;lt;para&amp;gt;
&lt;br&gt;+Added _NET_WM_STRUT_AREAS, deprecating _NET_WM_STRUT_PARTIAL and _NET_WM_STRUT,
&lt;br&gt;+to improve support for applications in multi-monitor environments.
&lt;br&gt;+			&amp;lt;/para&amp;gt;&amp;lt;/listitem&amp;gt;
&lt;br&gt;+ 			&amp;lt;listitem&amp;gt;&amp;lt;para&amp;gt;
&lt;br&gt;+Added _NET_WM_WORKAREAS, deprecating _NET_WM_WORKAREA, to improve support for
&lt;br&gt;+applications in multi-monitor environments.
&lt;br&gt;+			&amp;lt;/para&amp;gt;&amp;lt;/listitem&amp;gt;
&lt;br&gt;+ 			&amp;lt;listitem&amp;gt;&amp;lt;para&amp;gt;
&lt;br&gt;&amp;nbsp;Added _NET_WM_MOVERESIZE_CANCEL.
&lt;br&gt;&amp;nbsp;			&amp;lt;/para&amp;gt;&amp;lt;/listitem&amp;gt;
&lt;br&gt;&amp;nbsp;			&amp;lt;listitem&amp;gt;&amp;lt;para&amp;gt;
&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26458677&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/struts%2C-workareas-and-xinerama-tp11089888p26458677.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26449487</id>
	<title>Re: struts, workareas and xinerama</title>
	<published>2009-11-20T12:02:11Z</published>
	<updated>2009-11-20T12:02:11Z</updated>
	<author>
		<name>Tomáš Janoušek</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;On Thu, Jan 24, 2008 at 07:19:10PM +0100, Lubos Lunak wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wednesday 13 of June 2007, Dana Jansens wrote:
&lt;br&gt;&amp;gt; &amp;gt; Secondly, I am in need of some clarification in terms of struts with
&lt;br&gt;&amp;gt; &amp;gt; Xinerama. In the above example, say an application set a strut on the
&lt;br&gt;&amp;gt; &amp;gt; &amp;quot;right side&amp;quot; with a length of the 1st monitor. &amp;nbsp;Where exactly does
&lt;br&gt;&amp;gt; &amp;gt; this strut reside? It could reside entirely on the first monitor, it
&lt;br&gt;&amp;gt; &amp;gt; could reside on the second monitor (and the nowhereland above it) or
&lt;br&gt;&amp;gt; &amp;gt; it could be split between the two monitors.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I expect there is no answer to this question, which is frustrating
&lt;br&gt;&amp;gt; &amp;gt; because this is a real-life setup that one of my users has talked
&lt;br&gt;&amp;gt; &amp;gt; about recently. &amp;nbsp;Perhaps _NET_WM_STRUT_PARTIAL is just not enough, and
&lt;br&gt;&amp;gt; &amp;gt; needs to be able to specify the monitor as well as start/length.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;Correct. The strut hints talk about desktop (root window) edges, so they 
&lt;br&gt;&amp;gt; don't support reserved areas &amp;quot;inside&amp;quot;. That basically matches _NET_WORKAREA, 
&lt;br&gt;&amp;gt; so if you want to extend one, you probably want to do the same with the other 
&lt;br&gt;&amp;gt; one.
&lt;/div&gt;&lt;br&gt;I encountered this issue as well and I got an idea for a simple workaround.
&lt;br&gt;Imagine a screen layout like this:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; 11111111
&lt;br&gt;&amp;nbsp; &amp;nbsp; 11111111
&lt;br&gt;&amp;nbsp; &amp;nbsp; 11111111
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;222222 &amp;nbsp; &amp;nbsp;&amp;lt;--- strut here
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;222222
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;222222
&lt;br&gt;&lt;br&gt;We want to place a panel at the top of screen 2. A naive panel application may
&lt;br&gt;set a partial strut where top = top coordinate of screen 2 + height of panel.
&lt;br&gt;This is wrong, as it indicates that the entire screen 1* is covered, *but* the
&lt;br&gt;interpretation may as well be different. If we agree that struts covering an
&lt;br&gt;entire xinerama screen are nonsense, we may interpret such struts as not
&lt;br&gt;covering those screens at all, just those that they don't cover entirely. This
&lt;br&gt;way _NET_WM_STRUT_PARTIAL can be used for struts covering any edge of any
&lt;br&gt;Xinerama screen.
&lt;br&gt;&lt;br&gt;* I know, not really entire screen. Just a horizontal strut whose height is
&lt;br&gt;&amp;nbsp; greater than the height of screen 1. Please read &amp;quot;entire&amp;quot; as &amp;quot;entire in
&lt;br&gt;&amp;nbsp; their primary dimension&amp;quot;.
&lt;br&gt;&lt;br&gt;This naive way of setting _NET_WM_STRUT_PARTIAL is used in xmobar and I have
&lt;br&gt;implemented this semantics for xmonad:
&lt;br&gt;&lt;a href=&quot;http://www.haskell.org/pipermail/xmonad/2009-November/009148.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.haskell.org/pipermail/xmonad/2009-November/009148.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;I can't think of any use for struts that span multiple screens in their primary
&lt;br&gt;dimension (height for horiz. struts, width for vert. struts), personally.
&lt;br&gt;If wm-spec is extended in the way Dana and Lubos said (which didn't happen yet
&lt;br&gt;even though it's been almost 2 years already), I'll be happy to implement it,
&lt;br&gt;but this &amp;quot;hack&amp;quot; seemed easier and compatible with what was in the wild.
&lt;br&gt;&lt;br&gt;What's your opinion?
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;-- 
&lt;br&gt;Tomáš Janoušek, a.k.a. Liskni_si, &lt;a href=&quot;http://work.lisk.in/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://work.lisk.in/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26449487&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/struts%2C-workareas-and-xinerama-tp11089888p26449487.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26424685</id>
	<title>session management and save_type in save yourself message</title>
	<published>2009-11-19T03:31:57Z</published>
	<updated>2009-11-19T03:31:57Z</updated>
	<author>
		<name>Iban HATCHONDO</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I've been reading some old threads such as &lt;a href=&quot;https://listman.redhat.com/pipermail/xdg-list/2002-July/000615.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://listman.redhat.com/pipermail/xdg-list/2002-July/000615.html&lt;/a&gt;&amp;nbsp;but I still don't understand why I receive some save yourself message with a save_style being 0xFF.
&lt;br&gt;When I connect to the session manager using the SESSION_MANAGER env variable, I got a first save yourself message, to which I answer with a save yourself done, to which the SM answers with a save complete. message followed by a new save yourself message, but with 0xFF as save type. 
&lt;br&gt;Does anyone know what that save_type is supposed to mean ? And what is expected as an answer ?
&lt;br&gt;&lt;br&gt;Note that all those extra messages disappear when I use the value of DESKTOP_AUTOSTART_ID env variable during my connection.
&lt;br&gt;&lt;br&gt;I have the feeling this is not the proper mailing list, so do not hesitate to re-route me to a more appropriated list.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Iban.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26424685&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/session-management-and-save_type-in-save-yourself-message-tp26424685p26424685.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26240646</id>
	<title>Re: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint</title>
	<published>2009-11-06T16:12:18Z</published>
	<updated>2009-11-06T16:12:18Z</updated>
	<author>
		<name>Bugzilla from vR@movingparts.net</name>
	</author>
	<content type="html">Hey Giles,&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Fri, Nov 6, 2009 at 1:49 AM, Giles Atkinson &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26240646&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Giles.Atkinson@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;
That makes sense to me, but also prompts me to make an additional point about this property:  why is not specified as a conventional window hint, as well a client message to request a change?&lt;br&gt;
&lt;br&gt;
The only way I was able to get this to work with Metacity was to map the window, pause a little with XSync() and then follow up with the client message.  That does work fine, but means there is a race that could cause a flicker as the window is first mapped on the WM&amp;#39;s chosen default monitor and then moved.  Specifying it in the same way as _NET_WM_STATE, as both an initial property before initial (or first post-withdrawal) mapping, and a client message to change, would fix that and seems more consistent and logical.&lt;br&gt;
&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I don&amp;#39;t think I can answer your question. I&amp;#39;m guessing the design discussion that took place 2 years ago on this list (&lt;a href=&quot;http://www.mail-archive.com/wm-spec-list@gnome.org/msg00594.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mail-archive.com/wm-spec-list@.../msg00594.html&lt;/a&gt; and friends) hashed this out. I know it went through a couple of revisions before this hint arrived in its current form, and I wasn&amp;#39;t part of those initial discussions.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Hm... but as to your situation... it sounds like you&amp;#39;re trying to create a window that initially spans multiple monitors? Did you try setting _NET_WM_FULLSCREEN_MONITORS, then _NET_WM_STATE_FULLSCREEN before showing the X window?&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;-- &lt;br&gt; -[ Jason &amp;#39;vanRijn&amp;#39; Kasper    //  &lt;a href=&quot;http://movingparts.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://movingparts.net&lt;/a&gt; ]-&lt;br&gt; -[ KDE PIM Developer         //  &lt;a href=&quot;http://www.kde.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.kde.org&lt;/a&gt;  ]-&lt;br&gt; -[ bash fun -&amp;gt; :(){ :|:&amp;amp;};:  //  Numbers 6:22-26 ]-&lt;br&gt;

&lt;br /&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26240646&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-to-provide-a-way-to-disable-_NET_WM_FULLSCREEN_MONITORS-hint-tp26223486p26240646.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26227644</id>
	<title>RE: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint</title>
	<published>2009-11-05T22:49:20Z</published>
	<updated>2009-11-05T22:49:20Z</updated>
	<author>
		<name>Giles Atkinson</name>
	</author>
	<content type="html">That makes sense to me, but also prompts me to make an additional point about this property: &amp;nbsp;why is not specified as a conventional window hint, as well a client message to request a change? 
&lt;br&gt;&lt;br&gt;The only way I was able to get this to work with Metacity was to map the window, pause a little with XSync() and then follow up with the client message. &amp;nbsp;That does work fine, but means there is a race that could cause a flicker as the window is first mapped on the WM's chosen default monitor and then moved. &amp;nbsp;Specifying it in the same way as _NET_WM_STATE, as both an initial property before initial (or first post-withdrawal) mapping, and a client message to change, would fix that and seems more consistent and logical.
&lt;br&gt;&lt;br&gt;Giles
&lt;br&gt;&lt;br&gt;From: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26227644&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list-bounces@...&lt;/a&gt; [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26227644&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list-bounces@...&lt;/a&gt;] On Behalf Of Jason 'vanRijn' Kasper
&lt;br&gt;Sent: 05 November 2009 22:32
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26227644&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;Subject: Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint
&lt;br&gt;&lt;br&gt;re, all.
&lt;br&gt;&lt;br&gt;The EWMH spec does not provide a way to disable or &amp;quot;turn off&amp;quot; the _NET_WM_FULLSCREEN_MONITORS hint. In other words, whatever 4 monitor indices were last used for a fullscreen window will continue to be used ad infinitum, and the only current recourse for an app that has set this hint is to keep setting it every time it wants to fullscreen, even if it's only on a single head.
&lt;br&gt;&lt;br&gt;I've done a bit of testing with 2 heads and the latest Compiz, KWin, and Metacity window managers and it looks like it's possible to at least confuse these WMs into not using previous monitor indices for _NET_WM_FULLSCREEN_MONITORS by passing a -1 (0xFFFFFFFF) for the 4 monitor indices. I think what this is really doing is providing an invalid monitor index that doesn't (and can't possibly) exist in Xinerama, so it's ending up being not used by the WMs.
&lt;br&gt;&lt;br&gt;I'd like to propose that an addition be made to the EWMH spec that makes this the official route to asking the WM to disable the _NET_WM_FULLSCREEN_MONITORS hint for a given window. It seems to follow the spirit of both the existing _NET_WM_FULLSCREEN_MONITORS section as well as _NET_WM_DESKTOP (via using 0xFFFFFFFF as an otherwise invalid and special index).
&lt;br&gt;&lt;br&gt;I'd like to provide a patch to the spec to provide a way to completely turn off and disable the _NET_WM_FULLSCREEN_MONITORS after it's been set. I will provide a patch to the EWMH XML file (is wm-spec-1.4.xml the right one?), but before I do that, I wanted to check with the group on my approach. Does this approach (passing 0xFFFFFFFF as monitor indices in the XClientMessageEvent that is sent to the root window) sound good to everyone? Or would it be preferable to use a different approach?
&lt;br&gt;&lt;br&gt;The advantage I see to doing it this way would mean that what currently works via sending an invalid monitor index would be made the official spec standard and require only minor patches to the implementing WM's to document this as opposed to using some other mechanism which would require more intrusive rework.
&lt;br&gt;&lt;br&gt;Thanks in advance, all! =:)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;-[ Jason 'vanRijn' Kasper    //  &lt;a href=&quot;http://movingparts.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://movingparts.net&lt;/a&gt;&amp;nbsp;]-
&lt;br&gt;-[ KDE PIM Developer         //  &lt;a href=&quot;http://www.kde.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.kde.org&lt;/a&gt;&amp;nbsp; ]-
&lt;br&gt;-[ bash fun -&amp;gt; :(){ :|:&amp;};:  //  Numbers 6:22-26 ]-
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26227644&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-to-provide-a-way-to-disable-_NET_WM_FULLSCREEN_MONITORS-hint-tp26223486p26227644.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26223486</id>
	<title>Need to provide a way to disable _NET_WM_FULLSCREEN_MONITORS hint</title>
	<published>2009-11-05T14:31:49Z</published>
	<updated>2009-11-05T14:31:49Z</updated>
	<author>
		<name>Bugzilla from vR@movingparts.net</name>
	</author>
	<content type="html">re, all.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The EWMH spec does not provide a way to disable or &amp;quot;turn off&amp;quot; the _NET_WM_FULLSCREEN_MONITORS hint. In other words, whatever 4 monitor indices were last used for a fullscreen window will continue to be used ad infinitum, and the only current recourse for an app that has set this hint is to keep setting it every time it wants to fullscreen, even if it&amp;#39;s only on a single head.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&amp;#39;ve done a bit of testing with 2 heads and the latest Compiz, KWin, and Metacity window managers and it looks like it&amp;#39;s possible to at least confuse these WMs into not using previous monitor indices for _NET_WM_FULLSCREEN_MONITORS by passing a -1 (0xFFFFFFFF) for the 4 monitor indices. I think what this is really doing is providing an invalid monitor index that doesn&amp;#39;t (and can&amp;#39;t possibly) exist in Xinerama, so it&amp;#39;s ending up being not used by the WMs.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&amp;#39;d like to propose that an addition be made to the EWMH spec that makes this the official route to asking the WM to disable the _NET_WM_FULLSCREEN_MONITORS hint for a given window. It seems to follow the spirit of both the existing _NET_WM_FULLSCREEN_MONITORS section as well as _NET_WM_DESKTOP (via using 0xFFFFFFFF as an otherwise invalid and special index).&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I&amp;#39;d like to provide a patch to the spec to provide a way to completely turn off and disable the _NET_WM_FULLSCREEN_MONITORS after it&amp;#39;s been set. I will provide a patch to the EWMH XML file (is wm-spec-1.4.xml the right one?), but before I do that, I wanted to check with the group on my approach. Does this approach (passing 0xFFFFFFFF as monitor indices in the XClientMessageEvent that is sent to the root window) sound good to everyone? Or would it be preferable to use a different approach?&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The advantage I see to doing it this way would mean that what currently works via sending an invalid monitor index would be made the official spec standard and require only minor patches to the implementing WM&amp;#39;s to document this as opposed to using some other mechanism which would require more intrusive rework.&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Thanks in advance, all! =:)&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt; -[ Jason &amp;#39;vanRijn&amp;#39; Kasper    //  &lt;a href=&quot;http://movingparts.net&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://movingparts.net&lt;/a&gt; ]-&lt;br&gt; -[ KDE PIM Developer         //  &lt;a href=&quot;http://www.kde.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.kde.org&lt;/a&gt;  ]-&lt;br&gt;
 -[ bash fun -&amp;gt; :(){ :|:&amp;amp;};:  //  Numbers 6:22-26 ]-&lt;br&gt;
&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26223486&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Need-to-provide-a-way-to-disable-_NET_WM_FULLSCREEN_MONITORS-hint-tp26223486p26223486.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24972209</id>
	<title>Re: Freezing updates for compositing managers</title>
	<published>2009-08-14T07:00:36Z</published>
	<updated>2009-08-14T07:00:36Z</updated>
	<author>
		<name>Gordon Williams-4</name>
	</author>
	<content type="html">Hi Owen + Denis,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Me and some of the people at Collabora have been looking at the
&lt;br&gt;feasibility of implementing some kind of freeze of updates with Gtk too,
&lt;br&gt;in order to try and reduce tearing artefacts that we are getting in
&lt;br&gt;the compositor.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I guess in order to eradicate artefacts, you really need two-way
&lt;br&gt;communication between Gtk and the window manager as you say - as even if 
&lt;br&gt;the compositor draws after a complete frame, there is no guarantee that 
&lt;br&gt;the window hasn't started rendering the next frame and damaged the contents
&lt;br&gt;of the window.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Even if there is a 'WAIT_FOR_COMPOSITOR' signalling mechanism,
&lt;br&gt;it could prove problematic to implement in Gtk when functions like 
&lt;br&gt;gdk_window_scroll are expected not to block and yet to scroll the window
&lt;br&gt;contents immediately (however perhaps this could be postponed?).
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If we don't wait in Gtk, most likely drawing operations on the
&lt;br&gt;window will be locked while the window is composited (and the compositor
&lt;br&gt;will have to wait for the current drawing operation on the window to 
&lt;br&gt;finish). At least this seems to be the case for us. With multiple 
&lt;br&gt;windows this can end up stalling the window manager quite seriously,
&lt;br&gt;as it waits for each window in turn.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; One possible solution which would allow good performance
&lt;br&gt;without blocking would be to create extra pixmaps to perform triple 
&lt;br&gt;buffering using the windowless Gtk branch.
&lt;br&gt;&lt;br&gt;It is probably too much work, but it might be worth considering, given
&lt;br&gt;the advantages?
&lt;br&gt;&lt;br&gt;It could work something like this:
&lt;br&gt;&lt;br&gt;* The window manager adds two window properties, PIXMAP_A and PIXMAP_B,
&lt;br&gt;&amp;nbsp; containing the IDs of two pixmaps.
&lt;br&gt;* Gtk detects this and writes a property, PIXMAP_WRITING (which is either
&lt;br&gt;&amp;nbsp; A,B or W(for the window). This tells the window manager where the window
&lt;br&gt;&amp;nbsp; is currently writing to.
&lt;br&gt;* After it has finished a frame, the window sets PIXMAP_READY to 
&lt;br&gt;&amp;nbsp; whatever PIXMAP_WRITING was (to signal a frame is drawn to the compositor)
&lt;br&gt;&amp;nbsp; and then chooses a new destination for PIXMAP_WRITING.
&lt;br&gt;* The window manager detects the change of PIXMAP_READY, then sets 
&lt;br&gt;&amp;nbsp; PIXMAP_READING=PIXMAP_READY and composits using this pixmap. Damage
&lt;br&gt;&amp;nbsp; events would need to be created specially when rendering to one
&lt;br&gt;&amp;nbsp; of the two pixmaps.
&lt;br&gt;* In the mean time, the next time the window finishes rendering a frame,
&lt;br&gt;&amp;nbsp; it sets PIXMAP_READY=PIXMAP_WRITING, and then chooses whichever of A,B
&lt;br&gt;&amp;nbsp; or W is not specified in PIXMAP_READY or PIXMAP_READING.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I believe this would work without any race conditions, however 
&lt;br&gt;there are definitely quite a few issues here.
&lt;br&gt;&lt;br&gt;Bad:
&lt;br&gt;* Memory usage - however there would be no need for the current double 
&lt;br&gt;&amp;nbsp; buffering in Gtk, so I suppose at least only one extra buffer is used,
&lt;br&gt;&amp;nbsp; and we do save the overhead of allocating new pixmaps each frame.
&lt;br&gt;* Because there are 3 windows to render to, Gtk's exposed area would have to
&lt;br&gt;&amp;nbsp; be the sum of the previous 2 exposed areas (or the previous two exposed
&lt;br&gt;&amp;nbsp; areas would have to be copied from PIXMAP_READY). In a lot of cases 
&lt;br&gt;&amp;nbsp; (scrolling) this would not be any worse than doing the panning operation
&lt;br&gt;&amp;nbsp; I guess, but lots of small updates in different areas could be slower.
&lt;br&gt;* Overly ambitious? I have no idea of the internals of the windowless 
&lt;br&gt;&amp;nbsp; branch. It could be relatively easy, or it could be extremely painful.
&lt;br&gt;&lt;br&gt;Good:
&lt;br&gt;* Performance would be a lot better due to the non-blocking I imagine.
&lt;br&gt;* There would be no need for double buffering in Gtk and hence no blitting of
&lt;br&gt;&amp;nbsp; the final image, and no allocation of damage-sized pixmaps for every frame
&lt;br&gt;&amp;nbsp;- which would be a decent performance boost.
&lt;br&gt;* Hopefully no flicker whatsoever
&lt;br&gt;&lt;br&gt;Any thoughts? This is probably a fair chunk of work, but I don't see many
&lt;br&gt;other ways of getting rid of tearing completely. Proper double buffering 
&lt;br&gt;(flipping buffers, not Gtk's blitting) could be possible if memory usage
&lt;br&gt;were a problem, but that might cause more problems with synchronisation?
&lt;br&gt;&lt;br&gt;- Gordon
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;-----------------------------
&lt;br&gt;&lt;br&gt;On Mon, 2009-06-29 at 10:10 +0200, Denis Dzyubenko wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Owen,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Owen Taylor wrote:
&lt;br&gt;&amp;gt; &amp;gt; Fixing this really requires application intervention - when the
&lt;br&gt;&amp;gt; &amp;gt; compositor receives the MapNotify for the window the window might
&lt;br&gt;&amp;gt; &amp;gt; have drawn yet, or might not, and there's no way that the
&lt;br&gt;&amp;gt; &amp;gt; compositor can know.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; This is actually a symptom of a more general situation - an
&lt;br&gt;&amp;gt; &amp;gt; application wants to make multiple X requests (here a map and
&lt;br&gt;&amp;gt; &amp;gt; then the redraw) and not have the compositor draw until it is done.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Thinking of it that way - that gives a pretty straightforward
&lt;br&gt;&amp;gt; &amp;gt; solution - the app can set a property that says &amp;quot;don't update me&amp;quot; -
&lt;br&gt;&amp;gt; &amp;gt; say _NET_WM_FREEZE_UPDATES - and then remove it when it is ready
&lt;br&gt;&amp;gt; &amp;gt; to be painted again.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Sounds like an excellent idea, however it also sounds similar to 
&lt;br&gt;&amp;gt; something that the wm-spec already have - can we use the existing 
&lt;br&gt;&amp;gt; _NET_WM_SYNC_REQUEST protocol for that? Since compositing manager might 
&lt;br&gt;&amp;gt; already support it, it could be pretty straightforward to implement the 
&lt;br&gt;&amp;gt; same protocol for the case when a client window is initially mapped. For 
&lt;br&gt;&amp;gt; example, when the compositor receives the MapNotify, it might send the 
&lt;br&gt;&amp;gt; _NET_WM_SYNC_REQUEST client message and delay showing the window until 
&lt;br&gt;&amp;gt; the client responds by setting a _NET_WM_SYNC_REQUEST_COUNTER.
&lt;/div&gt;&lt;br&gt;I was originally going to respond and say &amp;quot;it sounds related, but it
&lt;br&gt;isn't related.&amp;quot;
&lt;br&gt;&lt;br&gt;But then I had an idea. You can't really use _NET_WM_SYNC_REQUEST
&lt;br&gt;unmodified - it's inherently initiated from the window manager and not
&lt;br&gt;from the client. And this needs to be initiated from the client. (*)
&lt;br&gt;&lt;br&gt;But what if we turned _NET_WM_SYNC_REQUEST_COUNTER into a more
&lt;br&gt;general frame counter. With the following handling:
&lt;br&gt;&lt;br&gt;&amp;nbsp;- When the client starts drawing a frame, it increments the counter to
&lt;br&gt;&amp;nbsp; &amp;nbsp;an odd value to freeze updates.
&lt;br&gt;&amp;nbsp;- When the client finishes drawing, it increments the counter to an
&lt;br&gt;&amp;nbsp; &amp;nbsp;even value to thaw updates.
&lt;br&gt;&amp;nbsp;- When the window manager wants to do a sync, it picks an even value
&lt;br&gt;&amp;nbsp; &amp;nbsp;at least a 100 [arbitrary] values ahead of the last value it
&lt;br&gt;&amp;nbsp; &amp;nbsp;received from the client and sends _NET_WM_SYNC_REQUEST to the
&lt;br&gt;&amp;nbsp; &amp;nbsp;client with that value. The client then uses that value on the
&lt;br&gt;&amp;nbsp; &amp;nbsp;frame completion after processing the resize.
&lt;br&gt;&lt;br&gt;Advantages of this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It has the same race-condition-free-startup and no-round-trip on
&lt;br&gt;&amp;nbsp; &amp;nbsp;updates as my proposal.
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It integrates with the sync request system in an aesthetically
&lt;br&gt;&amp;nbsp; &amp;nbsp;pleasing fashion.
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It has a very useful extension:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; After redrawing a frame, the window manager sends a
&lt;br&gt;&amp;nbsp; &amp;nbsp; _NET_WM_FRAME_REDRAWN client message to all clients updating 
&lt;br&gt;&amp;nbsp; &amp;nbsp; the frame counter since the last redraw. The message contains
&lt;br&gt;&amp;nbsp; &amp;nbsp; the frame value (and maybe some timing information.)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Voila: properly throttled application updates in a composited
&lt;br&gt;&amp;nbsp; &amp;nbsp;environment.
&lt;br&gt;&lt;br&gt;Disadvantages of this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;- Compatibility is tricky; if the window manager is expecting the
&lt;br&gt;&amp;nbsp; &amp;nbsp;old _NET_WM_SYNC_REQUEST_COUNTER behavior, spontaneous client
&lt;br&gt;&amp;nbsp; &amp;nbsp;updates will break the WM's use of _NET_WM_SYNC_REQUEST as far
&lt;br&gt;&amp;nbsp; &amp;nbsp;as I can tell.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Having the client adapt its behavior is tricky because:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; - Switching between compositing managers and window managers
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; in the fly.
&lt;br&gt;&amp;nbsp; &amp;nbsp; - The possibility of a standalone compositor that wants the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; frame counter with an old window manager that expects the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; old sync counter behavior.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;So, I don't really see how to avoid having the application expose
&lt;br&gt;&amp;nbsp; &amp;nbsp;two separate counters. [ Applications could, of course, choose to
&lt;br&gt;&amp;nbsp; &amp;nbsp;only support the new method ... we could deprecate the old way]
&lt;br&gt;&lt;br&gt;&amp;nbsp;- The Sync extension is not fun to understand and use; it's much
&lt;br&gt;&amp;nbsp; &amp;nbsp;harder to implement the above as compared to my 
&lt;br&gt;&amp;nbsp; &amp;nbsp;_NET_WM_FREEZE_UPDATES. Toolkits and window managers have however,
&lt;br&gt;&amp;nbsp; &amp;nbsp;already figured out much of this to handle _NET_WM_SYNC_REQUEST.
&lt;br&gt;&lt;br&gt;- Owen
&lt;br&gt;&lt;br&gt;(*) Even if you accept the extra WM &amp;lt;=&amp;gt; client round trip, I don't
&lt;br&gt;think it works out without toolkit modifications to have the window
&lt;br&gt;manager to spontaneously ask for a sync - it's specified currently
&lt;br&gt;to be tied to a ConfigureNotify. Plus, it doesn't extend to the
&lt;br&gt;other uses cases like atomic frame updates.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24972209&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Freezing-updates-for-compositing-managers-tp24972209p24972209.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24911563</id>
	<title>Two window managers</title>
	<published>2009-08-10T21:35:38Z</published>
	<updated>2009-08-10T21:35:38Z</updated>
	<author>
		<name>Pradeep Reddy-4</name>
	</author>
	<content type="html">Hi,&lt;br&gt;&lt;br&gt;I have a set up with dual monitors running with separate X-Screen option in Nvidia server settings. I dont really bother whether it is twinview or seperate X-Screen.&lt;br&gt;I would like to run two different window mangers or two separate instances of window managers on each. I am using Ubuntu Jaunty and gdm to login (load X).&lt;br&gt;
&lt;br&gt;kindly give me some hacks or key ideas how do i procedd with. I have googled and got no fruitful information in it.&lt;br&gt;&lt;br&gt;Any help will be highly appriciated,&lt;br&gt;&lt;br&gt;Thanks in advance,&lt;br&gt;Pradeep&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24911563&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Two-window-managers-tp24911563p24911563.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24537021</id>
	<title>Re: Freezing updates for compositing managers</title>
	<published>2009-07-17T08:47:27Z</published>
	<updated>2009-07-17T08:47:27Z</updated>
	<author>
		<name>Denis Dzyubenko-2</name>
	</author>
	<content type="html">Hi Owen,
&lt;br&gt;&lt;br&gt;Sorry for the late reply. Now when things settled up and I thought a bit 
&lt;br&gt;about it your last solution sounds almost perfect.
&lt;br&gt;&lt;br&gt;Owen Taylor wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; But what if we turned _NET_WM_SYNC_REQUEST_COUNTER into a more
&lt;br&gt;&amp;gt; general frame counter. With the following handling:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;- When the client starts drawing a frame, it increments the counter to
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;an odd value to freeze updates.
&lt;br&gt;&amp;gt; &amp;nbsp;- When the client finishes drawing, it increments the counter to an
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;even value to thaw updates.
&lt;br&gt;&amp;gt; &amp;nbsp;- When the window manager wants to do a sync, it picks an even value
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;at least a 100 [arbitrary] values ahead of the last value it
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;received from the client and sends _NET_WM_SYNC_REQUEST to the
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;client with that value. The client then uses that value on the
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;frame completion after processing the resize.
&lt;/div&gt;&lt;br&gt;In your email you mentioned a possible need for the second counter - so 
&lt;br&gt;what if we extend the NET_WM_SYNC_REQUEST specification to include a 
&lt;br&gt;second counter, so that the NET_WM_SYNC_REQUEST_COUNTER property will 
&lt;br&gt;contain two counters.
&lt;br&gt;&lt;br&gt;* The first counter should be set by the client as a response to the 
&lt;br&gt;_NET_WM_SYNC_REQUEST client message (all according to the current 
&lt;br&gt;specification).
&lt;br&gt;* The second counter is set by the client when it wants to freeze 
&lt;br&gt;updates and its value can be arbitrary (i.e. doesn't depend on the 
&lt;br&gt;ConfigureNotify/ClientMessage pair).
&lt;br&gt;&lt;br&gt;This way we maintain backward compatibility - if the 
&lt;br&gt;windowmanager/compositor doesn't know about the second counter, they'll 
&lt;br&gt;just ignore it and get only the first counter with a 
&lt;br&gt;XGetWindowProperty() call.
&lt;br&gt;&lt;br&gt;It should also be completely safe if the client doesn't support having 
&lt;br&gt;two counters, but the window manager does - the GetWindowProperty() will 
&lt;br&gt;just return the first item and the window manager can easily check how 
&lt;br&gt;many counter are actually there.
&lt;br&gt;&lt;br&gt;&amp;gt; Advantages of this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;- It has the same race-condition-free-startup and no-round-trip on
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;updates as my proposal.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;- It integrates with the sync request system in an aesthetically
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;pleasing fashion.
&lt;br&gt;&lt;br&gt;The same advantages apply and I can only see one possible disadvantage - 
&lt;br&gt;if the wm/compositor doesn't handle counter updates that are done not in 
&lt;br&gt;the response to the ConfigureNotify, but I'd expect window managers to 
&lt;br&gt;handle this case pretty well since there is always a possibility of 
&lt;br&gt;broken client that doesn't use the NET_WM_SYNC_REQUEST protocol properly.
&lt;br&gt;&lt;br&gt;&lt;br&gt;I've made a test implementation of this for Qt:
&lt;br&gt;&lt;a href=&quot;http://pastebin.ca/1498362?nomobile=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pastebin.ca/1498362?nomobile=1&lt;/a&gt;&lt;br&gt;(the patch is against Qt master (trunk) which has already introduced 
&lt;br&gt;support for the original _NET_WM_SYNC_REQUEST protocol).
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Denis Dzyubenko
&lt;br&gt;Software Engineer
&lt;br&gt;Nokia, Qt Software
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24537021&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Freezing-updates-for-compositing-managers-tp24247754p24537021.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24314534</id>
	<title>Re: multiple strut at same edge?</title>
	<published>2009-07-02T14:50:03Z</published>
	<updated>2009-07-02T14:50:03Z</updated>
	<author>
		<name>John S. Yates, Jr.</name>
	</author>
	<content type="html">On Wed, Jul 1, 2009 at 6:22 PM, John Yates&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24314534&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;john@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Are you saying that the KDE3 panel was/is capable of positioning
&lt;br&gt;&amp;gt;&amp;gt; itself immediately adjacent to an earlier strut that had already taken
&lt;br&gt;&amp;gt;&amp;gt; up a position at the actual screen edge?  That is the only case of
&lt;br&gt;&amp;gt;&amp;gt; interest.  Otherwise I do no understand what you believe would be
&lt;br&gt;&amp;gt;&amp;gt; broken.
&lt;br&gt;&lt;br&gt;My bad. &amp;nbsp;After posting I realized I should have specified that the
&lt;br&gt;earlier struct come from a distinct application.
&lt;br&gt;&lt;br&gt;On Thu, Jul 2, 2009 at 2:09 AM, Nathaniel Smith&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24314534&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;njs@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; A quick check confirms that with the current Gnome panel (2.26.1) you
&lt;br&gt;&amp;gt; can happily place two panels on the same edge of the screen, and they
&lt;br&gt;&amp;gt; will arrange themselves next to each other without overlapping. They
&lt;br&gt;&amp;gt; set their strut property in absolute terms (as per the current spec),
&lt;br&gt;&amp;gt; i.e. for me the first one reserves 25 pixels and then the second one
&lt;br&gt;&amp;gt; reserves 50.
&lt;br&gt;&lt;br&gt;Sure. &amp;nbsp;Once a panel implementation allows multiple struts along
&lt;br&gt;orthogonal edges it most likely already has logic to avoid corner
&lt;br&gt;overlap. &amp;nbsp;Generalizing to parallel struts is probably very little
&lt;br&gt;additional logic. &amp;nbsp;This is easy to do because it is all handled with a
&lt;br&gt;single application. &amp;nbsp;That is _radically_ less work than figuring out
&lt;br&gt;how to deal with struts from other application whose existence and
&lt;br&gt;properties are communicated only via window messaging.
&lt;br&gt;&lt;br&gt;I confirmed and extended the Gnome panels experiment. &amp;nbsp;The behavior is
&lt;br&gt;clearly that which I suggested in my earlier posting:
&lt;br&gt;- panels never overlap, whether they are parallel or orthogonal
&lt;br&gt;- panels always migrate as close to their configured edge as possible
&lt;br&gt;- when a panel closer to the edge disappears all remaining panels
&lt;br&gt;along that edge move outwards
&lt;br&gt;&lt;br&gt;There is a clear intended behavior here. Yet it break immediately when
&lt;br&gt;one introduces panels supplied by a distinct application.
&lt;br&gt;&lt;br&gt;I installed LXPanel from LXDE. &amp;nbsp;LXPanel is equally scrupulous above
&lt;br&gt;not overlapping other instances of LXPanel. &amp;nbsp;In fact once it has a
&lt;br&gt;panel at a given edge the choice of that edge becomes greyed out when
&lt;br&gt;positioning additional LXPanels.
&lt;br&gt;&lt;br&gt;Existence of a Gnome panel on the screen does not cause a similar
&lt;br&gt;reduction in choices. &amp;nbsp;When I configure LXPanel to the same edge as a
&lt;br&gt;Gnome panel they overlap entirely. &amp;nbsp;When I configure the panels to be
&lt;br&gt;orthogonal corners overlap.
&lt;br&gt;&lt;br&gt;The breakage runs in both directions. &amp;nbsp;It makes no difference whether
&lt;br&gt;I am reconfiguring a LXPanel or Gnome panel, neither is capable of
&lt;br&gt;presenting the same behavior as when it is dealing with an homogeneous
&lt;br&gt;population of struts of its own creation.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; It sounds like you are suggesting simply codifying the currently
&lt;br&gt;&amp;gt;&amp;gt; observed behavior.  If you do go that route then I would request that
&lt;br&gt;&amp;gt;&amp;gt; you also provide description of an approved algorithm by which a
&lt;br&gt;&amp;gt;&amp;gt; window can reliably set and maintain its partial strut property so as
&lt;br&gt;&amp;gt;&amp;gt; to avoid overlapping struts while always maximizing the central
&lt;br&gt;&amp;gt;&amp;gt; workspace in the face of arbitrary other struts coming and going.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I don't see any simple algorithm for this, but you are welcome to
&lt;br&gt;&amp;gt; invent one.
&lt;br&gt;&lt;br&gt;Sure... the WM is only entity with access to the global picture so let
&lt;br&gt;it take responsibility :-)
&lt;br&gt;&lt;br&gt;&amp;gt; (Or, since at least the Gnome panel is able to do
&lt;br&gt;&amp;gt; something kind of like what you want, it might contain such an
&lt;br&gt;&amp;gt; algorithm.)
&lt;br&gt;&lt;br&gt;The experiments described above prove that when it comes to
&lt;br&gt;interacting gracefully with other applications no such algorithm
&lt;br&gt;exists within Gnome panel.
&lt;br&gt;&lt;br&gt;&amp;gt; Note that overlapping struts per se are not a problem; the
&lt;br&gt;&amp;gt; strut property just tells the WM to avoid using a bit of the screen,
&lt;br&gt;&amp;gt; and if there are two windows telling the WM to avoid the same part of
&lt;br&gt;&amp;gt; the screen then the WM doesn't really care.
&lt;br&gt;&lt;br&gt;Yes, the current strut definition is problematic. &amp;nbsp;It is an
&lt;br&gt;essentially visual description of the screen. &amp;nbsp;There is a complete
&lt;br&gt;absence of any expression of intent. &amp;nbsp;In this sense the design recalls
&lt;br&gt;the critique of MOTIF hints that motivated the introduction of
&lt;br&gt;_NET_WM_WINDOW_TYPE:
&lt;br&gt;&lt;br&gt;Rationale: This hint is intended to replace the MOTIF hints. One of
&lt;br&gt;the objections to the MOTIF hints is that they are a purely visual
&lt;br&gt;description of the window decoration. By describing the function of
&lt;br&gt;the window, the Window Manager can apply consistent decoration and
&lt;br&gt;behavior to windows of the same type. Possible examples of behavior
&lt;br&gt;include keeping dock/panels on top or allowing pinnable menus /
&lt;br&gt;toolbars to only be hidden when another window has focus (NextStep
&lt;br&gt;style).
&lt;br&gt;&lt;br&gt;I think that what applications really want is to be able to decrease
&lt;br&gt;the remaining workspace in the vicinity of a screen edge and to be
&lt;br&gt;able to position a window relative to that carved out, protected
&lt;br&gt;space. &amp;nbsp;In the most common case, namely no more than a single strut
&lt;br&gt;window at each edge such a changed definition would be
&lt;br&gt;indistinguishable from today's strut handling.
&lt;br&gt;&lt;br&gt;&amp;gt; It sounds like what you really want is for the window manager to take
&lt;br&gt;&amp;gt; over the positioning of panels. The problem is that struts and panel
&lt;br&gt;&amp;gt; window position are logically independent -- consider auto-hide
&lt;br&gt;&amp;gt; panels, that may take up more or less space on the screen without
&lt;br&gt;&amp;gt; changing the logical &amp;quot;workspace&amp;quot;. (Also there's obviously a major
&lt;br&gt;&amp;gt; backwards compatibility issue with totally redoing how panels and wm's
&lt;br&gt;&amp;gt; interact, but you would need to at least solve the technical issues
&lt;br&gt;&amp;gt; before even trying to argue that breaking compatibility was worth it.)
&lt;br&gt;&lt;br&gt;This is my very first foray into the world of windowing and its
&lt;br&gt;standards. &amp;nbsp;For now I am simply striving for an acknowledgment of
&lt;br&gt;existence of problematic scenario and perhaps some consensus on what
&lt;br&gt;applications expect in the presence of heterogeneous struts.
&lt;br&gt;&lt;br&gt;My driving use case is that I want to have a single, sticky,
&lt;br&gt;strut-like emacs minibuffer adjacent to a Gnome panel, a KDE kicker or
&lt;br&gt;something similar. &amp;nbsp;You will notice that I am not dealing with a
&lt;br&gt;Desktop Environment's thinking that it can justify the simplifying
&lt;br&gt;assumption that it is the only source of struts. &amp;nbsp;My minibuffer fully
&lt;br&gt;expects other struts to exist. &amp;nbsp;It just does not have a convenient,
&lt;br&gt;reliable way of cohabitting correctly with them. &amp;nbsp;I really believe
&lt;br&gt;that to solve this problem of heterogeneous struts and to compute the
&lt;br&gt;size of my minibuffer strut I should not have to query the window
&lt;br&gt;system to identify and analyze all existing struts. &amp;nbsp;I just want to
&lt;br&gt;say here is a window, please make it this high, as wide as you can,
&lt;br&gt;position as close to the top (or bottom) as possible and do not allow
&lt;br&gt;other windows to overlap it.
&lt;br&gt;&lt;br&gt;I believe further that that description of my own intent more or less
&lt;br&gt;parallels that of nearly any application creating a strut. &amp;nbsp;Can anyone
&lt;br&gt;suggest a counter example?
&lt;br&gt;&lt;br&gt;/john
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24314534&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/multiple-strut-at-same-edge--tp24252513p24314534.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24301714</id>
	<title>Re: multiple strut at same edge?</title>
	<published>2009-07-01T23:09:07Z</published>
	<updated>2009-07-01T23:09:07Z</updated>
	<author>
		<name>Nathaniel Smith</name>
	</author>
	<content type="html">On Wed, Jul 1, 2009 at 6:22 PM, John Yates&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24301714&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;john@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Are you saying that the KDE3 panel was/is capable of positioning
&lt;br&gt;&amp;gt; itself immediately adjacent to an earlier strut that had already taken
&lt;br&gt;&amp;gt; up a position at the actual screen edge?  That is the only case of
&lt;br&gt;&amp;gt; interest.  Otherwise I do no understand what you believe would be
&lt;br&gt;&amp;gt; broken.
&lt;br&gt;&lt;br&gt;A quick check confirms that with the current Gnome panel (2.26.1) you
&lt;br&gt;can happily place two panels on the same edge of the screen, and they
&lt;br&gt;will arrange themselves next to each other without overlapping. They
&lt;br&gt;set their strut property in absolute terms (as per the current spec),
&lt;br&gt;i.e. for me the first one reserves 25 pixels and then the second one
&lt;br&gt;reserves 50.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;  On the other hand I agree that this case isn't covered very well in the spec
&lt;br&gt;&amp;gt;&amp;gt; and perhaps could use at least a clarification.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It sounds like you are suggesting simply codifying the currently
&lt;br&gt;&amp;gt; observed behavior.  If you do go that route then I would request that
&lt;br&gt;&amp;gt; you also provide description of an approved algorithm by which a
&lt;br&gt;&amp;gt; window can reliably set and maintain its partial strut property so as
&lt;br&gt;&amp;gt; to avoid overlapping struts while always maximizing the central
&lt;br&gt;&amp;gt; workspace in the face of arbitrary other struts coming and going.
&lt;br&gt;&lt;br&gt;I don't see any simple algorithm for this, but you are welcome to
&lt;br&gt;invent one. (Or, since at least the Gnome panel is able to do
&lt;br&gt;something kind of like what you want, it might contain such an
&lt;br&gt;algorithm.) Note that overlapping struts per se are not a problem; the
&lt;br&gt;strut property just tells the WM to avoid using a bit of the screen,
&lt;br&gt;and if there are two windows telling the WM to avoid the same part of
&lt;br&gt;the screen then the WM doesn't really care.
&lt;br&gt;&lt;br&gt;It sounds like what you really want is for the window manager to take
&lt;br&gt;over the positioning of panels. The problem is that struts and panel
&lt;br&gt;window position are logically independent -- consider auto-hide
&lt;br&gt;panels, that may take up more or less space on the screen without
&lt;br&gt;changing the logical &amp;quot;workspace&amp;quot;. (Also there's obviously a major
&lt;br&gt;backwards compatibility issue with totally redoing how panels and wm's
&lt;br&gt;interact, but you would need to at least solve the technical issues
&lt;br&gt;before even trying to argue that breaking compatibility was worth it.)
&lt;br&gt;&lt;br&gt;-- Nathaniel
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24301714&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/multiple-strut-at-same-edge--tp24252513p24301714.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24299603</id>
	<title>Re: multiple strut at same edge?</title>
	<published>2009-07-01T18:22:47Z</published>
	<updated>2009-07-01T18:22:47Z</updated>
	<author>
		<name>John S. Yates, Jr.</name>
	</author>
	<content type="html">On Wed, Jul 1, 2009 at 9:56 AM, Lubos Lunak&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24299603&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;l.lunak@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;  The spec says &amp;quot;The property contains 4 cardinals specifying the width of the
&lt;br&gt;&amp;gt; reserved area at each border of the screen&amp;quot;. This does not explicitly say it,
&lt;br&gt;&amp;gt; but I read &amp;quot;reserved area at border&amp;quot; as meaning the struct needs to be
&lt;br&gt;&amp;gt; absolute. And that is also how the KDE3 panel used it and it worked. So
&lt;br&gt;&amp;gt; changing this could mean breaking backwards compatibility.
&lt;br&gt;&lt;br&gt;Are you saying that the KDE3 panel was/is capable of positioning
&lt;br&gt;itself immediately adjacent to an earlier strut that had already taken
&lt;br&gt;up a position at the actual screen edge? &amp;nbsp;That is the only case of
&lt;br&gt;interest. &amp;nbsp;Otherwise I do no understand what you believe would be
&lt;br&gt;broken.
&lt;br&gt;&lt;br&gt;&amp;gt;  On the other hand I agree that this case isn't covered very well in the spec
&lt;br&gt;&amp;gt; and perhaps could use at least a clarification.
&lt;br&gt;&lt;br&gt;It sounds like you are suggesting simply codifying the currently
&lt;br&gt;observed behavior. &amp;nbsp;If you do go that route then I would request that
&lt;br&gt;you also provide description of an approved algorithm by which a
&lt;br&gt;window can reliably set and maintain its partial strut property so as
&lt;br&gt;to avoid overlapping struts while always maximizing the central
&lt;br&gt;workspace in the face of arbitrary other struts coming and going.
&lt;br&gt;&lt;br&gt;/john
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24299603&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/multiple-strut-at-same-edge--tp24252513p24299603.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24290334</id>
	<title>Re: Freezing updates for compositing managers</title>
	<published>2009-07-01T07:01:49Z</published>
	<updated>2009-07-01T07:01:49Z</updated>
	<author>
		<name>Lubos Lunak</name>
	</author>
	<content type="html">On Monday 29 of June 2009, Soeren Sandmann wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Owen Taylor &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290334&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;otaylor@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; &amp;gt; Main question for me is whether this belongs in the wm-spec and
&lt;br&gt;&amp;gt; &amp;gt; should be called _NET_WM_* ... it's clearly compositing-manager
&lt;br&gt;&amp;gt; &amp;gt; specific not window manager-specific, but there's not really
&lt;br&gt;&amp;gt; &amp;gt; (as far as know) a good alternate location.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There is already some compositing manager specific text in the draft
&lt;br&gt;&amp;gt; spec:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552725&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552725&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; That is still a draft though, so maybe it's time for someone to look
&lt;br&gt;&amp;gt; at making a new release.
&lt;/div&gt;&lt;br&gt;&amp;nbsp;I think the prevailing opinion last time this was discussed [*] was that 
&lt;br&gt;compositing stuff should be in a separate spec. No actual action has taken 
&lt;br&gt;place though.
&lt;br&gt;&lt;br&gt;[*] &lt;a href=&quot;http://mail.gnome.org/archives/wm-spec-list/2008-January/msg00014.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/archives/wm-spec-list/2008-January/msg00014.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Lubos Lunak
&lt;br&gt;KDE developer
&lt;br&gt;--------------------------------------------------------------
&lt;br&gt;SUSE LINUX, s.r.o. &amp;nbsp; e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290334&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;l.lunak@...&lt;/a&gt; , &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290334&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;l.lunak@...&lt;/a&gt;
&lt;br&gt;Lihovarska 1060/12 &amp;nbsp; tel: +420 284 084 672
&lt;br&gt;190 00 Prague 9 &amp;nbsp; &amp;nbsp; &amp;nbsp;fax: +420 284 028 951
&lt;br&gt;Czech Republic &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.suse.cz&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.suse.cz&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290334&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Freezing-updates-for-compositing-managers-tp24247754p24290334.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24290239</id>
	<title>Re: multiple strut at same edge?</title>
	<published>2009-07-01T06:56:27Z</published>
	<updated>2009-07-01T06:56:27Z</updated>
	<author>
		<name>Lubos Lunak</name>
	</author>
	<content type="html">On Monday 29 of June 2009, John Yates wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I am attempting to create a permanent Emacs minibuffer near the top of
&lt;br&gt;&amp;gt; my screen. &amp;nbsp;In many distributions this is also the location of a top
&lt;br&gt;&amp;gt; Gnome panel with a strut property. My understanding is that for my
&lt;br&gt;&amp;gt; minibuffer never to be obscured it too needs to be a strut.
&lt;br&gt;&amp;gt; Unfortunately I have not found any specification of how a window
&lt;br&gt;&amp;gt; manager should behave when multiple struts are specified requesting
&lt;br&gt;&amp;gt; the same edge.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Empirically I have found that Metacity interprets all struts relative
&lt;br&gt;&amp;gt; to the actual screen edge (so effectively overlapping) but then lays
&lt;br&gt;&amp;gt; out the strut windows without overlap.
&lt;/div&gt;&lt;br&gt;&amp;nbsp;Are you sure it is Metacity who places the windows? I think it's usually the 
&lt;br&gt;panel apps themselves who do the placement.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Without care the net effect is 
&lt;br&gt;&amp;gt; a window in the desire position but without proper strut protection.
&lt;br&gt;&amp;gt; Is this intended behavior or has my use case simply never been
&lt;br&gt;&amp;gt; considered?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This behavior requires an application to enumerate all struts along
&lt;br&gt;&amp;gt; the desired edge and to sum their window geometries. &amp;nbsp;Unless all strut
&lt;br&gt;&amp;gt; lifetimes are properly nested an application must also reevaluate this
&lt;br&gt;&amp;gt; computation every time a potential strut window disappears or empty
&lt;br&gt;&amp;gt; strut space may be left on &amp;nbsp;screen. &amp;nbsp;This seems complex, fragile and
&lt;br&gt;&amp;gt; more properly to be the responsibility of the window manager.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thus it seems to me that struts should be specified to be additive.
&lt;br&gt;&amp;gt; Any comments?
&lt;/div&gt;&lt;br&gt;&amp;nbsp;The spec says &amp;quot;The property contains 4 cardinals specifying the width of the 
&lt;br&gt;reserved area at each border of the screen&amp;quot;. This does not explicitly say it, 
&lt;br&gt;but I read &amp;quot;reserved area at border&amp;quot; as meaning the struct needs to be 
&lt;br&gt;absolute. And that is also how the KDE3 panel used it and it worked. So 
&lt;br&gt;changing this could mean breaking backwards compatibility.
&lt;br&gt;&lt;br&gt;&amp;nbsp;On the other hand I agree that this case isn't covered very well in the spec 
&lt;br&gt;and perhaps could use at least a clarification.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Lubos Lunak
&lt;br&gt;KDE developer
&lt;br&gt;--------------------------------------------------------------
&lt;br&gt;SUSE LINUX, s.r.o. &amp;nbsp; e-mail: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290239&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;l.lunak@...&lt;/a&gt; , &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290239&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;l.lunak@...&lt;/a&gt;
&lt;br&gt;Lihovarska 1060/12 &amp;nbsp; tel: +420 284 084 672
&lt;br&gt;190 00 Prague 9 &amp;nbsp; &amp;nbsp; &amp;nbsp;fax: +420 284 028 951
&lt;br&gt;Czech Republic &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.suse.cz&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.suse.cz&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24290239&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/multiple-strut-at-same-edge--tp24252513p24290239.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24265002</id>
	<title>Re: multiple strut at same edge?</title>
	<published>2009-06-29T19:20:48Z</published>
	<updated>2009-06-29T19:20:48Z</updated>
	<author>
		<name>John S. Yates, Jr.</name>
	</author>
	<content type="html">Following up on my earlier posting on
&lt;br&gt;&lt;a href=&quot;http://fvwm-ewmh.sourceforge.net/man.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://fvwm-ewmh.sourceforge.net/man.html&lt;/a&gt;&amp;nbsp;I have found the following
&lt;br&gt;suggestion that fvwm believes that by default struts are additive:
&lt;br&gt;&lt;br&gt;====
&lt;br&gt;&lt;br&gt;*FvwmNetHints: MyStrut left right top bottom
&lt;br&gt;&amp;nbsp; &amp;nbsp; Where left, right, top and bottom are positive or null integer
&lt;br&gt;which represent an area in pixels from the left of the screen to left,
&lt;br&gt;from the right of the screen to right, from the top of the screen to
&lt;br&gt;top and from the bottom of the screen to bottom. This area is added to
&lt;br&gt;the strut area which is computed from the compilant application
&lt;br&gt;WM_STRUT hint. The strut area is the area from which the working area
&lt;br&gt;is defined: the working area is the complement of the strut area vs
&lt;br&gt;the screen. This option is totally dynamic.
&lt;br&gt;&lt;br&gt;*FvwmNetHints: StrutOverride
&lt;br&gt;&amp;nbsp; &amp;nbsp; Where bool is either True of False. If bool is True, then
&lt;br&gt;FvwmNetHints take in account only the MyStrut FvwmNetHints
&lt;br&gt;configuration option to compute the working area. Default is False.
&lt;br&gt;This option is totally dynamic.
&lt;br&gt;&lt;br&gt;====
&lt;br&gt;&lt;br&gt;/john
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24265002&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/multiple-strut-at-same-edge--tp24252513p24265002.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24257731</id>
	<title>Re: Freezing updates for compositing managers</title>
	<published>2009-06-29T09:47:31Z</published>
	<updated>2009-06-29T09:47:31Z</updated>
	<author>
		<name>Owen Taylor</name>
	</author>
	<content type="html">On Mon, 2009-06-29 at 10:10 +0200, Denis Dzyubenko wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi Owen,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Owen Taylor wrote:
&lt;br&gt;&amp;gt; &amp;gt; Fixing this really requires application intervention - when the
&lt;br&gt;&amp;gt; &amp;gt; compositor receives the MapNotify for the window the window might
&lt;br&gt;&amp;gt; &amp;gt; have drawn yet, or might not, and there's no way that the
&lt;br&gt;&amp;gt; &amp;gt; compositor can know.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; This is actually a symptom of a more general situation - an
&lt;br&gt;&amp;gt; &amp;gt; application wants to make multiple X requests (here a map and
&lt;br&gt;&amp;gt; &amp;gt; then the redraw) and not have the compositor draw until it is done.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Thinking of it that way - that gives a pretty straightforward
&lt;br&gt;&amp;gt; &amp;gt; solution - the app can set a property that says &amp;quot;don't update me&amp;quot; -
&lt;br&gt;&amp;gt; &amp;gt; say _NET_WM_FREEZE_UPDATES - and then remove it when it is ready
&lt;br&gt;&amp;gt; &amp;gt; to be painted again.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Sounds like an excellent idea, however it also sounds similar to 
&lt;br&gt;&amp;gt; something that the wm-spec already have - can we use the existing 
&lt;br&gt;&amp;gt; _NET_WM_SYNC_REQUEST protocol for that? Since compositing manager might 
&lt;br&gt;&amp;gt; already support it, it could be pretty straightforward to implement the 
&lt;br&gt;&amp;gt; same protocol for the case when a client window is initially mapped. For 
&lt;br&gt;&amp;gt; example, when the compositor receives the MapNotify, it might send the 
&lt;br&gt;&amp;gt; _NET_WM_SYNC_REQUEST client message and delay showing the window until 
&lt;br&gt;&amp;gt; the client responds by setting a _NET_WM_SYNC_REQUEST_COUNTER.
&lt;/div&gt;&lt;br&gt;I was originally going to respond and say &amp;quot;it sounds related, but it
&lt;br&gt;isn't related.&amp;quot;
&lt;br&gt;&lt;br&gt;But then I had an idea. You can't really use _NET_WM_SYNC_REQUEST
&lt;br&gt;unmodified - it's inherently initiated from the window manager and not
&lt;br&gt;from the client. And this needs to be initiated from the client. (*)
&lt;br&gt;&lt;br&gt;But what if we turned _NET_WM_SYNC_REQUEST_COUNTER into a more
&lt;br&gt;general frame counter. With the following handling:
&lt;br&gt;&lt;br&gt;&amp;nbsp;- When the client starts drawing a frame, it increments the counter to
&lt;br&gt;&amp;nbsp; &amp;nbsp;an odd value to freeze updates.
&lt;br&gt;&amp;nbsp;- When the client finishes drawing, it increments the counter to an
&lt;br&gt;&amp;nbsp; &amp;nbsp;even value to thaw updates.
&lt;br&gt;&amp;nbsp;- When the window manager wants to do a sync, it picks an even value
&lt;br&gt;&amp;nbsp; &amp;nbsp;at least a 100 [arbitrary] values ahead of the last value it
&lt;br&gt;&amp;nbsp; &amp;nbsp;received from the client and sends _NET_WM_SYNC_REQUEST to the
&lt;br&gt;&amp;nbsp; &amp;nbsp;client with that value. The client then uses that value on the
&lt;br&gt;&amp;nbsp; &amp;nbsp;frame completion after processing the resize.
&lt;br&gt;&lt;br&gt;Advantages of this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It has the same race-condition-free-startup and no-round-trip on
&lt;br&gt;&amp;nbsp; &amp;nbsp;updates as my proposal.
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It integrates with the sync request system in an aesthetically
&lt;br&gt;&amp;nbsp; &amp;nbsp;pleasing fashion.
&lt;br&gt;&lt;br&gt;&amp;nbsp;- It has a very useful extension:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; After redrawing a frame, the window manager sends a
&lt;br&gt;&amp;nbsp; &amp;nbsp; _NET_WM_FRAME_REDRAWN client message to all clients updating 
&lt;br&gt;&amp;nbsp; &amp;nbsp; the frame counter since the last redraw. The message contains
&lt;br&gt;&amp;nbsp; &amp;nbsp; the frame value (and maybe some timing information.)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Voila: properly throttled application updates in a composited
&lt;br&gt;&amp;nbsp; &amp;nbsp;environment.
&lt;br&gt;&lt;br&gt;Disadvantages of this:
&lt;br&gt;&lt;br&gt;&amp;nbsp;- Compatibility is tricky; if the window manager is expecting the
&lt;br&gt;&amp;nbsp; &amp;nbsp;old _NET_WM_SYNC_REQUEST_COUNTER behavior, spontaneous client
&lt;br&gt;&amp;nbsp; &amp;nbsp;updates will break the WM's use of _NET_WM_SYNC_REQUEST as far
&lt;br&gt;&amp;nbsp; &amp;nbsp;as I can tell.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Having the client adapt its behavior is tricky because:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; - Switching between compositing managers and window managers
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; in the fly.
&lt;br&gt;&amp;nbsp; &amp;nbsp; - The possibility of a standalone compositor that wants the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; frame counter with an old window manager that expects the
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; old sync counter behavior.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;So, I don't really see how to avoid having the application expose
&lt;br&gt;&amp;nbsp; &amp;nbsp;two separate counters. [ Applications could, of course, choose to
&lt;br&gt;&amp;nbsp; &amp;nbsp;only support the new method ... we could deprecate the old way]
&lt;br&gt;&lt;br&gt;&amp;nbsp;- The Sync extension is not fun to understand and use; it's much
&lt;br&gt;&amp;nbsp; &amp;nbsp;harder to implement the above as compared to my 
&lt;br&gt;&amp;nbsp; &amp;nbsp;_NET_WM_FREEZE_UPDATES. Toolkits and window managers have however,
&lt;br&gt;&amp;nbsp; &amp;nbsp;already figured out much of this to handle _NET_WM_SYNC_REQUEST.
&lt;br&gt;&lt;br&gt;- Owen
&lt;br&gt;&lt;br&gt;(*) Even if you accept the extra WM &amp;lt;=&amp;gt; client round trip, I don't
&lt;br&gt;think it works out without toolkit modifications to have the window
&lt;br&gt;manager to spontaneously ask for a sync - it's specified currently
&lt;br&gt;to be tied to a ConfigureNotify. Plus, it doesn't extend to the
&lt;br&gt;other uses cases like atomic frame updates.
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24257731&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Freezing-updates-for-compositing-managers-tp24247754p24257731.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24252513</id>
	<title>multiple strut at same edge?</title>
	<published>2009-06-29T04:32:51Z</published>
	<updated>2009-06-29T04:32:51Z</updated>
	<author>
		<name>John S. Yates, Jr.</name>
	</author>
	<content type="html">I am attempting to create a permanent Emacs minibuffer near the top of
&lt;br&gt;my screen. &amp;nbsp;In many distributions this is also the location of a top
&lt;br&gt;Gnome panel with a strut property. My understanding is that for my
&lt;br&gt;minibuffer never to be obscured it too needs to be a strut.
&lt;br&gt;Unfortunately I have not found any specification of how a window
&lt;br&gt;manager should behave when multiple struts are specified requesting
&lt;br&gt;the same edge.
&lt;br&gt;&lt;br&gt;Empirically I have found that Metacity interprets all struts relative
&lt;br&gt;to the actual screen edge (so effectively overlapping) but then lays
&lt;br&gt;out the strut windows without overlap. &amp;nbsp;Without care the net effect is
&lt;br&gt;a window in the desire position but without proper strut protection.
&lt;br&gt;Is this intended behavior or has my use case simply never been
&lt;br&gt;considered?
&lt;br&gt;&lt;br&gt;This behavior requires an application to enumerate all struts along
&lt;br&gt;the desired edge and to sum their window geometries. &amp;nbsp;Unless all strut
&lt;br&gt;lifetimes are properly nested an application must also reevaluate this
&lt;br&gt;computation every time a potential strut window disappears or empty
&lt;br&gt;strut space may be left on &amp;nbsp;screen. &amp;nbsp;This seems complex, fragile and
&lt;br&gt;more properly to be the responsibility of the window manager.
&lt;br&gt;&lt;br&gt;Thus it seems to me that struts should be specified to be additive.
&lt;br&gt;Any comments?
&lt;br&gt;&lt;br&gt;/john
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24252513&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/multiple-strut-at-same-edge--tp24252513p24252513.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24252369</id>
	<title>Re: Freezing updates for compositing managers</title>
	<published>2009-06-29T04:21:30Z</published>
	<updated>2009-06-29T04:21:30Z</updated>
	<author>
		<name>Soeren Sandmann-2</name>
	</author>
	<content type="html">Owen Taylor &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24252369&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;otaylor@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; Main question for me is whether this belongs in the wm-spec and
&lt;br&gt;&amp;gt; should be called _NET_WM_* ... it's clearly compositing-manager
&lt;br&gt;&amp;gt; specific not window manager-specific, but there's not really
&lt;br&gt;&amp;gt; (as far as know) a good alternate location.
&lt;br&gt;&lt;br&gt;There is already some compositing manager specific text in the draft
&lt;br&gt;spec:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552725&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552725&lt;/a&gt;&lt;br&gt;&lt;br&gt;That is still a draft though, so maybe it's time for someone to look
&lt;br&gt;at making a new release.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Soren
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24252369&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Freezing-updates-for-compositing-managers-tp24247754p24252369.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24250034</id>
	<title>Re: Freezing updates for compositing managers</title>
	<published>2009-06-29T01:10:43Z</published>
	<updated>2009-06-29T01:10:43Z</updated>
	<author>
		<name>Denis Dzyubenko-2</name>
	</author>
	<content type="html">Hi Owen,
&lt;br&gt;&lt;br&gt;Owen Taylor wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Fixing this really requires application intervention - when the
&lt;br&gt;&amp;gt; compositor receives the MapNotify for the window the window might
&lt;br&gt;&amp;gt; have drawn yet, or might not, and there's no way that the
&lt;br&gt;&amp;gt; compositor can know.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This is actually a symptom of a more general situation - an
&lt;br&gt;&amp;gt; application wants to make multiple X requests (here a map and
&lt;br&gt;&amp;gt; then the redraw) and not have the compositor draw until it is done.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thinking of it that way - that gives a pretty straightforward
&lt;br&gt;&amp;gt; solution - the app can set a property that says &amp;quot;don't update me&amp;quot; -
&lt;br&gt;&amp;gt; say _NET_WM_FREEZE_UPDATES - and then remove it when it is ready
&lt;br&gt;&amp;gt; to be painted again.
&lt;/div&gt;&lt;br&gt;Sounds like an excellent idea, however it also sounds similar to 
&lt;br&gt;something that the wm-spec already have - can we use the existing 
&lt;br&gt;_NET_WM_SYNC_REQUEST protocol for that? Since compositing manager might 
&lt;br&gt;already support it, it could be pretty straightforward to implement the 
&lt;br&gt;same protocol for the case when a client window is initially mapped. For 
&lt;br&gt;example, when the compositor receives the MapNotify, it might send the 
&lt;br&gt;_NET_WM_SYNC_REQUEST client message and delay showing the window until 
&lt;br&gt;the client responds by setting a _NET_WM_SYNC_REQUEST_COUNTER.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Denis Dzyubenko
&lt;br&gt;Software Engineer
&lt;br&gt;Nokia, Qt Software
&lt;br&gt;_______________________________________________
&lt;br&gt;wm-spec-list mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24250034&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wm-spec-list@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mail.gnome.org/mailman/listinfo/wm-spec-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mail.gnome.org/mailman/listinfo/wm-spec-list&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Freezing-updates-for-compositing-managers-tp24247754p24250034.html" />
</entry>

</feed>
