~ubuntu-branches/ubuntu/utopic/kde-workspace/utopic-proposed

« back to all changes in this revision

Viewing changes to kwin/COMPLIANCE

  • Committer: Bazaar Package Importer
  • Author(s): Michał Zając
  • Date: 2011-07-09 08:31:15 UTC
  • Revision ID: james.westby@ubuntu.com-20110709083115-ohyxn6z93mily9fc
Tags: upstream-4.6.90
Import upstream version 4.6.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
W A R N I N G: 
 
2
--------------
 
3
This document is a work in progress and is in no way complete or accurate!
 
4
Its current purpose is in aiding the KWin NetWM audit for a future KWin release.
 
5
 
 
6
NetWM Compliance Document:
 
7
==========================
 
8
 
 
9
Listed below are all the NetWM (or EWM) hints decided upon on freedesktop.org 
 
10
(as of version 1.3draft, Nov 27, 2002) and KWin's current level of 
 
11
compliance with the spec. Some parts also involve the pager and clients which
 
12
this document will cater for as well where applicable.
 
13
 
 
14
If you modify the level of NetWM compliance (via modification of kwin/*,
 
15
kdecore/netwm.* or kdecore/kwin.* etc.), or notice any new hints that
 
16
were added after version 1.2, please modify this document appropriately.
 
17
Properties are ordered in the table in the order they are found in the 
 
18
specification. To list any important notes regarding a property, just 
 
19
add them as follows:
 
20
 
 
21
_NET_NUMBER_OF_DESKTOPS         root window property            done
 
22
        +----------------------------------------------------------------+
 
23
        | This property SHOULD be updated by the Window Manager to       |
 
24
        | indicate the number of virtual desktops. KWin DOES update this |
 
25
        | property when the pager changes the number of desktops.        |
 
26
        +----------------------------------------------------------------+
 
27
 
 
28
If you have any questions regarding the specification, feel free to ask on the KWin 
 
29
mailing list <kwin@kde.org>, or on the Window Manager Spec list <wm-spec-list@gnome.org>.
 
30
  -- Karol <kszwed@kde.org>
 
31
 
 
32
(
 
33
 compliance :
 
34
    - = none,
 
35
    / = partial,
 
36
    + = complete,
 
37
    * = KWin is compliant, but something else needs checking (e.g. Qt)
 
38
    ? = unknown
 
39
)
 
40
  
 
41
 
 
42
NETWM spec compliance (whole document):
 
43
version 1.2
 
44
======================
 
45
 
 
46
+ 1.
 
47
+ 2.3. Feature not implemented.
 
48
+ 2.4. Feature not implemented.
 
49
+ 2.5.
 
50
+ 2. (rest of the section)
 
51
+ 3.1.
 
52
        This property is complete in the sence that all implemented properties
 
53
        are listed here.
 
54
        CHECKME : check it's complete
 
55
/ 3.2.
 
56
        The spec requires that _NET_CLIENT_LIST contains the windows in their
 
57
        initial mapping order, which is currently not true for NET::Desktop
 
58
        windows.
 
59
        Note that xprop lists only first element in WINDOW type properties.
 
60
+ 3.3.
 
61
        Note that KWin does not use the virtual root windows technique,
 
62
        so it doesn't set _NET_VIRTUAL_ROOTS at all.
 
63
+ 3.4.
 
64
        KWin doesn't implement large desktops, so it ignores
 
65
        the message, and only sets the property to the screen size.
 
66
+ 3.5.  
 
67
        KWin doesn't implement viewports, so it correctly sets
 
68
        the property to (0,0) pairs and ignores the message.
 
69
+ 3.6.
 
70
+ 3.7.
 
71
+ 3.8.
 
72
        KWin currently extends the message a bit, with data.l[0] being 1 or 2,
 
73
        meaning 'from application'/'from pager', and data.l[1] contains
 
74
        timestamp. This is used for focus stealing prevention purposes, and
 
75
        will be proposed for next version of the spec.
 
76
+ 3.9.
 
77
+ 3.10.
 
78
+ 3.11.
 
79
        KWin doesn't use the virtual roots technique for creating virtual
 
80
        desktops, so it doesn't set the property.
 
81
- 3.12.
 
82
- 3.13.
 
83
+ 4.1.
 
84
+ 4.2.
 
85
+ 4.3.
 
86
        Due to implementation details KWin actually allows moving or resizing
 
87
        by keyboard when requested to be done by mouse, and vice versa.
 
88
+ 5.1.
 
89
+ 5.2.
 
90
+ 5.3.
 
91
+ 5.4.
 
92
+ 5.5.
 
93
/ 5.6.  The handling of _NET_WM_WINDOW_TYPE itself is correct and complete.
 
94
        Supported window types: DESKTOP, DOCK, TOOLBAR, MENU, UTILITY,
 
95
        SPLASH, DIALOG, NORMAL.
 
96
        UTILITY should get better placement.
 
97
        TOOLBAR - many parts in KDE still treat this as "tool" window.
 
98
            - should the decoration be shown for the toolbars?
 
99
        KDE extensions:
 
100
            _KDE_NET_WM_WINDOW_TYPE_TOPMENU - this is used for implementing
 
101
                standalone menubars for applications. Only the menubar
 
102
                that is transient for the currently active window will be shown.
 
103
                See KMenuBar class in libkdeui for details.
 
104
            _KDE_NET_WM_WINDOW_TYPE_OVERRIDE - this seems to mean "this window
 
105
            should be borderless", but it's actually used also for other
 
106
            things, like fullscreen windows. The plan is to get rid of this
 
107
            flawed thing as soon as possible.
 
108
/ 5.7.
 
109
        The handling of _NET_WM_STATE itself is correct and complete.
 
110
        Supported states: MODAL, MAXIMIZED_VERT, MAXIMIZED_HORZ, SHADED,
 
111
            SKIP_TASKBAR, SKIP_PAGER, HIDDEN, ABOVE, BELOW.
 
112
        STICKY is not supported, because KWin doesn't implement viewports.
 
113
        BELOW - in order to make 'allow windows to cover the panel' feature
 
114
            in Kicker work KWin interprets this state a bit differently
 
115
            for DOCK windows. While normal DOCK windows are in their
 
116
            extra layer above normal windows, making them BELOW doesn't
 
117
            move them below normal windows, but only to the same layer, so
 
118
            that windows can hide Kicker, but Kicker can be also raised
 
119
            above the windows. A bit hacky, but it's not really against
 
120
            the spec, and I have no better idea.
 
121
        KDE extensions:
 
122
            _NET_WM_STATE_STAYS_ON_TOP - has the same meaning like ABOVE,
 
123
                and is deprecated in favour of it; it lacks the _KDE prefix
 
124
* 5.8.
 
125
        The handling of _NET_WM_ALLOWED_ACTIONS itself is correct and complete.
 
126
        Supported actions: MOVE, RESIZE, MINIMIZE, SHADE, MAXIMIZE_HORZ,
 
127
            MAXIMIZE_VERT, CHANGE_DESKTOP, CLOSE
 
128
        STICK is not supported, because KWin does not implement viewports.
 
129
        Kicker etc. need to be updated.
 
130
+ 5.9.
 
131
* 5.10.
 
132
        Property is not used in KWin.
 
133
        Kicker needs to be checked.
 
134
* 5.11.
 
135
        KWin's handling of the property is correct.
 
136
        Qt should be checked.
 
137
+ 5.12.
 
138
- 5.13.
 
139
        Property is not used in KWin, KWin never provides icons for iconified windows.
 
140
        Kicker or its taskbar don't set it either. However, the property is flawed,
 
141
        and should be replaced by manager selection or similar mechanism.
 
142
+ 6.1.
 
143
+ 6. (rest)
 
144
+ 7.4.
 
145
        The urgency hint is mapped to the _NET_WM_DEMANDS_ATTENTION flag.
 
146
* 7.5.
 
147
        Qt often sets maximum size smaller than minimum size. This seems to be caused
 
148
        by delayed layout calculations.
 
149
* 7.6.
 
150
        Kicker should be checked.
 
151
? 7.7.
 
152
+ 7. (rest of the section)
 
153
 
 
154
 
 
155
+ _NET_WM_FULLSCREEN_MONITORS   Status: Done.
 
156
        +----------------------------------------------------------------+
 
157
        | The Window Manager MUST keep this list updated to reflect the  |
 
158
        | current state of the window. The application window sends this |
 
159
        | in a ClientMessage to the root window. KWin persists this info |
 
160
        | both internally as well as against the application window.     |
 
161
        | This data is used to spread the fullscreen application window  |
 
162
        | across the requested topology, if valid.                       |
 
163
        +----------------------------------------------------------------+
 
164
 
 
165
ICCCM spec compliance (whole document):
 
166
version 2.0
 
167
======================
 
168
 
 
169
/ 1.2.3.
 
170
        KWin uses KWIN_RUNNING atom that's missing the leading underscore.
 
171
        Some parts of KDE perhaps may be missing the leading underscore.
 
172
/ 1.2.6.
 
173
        Should be checked.
 
174
+ 1. (rest of the section)
 
175
+ 2.8. kmanagerselection.* in kdecore
 
176
+ 2. (rest of the section)
 
177
        Not a KWin thing.
 
178
*   - patch sent to TT to make QClipboard sufficiently compliant
 
179
+ 3.
 
180
        Feature not supported, obsolete.
 
181
+ 4.1.1
 
182
+ 4.1.2 (intro)
 
183
+ 4.1.2.1
 
184
        Used as a fallback for _NET_WM_NAME.
 
185
+ 4.1.2.2
 
186
        Used as a fallback for _NET_WM_ICON_NAME.
 
187
? 4.1.2.3
 
188
?    - PSize, PPosition, USize, UPosition
 
189
?       - clients - Qt simply sets both
 
190
+    - PWinGravity - window geometry constraints have higher priority than gravity
 
191
/    - PBaseSize - PMinSize is not used as a fallback for size increments
 
192
+    - (the rest)
 
193
/ 4.1.2.4
 
194
+    - input - see 4.1.7
 
195
+    - initial_state
 
196
+    - icon - feature not supported
 
197
+    - window_group
 
198
+    - urgency - mapped to _NET_WM_DEMANDS_ATTENTION
 
199
/ 4.1.2.5 - it should be checked it's used correctly in Kicker etc.
 
200
/ 4.1.2.6 - should be checked
 
201
        NETWM section 7.3. is supported too, even though it's a slight ICCCM violation.
 
202
+ 4.1.2.7
 
203
- 4.1.2.8
 
204
        See 4.1.8.
 
205
+ 4.1.2.9 - handled by Xlib call
 
206
+ 4.1.3.1
 
207
+ 4.1.3.2
 
208
        Feature not supported (4.1.2.4 - icons)
 
209
* 4.1.4 it should be checked Qt/KDE clients handle this properly
 
210
/ 4.1.5
 
211
        This needs fixing.
 
212
+ 4.1.6
 
213
+ 4.1.7
 
214
- 4.1.8
 
215
        KWin only installs colormap required by the active window.
 
216
- 4.1.9
 
217
        Feature not supported, except for WM_ICON_NAME as a fallback for _NET_WM_ICON_NAME.
 
218
+ 4.1.10
 
219
+ 4.1.11
 
220
        Window groups are only used for supporting NETWM section 7.3.
 
221
+ 4.2.5
 
222
/ 4.2.7
 
223
        Qt doesn't set revert-to to Parent.
 
224
+ 4.2.8.1 frozen clients may be XKill-ed upon a user request though
 
225
+ 4.3
 
226
? 4.4
 
227
+ 4. (rest of the section)
 
228
+ 5.3. not KWin related
 
229
+ 5. (rest of the section )
 
230
? 6.1. clients thing
 
231
? 6.2. clients thing - Qt perhaps should force rule 2.
 
232
+ 6.3.
 
233
? 6. (rest of the section)
 
234
+ 7. - no idea what it is, but it doesn't seem to be KWin related
 
235
+ 8.
 
236
 
 
237
 
 
238
KDE-specific extensions (for completeness):
 
239
 
 
240
Property Name                           Type
 
241
==========================================================================
 
242
_KDE_WM_CHANGE_STATE                    root window message
 
243
_KDE_NET_SYSTEM_TRAY_WINDOWS            root window property
 
244
_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR      window property
 
245
_KDE_NET_WM_FRAME_STRUT                 window property
 
246
_NET_WM_CONTEXT_HELP
 
247
    - Qt extension
 
248
    - has no vendor prefix even though it's not part of the spec
 
249
_NET_WM_STATE_STAYS_ON_TOP
 
250
    - KDE extension
 
251
    - has no vendor prefix even though it's not part of the spec
 
252
    - deprecated in favor of _NET_WM_STATE_KEEP_ABOVE
 
253
_KDE_NET_WM_WINDOW_TYPE_OVERRIDE
 
254
    - window type, makes the window borderless
 
255
    - unclear semantics, used also for fullscreen windows
 
256
    - deprecated in favor of other window types
 
257
 
 
258
==========================================================================