2003-11-17 00:06:58 +00:00
|
|
|
Metacity Standards Compliance
|
|
|
|
=============================
|
|
|
|
$Id$
|
|
|
|
|
|
|
|
1) Introduction
|
|
|
|
2) EWMH Compliance
|
|
|
|
a. Root Window Properties
|
|
|
|
b. Root Window Messages
|
|
|
|
c. Application Window Properties
|
|
|
|
d. Window Manager Protocols
|
|
|
|
3) ICCCM Compliance
|
|
|
|
|
|
|
|
1) Introduction
|
|
|
|
---------------
|
|
|
|
|
|
|
|
This document details metacity compliance with the relevent standards.
|
|
|
|
The format of this document is as follows:
|
|
|
|
|
2003-11-26 18:11:57 +00:00
|
|
|
[-/+?] Hint Name/Feature Name (Version number)
|
|
|
|
Errata/Comments
|
2003-11-17 00:06:58 +00:00
|
|
|
|
|
|
|
The first character indicates the level of compliance as follows:
|
|
|
|
- none
|
|
|
|
/ partial
|
|
|
|
+ complete
|
|
|
|
? unknown
|
|
|
|
|
|
|
|
The title indicates a feature or a hint in the specification, and the
|
|
|
|
version number indicates the minimum version of the specification
|
|
|
|
supported by metacity. Later versions may be supported if no
|
|
|
|
incompatible changes have been made in the specification.
|
|
|
|
|
|
|
|
2) EWMH Compliance
|
|
|
|
------------------
|
|
|
|
|
|
|
|
The EWMH, or Extended Window Manager Hints is a freedesktop.org-
|
|
|
|
developed standard to support a number of conventions for
|
|
|
|
communication between the window manager and clients. It builds on
|
2003-11-26 18:11:57 +00:00
|
|
|
and extends the ICCCM (See Section 3). A copy of the current EWMH
|
2003-11-17 00:06:58 +00:00
|
|
|
standard is available at http://freedesktop.org/Standards/wm-spec/
|
|
|
|
|
|
|
|
a. Root Window Properties
|
|
|
|
-------------------------
|
|
|
|
|
|
|
|
+ _NET_SUPPORTED (1.3)
|
|
|
|
|
|
|
|
+ _NET_CLIENT_LIST (1.3)
|
|
|
|
|
|
|
|
+ _NET_NUMBER_OF_DESKTOPS (1.3)
|
|
|
|
|
Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
|
|
|
+ _NET_DESKTOP_GEOMETRY (1.3)
|
|
|
|
Metacity does not implement large desktops, so this is kept set to
|
|
|
|
the screen size.
|
2003-11-17 00:06:58 +00:00
|
|
|
|
Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
|
|
|
+ _NET_DESKTOP_VIEWPORT (1.3)
|
|
|
|
Metacity does not implement viewports, so this is a constant (0,0).
|
2003-11-17 00:06:58 +00:00
|
|
|
|
|
|
|
+ _NET_CURRENT_DESKTOP (1.3)
|
|
|
|
|
|
|
|
+ _NET_DESKTOP_NAMES (1.3)
|
|
|
|
|
|
|
|
+ _NET_ACTIVE_WINDOW (1.3)
|
|
|
|
|
|
|
|
+ _NET_WORKAREA (1.3)
|
|
|
|
|
|
|
|
+ _NET_SUPPORTING_WM_CHECK (1.3)
|
|
|
|
|
|
|
|
+ _NET_VIRTUAL_ROOTS (1.3)
|
|
|
|
Metacity does not read or set this property, but it does not use
|
|
|
|
virtual roots to implement virtual desktops, so it complies with the
|
|
|
|
specification.
|
|
|
|
|
|
|
|
+ _NET_DESKTOP_LAYOUT (1.3)
|
|
|
|
|
|
|
|
+ _NET_SHOWING_DESKTOP (1.3)
|
|
|
|
|
|
|
|
b. Root Window Messages
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
+ _NET_CLOSE_WINDOW (1.3)
|
|
|
|
|
Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
|
|
|
- _NET_MOVERESIZE_WINDOW (1.3)
|
|
|
|
Metacity supports this message, but the specification is unclear on
|
|
|
|
the layout of the detail value, and as such it is #if 0'd in the code
|
2003-11-17 00:06:58 +00:00
|
|
|
|
|
|
|
+ _NET_WM_MOVERESIZE (1.3)
|
|
|
|
|
Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
|
|
|
- _NET_RESTACK_WINDOW (1.3)
|
|
|
|
Metacity will raise or lower windows in response to this message,
|
|
|
|
but the sibling restack modes are not supported, and it is currently
|
|
|
|
#if 0'd in the code.
|
2004-02-01 23:26:42 +00:00
|
|
|
|
|
|
|
+ _NET_REQUEST_FRAME_EXTENTS (1.3)
|
|
|
|
|
2003-11-17 00:06:58 +00:00
|
|
|
c. Application Window Properties
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
+ _NET_WM_NAME (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_VISIBLE_NAME (1.3)
|
|
|
|
Metacity does not set this property, but metacity will never display
|
|
|
|
a name different from _NET_WM_NAME
|
|
|
|
|
|
|
|
+ _NET_WM_ICON_NAME (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_VISIBLE_ICON_NAME (1.3)
|
|
|
|
Metacity does not set this property, but metacity will never display
|
|
|
|
a name different from _NET_WM_NAME
|
|
|
|
|
|
|
|
+ _NET_WM_DESKTOP (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_WINDOW_TYPE (1.3)
|
|
|
|
|
|
|
|
/ _NET_WM_STATE (1.3)
|
Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
|
|
|
This property is read and updated according to the specification,
|
|
|
|
but see caveat below.
|
2003-11-17 00:06:58 +00:00
|
|
|
Metacity does not recognize separate vertical and horizontal
|
|
|
|
maximization states. Currently metacity will do a two-dimensional
|
|
|
|
maximization if either property is set.
|
|
|
|
See: http://bugzilla.gnome.org/show_bug.cgi?id=113601
|
|
|
|
Metacity doesn't implement viewports so _NET_WM_STATE_STICKY is
|
|
|
|
unimplemented.
|
|
|
|
|
|
|
|
+ _NET_WM_ALLOWED_ACTIONS (1.3)
|
|
|
|
Metacity keeps this hint up to date. The code is somewhat crufty
|
|
|
|
and should be rewritten, though it is functional.
|
|
|
|
See: http://bugzilla.gnome.org/show_bug.cgi?id=90420
|
|
|
|
|
|
|
|
+ _NET_WM_STRUT (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_STRUT_PARTIAL (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_ICON_GEOMETRY (1.3)
|
|
|
|
Metacity uses this property to draw minimize/restore animations
|
|
|
|
|
|
|
|
+ _NET_WM_ICON (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_PID (1.3)
|
|
|
|
|
|
|
|
+ _NET_WM_HANDLED_ICONS (1.3)
|
|
|
|
Metacity does not read or set this property. However, metacity
|
Fix some support for EWMH hints, and fix USER_TIME support to include the
2004-07-31 Rob Adams <readams@readams.net>
Fix some support for EWMH hints, and fix USER_TIME support to
include the DEMANDS_ATTENTION hint. Also includes some code for
implementing _NET_RESTACK_WINDOW and _NET_MOVERESIZE_WINDOW, but
this is disabled pending feature thaw.
* COMPLIANCE: update with new information
* src/display.c (meta_display_open): add new hints to list
* src/display.h (_MetaDisplay): Add new atoms to struct
* src/screen.c (set_supported_hint): update the list of support
hints.
(set_desktop_viewport_hint): new function sets the viewport hint
to (0,0) as required by the spec for WMs with no viewport support.
(set_desktop_geometry_hint): new function to set the desktop size
hint to the size of the display, since we don't implement large
desktop support, as required by the spec.
(meta_screen_resize): update the geometry hint on screen resize
* src/window.c (meta_window_new_with_attrs): Initialize
demands_attention state
(set_net_wm_state): Set demands_attention hint in the window state
(meta_window_show): If we don't pop up a window because of
USER_TIME, set DEMANDS_ATTENTION on the window.
(meta_window_focus): When a window receives focus, remove
DEMANDS_ATTENTION hint
(meta_window_client_message): Allow other apps to set
DEMANDS_ATTENTION on a window. Also, if the _NET_ACTIVE_WINDOW
hint includes a timestamp, use it.
(update_net_wm_state): Read DEMANDS_ATTENTION state also
* src/window.h (_MetaWindow): add wm_state_demands_attention bit.
2004-07-31 19:56:10 +00:00
|
|
|
never manages iconified windows, and so has no need to do so.
|
2003-11-17 00:06:58 +00:00
|
|
|
|
2004-06-24 21:50:30 +00:00
|
|
|
+ _NET_WM_USER_TIME (1.3)
|
|
|
|
Metacity uses this property to prevent applications from stealing
|
|
|
|
focus if supported by the toolkit.
|
2003-11-17 00:06:58 +00:00
|
|
|
|
2004-02-01 23:26:42 +00:00
|
|
|
+ _NET_FRAME_EXTENTS (1.3)
|
|
|
|
If set in response to a _NET_REQUEST_FRAME_EXTENTS message received
|
|
|
|
prior to the window being mapped, this may be an estimate. This is,
|
|
|
|
however, expressly allowed by the specification.
|
|
|
|
|
2003-11-17 00:06:58 +00:00
|
|
|
d. Window Manager Protocols
|
|
|
|
---------------------------
|
|
|
|
+ _NET_WM_PING (1.3)
|
|
|
|
|
|
|
|
3) ICCCM Compliance
|
|
|
|
-------------------
|
|
|
|
TODO
|