Commit 82576b5d authored by Jenkins's avatar Jenkins
Browse files

New upstream version 5.13.1

parent b5841358

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.
{
"phabricator.uri" : "https://phabricator.kde.org/"
}
This diff is collapsed.
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 sense 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_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)
+ _NET_WM_FULLSCREEN_MONITORS Status: Done.
+----------------------------------------------------------------+
| The Window Manager MUST keep this list updated to reflect the |
| current state of the window. The application window sends this |
| in a ClientMessage to the root window. KWin persists this info |
| both internally as well as against the application window. |
| This data is used to spread the fullscreen application window |
| across the requested topology, if valid. |
+----------------------------------------------------------------+
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
==========================================================================
CONTENTS:
=========
1. Pre-configuring window-specific settings
1. Pre-configuring window-specific settings
===========================================
Window-specific settings is a feature of KWin that allows specifying some
settings only for a specific window or windows. See the Window-specific
settings section in the KWin configuration and the Special settings
menu entries in Alt+F3/Advanced menu.
One aspect of window-specific settings is the ability to specify various
workarounds for (usually broken) applications that otherwise don't work
properly with KWin. This section describes how to create additional
window-specific settings that will be automatically used by all users
without any need of manual configuration.
Example case:
Application FooBar does not specify any maximum size for its main window,
but when resized to larger size than 1600x1200 it crashes because of a bug.
Manual configuration of a window-specific setting that avoids this problem
is opening and activating this window, selecting
Alt+F3/Advanced/Special window settings, activating tab Workarounds, enabling
setting Maximum size, changing it to Force and entering "1600,1200" as
the maximum size, which will make KWin force this size as the maximum size.
To create such window-specific setting automatically without a need of doing
it manually for every user (for example when doing a large deployment), follow
these steps:
- Back up your $KDEHOME/share/config/kwinrulesrc ($KDEHOME usually being $HOME/.kde)
and remove it
- Run 'dcop kwin default reconfigure'
- Create manually all window-specific settings that should be included (see above)
- When done, check in Window-specific settings configuration module
(Alt+F3/Configure window behavior/Window-specific settings) that all rules are
included
- Create a copy of $KDEHOME/share/config/kwinrulesrc and restore the original one
- Rename the copy (i.e. the newly created kwinrulesrc) to have its unique name
(e.g. foobar_fix_maxsize in this example case)
- Be careful with manual modifications of the file, especially make sure the count=
field in the [General] group is updated if needed
- Create a file for kconfig_update like this (named kwin_foobar_fix_maxsize.upd
in this example):
# kwin_foobar_fix_maxsize.upd start #
Id=foobar_fix_maxsize
File=kwinrules_update
Group=Dummy
Options=overwrite
ScriptArguments=foobar_fix_maxsize
Script=kwin_update_default_rules
# kwin_foobar_fix_maxsize.upd end #
- The kconfig_file (kwin_foobar_fix_maxsize.upd) is to be placed
in $KDEDIR/share/apps/kconf_update/
- The file with the window-specific settings (foobar_fix_maxsize) is to be placed
in $KDEDIR/share/apps/kwin/default_rules/
All KDE user accounts should have these new window-specific settings added
automatically during next KDE startup (or within few seconds if they are active).
They can be checked again in the Window-specific settings configuration module of KWin.
NOTE! The GPL below is copyrighted by the Free Software Foundation, but
the instance of code that it refers to (the kde programs) are copyrighted
by the authors who actually wrote it.
---------------------------------------------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs