diff options
Diffstat (limited to 'twin/COMPLIANCE')
-rw-r--r-- | twin/COMPLIANCE | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/twin/COMPLIANCE b/twin/COMPLIANCE new file mode 100644 index 000000000..7ae943630 --- /dev/null +++ b/twin/COMPLIANCE @@ -0,0 +1,247 @@ +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 twin/*, +tdecore/netwm.* or tdecore/twin.* 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 <twin@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 libtdeui 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 tdecore ++ 2. (rest of the section) + Not a KWin thing. +* - patch sent to TT to make TQClipboard 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 + +========================================================================== |