Re: Partial width struts



It seems worthwhile to extend this to be able to handle "struts" on
internal edges of an xinerama layout.  The current specification, as
well as the modified version have no support for this.

One idea I have is that we could add another value to the list
representing the number of the xinerama to which a strut should apply,
but this seems rife with problems.

Another idea is that the window manager should figure out which xinerama
a particular strut is on based on the value of the strut, e.g. a left
strut set to 1328 on a system with 1280 pixel-wide xineramas would
indicate a left strut of 48 on the right xinerama.  I think that this
may be the solution we want.

We would probably want to leave it up to the WM to decide what exactly
the semantics should be in the case of an internal-edge panel.

Comments?

-Rob

On Sat, 2003-06-07 at 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).
> 
> Some comments:  the order of the list is different from the order
> originally proposed.  This is so that the _NET_WM_STRUT property's list
> would be the first four values of _NET_WM_STRUT_PARTIAL to make it
> easier on clients that may want to set both.  The language below is
> designed to ensure backwards compatibility with the old specification.
> 
> The metacity patch can be seen attached to this metacity bug:
> http://bugzilla.gnome.org/show_bug.cgi?id=86682
> 
> _NET_WM_STRUT:
> 
> _NET_WM_STRUT, left, right, top, bottom, CARDINAL[4]/32
> 
> This property is deprecated, and may be removed from future versions
> of this Specification.  It has been replaced with
> _NET_WM_STRUT_PARTIAL. Clients MAY set this property 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.
> 
> _NET_WM_STRUT_PARTIAL:
> 
> _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, bottom_end_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. 
> The order of the borders is left, right, top, bottom.
> The client MAY change this property at any time, therefore the Window
> Manager MUST watch out for property notify events.  
> 
> 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.
> 
> Rationale: A simple "do not cover" hint is not enough for dealing with
> e.g. auto-hide panels. 
> 
> Notes: An auto-hide panel SHOULD set the strut to be its minimum, hidden
> size. A "corner" panel that does not extend for the full length of a
> screen border SHOULD only set one strut.
> 




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