summaryrefslogtreecommitdiffstats
path: root/twin/COMPLIANCE
diff options
context:
space:
mode:
Diffstat (limited to 'twin/COMPLIANCE')
-rw-r--r--twin/COMPLIANCE247
1 files changed, 247 insertions, 0 deletions
diff --git a/twin/COMPLIANCE b/twin/COMPLIANCE
new file mode 100644
index 000000000..c51bfae3a
--- /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 TWIN_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
+==========================================================================
+_TDE_WM_CHANGE_STATE root window message
+_KDE_NET_SYSTEM_TRAY_WINDOWS root window property
+_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR window property
+_TDE_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
+
+==========================================================================