You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
247 lines
9.2 KiB
247 lines
9.2 KiB
W A R N I N G: |
|
-------------- |
|
This document is a work in progress and is in no way complete or accurate! |
|
Its current purpose is in aiding the KWin NetWM audit for a future KWin release. |
|
|
|
NetWM Compliance Document: |
|
========================== |
|
|
|
Listed below are all the NetWM (or EWM) hints decided upon on freedesktop.org |
|
(as of version 1.3draft, Nov 27, 2002) and KWin's current level of |
|
compliance with the spec. Some parts also involve the pager and clients which |
|
this document will cater for as well where applicable. |
|
|
|
If you modify the level of NetWM compliance (via modification of kwin/*, |
|
kdecore/netwm.* or kdecore/kwin.* etc.), or notice any new hints that |
|
were added after version 1.2, please modify this document appropriately. |
|
Properties are ordered in the table in the order they are found in the |
|
specification. To list any important notes regarding a property, just |
|
add them as follows: |
|
|
|
_NET_NUMBER_OF_DESKTOPS root window property done |
|
+----------------------------------------------------------------+ |
|
| This property SHOULD be updated by the Window Manager to | |
|
| indicate the number of virtual desktops. KWin DOES update this | |
|
| property when the pager changes the number of desktops. | |
|
+----------------------------------------------------------------+ |
|
|
|
If you have any questions regarding the specification, feel free to ask on the KWin |
|
mailing list <kwin@kde.org>, or on the Window Manager Spec list <wm-spec-list@gnome.org>. |
|
-- Karol <kszwed@kde.org> |
|
|
|
( |
|
compliance : |
|
- = none, |
|
/ = partial, |
|
+ = complete, |
|
* = KWin is compliant, but something else needs checking (e.g. Qt) |
|
? = unknown |
|
) |
|
|
|
|
|
NETWM spec compliance (whole document): |
|
version 1.2 |
|
====================== |
|
|
|
+ 1. |
|
+ 2.3. Feature not implemented. |
|
+ 2.4. Feature not implemented. |
|
+ 2.5. |
|
+ 2. (rest of the section) |
|
+ 3.1. |
|
This property is complete in the sence that all implemented properties |
|
are listed here. |
|
CHECKME : check it's complete |
|
/ 3.2. |
|
The spec requires that _NET_CLIENT_LIST contains the windows in their |
|
initial mapping order, which is currently not true for NET::Desktop |
|
windows. |
|
Note that xprop lists only first element in WINDOW type properties. |
|
+ 3.3. |
|
Note that KWin does not use the virtual root windows technique, |
|
so it doesn't set _NET_VIRTUAL_ROOTS at all. |
|
+ 3.4. |
|
KWin doesn't implement large desktops, so it ignores |
|
the message, and only sets the property to the screen size. |
|
+ 3.5. |
|
KWin doesn't implement viewports, so it correctly sets |
|
the property to (0,0) pairs and ignores the message. |
|
+ 3.6. |
|
+ 3.7. |
|
+ 3.8. |
|
KWin currently extends the message a bit, with data.l[0] being 1 or 2, |
|
meaning 'from application'/'from pager', and data.l[1] contains |
|
timestamp. This is used for focus stealing prevention purposes, and |
|
will be proposed for next version of the spec. |
|
+ 3.9. |
|
+ 3.10. |
|
+ 3.11. |
|
KWin doesn't use the virtual roots technique for creating virtual |
|
desktops, so it doesn't set the property. |
|
- 3.12. |
|
- 3.13. |
|
+ 4.1. |
|
+ 4.2. |
|
+ 4.3. |
|
Due to implementation details KWin actually allows moving or resizing |
|
by keyboard when requested to be done by mouse, and vice versa. |
|
+ 5.1. |
|
+ 5.2. |
|
+ 5.3. |
|
+ 5.4. |
|
+ 5.5. |
|
/ 5.6. The handling of _NET_WM_WINDOW_TYPE itself is correct and complete. |
|
Supported window types: DESKTOP, DOCK, TOOLBAR, MENU, UTILITY, |
|
SPLASH, DIALOG, NORMAL. |
|
UTILITY should get better placement. |
|
TOOLBAR - many parts in KDE still treat this as "tool" window. |
|
- should the decoration be shown for the toolbars? |
|
KDE extensions: |
|
_KDE_NET_WM_WINDOW_TYPE_TOPMENU - this is used for implementing |
|
standalone menubars for applications. Only the menubar |
|
that is transient for the currently active window will be shown. |
|
See KMenuBar class in libkdeui for details. |
|
_KDE_NET_WM_WINDOW_TYPE_OVERRIDE - this seems to mean "this window |
|
should be borderless", but it's actually used also for other |
|
things, like fullscreen windows. The plan is to get rid of this |
|
flawed thing as soon as possible. |
|
/ 5.7. |
|
The handling of _NET_WM_STATE itself is correct and complete. |
|
Supported states: MODAL, MAXIMIZED_VERT, MAXIMIZED_HORZ, SHADED, |
|
SKIP_TASKBAR, SKIP_PAGER, HIDDEN, ABOVE, BELOW. |
|
STICKY is not supported, because KWin doesn't implement viewports. |
|
BELOW - in order to make 'allow windows to cover the panel' feature |
|
in Kicker work KWin interprets this state a bit differently |
|
for DOCK windows. While normal DOCK windows are in their |
|
extra layer above normal windows, making them BELOW doesn't |
|
move them below normal windows, but only to the same layer, so |
|
that windows can hide Kicker, but Kicker can be also raised |
|
above the windows. A bit hacky, but it's not really against |
|
the spec, and I have no better idea. |
|
KDE extensions: |
|
_NET_WM_STATE_STAYS_ON_TOP - has the same meaning like ABOVE, |
|
and is deprecated in favour of it; it lacks the _KDE prefix |
|
* 5.8. |
|
The handling of _NET_WM_ALLOWED_ACTIONS itself is correct and complete. |
|
Supported actions: MOVE, RESIZE, MINIMIZE, SHADE, MAXIMIZE_HORZ, |
|
MAXIMIZE_VERT, CHANGE_DESKTOP, CLOSE |
|
STICK is not supported, because KWin does not implement viewports. |
|
Kicker etc. need to be updated. |
|
+ 5.9. |
|
* 5.10. |
|
Property is not used in KWin. |
|
Kicker needs to be checked. |
|
* 5.11. |
|
KWin's handling of the property is correct. |
|
Qt should be checked. |
|
+ 5.12. |
|
- 5.13. |
|
Property is not used in KWin, KWin never provides icons for iconified windows. |
|
Kicker or its taskbar don't set it either. However, the property is flawed, |
|
and should be replaced by manager selection or similar mechanism. |
|
+ 6.1. |
|
+ 6. (rest) |
|
+ 7.4. |
|
The urgency hint is mapped to the _NET_WM_DEMANDS_ATTENTION flag. |
|
* 7.5. |
|
Qt often sets maximum size smaller than minimum size. This seems to be caused |
|
by delayed layout calculations. |
|
* 7.6. |
|
Kicker should be checked. |
|
? 7.7. |
|
+ 7. (rest of the section) |
|
|
|
ICCCM spec compliance (whole document): |
|
version 2.0 |
|
====================== |
|
|
|
/ 1.2.3. |
|
KWin uses KWIN_RUNNING atom that's missing the leading underscore. |
|
Some parts of KDE perhaps may be missing the leading underscore. |
|
/ 1.2.6. |
|
Should be checked. |
|
+ 1. (rest of the section) |
|
+ 2.8. kmanagerselection.* in kdecore |
|
+ 2. (rest of the section) |
|
Not a KWin thing. |
|
* - patch sent to TT to make QClipboard sufficiently compliant |
|
+ 3. |
|
Feature not supported, obsolete. |
|
+ 4.1.1 |
|
+ 4.1.2 (intro) |
|
+ 4.1.2.1 |
|
Used as a fallback for _NET_WM_NAME. |
|
+ 4.1.2.2 |
|
Used as a fallback for _NET_WM_ICON_NAME. |
|
? 4.1.2.3 |
|
? - PSize, PPosition, USize, UPosition |
|
? - clients - Qt simply sets both |
|
+ - PWinGravity - window geometry constraints have higher priority than gravity |
|
/ - PBaseSize - PMinSize is not used as a fallback for size increments |
|
+ - (the rest) |
|
/ 4.1.2.4 |
|
+ - input - see 4.1.7 |
|
+ - initial_state |
|
+ - icon - feature not supported |
|
+ - window_group |
|
+ - urgency - mapped to _NET_WM_DEMANDS_ATTENTION |
|
/ 4.1.2.5 - it should be checked it's used correctly in Kicker etc. |
|
/ 4.1.2.6 - should be checked |
|
NETWM section 7.3. is supported too, even though it's a slight ICCCM violation. |
|
+ 4.1.2.7 |
|
- 4.1.2.8 |
|
See 4.1.8. |
|
+ 4.1.2.9 - handled by Xlib call |
|
+ 4.1.3.1 |
|
+ 4.1.3.2 |
|
Feature not supported (4.1.2.4 - icons) |
|
* 4.1.4 it should be checked Qt/KDE clients handle this properly |
|
/ 4.1.5 |
|
This needs fixing. |
|
+ 4.1.6 |
|
+ 4.1.7 |
|
- 4.1.8 |
|
KWin only installs colormap required by the active window. |
|
- 4.1.9 |
|
Feature not supported, except for WM_ICON_NAME as a fallback for _NET_WM_ICON_NAME. |
|
+ 4.1.10 |
|
+ 4.1.11 |
|
Window groups are only used for supporting NETWM section 7.3. |
|
+ 4.2.5 |
|
/ 4.2.7 |
|
Qt doesn't set revert-to to Parent. |
|
+ 4.2.8.1 frozen clients may be XKill-ed upon a user request though |
|
+ 4.3 |
|
? 4.4 |
|
+ 4. (rest of the section) |
|
+ 5.3. not KWin related |
|
+ 5. (rest of the section ) |
|
? 6.1. clients thing |
|
? 6.2. clients thing - Qt perhaps should force rule 2. |
|
+ 6.3. |
|
? 6. (rest of the section) |
|
+ 7. - no idea what it is, but it doesn't seem to be KWin related |
|
+ 8. |
|
|
|
|
|
KDE-specific extensions (for completeness): |
|
|
|
Property Name Type |
|
========================================================================== |
|
_KDE_WM_CHANGE_STATE root window message |
|
_KDE_NET_SYSTEM_TRAY_WINDOWS root window property |
|
_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR window property |
|
_KDE_NET_WM_FRAME_STRUT window property |
|
_NET_WM_CONTEXT_HELP |
|
- Qt extension |
|
- has no vendor prefix even though it's not part of the spec |
|
_NET_WM_STATE_STAYS_ON_TOP |
|
- KDE extension |
|
- has no vendor prefix even though it's not part of the spec |
|
- deprecated in favor of _NET_WM_STATE_KEEP_ABOVE |
|
_KDE_NET_WM_WINDOW_TYPE_OVERRIDE |
|
- window type, makes the window borderless |
|
- unclear semantics, used also for fullscreen windows |
|
- deprecated in favor of other window types |
|
|
|
==========================================================================
|
|
|