Re: Partial width struts
- From: Rob Adams <robadams ucla edu>
- To: wm-spec-list gnome org
- Subject: Re: Partial width struts
- Date: 11 Jun 2003 00:05:26 -0700
Attached is a new version of the proposed specification. I believe that
this addresses all the points made on the list so far:
1) No longer deprecates the original strut, and instead leaves it as a
shortcut for the more general property
2) Includes some important clarifications and some examples, including
clarifying the relationship of struts and non-rectangular visible screen
regions caused by disparate xinerama sizes.
Of course, any further comments or suggestions are appreciated.
On Sun, 2003-06-08 at 12:03, Sean 'Shaleh' Perry wrote:
> On Saturday 07 June 2003 14:49, Rob Adams wrote:
> > I have completed a patch for metacity that implements the following
> > proposed specification for partial width panel struts (a patch against
> > the sgml file is attached).
> 1) the spec could REALLY use an example or 3 for this. The text is not clear
> and I suspect people for whom English is a 2nd (or more) language may have
> troubles following it.
> 2)general question. Why deprecate _STRUT for _PARTIAL_STRUT? It makes sense
> to me that some apps would set one and some apps would set the other.
> Perhaps adjusting its name would help here?
> wm-spec-list mailing list
> wm-spec-list gnome org
RCS file: /freedesktop/web/content/standards/wm-spec/1.3/wm-spec.sgml,v
retrieving revision 1.2
diff -u -r1.2 wm-spec.sgml
--- wm-spec.sgml 3 Jan 2003 20:31:14 -0000 1.2
+++ wm-spec.sgml 11 Jun 2003 07:05:00 -0000
@@ -446,7 +446,11 @@
Work area SHOULD be used by desktop applications to place desktop icons appropriately.
- The Window Manager SHOULD calculate this space by taking the current page minus space occupied by dock and panel windows, as indicated by the <link linkend="NETWMSTRUT">_NET_WM_STRUT</link> property set on client windows.
+The Window Manager SHOULD calculate this space by taking the current
+page minus space occupied by dock and panel windows, as indicated by
+the <link linkend="NETWMSTRUT">_NET_WM_STRUT</link> or <link
+linkend="NETWMSTRUTPARTIAL">_NET_WM_STRUT_PARTIAL</link> property set on
@@ -1119,6 +1123,21 @@
_NET_WM_STRUT, left, right, top, bottom, CARDINAL/32
+This property is a shortcut for the use case for _NET_WM_STRUT_PARTIAL
+where all start values are 0 and all end values are height or width of
+the logical screen. Clients MAY set this property in addition to
+_NET_WM_STRUT_PARTIAL using just the first four values of the
+_NET_WM_STRUT_PARTIAL property to ensure backward compatibility with
+Window Managers supporting older versions of the Specification.
+ <programlisting id="NETWMSTRUTPARTIAL"><![CDATA[
+_NET_WM_STRUT_PARTIAL, left, right, top, bottom, left_start_y, left_end_y,
+right_start_y, right_end_y, top_start_x, top_end_x, bottom_start_x,
This property MUST be set by the Client if the window is to reserve space at
the edge of the screen. The property contains 4 cardinals specifying the
width of the reserved area at each border of the screen.
@@ -1127,11 +1146,36 @@
watch out for property notify events.
-The purpose of struts is to reserve space at the borders of the desktop. This
-is very useful for a docking area, a taskbar or a panel, for instance. The
-Window Manager should know about this reserved space in order to be able to
-preserve the space. Also maximized windows should not cover that reserved
+If both this property and the _NET_WM_STRUT property are set, the
+Window Manager MUST ignore the _NET_WM_STRUT property values and use
+instead the value for this property. This will ensure that Clients
+can safely set both properties without giving up the improved
+semantics of the new property.
+The purpose of struts is to reserve space at the borders of the
+desktop. This is very useful for a docking area, a taskbar or a
+panel, for instance. The Window Manager should know about this
+reserved space in order to be able to reserve the space. Also
+maximized windows should not cover that reserved space. The various
+start and end values tell the window manager the extent of the strut
+so that struts can have a width covering only part of the screen. All
+struts are relative to the edges of the logical screen, and not to the
+edges of any view port or Xinerama monitor.
+For example, for a panel-style Client appearing at the bottom of the
+screen, 50 pixels tall, and occupying the space from 200-600 pixels
+from the left of the screen edge would set a bottom strut of 50, and
+set bottom_start_x to 200 and bottom_end_x to 600. Another example is
+a panel occupying the entire screen area on a screen using the
+Xinerama extension. Assume that the set up uses two monitors, one
+running at 1280x1024 and the other running at 1024x768, with the top
+edge of the two physical displays aligned. If the panel wants to fill
+the entire bottom edge of the smaller display with a panel 50 pixels
+tall, it should set a bottom strut of 306, with bottom_start_x of
+1280, and bottom_end_x of 2303. Note that the strut is relative to
+the screen edge, and not the edge of the xinerama.
Rationale: A simple "do not cover" hint is not enough for dealing with e.g.
@@ -1142,7 +1186,8 @@
A "corner" panel that does not extend for the full length of a screen border
SHOULD only set one strut.
_NET_WM_ICON_GEOMETRY, x, y, width, height, CARDINAL/32
] [Thread Prev