<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Mgraesslin&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Mgraesslin&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Mgraesslin"/>
		<updated>2013-05-20T13:05:38Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin</id>
		<title>Projects/KWin</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin"/>
				<updated>2013-02-07T08:34:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: SVN -&amp;gt; git&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This is a starting page for all relevant KWin documentation, most of which is stored in git or on external WWW pages.'''&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
&lt;br /&gt;
* [https://mail.kde.org/mailman/listinfo/kwin KWin mailing list]&lt;br /&gt;
* IRC channel #kwin on freenode&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kwin/COMPLIANCE COMPLIANCE] - a document on KWin's compliance to the window manager specifications [http://tronche.com/gui/x/icccm/ ICCCM] and [http://www.freedesktop.org/wiki/Specifications/wm-spec EWMH] (also known as NETWM).&lt;br /&gt;
* [[/4.0-release-notes|KDE4.0 release notes]] - information about changes and new features in KWin in KDE4.0&lt;br /&gt;
* [[/Build_Options|KWin Build Options]] - documentation on the available build options for KWin.&lt;br /&gt;
&lt;br /&gt;
== Developer information ==&lt;br /&gt;
&lt;br /&gt;
* For Developer Information see the [http://community.kde.org/KWin/ KWin Section] in the KDE Community Wiki&lt;br /&gt;
* http://api.kde.org/4.x-api/kde-workspace-apidocs/kwin/libkdecorations/html/index.html libkdecoration API documentation] - API documentation for the library used for developing KWin decorations (the link points to documentation for the current development version).&lt;br /&gt;
* [http://www.usermode.org/docs/kwintheme.html KWin decorations HOWTO] - tutorial on writing KWin decorations. Based on KDE3.2 and as such slightly outdated, but it is still usable for newer versions. Note that current decorations should use KCommonDecoration class instead of KDecoration directly like this tutorial does.&lt;br /&gt;
* [http://api.kde.org/4.x-api/kde-workspace-apidocs/kwin/libkwineffects/html/index.html libkwineffects API documentation ] - Documentation on API for compositing effects - currently needs to be done, developers interested in developing compositing effects for KWin are currently suggested to use source of already [https://projects.kde.org/projects/kde/kdebase/kde-workspace/repository/revisions/master/show/kwin/effects existing effects shipped with KWin] and/or ask on the KWin mailing list if necessary. NOTE: This API is currently considered unstable and subject to change.&lt;br /&gt;
* [[Development/Tutorials/KWin/Scripting/API|Scripting API]] and [[Development/Tutorials/KWin/Scripting|KWin Scripting Tutorial]]&lt;br /&gt;
* [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes for version 4.9]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kwin/CONFIGURING CONFIGURING ] - document on advanced KWin configuration (such as pre-configuring window-specific settings).&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin</id>
		<title>Projects/KWin</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin"/>
				<updated>2013-02-07T08:33:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: update links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This is a starting page for all relevant KWin documentation, most of which is stored in SVN or on external WWW pages.'''&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
&lt;br /&gt;
* [https://mail.kde.org/mailman/listinfo/kwin KWin mailing list]&lt;br /&gt;
* IRC channel #kwin on freenode&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kwin/COMPLIANCE COMPLIANCE] - a document on KWin's compliance to the window manager specifications [http://tronche.com/gui/x/icccm/ ICCCM] and [http://www.freedesktop.org/wiki/Specifications/wm-spec EWMH] (also known as NETWM).&lt;br /&gt;
* [[/4.0-release-notes|KDE4.0 release notes]] - information about changes and new features in KWin in KDE4.0&lt;br /&gt;
* [[/Build_Options|KWin Build Options]] - documentation on the available build options for KWin.&lt;br /&gt;
&lt;br /&gt;
== Developer information ==&lt;br /&gt;
&lt;br /&gt;
* For Developer Information see the [http://community.kde.org/KWin/ KWin Section] in the KDE Community Wiki&lt;br /&gt;
* http://api.kde.org/4.x-api/kde-workspace-apidocs/kwin/libkdecorations/html/index.html libkdecoration API documentation] - API documentation for the library used for developing KWin decorations (the link points to documentation for the current development version).&lt;br /&gt;
* [http://www.usermode.org/docs/kwintheme.html KWin decorations HOWTO] - tutorial on writing KWin decorations. Based on KDE3.2 and as such slightly outdated, but it is still usable for newer versions. Note that current decorations should use KCommonDecoration class instead of KDecoration directly like this tutorial does.&lt;br /&gt;
* [http://api.kde.org/4.x-api/kde-workspace-apidocs/kwin/libkwineffects/html/index.html libkwineffects API documentation ] - Documentation on API for compositing effects - currently needs to be done, developers interested in developing compositing effects for KWin are currently suggested to use source of already [https://projects.kde.org/projects/kde/kdebase/kde-workspace/repository/revisions/master/show/kwin/effects existing effects shipped with KWin] and/or ask on the KWin mailing list if necessary. NOTE: This API is currently considered unstable and subject to change.&lt;br /&gt;
* [[Development/Tutorials/KWin/Scripting/API|Scripting API]] and [[Development/Tutorials/KWin/Scripting|KWin Scripting Tutorial]]&lt;br /&gt;
* [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes for version 4.9]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kwin/CONFIGURING CONFIGURING ] - document on advanced KWin configuration (such as pre-configuring window-specific settings).&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2013-02-01T12:17:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Updated KWin section from bug reports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureDone|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomukbackup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureDone|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|kwin|Decorations not visible ({{bug |305875}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Display application menu and title bar side by side for maximized windows ({{bug |102607}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|drag-and-drop between windows by cover switch alt-tab causes apps to crash ({{bug |179077}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add a rule to select the screen ({{bug |183996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Need Mouse navigation in flip switch mode ({{bug |244439}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add support for appmenu-qt ({{bug |266596}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|glsl should be disabled for the 945G because it's slow and broken ({{bug |293385}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|When starting the present windows effect, windows that are partly out of screen jump to the screens center ({{bug |294428}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GHNS support for Scripted Effects ({{bug |296773}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow direct rendering with fglrx ({{bug |301103}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Show Desktop has inconsistent behavior when launching KRunner ({{bug |302248}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Don't use OpenGL matrix stack in OpenGL 2 backend ({{bug |303093}}, Review 105455)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Refactor Screen/Window PaintData ({{bug |303314}}, Review 105141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Rapid flickering in locked screen -- makes it difficult to unlock ({{bug |303579}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|double click menu to close needs GUI config ({{bug |305738}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Toplevel::windowType() needs performance improvements ({{bug |306384}}, Review 106349)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GLPlatform should recommend either OpenGL1 or OpenGL2 compositing ({{bug |306436}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Zoom effect broken in master ({{bug |307609}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin fails to build when the GLES support is disabled ({{bug |307866}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Some effect authors are listed as &amp;quot;Name1 &amp;amp; Name2&amp;quot; ({{bug |307928}}, Review 106880)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes after restarting it ({{bug |308040}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|When compositing is disabled, opening a window which blocks compositing *enables* it ({{bug |308438}}, Review 106900)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Forgotten &amp;quot;${...}&amp;quot; witihin CMakeLists.txt ({{bug |308759}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Animate Window Maximize/Restore ({{bug |308990}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move ExtendedBorderRegion to stable  API ({{bug |308994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Support shortened titles like in bespin in all decorations ({{bug |308995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Mouse Click effect ({{bug |309006}}, Review 105780)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin kcm wrongly informs that all effects failed to load ({{bug |309853}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crash due to wobbly windows effect when closing window ({{bug |310142}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Snap helper window effect doesn't repaint background when resizing the window ({{bug |311551}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|No minimum size on the general or effects tab of kwincompositing kcm ({{bug |311553}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|callDBus always fails for methods with signature containing array of strings ({{bug |311896}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|PySolFC (And possibly other Tkinter and Tk programs), after moving window, put the menu at the original menu position. ({{bug |312346}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|wish: kwin option to save vertical space: merge window buttons into menu-bar ({{bug |312900}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Checkboxes with bad usability in System settings -&amp;gt; Window behavior -&amp;gt; Moving ({{bug |313228}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|unloading of &amp;quot;Mouse Click Animation&amp;quot; result in kwin crash ({{bug |313655}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Typo in compact/contents/ui/main.qml ({{bug |313950}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add screen management actions to window context menus ({{bug |269207}}, Review 106065)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move Workspace's compositing functionality to own class Compositor ({{bug |299277}}, Review 102420)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Option to disable close on double click in Aurorae ({{bug |301327}}, Review 106160)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove Tiling Support From KWin ({{bug |303090}}, Review 105546)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow Scripts to add menus to useractions menu ({{bug |303756}}, Review 106285)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Generic QML support for Aurorae Themes ({{bug |303810}}, Review 105768)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Split out Useractions Menu from Workspace ({{bug |305832}}, Review 106085)|mgraesslin@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|kwin|Implement color correction|skeletk13@gmail.com|Casian Andrei}}&lt;br /&gt;
{{FeatureDone|oxygen decoration|Implement ExtendedBorderRegion support, to resize windows outside of their actual borders|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|oxygen style|Implement BlurBehind semi-transparent tooltips when available|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureDone|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|powerdevil|Overhaul powerdevil notifications|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureDone|Dolphin|Implement parallel sort algorithm|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
{{FeatureDone|Dolphin|Add GUI option for the &amp;quot;Rename Inline&amp;quot; setting|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureDone|Dolphin|Add &amp;quot;Icon Size&amp;quot; submenu to the Places Panel context menu|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Built-in quick open (Ctrl+Alt+o)|kwrite-devel@kde.org|Christoph Cullmann}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2012/11/02/using-the-projects-plugin-in-kate/ New Project Plugin]|kwrite-devel@kde.org|Christoph Cullmann}}&lt;br /&gt;
{{FeatureDone|Kate Part|[http://kate-editor.org/2012/11/06/passive-notifications-in-kate-part/ Passive Notification System]|kwrite-devel@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|[http://kate-editor.org/2012/11/05/loading-remote-files/ Loading Remote File Notification]|kwrite-devel@kde.org|Christoph Cullmann}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate Part|[http://kate-editor.org/2012/10/28/show-line-while-scrolling/ Show line while scrolling]|kwrite-devel@kde.org|D. Haumann/J. Wenninger}}&lt;br /&gt;
{{FeatureDone|Kate Part|[http://kate-editor.org/2012/10/27/remove-trailing-spaces/ Improved remove trailing spaces on save]|kwrite-devel@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|[http://kate-editor.org/2012/11/07/default-color-schemas/ Predefined color schemes]|kwrite-devel@kde.org|C. Cullmann/D. Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|[http://kate-editor.org/2012/11/06/kate-scripting-updates-zen-like-quick-coding/ Improved Scripting Support]|kwrite-devel@kde.org|C. Cullmann/D. Haumann}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Konsole|Provde a GUI option to disable requiring CTRL to Drag-n-Drop text|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureDone|Konsole|Add initial support for gathering OpenBSD's process information|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureDone|Konsole|Add support for xterm's 1006 mouse extension|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureDone|Konsole|Add KDE3 print screen functionality|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureDone|Konsole|Add KDE3 send signals functionality|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureDone|Konsole|Add option to change the line spacing|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureDone|Konsole|Add the ability to clear command line before using bookmarks for some commands|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Rocs|Improve project handling: load/save dialogs, add project journal.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Support TGF (trivial graph format) documents for import/export.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Support core features for DOT/Graphvis documents for import/export.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Add TikZ/PGF graphic export.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Main Window UI Reorganization: Editor Toolbar, dialogs, Information Panel|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Configuration Dialog Optimizations: Code-Editor, Graph Editor|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KTouch|Show a message when keyboard layout visualization isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|Picmi|Add new game, Picmi: A nonogram logic game for KDE. |jakob.gruber@gmail.com|Jakob Gruber}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureDone|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|Active based UI|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|PDF Embedded Video improvements|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|Make document scroll as necessary when in text selection mode|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|Support high precision QTabletEvents for creating annotations|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|Additional mouse buttons trigger history navigation|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|Annotation editing improvements|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|KAlarm|Add command line and D-Bus option to output list of scheduled alarms|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureDone|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureDone|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner. [http://blog.zx2c4.com/808 Blog]|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Umbrello|Line based diagram grid |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2013-01-11T22:31:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
* ''object'' '''KWin''': Provides access to enums defined in KWin::WorkspaceWrapper&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* '''callDBus(QString service, QString path, QString interface, QString method, QVariant arg..., QScriptValue callback = QScriptValue())''': Call a D-Bus method at (service, path, interface and method). A variable number of arguments can be added to the method call. The D-Bus call is always performed in an async way invoking the callback provided as the last (optional) argument. The reply values of the D-Bus method call are passed to the callback.&lt;br /&gt;
* '''registerUserActionsMenu(QScriptValue callback)''': Registers the passed in callback to be invoked whenever the User actions menu (Alt+F3 or right click on window decoration) is about to be shown. The callback is invoked with a reference to the Client for which the menu is shown. The callback can return either a single menu entry to be added to the menu or an own sub menu with multiple entries. The object for a menu entry should be {title: &amp;quot;My Menu entry&amp;quot;, checkable: true, checked: false, triggered: function (action) { // callback with triggered QAction}}, for a menu it should be {title: &amp;quot;My menu&amp;quot;, items: [{...}, {...}, ...] /*list with entries as described*/}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== ClientAreaOption ====&lt;br /&gt;
    &lt;br /&gt;
* '''PlacementArea''': window movement snapping area? ignore struts&lt;br /&gt;
* '''MovementArea''': &lt;br /&gt;
* '''MaximizeArea''': &lt;br /&gt;
* '''MaximizeFullArea''': &lt;br /&gt;
* '''FullScreenArea''': &lt;br /&gt;
* '''WorkArea''': &lt;br /&gt;
* '''FullArea''': &lt;br /&gt;
* '''ScreenArea''': &lt;br /&gt;
==== ElectricBorder ====&lt;br /&gt;
    &lt;br /&gt;
* '''ElectricTop''': &lt;br /&gt;
* '''ElectricTopRight''': &lt;br /&gt;
* '''ElectricRight''': &lt;br /&gt;
* '''ElectricBottomRight''': &lt;br /&gt;
* '''ElectricBottom''': &lt;br /&gt;
* '''ElectricBottomLeft''': &lt;br /&gt;
* '''ElectricLeft''': &lt;br /&gt;
* '''ElectricTopLeft''': &lt;br /&gt;
* '''ELECTRIC_COUNT''': &lt;br /&gt;
* '''ElectricNone''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop, KWin::Client *client)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': Signal emitted whenever the current activity changed. id id of the new activity&lt;br /&gt;
* '''activitiesChanged(const QString &amp;amp;id)''': Signal emitted whenever the list of activities changed. id id of the new activity&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== FocusPolicy ====&lt;br /&gt;
    &lt;br /&gt;
* '''ClickToFocus''': &lt;br /&gt;
* '''FocusFollowsMouse''': &lt;br /&gt;
* '''FocusUnderMouse''': &lt;br /&gt;
* '''FocusStrictlyUnderMouse''': &lt;br /&gt;
==== MouseCommand ====&lt;br /&gt;
    &lt;br /&gt;
* '''MouseRaise''': &lt;br /&gt;
* '''MouseLower''': &lt;br /&gt;
* '''MouseOperationsMenu''': &lt;br /&gt;
* '''MouseToggleRaiseAndLower''': &lt;br /&gt;
* '''MouseActivateAndRaise''': &lt;br /&gt;
* '''MouseActivateAndLower''': &lt;br /&gt;
* '''MouseActivate''': &lt;br /&gt;
* '''MouseActivateRaiseAndPassClick''': &lt;br /&gt;
* '''MouseActivateAndPassClick''': &lt;br /&gt;
* '''MouseMove''': &lt;br /&gt;
* '''MouseUnrestrictedMove''': &lt;br /&gt;
* '''MouseActivateRaiseAndMove''': &lt;br /&gt;
* '''MouseActivateRaiseAndUnrestrictedMove''': &lt;br /&gt;
* '''MouseResize''': &lt;br /&gt;
* '''MouseUnrestrictedResize''': &lt;br /&gt;
* '''MouseShade''': &lt;br /&gt;
* '''MouseSetShade''': &lt;br /&gt;
* '''MouseUnsetShade''': &lt;br /&gt;
* '''MouseMaximize''': &lt;br /&gt;
* '''MouseRestore''': &lt;br /&gt;
* '''MouseMinimize''': &lt;br /&gt;
* '''MouseNextDesktop''': &lt;br /&gt;
* '''MousePreviousDesktop''': &lt;br /&gt;
* '''MouseAbove''': &lt;br /&gt;
* '''MouseBelow''': &lt;br /&gt;
* '''MouseOpacityMore''': &lt;br /&gt;
* '''MouseOpacityLess''': &lt;br /&gt;
* '''MouseClose''': &lt;br /&gt;
* '''MousePreviousTab''': &lt;br /&gt;
* '''MouseNextTab''': &lt;br /&gt;
* '''MouseDragTab''': &lt;br /&gt;
* '''MouseNothing''': &lt;br /&gt;
==== MouseWheelCommand ====&lt;br /&gt;
    &lt;br /&gt;
* '''MouseWheelRaiseLower''': &lt;br /&gt;
* '''MouseWheelShadeUnshade''': &lt;br /&gt;
* '''MouseWheelMaximizeRestore''': &lt;br /&gt;
* '''MouseWheelAboveBelow''': &lt;br /&gt;
* '''MouseWheelPreviousNextDesktop''': &lt;br /&gt;
* '''MouseWheelChangeOpacity''': &lt;br /&gt;
* '''MouseWheelChangeCurrentTab''': &lt;br /&gt;
* '''MouseWheelNothing''': &lt;br /&gt;
==== @16 ====&lt;br /&gt;
    &lt;br /&gt;
* '''ElectricDisabled''': &lt;br /&gt;
* '''ElectricMoveOnly''': &lt;br /&gt;
* '''ElectricAlways''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''float'' '''electricBorderCornerRatio''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''uint'' '''vBlankTime'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
* ''bool'' '''glStrictBindingFollowsDriver''': Whether strict binding follows the driver or has been overwritten by a user defined config value. If true is set by the OpenGL Scene during initialization. If false glStrictBinding is set from a config value and not updated during scene initialization.&lt;br /&gt;
* ''bool'' '''glLegacy''': Whether legacy OpenGL should be used or OpenGL (ES) 2&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''electricBorderCornerRatioChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''vBlankTimeChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
* '''glStrictBindingFollowsDriverChanged()'''&lt;br /&gt;
* '''glLegacyChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''visibleRect'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''paddingChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
* '''needsRepaint()''': Emitted whenever the state changes in a way, that the Compositor should schedule a repaint of the scene.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Sizemode ====&lt;br /&gt;
    &lt;br /&gt;
* '''SizemodeAny''': &lt;br /&gt;
* '''SizemodeFixedW''': &lt;br /&gt;
* '''SizemodeFixedH''': &lt;br /&gt;
* '''SizemodeMax''': &lt;br /&gt;
==== CoordinateMode ====&lt;br /&gt;
    &lt;br /&gt;
* '''DecorationRelative''': &lt;br /&gt;
* '''WindowRelative''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the Client is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged(KWin::Client *client)''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* '''syncTabGroupFor(QString property, bool fromThisClient=false)''': Syncs the dynamic property fromThisClient or the to all members of the tabGroup() (if there is one) eg. if you call: client-&amp;gt;setProperty(&amp;quot;kwin_tiling_floats&amp;quot;, true); client-&amp;gt;syncTabGroupFor(&amp;quot;kwin_tiling_floats&amp;quot;, true) all clients in this tabGroup will have ::property(&amp;quot;kwin_tiling_floats&amp;quot;).toBool() == true WARNING: non dynamic properties are ignored - you're not supposed to alter/update such explicitly&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-11-09T08:30:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects&lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect&lt;br /&gt;
* ''object'' '''Effect''': Provides access to enums defined in KWin::AnimationEffect and KWin::ScriptedEffect&lt;br /&gt;
* ''object'' '''KWin''': Provides access to enums defined in KWin::WorkspaceWrapper&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(settings)''': Schedules one or many animations for one window. The animations are defined through the settings object providing&lt;br /&gt;
a more declarative way to specify the animations than the animate call on the effect object. The settings object&lt;br /&gt;
supports the following attributes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    window: EffectWindow, /* the window to animate, required */&lt;br /&gt;
    duration: int, /* duration in msec, required */&lt;br /&gt;
    curve: QEasingCurve.Type, /* global easing curve, optional */&lt;br /&gt;
    type: Effect.Attribute, /* for first animation, optional */&lt;br /&gt;
    from: FPx2, /* for first animation, optional */&lt;br /&gt;
    to: FPx2, /* for first animation, optional */&lt;br /&gt;
    delay: int, /* for first animation, optional */&lt;br /&gt;
    animations: [ /* additional animations, optional */&lt;br /&gt;
        {&lt;br /&gt;
        curve: QEasingCurve.Type, /* overrides global */&lt;br /&gt;
        type: Effect.Attribute,&lt;br /&gt;
        from: FPx2,&lt;br /&gt;
        to: FPx2,&lt;br /&gt;
        delay: int&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
At least one animation needs to be specified either with the top-level properties or in the animations list.&lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''int'' '''animationTime(int duration)''': Adjusts the passed in duration to the global animation time facator.&lt;br /&gt;
* ''int'' '''displayWidth()''': Width of the complete display (all screens).&lt;br /&gt;
* ''int'' '''displayHeight()''': Height of the complete display (all screens).&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
    &lt;br /&gt;
== KWin::FPx2 ==&lt;br /&gt;
This class is used to describe the animation end points, that is from which FPx2 values to which FPx2 values an animation goes. This class contains two properties to describe two animation components individually (e.g. width and height). But it's also possible to just have one value (e.g. opacity). In this case the definition of an FPx2 can be replaced by a single value.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''value1'''&lt;br /&gt;
* ''qreal'' '''value2'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. &lt;br /&gt;
&lt;br /&gt;
oldDesktop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previously current desktop &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
newDesktop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new current desktop &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which is taken over to the new desktop, can be NULL &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 &lt;br /&gt;
Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. &lt;br /&gt;
&lt;br /&gt;
old&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous number of desktops in used. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EffectsHandler::numberOfDesktops. &lt;br /&gt;
4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The added window &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed  4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new active window, or NULL if there is no active window. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which is going to be deleted. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EffectWindow::refWindow EffectWindow::unrefWindow windowClosed &lt;br /&gt;
4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or  EffectWindow::isUserResize. Whenever the geometry is updated the signal  windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal  windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time!  w The window which is being moved/resized  windowStepUserMovedResized  windowFinishUserMovedResized  EffectWindow::isUserMove  EffectWindow::isUserResize  4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which is being moved/resized &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
geometry&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The geometry of the window in the current move/resize step. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize &lt;br /&gt;
4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which has been moved/resized &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
windowStartUserMovedResized windowFinishUserMovedResized &lt;br /&gt;
4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: &lt;br /&gt;
restored: both horizontal and vertical are false &lt;br /&gt;
horizontally maximized: horizontal is true and vertical is false &lt;br /&gt;
vertically maximized: horizontal is false and vertical is true &lt;br /&gt;
completely maximized: both horizontal and vertical are  true &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window whose maximized state changed &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
horizontal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If true maximized horizontally &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vertical&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If true maximized vertically &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window whose geometry changed &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
old&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous geometry &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
windowUserMovedResized &lt;br /&gt;
4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window whose geometry changed &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
old&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous expandedGeometry() &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window whose opacity level is changed. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
oldOpacity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The previous opacity level &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
newOpacity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new opacity level &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which was minimized &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which was unminimized &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window which is scheduled for repainting &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
r&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Always empty. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode.  refTabBox  tabBoxClosed  tabBoxUpdated  tabBoxKeyEvent  4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again.  unrefTabBox  tabBoxAdded  4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox  currentTabBoxWindowList  currentTabBoxDesktopList  currentTabBoxWindow  currentTabBoxDesktop  4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly  refTabBox  4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on  windowInputMouseEvent.  pos The new mouse position  oldpos The previously mouse position  buttons The pressed mouse buttons  oldbuttons The previously pressed mouse buttons  modifiers Pressed keyboard modifiers  oldmodifiers Previously pressed keyboard modifiers.  startMousePolling  4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed.  w The window whose property changed, is null if it is a root window property  atom The property  4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted.  outline The geometry of the outline to render.  hideOutline  4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline &lt;br /&gt;
4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. &lt;br /&gt;
&lt;br /&gt;
size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The new screen size &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed &lt;br /&gt;
&lt;br /&gt;
id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
id of the new current activity &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added &lt;br /&gt;
&lt;br /&gt;
id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
id of the new activity &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed &lt;br /&gt;
&lt;br /&gt;
id&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
id of the removed activity &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::EffectWindow ==&lt;br /&gt;
Representation of a window used by/for Effect classes.&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== @15 ====&lt;br /&gt;
    &lt;br /&gt;
* '''PAINT_DISABLED''': Window will not be painted&lt;br /&gt;
* '''PAINT_DISABLED_BY_DELETE''': Window will not be painted because it is deleted&lt;br /&gt;
* '''PAINT_DISABLED_BY_DESKTOP''': Window will not be painted because of which desktop it's on&lt;br /&gt;
* '''PAINT_DISABLED_BY_MINIMIZE''': Window will not be painted because it is minimized&lt;br /&gt;
* '''PAINT_DISABLED_BY_TAB_GROUP''': Window will not be painted because it is not the active window in a client group&lt;br /&gt;
* '''PAINT_DISABLED_BY_ACTIVITY''': Window will not be painted because it's not on the current activity&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''expandedGeometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops'''&lt;br /&gt;
* ''bool'' '''onCurrentDesktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QString'' '''windowClass'''&lt;br /&gt;
* ''QString'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''managed''': Whether this EffectWindow is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this EffectWindow represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
* ''QRegion'' '''shape''': The Window's shape&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the window. Read from WM_NAME property together with a suffix for hostname and shortcut.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the window is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''modal''': Whether the window represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the window is moveable. Even if it is not moveable, it might be possible to move it to another screen. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the window can be moved to another screen. moveable&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all.&lt;br /&gt;
* ''bool'' '''move''': Whether the window is currently being moved by the user.&lt;br /&gt;
* ''bool'' '''resize''': Whether the window is currently being resized by the user.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the window should be excluded from window switching effects.&lt;br /&gt;
* ''QRect'' '''contentsRect''': Geometry of the actual window contents inside the whole (including decorations) window.&lt;br /&gt;
* ''QRect'' '''decorationInnerRect''': Geometry of the transparent rect in the decoration. May be different from contentsRect if the decoration is extended into the client area.&lt;br /&gt;
* ''bool'' '''hasDecoration'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''onCurrentActivity'''&lt;br /&gt;
* ''bool'' '''onAllActivities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''minimized''': Whether the window is minimized.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''bool'' '''isOnActivity(QString id) const '''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findModal()=0'''&lt;br /&gt;
* ''EffectWindowList'' '''mainWindows() const =0'''&lt;br /&gt;
* '''closeWindow() const '''&lt;br /&gt;
* '''setData(int role, const QVariant &amp;amp;data)=0''': Can be used to by effects to store arbitrary data in the EffectWindow.&lt;br /&gt;
* ''QVariant'' '''data(int role) const =0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::Effect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Anchor ====&lt;br /&gt;
    &lt;br /&gt;
* '''Left''': &lt;br /&gt;
* '''Top''': &lt;br /&gt;
* '''Right''': &lt;br /&gt;
* '''Bottom''': &lt;br /&gt;
* '''Horizontal''': &lt;br /&gt;
* '''Vertical''': &lt;br /&gt;
* '''Mouse''': &lt;br /&gt;
==== Attribute ====&lt;br /&gt;
    &lt;br /&gt;
* '''Opacity''': &lt;br /&gt;
* '''Brightness''': &lt;br /&gt;
* '''Saturation''': &lt;br /&gt;
* '''Scale''': &lt;br /&gt;
* '''Rotation''': &lt;br /&gt;
* '''Position''': &lt;br /&gt;
* '''Size''': &lt;br /&gt;
* '''Translation''': &lt;br /&gt;
* '''Clip''': &lt;br /&gt;
* '''Generic''': &lt;br /&gt;
* '''NonFloatBase''': &lt;br /&gt;
==== MetaType ====&lt;br /&gt;
    &lt;br /&gt;
* '''SourceAnchor''': &lt;br /&gt;
* '''TargetAnchor''': &lt;br /&gt;
* '''RelativeSourceX''': &lt;br /&gt;
* '''RelativeSourceY''': &lt;br /&gt;
* '''RelativeTargetX''': &lt;br /&gt;
* '''RelativeTargetY''': &lt;br /&gt;
* '''Axis''': &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationData ==&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Axis ====&lt;br /&gt;
    &lt;br /&gt;
* '''XAxis''': &lt;br /&gt;
* '''YAxis''': &lt;br /&gt;
* '''ZAxis''': &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''sourceAnchor'''&lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''targetAnchor'''&lt;br /&gt;
* ''int'' '''relativeSourceX'''&lt;br /&gt;
* ''int'' '''relativeSourceY'''&lt;br /&gt;
* ''int'' '''relativeTargetX'''&lt;br /&gt;
* ''int'' '''relativeTargetY'''&lt;br /&gt;
* ''Axis'' '''axis'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== DataRole ====&lt;br /&gt;
    &lt;br /&gt;
* '''WindowAddedGrabRole''': &lt;br /&gt;
* '''WindowClosedGrabRole''': &lt;br /&gt;
* '''WindowMinimizedGrabRole''': &lt;br /&gt;
* '''WindowUnminimizedGrabRole''': &lt;br /&gt;
* '''WindowForceBlurRole''': &lt;br /&gt;
* '''WindowBlurBehindRole''': &lt;br /&gt;
* '''LanczosCacheRole''': &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. &lt;br /&gt;
&lt;br /&gt;
w&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The window to check &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
grabRole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The grab role to check &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. &lt;br /&gt;
&lt;br /&gt;
key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The key to search for &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
defaultValue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The value to return if the key is not found &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-10-28T10:01:03Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects&lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect&lt;br /&gt;
* ''object'' '''Effect''': Provides access to enums defined in KWin::AnimationEffect and KWin::ScriptedEffect&lt;br /&gt;
* ''object'' '''KWin''': Provides access to enums defined in KWin::WorkspaceWrapper&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''int'' '''animationTime(int duration)''': Adjusts the passed in duration to the global animation time facator.&lt;br /&gt;
* ''int'' '''displayWidth()''': Width of the complete display (all screens).&lt;br /&gt;
* ''int'' '''displayHeight()''': Height of the complete display (all screens).&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
    &lt;br /&gt;
== KWin::FPx2 ==&lt;br /&gt;
This class is used to describe the animation end points, that is from which FPx2 values to which FPx2 values an animation goes. This class contains two properties to describe two animation components individually (e.g. width and height). But it's also possible to just have one value (e.g. opacity). In this case the definition of an FPx2 can be replaced by a single value.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''value1'''&lt;br /&gt;
* ''qreal'' '''value2'''&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. oldDesktop The previously current desktop newDesktop The new current desktop with The window which is taken over to the new desktop, can be NULL 4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. old The previous number of desktops in used. EffectsHandler::numberOfDesktops. 4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. w The added window 4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed 4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. w The new active window, or NULL if there is no active window. 4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. w The window which is going to be deleted. EffectWindow::refWindow EffectWindow::unrefWindow windowClosed 4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or EffectWindow::isUserResize. Whenever the geometry is updated the signal windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time! w The window which is being moved/resized windowStepUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. w The window which is being moved/resized geometry The geometry of the window in the current move/resize step. windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. w The window which has been moved/resized windowStartUserMovedResized windowFinishUserMovedResized 4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: restored: both horizontal and vertical are false horizontally maximized: horizontal is true and vertical is false vertically maximized: horizontal is false and vertical is true completely maximized: both horizontal and vertical are true w The window whose maximized state changed horizontal If true maximized horizontally vertical If true maximized vertically 4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. w The window whose geometry changed old The previous geometry windowUserMovedResized 4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) w The window whose geometry changed old The previous expandedGeometry() 4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. w The window whose opacity level is changed. oldOpacity The previous opacity level newOpacity The new opacity level 4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. w The window which was minimized 4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. w The window which was unminimized 4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. w The window which is scheduled for repainting r The damaged rect 4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode. refTabBox tabBoxClosed tabBoxUpdated tabBoxKeyEvent 4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again. unrefTabBox tabBoxAdded 4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox currentTabBoxWindowList currentTabBoxDesktopList currentTabBoxWindow currentTabBoxDesktop 4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly refTabBox 4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on windowInputMouseEvent. pos The new mouse position oldpos The previously mouse position buttons The pressed mouse buttons oldbuttons The previously pressed mouse buttons modifiers Pressed keyboard modifiers oldmodifiers Previously pressed keyboard modifiers. startMousePolling 4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed. w The window whose property changed, is null if it is a root window property atom The property 4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted. outline The geometry of the outline to render. hideOutline 4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline 4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. size The new screen size 4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed id id of the new current activity 4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity 4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity 4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::EffectWindow ==&lt;br /&gt;
Representation of a window used by/for Effect classes.&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== @15 ====&lt;br /&gt;
    &lt;br /&gt;
* '''PAINT_DISABLED''': Window will not be painted&lt;br /&gt;
* '''PAINT_DISABLED_BY_DELETE''': Window will not be painted because it is deleted&lt;br /&gt;
* '''PAINT_DISABLED_BY_DESKTOP''': Window will not be painted because of which desktop it's on&lt;br /&gt;
* '''PAINT_DISABLED_BY_MINIMIZE''': Window will not be painted because it is minimized&lt;br /&gt;
* '''PAINT_DISABLED_BY_TAB_GROUP''': Window will not be painted because it is not the active window in a client group&lt;br /&gt;
* '''PAINT_DISABLED_BY_ACTIVITY''': Window will not be painted because it's not on the current activity&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''expandedGeometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops'''&lt;br /&gt;
* ''bool'' '''onCurrentDesktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QString'' '''windowClass'''&lt;br /&gt;
* ''QString'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''managed''': Whether this EffectWindow is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this EffectWindow represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
* ''QRegion'' '''shape''': The Window's shape&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the window. Read from WM_NAME property together with a suffix for hostname and shortcut.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the window is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''modal''': Whether the window represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the window is moveable. Even if it is not moveable, it might be possible to move it to another screen. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the window can be moved to another screen. moveable&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all.&lt;br /&gt;
* ''bool'' '''move''': Whether the window is currently being moved by the user.&lt;br /&gt;
* ''bool'' '''resize''': Whether the window is currently being resized by the user.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the window should be excluded from window switching effects.&lt;br /&gt;
* ''QRect'' '''contentsRect''': Geometry of the actual window contents inside the whole (including decorations) window.&lt;br /&gt;
* ''QRect'' '''decorationInnerRect''': Geometry of the transparent rect in the decoration. May be different from contentsRect if the decoration is extended into the client area.&lt;br /&gt;
* ''bool'' '''hasDecoration'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''onCurrentActivity'''&lt;br /&gt;
* ''bool'' '''onAllActivities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''minimized''': Whether the window is minimized.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''bool'' '''isOnActivity(QString id) const '''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findModal()=0'''&lt;br /&gt;
* ''EffectWindowList'' '''mainWindows() const =0'''&lt;br /&gt;
* '''closeWindow() const '''&lt;br /&gt;
* '''setData(int role, const QVariant &amp;amp;data)=0''': Can be used to by effects to store arbitrary data in the EffectWindow.&lt;br /&gt;
* ''QVariant'' '''data(int role) const =0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::Effect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Anchor ====&lt;br /&gt;
    &lt;br /&gt;
* '''Left''': &lt;br /&gt;
* '''Top''': &lt;br /&gt;
* '''Right''': &lt;br /&gt;
* '''Bottom''': &lt;br /&gt;
* '''Horizontal''': &lt;br /&gt;
* '''Vertical''': &lt;br /&gt;
* '''Mouse''': &lt;br /&gt;
==== Attribute ====&lt;br /&gt;
    &lt;br /&gt;
* '''Opacity''': &lt;br /&gt;
* '''Brightness''': &lt;br /&gt;
* '''Saturation''': &lt;br /&gt;
* '''Scale''': &lt;br /&gt;
* '''Rotation''': &lt;br /&gt;
* '''Position''': &lt;br /&gt;
* '''Size''': &lt;br /&gt;
* '''Translation''': &lt;br /&gt;
* '''Clip''': &lt;br /&gt;
* '''Generic''': &lt;br /&gt;
* '''NonFloatBase''': &lt;br /&gt;
==== MetaType ====&lt;br /&gt;
    &lt;br /&gt;
* '''SourceAnchor''': &lt;br /&gt;
* '''TargetAnchor''': &lt;br /&gt;
* '''RelativeSourceX''': &lt;br /&gt;
* '''RelativeSourceY''': &lt;br /&gt;
* '''RelativeTargetX''': &lt;br /&gt;
* '''RelativeTargetY''': &lt;br /&gt;
* '''Axis''': &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationData ==&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Axis ====&lt;br /&gt;
    &lt;br /&gt;
* '''XAxis''': &lt;br /&gt;
* '''YAxis''': &lt;br /&gt;
* '''ZAxis''': &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''sourceAnchor'''&lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''targetAnchor'''&lt;br /&gt;
* ''int'' '''relativeSourceX'''&lt;br /&gt;
* ''int'' '''relativeSourceY'''&lt;br /&gt;
* ''int'' '''relativeTargetX'''&lt;br /&gt;
* ''int'' '''relativeTargetY'''&lt;br /&gt;
* ''Axis'' '''axis'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== DataRole ====&lt;br /&gt;
    &lt;br /&gt;
* '''WindowAddedGrabRole''': &lt;br /&gt;
* '''WindowClosedGrabRole''': &lt;br /&gt;
* '''WindowMinimizedGrabRole''': &lt;br /&gt;
* '''WindowUnminimizedGrabRole''': &lt;br /&gt;
* '''WindowForceBlurRole''': &lt;br /&gt;
* '''WindowBlurBehindRole''': &lt;br /&gt;
* '''LanczosCacheRole''': &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. w The window to check grabRole The grab role to check true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. key The key to search for defaultValue The value to return if the key is not found The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-10-28T09:33:26Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* '''callDBus(QString service, QString path, QString interface, QString method, QVariant arg..., QScriptValue callback = QScriptValue())''': Call a D-Bus method at (service, path, interface and method). A variable number of arguments can be added to the method call. The D-Bus call is always performed in an async way invoking the callback provided as the last (optional) argument. The reply values of the D-Bus method call are passed to the callback.&lt;br /&gt;
* '''registerUserActionsMenu(QScriptValue callback)''': Registers the passed in callback to be invoked whenever the User actions menu (Alt+F3 or right click on window decoration) is about to be shown. The callback is invoked with a reference to the Client for which the menu is shown. The callback can return either a single menu entry to be added to the menu or an own sub menu with multiple entries. The object for a menu entry should be {title: &amp;quot;My Menu entry&amp;quot;, checkable: true, checked: false, triggered: function (action) { // callback with triggered QAction}}, for a menu it should be {title: &amp;quot;My menu&amp;quot;, items: [{...}, {...}, ...] /*list with entries as described*/}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== ClientAreaOption ====&lt;br /&gt;
    &lt;br /&gt;
* '''PlacementArea''': window movement snapping area? ignore struts&lt;br /&gt;
* '''MovementArea''': &lt;br /&gt;
* '''MaximizeArea''': &lt;br /&gt;
* '''MaximizeFullArea''': &lt;br /&gt;
* '''FullScreenArea''': &lt;br /&gt;
* '''WorkArea''': &lt;br /&gt;
* '''FullArea''': &lt;br /&gt;
* '''ScreenArea''': &lt;br /&gt;
==== ElectricBorder ====&lt;br /&gt;
    &lt;br /&gt;
* '''ElectricTop''': &lt;br /&gt;
* '''ElectricTopRight''': &lt;br /&gt;
* '''ElectricRight''': &lt;br /&gt;
* '''ElectricBottomRight''': &lt;br /&gt;
* '''ElectricBottom''': &lt;br /&gt;
* '''ElectricBottomLeft''': &lt;br /&gt;
* '''ElectricLeft''': &lt;br /&gt;
* '''ElectricTopLeft''': &lt;br /&gt;
* '''ELECTRIC_COUNT''': &lt;br /&gt;
* '''ElectricNone''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop, KWin::Client *client)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': Signal emitted whenever the current activity changed. id id of the new activity&lt;br /&gt;
* '''activitiesChanged(const QString &amp;amp;id)''': Signal emitted whenever the list of activities changed. id id of the new activity&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== FocusPolicy ====&lt;br /&gt;
    &lt;br /&gt;
* '''ClickToFocus''': &lt;br /&gt;
* '''FocusFollowsMouse''': &lt;br /&gt;
* '''FocusUnderMouse''': &lt;br /&gt;
* '''FocusStrictlyUnderMouse''': &lt;br /&gt;
==== MouseCommand ====&lt;br /&gt;
    &lt;br /&gt;
* '''MouseRaise''': &lt;br /&gt;
* '''MouseLower''': &lt;br /&gt;
* '''MouseOperationsMenu''': &lt;br /&gt;
* '''MouseToggleRaiseAndLower''': &lt;br /&gt;
* '''MouseActivateAndRaise''': &lt;br /&gt;
* '''MouseActivateAndLower''': &lt;br /&gt;
* '''MouseActivate''': &lt;br /&gt;
* '''MouseActivateRaiseAndPassClick''': &lt;br /&gt;
* '''MouseActivateAndPassClick''': &lt;br /&gt;
* '''MouseMove''': &lt;br /&gt;
* '''MouseUnrestrictedMove''': &lt;br /&gt;
* '''MouseActivateRaiseAndMove''': &lt;br /&gt;
* '''MouseActivateRaiseAndUnrestrictedMove''': &lt;br /&gt;
* '''MouseResize''': &lt;br /&gt;
* '''MouseUnrestrictedResize''': &lt;br /&gt;
* '''MouseShade''': &lt;br /&gt;
* '''MouseSetShade''': &lt;br /&gt;
* '''MouseUnsetShade''': &lt;br /&gt;
* '''MouseMaximize''': &lt;br /&gt;
* '''MouseRestore''': &lt;br /&gt;
* '''MouseMinimize''': &lt;br /&gt;
* '''MouseNextDesktop''': &lt;br /&gt;
* '''MousePreviousDesktop''': &lt;br /&gt;
* '''MouseAbove''': &lt;br /&gt;
* '''MouseBelow''': &lt;br /&gt;
* '''MouseOpacityMore''': &lt;br /&gt;
* '''MouseOpacityLess''': &lt;br /&gt;
* '''MouseClose''': &lt;br /&gt;
* '''MousePreviousTab''': &lt;br /&gt;
* '''MouseNextTab''': &lt;br /&gt;
* '''MouseDragTab''': &lt;br /&gt;
* '''MouseNothing''': &lt;br /&gt;
==== MouseWheelCommand ====&lt;br /&gt;
    &lt;br /&gt;
* '''MouseWheelRaiseLower''': &lt;br /&gt;
* '''MouseWheelShadeUnshade''': &lt;br /&gt;
* '''MouseWheelMaximizeRestore''': &lt;br /&gt;
* '''MouseWheelAboveBelow''': &lt;br /&gt;
* '''MouseWheelPreviousNextDesktop''': &lt;br /&gt;
* '''MouseWheelChangeOpacity''': &lt;br /&gt;
* '''MouseWheelChangeCurrentTab''': &lt;br /&gt;
* '''MouseWheelNothing''': &lt;br /&gt;
==== @16 ====&lt;br /&gt;
    &lt;br /&gt;
* '''ElectricDisabled''': &lt;br /&gt;
* '''ElectricMoveOnly''': &lt;br /&gt;
* '''ElectricAlways''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''float'' '''electricBorderCornerRatio''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''uint'' '''vBlankTime'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
* ''bool'' '''glStrictBindingFollowsDriver''': Whether strict binding follows the driver or has been overwritten by a user defined config value. If true is set by the OpenGL Scene during initialization. If false glStrictBinding is set from a config value and not updated during scene initialization.&lt;br /&gt;
* ''bool'' '''glLegacy''': Whether legacy OpenGL should be used or OpenGL (ES) 2&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''electricBorderCornerRatioChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''vBlankTimeChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
* '''glStrictBindingFollowsDriverChanged()'''&lt;br /&gt;
* '''glLegacyChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''visibleRect'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''paddingChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
* '''needsRepaint()''': Emitted whenever the state changes in a way, that the Compositor should schedule a repaint of the scene.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Sizemode ====&lt;br /&gt;
    &lt;br /&gt;
* '''SizemodeAny''': &lt;br /&gt;
* '''SizemodeFixedW''': &lt;br /&gt;
* '''SizemodeFixedH''': &lt;br /&gt;
* '''SizemodeMax''': &lt;br /&gt;
==== CoordinateMode ====&lt;br /&gt;
    &lt;br /&gt;
* '''DecorationRelative''': &lt;br /&gt;
* '''WindowRelative''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the Client is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged(KWin::Client *client)''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* '''syncTabGroupFor(QString property, bool fromThisClient=false)''': Syncs the dynamic property fromThisClient or the to all members of the tabGroup() (if there is one) eg. if you call: client-&amp;gt;setProperty(&amp;quot;kwin_tiling_floats&amp;quot;, true); client-&amp;gt;syncTabGroupFor(&amp;quot;kwin_tiling_floats&amp;quot;, true) all clients in this tabGroup will have ::property(&amp;quot;kwin_tiling_floats&amp;quot;).toBool() == true WARNING: non dynamic properties are ignored - you're not supposed to alter/update such explicitly&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-10-27T18:14:59Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* '''callDBus(QString service, QString path, QString interface, QString method, QVariant arg..., QScriptValue callback = QScriptValue())''': Call a D-Bus method at (service, path, interface and method). A variable number of arguments can be added to the method call. The D-Bus call is always performed in an async way invoking the callback provided as the last (optional) argument. The reply values of the D-Bus method call are passed to the callback.&lt;br /&gt;
* '''QScriptValue callback''': Registers the passed in callback to be invoked whenever the User actions menu (Alt+F3 or right click on window decoration) is about to be shown. The callback is invoked with a reference to the Client for which the menu is shown. The callback can return either a single menu entry to be added to the menu or an own sub menu with multiple entries. The object for a menu entry should be {title: &amp;quot;My Menu entry&amp;quot;, checkable: true, checked: false, triggered: function (action) { // callback with triggered QAction}}, for a menu it should be {title: &amp;quot;My menu&amp;quot;, items: [{...}, {...}, ...] /*list with entries as described*/}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== ClientAreaOption ====&lt;br /&gt;
    &lt;br /&gt;
* '''PlacementArea''': window movement snapping area? ignore struts&lt;br /&gt;
* '''MovementArea''': &lt;br /&gt;
* '''MaximizeArea''': &lt;br /&gt;
* '''MaximizeFullArea''': &lt;br /&gt;
* '''FullScreenArea''': &lt;br /&gt;
* '''WorkArea''': &lt;br /&gt;
* '''FullArea''': &lt;br /&gt;
* '''ScreenArea''': &lt;br /&gt;
==== ElectricBorder ====&lt;br /&gt;
    &lt;br /&gt;
* '''ElectricTop''': &lt;br /&gt;
* '''ElectricTopRight''': &lt;br /&gt;
* '''ElectricRight''': &lt;br /&gt;
* '''ElectricBottomRight''': &lt;br /&gt;
* '''ElectricBottom''': &lt;br /&gt;
* '''ElectricBottomLeft''': &lt;br /&gt;
* '''ElectricLeft''': &lt;br /&gt;
* '''ElectricTopLeft''': &lt;br /&gt;
* '''ELECTRIC_COUNT''': &lt;br /&gt;
* '''ElectricNone''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop, KWin::Client *client)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': Signal emitted whenever the current activity changed. id id of the new activity&lt;br /&gt;
* '''activitiesChanged(const QString &amp;amp;id)''': Signal emitted whenever the list of activities changed. id id of the new activity&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== FocusPolicy ====&lt;br /&gt;
    &lt;br /&gt;
* '''ClickToFocus''': &lt;br /&gt;
* '''FocusFollowsMouse''': &lt;br /&gt;
* '''FocusUnderMouse''': &lt;br /&gt;
* '''FocusStrictlyUnderMouse''': &lt;br /&gt;
==== MouseCommand ====&lt;br /&gt;
    &lt;br /&gt;
* '''MouseRaise''': &lt;br /&gt;
* '''MouseLower''': &lt;br /&gt;
* '''MouseOperationsMenu''': &lt;br /&gt;
* '''MouseToggleRaiseAndLower''': &lt;br /&gt;
* '''MouseActivateAndRaise''': &lt;br /&gt;
* '''MouseActivateAndLower''': &lt;br /&gt;
* '''MouseActivate''': &lt;br /&gt;
* '''MouseActivateRaiseAndPassClick''': &lt;br /&gt;
* '''MouseActivateAndPassClick''': &lt;br /&gt;
* '''MouseMove''': &lt;br /&gt;
* '''MouseUnrestrictedMove''': &lt;br /&gt;
* '''MouseActivateRaiseAndMove''': &lt;br /&gt;
* '''MouseActivateRaiseAndUnrestrictedMove''': &lt;br /&gt;
* '''MouseResize''': &lt;br /&gt;
* '''MouseUnrestrictedResize''': &lt;br /&gt;
* '''MouseShade''': &lt;br /&gt;
* '''MouseSetShade''': &lt;br /&gt;
* '''MouseUnsetShade''': &lt;br /&gt;
* '''MouseMaximize''': &lt;br /&gt;
* '''MouseRestore''': &lt;br /&gt;
* '''MouseMinimize''': &lt;br /&gt;
* '''MouseNextDesktop''': &lt;br /&gt;
* '''MousePreviousDesktop''': &lt;br /&gt;
* '''MouseAbove''': &lt;br /&gt;
* '''MouseBelow''': &lt;br /&gt;
* '''MouseOpacityMore''': &lt;br /&gt;
* '''MouseOpacityLess''': &lt;br /&gt;
* '''MouseClose''': &lt;br /&gt;
* '''MousePreviousTab''': &lt;br /&gt;
* '''MouseNextTab''': &lt;br /&gt;
* '''MouseDragTab''': &lt;br /&gt;
* '''MouseNothing''': &lt;br /&gt;
==== MouseWheelCommand ====&lt;br /&gt;
    &lt;br /&gt;
* '''MouseWheelRaiseLower''': &lt;br /&gt;
* '''MouseWheelShadeUnshade''': &lt;br /&gt;
* '''MouseWheelMaximizeRestore''': &lt;br /&gt;
* '''MouseWheelAboveBelow''': &lt;br /&gt;
* '''MouseWheelPreviousNextDesktop''': &lt;br /&gt;
* '''MouseWheelChangeOpacity''': &lt;br /&gt;
* '''MouseWheelChangeCurrentTab''': &lt;br /&gt;
* '''MouseWheelNothing''': &lt;br /&gt;
==== @16 ====&lt;br /&gt;
    &lt;br /&gt;
* '''ElectricDisabled''': &lt;br /&gt;
* '''ElectricMoveOnly''': &lt;br /&gt;
* '''ElectricAlways''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''float'' '''electricBorderCornerRatio''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''uint'' '''vBlankTime'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
* ''bool'' '''glStrictBindingFollowsDriver''': Whether strict binding follows the driver or has been overwritten by a user defined config value. If true is set by the OpenGL Scene during initialization. If false glStrictBinding is set from a config value and not updated during scene initialization.&lt;br /&gt;
* ''bool'' '''glLegacy''': Whether legacy OpenGL should be used or OpenGL (ES) 2&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''electricBorderCornerRatioChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''vBlankTimeChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
* '''glStrictBindingFollowsDriverChanged()'''&lt;br /&gt;
* '''glLegacyChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''visibleRect'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''paddingChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
* '''needsRepaint()''': Emitted whenever the state changes in a way, that the Compositor should schedule a repaint of the scene.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Sizemode ====&lt;br /&gt;
    &lt;br /&gt;
* '''SizemodeAny''': &lt;br /&gt;
* '''SizemodeFixedW''': &lt;br /&gt;
* '''SizemodeFixedH''': &lt;br /&gt;
* '''SizemodeMax''': &lt;br /&gt;
==== CoordinateMode ====&lt;br /&gt;
    &lt;br /&gt;
* '''DecorationRelative''': &lt;br /&gt;
* '''WindowRelative''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the Client is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged(KWin::Client *client)''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* '''syncTabGroupFor(QString property, bool fromThisClient=false)''': Syncs the dynamic property fromThisClient or the to all members of the tabGroup() (if there is one) eg. if you call: client-&amp;gt;setProperty(&amp;quot;kwin_tiling_floats&amp;quot;, true); client-&amp;gt;syncTabGroupFor(&amp;quot;kwin_tiling_floats&amp;quot;, true) all clients in this tabGroup will have ::property(&amp;quot;kwin_tiling_floats&amp;quot;).toBool() == true WARNING: non dynamic properties are ignored - you're not supposed to alter/update such explicitly&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-10-27T18:10:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects&lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''int'' '''animationTime(int duration)''': Adjusts the passed in duration to the global animation time facator.&lt;br /&gt;
* ''int'' '''displayWidth()''': Width of the complete display (all screens).&lt;br /&gt;
* ''int'' '''displayHeight()''': Height of the complete display (all screens).&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. oldDesktop The previously current desktop newDesktop The new current desktop with The window which is taken over to the new desktop, can be NULL 4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. old The previous number of desktops in used. EffectsHandler::numberOfDesktops. 4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. w The added window 4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed 4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. w The new active window, or NULL if there is no active window. 4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. w The window which is going to be deleted. EffectWindow::refWindow EffectWindow::unrefWindow windowClosed 4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or EffectWindow::isUserResize. Whenever the geometry is updated the signal windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time! w The window which is being moved/resized windowStepUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. w The window which is being moved/resized geometry The geometry of the window in the current move/resize step. windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. w The window which has been moved/resized windowStartUserMovedResized windowFinishUserMovedResized 4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: restored: both horizontal and vertical are false horizontally maximized: horizontal is true and vertical is false vertically maximized: horizontal is false and vertical is true completely maximized: both horizontal and vertical are true w The window whose maximized state changed horizontal If true maximized horizontally vertical If true maximized vertically 4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. w The window whose geometry changed old The previous geometry windowUserMovedResized 4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) w The window whose geometry changed old The previous expandedGeometry() 4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. w The window whose opacity level is changed. oldOpacity The previous opacity level newOpacity The new opacity level 4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. w The window which was minimized 4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. w The window which was unminimized 4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. w The window which is scheduled for repainting r The damaged rect 4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode. refTabBox tabBoxClosed tabBoxUpdated tabBoxKeyEvent 4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again. unrefTabBox tabBoxAdded 4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox currentTabBoxWindowList currentTabBoxDesktopList currentTabBoxWindow currentTabBoxDesktop 4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly refTabBox 4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on windowInputMouseEvent. pos The new mouse position oldpos The previously mouse position buttons The pressed mouse buttons oldbuttons The previously pressed mouse buttons modifiers Pressed keyboard modifiers oldmodifiers Previously pressed keyboard modifiers. startMousePolling 4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed. w The window whose property changed, is null if it is a root window property atom The property 4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted. outline The geometry of the outline to render. hideOutline 4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline 4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. size The new screen size 4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed id id of the new current activity 4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity 4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity 4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::EffectWindow ==&lt;br /&gt;
Representation of a window used by/for Effect classes.&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== @15 ====&lt;br /&gt;
    &lt;br /&gt;
* '''PAINT_DISABLED''': Window will not be painted&lt;br /&gt;
* '''PAINT_DISABLED_BY_DELETE''': Window will not be painted because it is deleted&lt;br /&gt;
* '''PAINT_DISABLED_BY_DESKTOP''': Window will not be painted because of which desktop it's on&lt;br /&gt;
* '''PAINT_DISABLED_BY_MINIMIZE''': Window will not be painted because it is minimized&lt;br /&gt;
* '''PAINT_DISABLED_BY_TAB_GROUP''': Window will not be painted because it is not the active window in a client group&lt;br /&gt;
* '''PAINT_DISABLED_BY_ACTIVITY''': Window will not be painted because it's not on the current activity&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''expandedGeometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops'''&lt;br /&gt;
* ''bool'' '''onCurrentDesktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QString'' '''windowClass'''&lt;br /&gt;
* ''QString'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''managed''': Whether this EffectWindow is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this EffectWindow represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
* ''QRegion'' '''shape''': The Window's shape&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the window. Read from WM_NAME property together with a suffix for hostname and shortcut.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the window is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''modal''': Whether the window represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the window is moveable. Even if it is not moveable, it might be possible to move it to another screen. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the window can be moved to another screen. moveable&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all.&lt;br /&gt;
* ''bool'' '''move''': Whether the window is currently being moved by the user.&lt;br /&gt;
* ''bool'' '''resize''': Whether the window is currently being resized by the user.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the window should be excluded from window switching effects.&lt;br /&gt;
* ''QRect'' '''contentsRect''': Geometry of the actual window contents inside the whole (including decorations) window.&lt;br /&gt;
* ''QRect'' '''decorationInnerRect''': Geometry of the transparent rect in the decoration. May be different from contentsRect if the decoration is extended into the client area.&lt;br /&gt;
* ''bool'' '''hasDecoration'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''onCurrentActivity'''&lt;br /&gt;
* ''bool'' '''onAllActivities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''minimized''': Whether the window is minimized.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''bool'' '''isOnActivity(QString id) const '''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findModal()=0'''&lt;br /&gt;
* ''EffectWindowList'' '''mainWindows() const =0'''&lt;br /&gt;
* '''closeWindow() const '''&lt;br /&gt;
* '''setData(int role, const QVariant &amp;amp;data)=0''': Can be used to by effects to store arbitrary data in the EffectWindow.&lt;br /&gt;
* ''QVariant'' '''data(int role) const =0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::Effect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Anchor ====&lt;br /&gt;
    &lt;br /&gt;
* '''Left''': &lt;br /&gt;
* '''Top''': &lt;br /&gt;
* '''Right''': &lt;br /&gt;
* '''Bottom''': &lt;br /&gt;
* '''Horizontal''': &lt;br /&gt;
* '''Vertical''': &lt;br /&gt;
* '''Mouse''': &lt;br /&gt;
==== Attribute ====&lt;br /&gt;
    &lt;br /&gt;
* '''Opacity''': &lt;br /&gt;
* '''Brightness''': &lt;br /&gt;
* '''Saturation''': &lt;br /&gt;
* '''Scale''': &lt;br /&gt;
* '''Rotation''': &lt;br /&gt;
* '''Position''': &lt;br /&gt;
* '''Size''': &lt;br /&gt;
* '''Translation''': &lt;br /&gt;
* '''Clip''': &lt;br /&gt;
* '''Generic''': &lt;br /&gt;
* '''NonFloatBase''': &lt;br /&gt;
==== MetaType ====&lt;br /&gt;
    &lt;br /&gt;
* '''SourceAnchor''': &lt;br /&gt;
* '''TargetAnchor''': &lt;br /&gt;
* '''RelativeSourceX''': &lt;br /&gt;
* '''RelativeSourceY''': &lt;br /&gt;
* '''RelativeTargetX''': &lt;br /&gt;
* '''RelativeTargetY''': &lt;br /&gt;
* '''Axis''': &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationData ==&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Axis ====&lt;br /&gt;
    &lt;br /&gt;
* '''XAxis''': &lt;br /&gt;
* '''YAxis''': &lt;br /&gt;
* '''ZAxis''': &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''sourceAnchor'''&lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''targetAnchor'''&lt;br /&gt;
* ''int'' '''relativeSourceX'''&lt;br /&gt;
* ''int'' '''relativeSourceY'''&lt;br /&gt;
* ''int'' '''relativeTargetX'''&lt;br /&gt;
* ''int'' '''relativeTargetY'''&lt;br /&gt;
* ''Axis'' '''axis'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== DataRole ====&lt;br /&gt;
    &lt;br /&gt;
* '''WindowAddedGrabRole''': &lt;br /&gt;
* '''WindowClosedGrabRole''': &lt;br /&gt;
* '''WindowMinimizedGrabRole''': &lt;br /&gt;
* '''WindowUnminimizedGrabRole''': &lt;br /&gt;
* '''WindowForceBlurRole''': &lt;br /&gt;
* '''WindowBlurBehindRole''': &lt;br /&gt;
* '''LanczosCacheRole''': &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. w The window to check grabRole The grab role to check true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. key The key to search for defaultValue The value to return if the key is not found The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-10-27T17:35:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: enums&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects&lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''int'' '''animationTime(int duration)''': Adjusts the passed in duration to the global animation time facator.&lt;br /&gt;
* ''int'' '''displayWidth()''': Width of the complete display (all screens).&lt;br /&gt;
* ''int'' '''displayHeight()''': Height of the complete display (all screens).&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. oldDesktop The previously current desktop newDesktop The new current desktop with The window which is taken over to the new desktop, can be NULL 4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. old The previous number of desktops in used. EffectsHandler::numberOfDesktops. 4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. w The added window 4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed 4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. w The new active window, or NULL if there is no active window. 4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. w The window which is going to be deleted. EffectWindow::refWindow EffectWindow::unrefWindow windowClosed 4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or EffectWindow::isUserResize. Whenever the geometry is updated the signal windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time! w The window which is being moved/resized windowStepUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. w The window which is being moved/resized geometry The geometry of the window in the current move/resize step. windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. w The window which has been moved/resized windowStartUserMovedResized windowFinishUserMovedResized 4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: restored: both horizontal and vertical are false horizontally maximized: horizontal is true and vertical is false vertically maximized: horizontal is false and vertical is true completely maximized: both horizontal and vertical are true w The window whose maximized state changed horizontal If true maximized horizontally vertical If true maximized vertically 4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. w The window whose geometry changed old The previous geometry windowUserMovedResized 4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) w The window whose geometry changed old The previous expandedGeometry() 4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. w The window whose opacity level is changed. oldOpacity The previous opacity level newOpacity The new opacity level 4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. w The window which was minimized 4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. w The window which was unminimized 4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. w The window which is scheduled for repainting r The damaged rect 4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode. refTabBox tabBoxClosed tabBoxUpdated tabBoxKeyEvent 4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again. unrefTabBox tabBoxAdded 4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox currentTabBoxWindowList currentTabBoxDesktopList currentTabBoxWindow currentTabBoxDesktop 4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly refTabBox 4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on windowInputMouseEvent. pos The new mouse position oldpos The previously mouse position buttons The pressed mouse buttons oldbuttons The previously pressed mouse buttons modifiers Pressed keyboard modifiers oldmodifiers Previously pressed keyboard modifiers. startMousePolling 4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed. w The window whose property changed, is null if it is a root window property atom The property 4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted. outline The geometry of the outline to render. hideOutline 4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline 4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. size The new screen size 4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed id id of the new current activity 4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity 4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity 4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectWindow ==&lt;br /&gt;
Representation of a window used by/for Effect classes.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''expandedGeometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops'''&lt;br /&gt;
* ''bool'' '''onCurrentDesktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QString'' '''windowClass'''&lt;br /&gt;
* ''QString'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''managed''': Whether this EffectWindow is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this EffectWindow represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
* ''QRegion'' '''shape''': The Window's shape&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the window. Read from WM_NAME property together with a suffix for hostname and shortcut.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the window is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''modal''': Whether the window represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the window is moveable. Even if it is not moveable, it might be possible to move it to another screen. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the window can be moved to another screen. moveable&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all.&lt;br /&gt;
* ''bool'' '''move''': Whether the window is currently being moved by the user.&lt;br /&gt;
* ''bool'' '''resize''': Whether the window is currently being resized by the user.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the window should be excluded from window switching effects.&lt;br /&gt;
* ''QRect'' '''contentsRect''': Geometry of the actual window contents inside the whole (including decorations) window.&lt;br /&gt;
* ''QRect'' '''decorationInnerRect''': Geometry of the transparent rect in the decoration. May be different from contentsRect if the decoration is extended into the client area.&lt;br /&gt;
* ''bool'' '''hasDecoration'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''onCurrentActivity'''&lt;br /&gt;
* ''bool'' '''onAllActivities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''minimized''': Whether the window is minimized.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''bool'' '''isOnActivity(QString id) const '''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findModal()=0'''&lt;br /&gt;
* ''EffectWindowList'' '''mainWindows() const =0'''&lt;br /&gt;
* '''closeWindow() const '''&lt;br /&gt;
* '''setData(int role, const QVariant &amp;amp;data)=0''': Can be used to by effects to store arbitrary data in the EffectWindow.&lt;br /&gt;
* ''QVariant'' '''data(int role) const =0'''&lt;br /&gt;
&lt;br /&gt;
== KWin::AnimationEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::Effect&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Anchor ====&lt;br /&gt;
    &lt;br /&gt;
* '''Left''': &lt;br /&gt;
* '''Top''': &lt;br /&gt;
* '''Right''': &lt;br /&gt;
* '''Bottom''': &lt;br /&gt;
* '''Horizontal''': &lt;br /&gt;
* '''Vertical''': &lt;br /&gt;
* '''Mouse''': &lt;br /&gt;
==== Attribute ====&lt;br /&gt;
    &lt;br /&gt;
* '''Opacity''': &lt;br /&gt;
* '''Brightness''': &lt;br /&gt;
* '''Saturation''': &lt;br /&gt;
* '''Scale''': &lt;br /&gt;
* '''Rotation''': &lt;br /&gt;
* '''Position''': &lt;br /&gt;
* '''Size''': &lt;br /&gt;
* '''Translation''': &lt;br /&gt;
* '''Clip''': &lt;br /&gt;
* '''Generic''': &lt;br /&gt;
* '''NonFloatBase''': &lt;br /&gt;
==== MetaType ====&lt;br /&gt;
    &lt;br /&gt;
* '''SourceAnchor''': &lt;br /&gt;
* '''TargetAnchor''': &lt;br /&gt;
* '''RelativeSourceX''': &lt;br /&gt;
* '''RelativeSourceY''': &lt;br /&gt;
* '''RelativeTargetX''': &lt;br /&gt;
* '''RelativeTargetY''': &lt;br /&gt;
* '''Axis''': &lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationData ==&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== Axis ====&lt;br /&gt;
    &lt;br /&gt;
* '''XAxis''': &lt;br /&gt;
* '''YAxis''': &lt;br /&gt;
* '''ZAxis''':&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''sourceAnchor'''&lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''targetAnchor'''&lt;br /&gt;
* ''int'' '''relativeSourceX'''&lt;br /&gt;
* ''int'' '''relativeSourceY'''&lt;br /&gt;
* ''int'' '''relativeTargetX'''&lt;br /&gt;
* ''int'' '''relativeTargetY'''&lt;br /&gt;
* ''Axis'' '''axis'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
  &lt;br /&gt;
==== DataRole ====&lt;br /&gt;
    &lt;br /&gt;
* '''WindowAddedGrabRole''': &lt;br /&gt;
* '''WindowClosedGrabRole''': &lt;br /&gt;
* '''WindowMinimizedGrabRole''': &lt;br /&gt;
* '''WindowUnminimizedGrabRole''': &lt;br /&gt;
* '''WindowForceBlurRole''': &lt;br /&gt;
* '''WindowBlurBehindRole''': &lt;br /&gt;
* '''LanczosCacheRole''':&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. w The window to check grabRole The grab role to check true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. key The key to search for defaultValue The value to return if the key is not found The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-10-27T16:55:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects&lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''int'' '''animationTime(int duration)''': Adjusts the passed in duration to the global animation time facator.&lt;br /&gt;
* ''int'' '''displayWidth()''': Width of the complete display (all screens).&lt;br /&gt;
* ''int'' '''displayHeight()''': Height of the complete display (all screens).&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. oldDesktop The previously current desktop newDesktop The new current desktop with The window which is taken over to the new desktop, can be NULL 4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. old The previous number of desktops in used. EffectsHandler::numberOfDesktops. 4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. w The added window 4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed 4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. w The new active window, or NULL if there is no active window. 4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. w The window which is going to be deleted. EffectWindow::refWindow EffectWindow::unrefWindow windowClosed 4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or EffectWindow::isUserResize. Whenever the geometry is updated the signal windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time! w The window which is being moved/resized windowStepUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. w The window which is being moved/resized geometry The geometry of the window in the current move/resize step. windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. w The window which has been moved/resized windowStartUserMovedResized windowFinishUserMovedResized 4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: restored: both horizontal and vertical are false horizontally maximized: horizontal is true and vertical is false vertically maximized: horizontal is false and vertical is true completely maximized: both horizontal and vertical are true w The window whose maximized state changed horizontal If true maximized horizontally vertical If true maximized vertically 4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. w The window whose geometry changed old The previous geometry windowUserMovedResized 4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) w The window whose geometry changed old The previous expandedGeometry() 4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. w The window whose opacity level is changed. oldOpacity The previous opacity level newOpacity The new opacity level 4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. w The window which was minimized 4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. w The window which was unminimized 4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. w The window which is scheduled for repainting r The damaged rect 4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode. refTabBox tabBoxClosed tabBoxUpdated tabBoxKeyEvent 4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again. unrefTabBox tabBoxAdded 4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox currentTabBoxWindowList currentTabBoxDesktopList currentTabBoxWindow currentTabBoxDesktop 4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly refTabBox 4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on windowInputMouseEvent. pos The new mouse position oldpos The previously mouse position buttons The pressed mouse buttons oldbuttons The previously pressed mouse buttons modifiers Pressed keyboard modifiers oldmodifiers Previously pressed keyboard modifiers. startMousePolling 4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed. w The window whose property changed, is null if it is a root window property atom The property 4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted. outline The geometry of the outline to render. hideOutline 4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline 4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. size The new screen size 4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed id id of the new current activity 4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity 4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity 4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectWindow ==&lt;br /&gt;
Representation of a window used by/for Effect classes.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''expandedGeometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops'''&lt;br /&gt;
* ''bool'' '''onCurrentDesktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QString'' '''windowClass'''&lt;br /&gt;
* ''QString'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''managed''': Whether this EffectWindow is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this EffectWindow represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
* ''QRegion'' '''shape''': The Window's shape&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the window. Read from WM_NAME property together with a suffix for hostname and shortcut.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the window is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''modal''': Whether the window represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the window is moveable. Even if it is not moveable, it might be possible to move it to another screen. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the window can be moved to another screen. moveable&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all.&lt;br /&gt;
* ''bool'' '''move''': Whether the window is currently being moved by the user.&lt;br /&gt;
* ''bool'' '''resize''': Whether the window is currently being resized by the user.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the window should be excluded from window switching effects.&lt;br /&gt;
* ''QRect'' '''contentsRect''': Geometry of the actual window contents inside the whole (including decorations) window.&lt;br /&gt;
* ''QRect'' '''decorationInnerRect''': Geometry of the transparent rect in the decoration. May be different from contentsRect if the decoration is extended into the client area.&lt;br /&gt;
* ''bool'' '''hasDecoration'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''onCurrentActivity'''&lt;br /&gt;
* ''bool'' '''onAllActivities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''minimized''': Whether the window is minimized.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''bool'' '''isOnActivity(QString id) const '''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findModal()=0'''&lt;br /&gt;
* ''EffectWindowList'' '''mainWindows() const =0'''&lt;br /&gt;
* '''closeWindow() const '''&lt;br /&gt;
* '''setData(int role, const QVariant &amp;amp;data)=0''': Can be used to by effects to store arbitrary data in the EffectWindow.&lt;br /&gt;
* ''QVariant'' '''data(int role) const =0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationData ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''sourceAnchor'''&lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''targetAnchor'''&lt;br /&gt;
* ''int'' '''relativeSourceX'''&lt;br /&gt;
* ''int'' '''relativeSourceY'''&lt;br /&gt;
* ''int'' '''relativeTargetX'''&lt;br /&gt;
* ''int'' '''relativeTargetY'''&lt;br /&gt;
* ''Axis'' '''axis'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. w The window to check grabRole The grab role to check true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. key The key to search for defaultValue The value to return if the key is not found The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-10-26T14:19:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect.&lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. oldDesktop The previously current desktop newDesktop The new current desktop with The window which is taken over to the new desktop, can be NULL 4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. old The previous number of desktops in used. EffectsHandler::numberOfDesktops. 4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. w The added window 4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed 4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. w The new active window, or NULL if there is no active window. 4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. w The window which is going to be deleted. EffectWindow::refWindow EffectWindow::unrefWindow windowClosed 4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or EffectWindow::isUserResize. Whenever the geometry is updated the signal windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time! w The window which is being moved/resized windowStepUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. w The window which is being moved/resized geometry The geometry of the window in the current move/resize step. windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. w The window which has been moved/resized windowStartUserMovedResized windowFinishUserMovedResized 4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: restored: both horizontal and vertical are false horizontally maximized: horizontal is true and vertical is false vertically maximized: horizontal is false and vertical is true completely maximized: both horizontal and vertical are true w The window whose maximized state changed horizontal If true maximized horizontally vertical If true maximized vertically 4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. w The window whose geometry changed old The previous geometry windowUserMovedResized 4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) w The window whose geometry changed old The previous expandedGeometry() 4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. w The window whose opacity level is changed. oldOpacity The previous opacity level newOpacity The new opacity level 4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. w The window which was minimized 4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. w The window which was unminimized 4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. w The window which is scheduled for repainting r The damaged rect 4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode. refTabBox tabBoxClosed tabBoxUpdated tabBoxKeyEvent 4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again. unrefTabBox tabBoxAdded 4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox currentTabBoxWindowList currentTabBoxDesktopList currentTabBoxWindow currentTabBoxDesktop 4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly refTabBox 4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on windowInputMouseEvent. pos The new mouse position oldpos The previously mouse position buttons The pressed mouse buttons oldbuttons The previously pressed mouse buttons modifiers Pressed keyboard modifiers oldmodifiers Previously pressed keyboard modifiers. startMousePolling 4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed. w The window whose property changed, is null if it is a root window property atom The property 4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted. outline The geometry of the outline to render. hideOutline 4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline 4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. size The new screen size 4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed id id of the new current activity 4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity 4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity 4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectWindow ==&lt;br /&gt;
Representation of a window used by/for Effect classes.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''QRect'' '''expandedGeometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops'''&lt;br /&gt;
* ''bool'' '''onCurrentDesktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QString'' '''windowClass'''&lt;br /&gt;
* ''QString'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''managed''': Whether this EffectWindow is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this EffectWindow represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
* ''QRegion'' '''shape''': The Window's shape&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the window. Read from WM_NAME property together with a suffix for hostname and shortcut.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the window is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''modal''': Whether the window represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the window is moveable. Even if it is not moveable, it might be possible to move it to another screen. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the window can be moved to another screen. moveable&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all.&lt;br /&gt;
* ''bool'' '''move''': Whether the window is currently being moved by the user.&lt;br /&gt;
* ''bool'' '''resize''': Whether the window is currently being resized by the user.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the window should be excluded from window switching effects.&lt;br /&gt;
* ''QRect'' '''contentsRect''': Geometry of the actual window contents inside the whole (including decorations) window.&lt;br /&gt;
* ''QRect'' '''decorationInnerRect''': Geometry of the transparent rect in the decoration. May be different from contentsRect if the decoration is extended into the client area.&lt;br /&gt;
* ''bool'' '''hasDecoration'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''onCurrentActivity'''&lt;br /&gt;
* ''bool'' '''onAllActivities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''minimized''': Whether the window is minimized.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''bool'' '''isOnActivity(QString id) const '''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findModal()=0'''&lt;br /&gt;
* ''EffectWindowList'' '''mainWindows() const =0'''&lt;br /&gt;
* '''closeWindow() const '''&lt;br /&gt;
* '''setData(int role, const QVariant &amp;amp;data)=0''': Can be used to by effects to store arbitrary data in the EffectWindow.&lt;br /&gt;
* ''QVariant'' '''data(int role) const =0'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::AnimationData ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''sourceAnchor'''&lt;br /&gt;
* ''KWin::AnimationEffect::Anchor'' '''targetAnchor'''&lt;br /&gt;
* ''int'' '''relativeSourceX'''&lt;br /&gt;
* ''int'' '''relativeSourceY'''&lt;br /&gt;
* ''int'' '''relativeTargetX'''&lt;br /&gt;
* ''int'' '''relativeTargetY'''&lt;br /&gt;
* ''Axis'' '''axis'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. w The window to check grabRole The grab role to check true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. key The key to search for defaultValue The value to return if the key is not found The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API</id>
		<title>Development/Tutorials/KWin/Effects/JS API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Effects/JS_API"/>
				<updated>2012-10-26T14:09:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Created page with &amp;quot;== Global == Methods and properties added to the global JavaScript object. === Read-only Properties ===    * ''KWin::ScriptedEffect'' '''effect''': Global property to the actu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::ScriptedEffect'' '''effect''': Global property to the actual Effect.&lt;br /&gt;
* ''KWin::EffectsHandler'' '''effects''': Global property to the core wrapper of KWin Effects.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
== KWin::EffectsHandler ==&lt;br /&gt;
Manager class that handles all the effects.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''bool'' '''optionRollOverDesktops'''&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''qreal'' '''animationTimeFactor''': Factor by which animation speed in the effect should be modified (multiplied). If configurable in the effect itself, the option should have also 'default' animation speed. The actual value should be determined using animationTime(). Note: The factor can be also 0, so make sure your code can cope with 0ms time if used manually.&lt;br /&gt;
* ''QList&amp;lt; KWin::EffectWindow * &amp;gt;'' '''stackingOrder'''&lt;br /&gt;
* ''bool'' '''decorationsHaveAlpha''': Whether window decorations use the alpha channel.&lt;br /&gt;
* ''bool'' '''decorationSupportsBlurBehind''': Whether the window decorations support blurring behind the decoration.&lt;br /&gt;
* ''CompositingType'' '''compositingType'''&lt;br /&gt;
* ''QPoint'' '''cursorPos'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::EffectWindow'' '''activeWindow'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop, KWin::EffectWindow *with)''': Signal emitted when the current desktop changed. oldDesktop The previously current desktop newDesktop The new current desktop with The window which is taken over to the new desktop, can be NULL 4.9&lt;br /&gt;
* '''desktopChanged(int oldDesktop, int newDesktop)''': 4.7 Deprecated&lt;br /&gt;
* '''numberDesktopsChanged(int old)''': Signal emitted when the number of currently existing desktops is changed. old The previous number of desktops in used. EffectsHandler::numberOfDesktops. 4.7&lt;br /&gt;
* '''windowAdded(KWin::EffectWindow *w)''': Signal emitted when a new window has been added to the Workspace. w The added window 4.7&lt;br /&gt;
* '''windowClosed(KWin::EffectWindow *w)''': Signal emitted when a window is being removed from the Workspace. An effect which wants to animate the window closing should connect to this signal and reference the window by using w The window which is being closed 4.7&lt;br /&gt;
* '''windowActivated(KWin::EffectWindow *w)''': Signal emitted when a window get's activated. w The new active window, or NULL if there is no active window. 4.7&lt;br /&gt;
* '''windowDeleted(KWin::EffectWindow *w)''': Signal emitted when a window is deleted. This means that a closed window is not referenced any more. An effect bookkeeping the closed windows should connect to this signal to clean up the internal references. w The window which is going to be deleted. EffectWindow::refWindow EffectWindow::unrefWindow windowClosed 4.7&lt;br /&gt;
* '''windowStartUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when a user begins a window move or resize operation. To figure out whether the user resizes or moves the window use or EffectWindow::isUserResize. Whenever the geometry is updated the signal windowStepUserMovedResized is emitted with the current geometry. The move/resize operation ends with the signal windowFinishUserMovedResized. Only one window can be moved/resized by the user at the same time! w The window which is being moved/resized windowStepUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowStepUserMovedResized(KWin::EffectWindow *w, const QRect &amp;amp;geometry)''': Signal emitted during a move/resize operation when the user changed the geometry. Please note: KWin supports two operation modes. In one mode all changes are applied instantly. This means the window's geometry matches the passed in geometry. In the other mode the geometry is changed after the user ended the move/resize mode. The geometry differs from the window's geometry. Also the window's pixmap still has the same size as before. Depending what the effect wants to do it would be recommended to scale/translate the window. w The window which is being moved/resized geometry The geometry of the window in the current move/resize step. windowStartUserMovedResized windowFinishUserMovedResized EffectWindow::isUserMove EffectWindow::isUserResize 4.7&lt;br /&gt;
* '''windowFinishUserMovedResized(KWin::EffectWindow *w)''': Signal emitted when the user finishes move/resize of window w. w The window which has been moved/resized windowStartUserMovedResized windowFinishUserMovedResized 4.7&lt;br /&gt;
* '''windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical)''': Signal emitted when the maximized state of the window w changed. A window can be in one of four states: restored: both horizontal and vertical are false horizontally maximized: horizontal is true and vertical is false vertically maximized: horizontal is false and vertical is true completely maximized: both horizontal and vertical are true w The window whose maximized state changed horizontal If true maximized horizontally vertical If true maximized vertically 4.7&lt;br /&gt;
* '''windowGeometryShapeChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the geometry or shape of a window changed. This is caused if the window changes geometry without user interaction. E.g. the decoration is changed. This is in opposite to windowUserMovedResized which is caused by direct user interaction. w The window whose geometry changed old The previous geometry windowUserMovedResized 4.7&lt;br /&gt;
* '''windowPaddingChanged(KWin::EffectWindow *w, const QRect &amp;amp;old)''': Signal emitted when the padding of a window changed. (eg. shadow size) w The window whose geometry changed old The previous expandedGeometry() 4.9&lt;br /&gt;
* '''windowOpacityChanged(KWin::EffectWindow *w, qreal oldOpacity, qreal newOpacity)''': Signal emitted when the windows opacity is changed. w The window whose opacity level is changed. oldOpacity The previous opacity level newOpacity The new opacity level 4.7&lt;br /&gt;
* '''windowMinimized(KWin::EffectWindow *w)''': Signal emitted when a window got minimized. w The window which was minimized 4.7&lt;br /&gt;
* '''windowUnminimized(KWin::EffectWindow *w)''': Signal emitted when a window got unminimized. w The window which was unminimized 4.7&lt;br /&gt;
* '''windowDamaged(KWin::EffectWindow *w, const QRect &amp;amp;r)''': Signal emitted when an area of a window is scheduled for repainting. Use this signal in an effect if another area needs to be synced as well. w The window which is scheduled for repainting r The damaged rect 4.7&lt;br /&gt;
* '''tabBoxAdded(int mode)''': Signal emitted when a tabbox is added. An effect who wants to replace the tabbox with itself should use mode The TabBoxMode. refTabBox tabBoxClosed tabBoxUpdated tabBoxKeyEvent 4.7&lt;br /&gt;
* '''tabBoxClosed()''': Signal emitted when the TabBox was closed by KWin core. An effect which referenced the TabBox should use to unref again. unrefTabBox tabBoxAdded 4.7&lt;br /&gt;
* '''tabBoxUpdated()''': Signal emitted when the selected TabBox window changed or the TabBox List changed. An effect should only response to this signal if it referenced the TabBox with refTabBox currentTabBoxWindowList currentTabBoxDesktopList currentTabBoxWindow currentTabBoxDesktop 4.7&lt;br /&gt;
* '''tabBoxKeyEvent(QKeyEvent *event)''': Signal emitted when a key event, which is not handled by TabBox directly is, happens while TabBox is active. An effect might use the key event to e.g. change the selected window. An effect should only response to this signal if it referenced the TabBox with event The key event not handled by TabBox directly refTabBox 4.7&lt;br /&gt;
* '''currentTabAboutToChange(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabAdded(KWin::EffectWindow *from, KWin::EffectWindow *to)'''&lt;br /&gt;
* '''tabRemoved(KWin::EffectWindow *c, KWin::EffectWindow *group)'''&lt;br /&gt;
* '''mouseChanged(const QPoint &amp;amp;pos, const QPoint &amp;amp;oldpos, Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons, Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers)''': Signal emitted when mouse changed. If an effect needs to get updated mouse positions, it needs to first call For a fullscreen effect it is better to use an input window and react on windowInputMouseEvent. pos The new mouse position oldpos The previously mouse position buttons The pressed mouse buttons oldbuttons The previously pressed mouse buttons modifiers Pressed keyboard modifiers oldmodifiers Previously pressed keyboard modifiers. startMousePolling 4.7&lt;br /&gt;
* '''propertyNotify(KWin::EffectWindow *w, long atom)''': Receives events registered for using Use readProperty() to get the property data. Note that the property may be already set on the window, so doing the same processing from windowAdded() (e.g. simply calling propertyNotify() from it) is usually needed. w The window whose property changed, is null if it is a root window property atom The property 4.7&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;outline)''': Requests to show an outline. An effect providing to show an outline should connect to the signal and render an outline. The outline should be shown till the signal is emitted again with a new geometry or the signal is emitted. outline The geometry of the outline to render. hideOutline 4.7&lt;br /&gt;
* '''hideOutline()''': Signal emitted when the outline should no longer be shown. showOutline 4.7&lt;br /&gt;
* '''screenGeometryChanged(const QSize &amp;amp;size)''': Signal emitted after the screen geometry changed (e.g. add of a monitor). Effects using displayWidth()/displayHeight() to cache information should react on this signal and update the caches. size The new screen size 4.8&lt;br /&gt;
* '''currentActivityChanged(const QString &amp;amp;id)''': This signal is emitted when the global activity is changed id id of the new current activity 4.9&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity 4.9&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity 4.9&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''moveWindow(KWin::EffectWindow *w, const QPoint &amp;amp;pos, bool snap=false, double snapAdjust=1.0)=0'''&lt;br /&gt;
* '''windowToDesktop(KWin::EffectWindow *w, int desktop)=0'''&lt;br /&gt;
* '''windowToScreen(KWin::EffectWindow *w, int screen)=0'''&lt;br /&gt;
* ''int'' '''desktopAbove(int desktop=0, bool wrap=true) const =0''': The ID of the desktop above desktop id. Wraps around to the bottom of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToRight(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the right of desktop id. Wraps around to the left of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopBelow(int desktop=0, bool wrap=true) const =0''': The ID of the desktop below desktop id. Wraps around to the top of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''int'' '''desktopToLeft(int desktop=0, bool wrap=true) const =0''': The ID of the desktop to the left of desktop id. Wraps around to the right of the layout if wrap is set. If id is not set use the current one.&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const =0'''&lt;br /&gt;
* ''int'' '''screenNumber(const QPoint &amp;amp;pos) const =0'''&lt;br /&gt;
* ''KWin::EffectWindow *'' '''findWindow(WId id) const =0'''&lt;br /&gt;
* '''addRepaintFull()=0''': Schedules the entire workspace to be repainted next time. If you call it during painting (including prepaint) then it does not affect the current painting.&lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)=0'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)=0'''&lt;br /&gt;
&lt;br /&gt;
== KWin::ScriptedEffect ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KWin::AnimationEffect&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()''': Signal emitted whenever the effect's config changed.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''animate(KWin::EffectWindow *w, Attribute a, int ms, KWin::FPx2 to, KWin::FPx2 from=KWin::FPx2(), KWin::AnimationData *data=NULL, QEasingCurve curve=QEasingCurve(), int delay=0)'''&lt;br /&gt;
* ''bool'' '''isGrabbed(KWin::EffectWindow *w, DataRole grabRole)''': Whether another effect has grabbed the w with the given grabRole. w The window to check grabRole The grab role to check true if another window has grabbed the effect, false otherwise&lt;br /&gt;
* ''QVariant'' '''readConfig(const QString &amp;amp;key, const QVariant defaultValue=QVariant())''': Reads the value from the configuration data for the given key. key The key to search for defaultValue The value to return if the key is not found The config value if present&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-25T20:23:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadtawdiget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows ({{bug |102607}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt ({{bug |266596}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects ({{bug |296773}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Animate Window Maximize/Restore ({{bug |308990}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ExtendedBorderRegion to stable  API ({{bug |308994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support shortened titles like in bespin in all decorations ({{bug |308995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Mouse Click effect ({{bug |309006}}, Review 105780)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Decorations not visible ({{bug |305875}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|drag-and-drop between windows by cover switch alt-tab causes apps to crash ({{bug |179077}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add a rule to select the screen ({{bug |183996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Need Mouse navigation in flip switch mode ({{bug |244439}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow direct rendering with fglrx ({{bug |301103}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Don't use OpenGL matrix stack in OpenGL 2 backend ({{bug |303093}}, Review 105455)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Refactor Screen/Window PaintData ({{bug |303314}}, Review 105141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Rapid flickering in locked screen -- makes it difficult to unlock ({{bug |303579}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|double click menu to close needs GUI config ({{bug |305738}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Toplevel::windowType() needs performance improvements ({{bug |306384}}, Review 106349)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GLPlatform should recommend either OpenGL1 or OpenGL2 compositing ({{bug |306436}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Zoom effect broken in master ({{bug |307609}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin fails to build when the GLES support is disabled ({{bug |307866}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Some effect authors are listed as &amp;quot;Name1 &amp;amp; Name2&amp;quot; ({{bug |307928}}, Review 106880)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add screen management actions to window context menus ({{bug |269207}}, Review 106065)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move Workspace's compositing functionality to own class Compositor ({{bug |299277}}, Review 102420)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Option to disable close on double click in Aurorae ({{bug |301327}}, Review 106160)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove Tiling Support From KWin ({{bug |303090}}, Review 105546)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow Scripts to add menus to useractions menu ({{bug |303756}}, Review 106285)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Generic QML support for Aurorae Themes ({{bug |303810}}, Review 105768)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Split out Useractions Menu from Workspace ({{bug |305832}}, Review 106085)|mgraesslin@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureInProgress|kwin|Implement color correction (Review 106141)|skeletk13@gmail.com|Casian Andrei}}&lt;br /&gt;
{{FeatureInProgress|oxygen decoration|Implement ExtendedBorderRegion support, to resize windows outside of their actual borders|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|oxygen style|Implement BlurBehind semi-transparent tooltips when available|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement parallel sort algorithm|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Add GUI option for the &amp;quot;Rename Inline&amp;quot; setting|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Add &amp;quot;Icon Size&amp;quot; submenu to the Places Panel context menu|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Main Window UI Reorganization|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Code Editor Configuration Dialog|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show a message when keyboard layout visualizion isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Calculator|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Umbrello|Line based diagram grid |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-25T17:50:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadtawdiget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows ({{bug |102607}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt ({{bug |266596}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects ({{bug |296773}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Animate Window Maximize/Restore ({{bug |308990}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Configurable quick tile area ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Decorations not visible ({{bug |305875}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|drag-and-drop between windows by cover switch alt-tab causes apps to crash ({{bug |179077}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add a rule to select the screen ({{bug |183996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Need Mouse navigation in flip switch mode ({{bug |244439}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow direct rendering with fglrx ({{bug |301103}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Don't use OpenGL matrix stack in OpenGL 2 backend ({{bug |303093}}, Review 105455)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Refactor Screen/Window PaintData ({{bug |303314}}, Review 105141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Rapid flickering in locked screen -- makes it difficult to unlock ({{bug |303579}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|double click menu to close needs GUI config ({{bug |305738}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Toplevel::windowType() needs performance improvements ({{bug |306384}}, Review 106349)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|GLPlatform should recommend either OpenGL1 or OpenGL2 compositing ({{bug |306436}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Zoom effect broken in master ({{bug |307609}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin fails to build when the GLES support is disabled ({{bug |307866}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Some effect authors are listed as &amp;quot;Name1 &amp;amp; Name2&amp;quot; ({{bug |307928}}, Review 106880)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add screen management actions to window context menus ({{bug |269207}}, Review 106065)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move Workspace's compositing functionality to own class Compositor ({{bug |299277}}, Review 102420)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Option to disable close on double click in Aurorae ({{bug |301327}}, Review 106160)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove Tiling Support From KWin ({{bug |303090}}, Review 105546)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Allow Scripts to add menus to useractions menu ({{bug |303756}}, Review 106285)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Generic QML support for Aurorae Themes ({{bug |303810}}, Review 105768)|mgraesslin@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Split out Useractions Menu from Workspace ({{bug |305832}}, Review 106085)|mgraesslin@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement parallel sort algorithm|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Add GUI option for the &amp;quot;Rename Inline&amp;quot; setting|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Add &amp;quot;Icon Size&amp;quot; submenu to the Places Panel context menu|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Main Window UI Reorganization|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Code Editor Configuration Dialog|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show a message when keyboard layout visualizion isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Calculator|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-10-25T09:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: KWIN_BUILD_OPENGL_1_COMPOSITING build option&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_OXYGEN ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the Oxygen window decoration. This build option is only meant to make it easier to build only KWin without anything else from kde-workspace.&lt;br /&gt;
&lt;br /&gt;
'''Since 4.10'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts.&lt;br /&gt;
&lt;br /&gt;
'''Removed in 4.10, tiling no longer available'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_OPENGL_1_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON'' (''OFF'' for GLES only builds)&lt;br /&gt;
&lt;br /&gt;
Builds OpenGL 1 based compositing support&lt;br /&gt;
&lt;br /&gt;
'''Since 4.10'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_ACTIVITIES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KDE's Activity concept.&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-10-05T07:54:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_OXYGEN ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the Oxygen window decoration. This build option is only meant to make it easier to build only KWin without anything else from kde-workspace.&lt;br /&gt;
&lt;br /&gt;
'''Since 4.10'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts.&lt;br /&gt;
&lt;br /&gt;
'''Removed in 4.10, tiling no longer available'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_ACTIVITIES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KDE's Activity concept.&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-10-05T07:54:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
'''Since 4.10'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_OXYGEN ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the Oxygen window decoration. This build option is only meant to make it easier to build only KWin without anything else from kde-workspace.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts.&lt;br /&gt;
&lt;br /&gt;
'''Removed in 4.10, tiling no longer available'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_ACTIVITIES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KDE's Activity concept.&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-10-05T07:53:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_OXYGEN ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the Oxygen window decoration. This build option is only meant to make it easier to build only KWin without anything else from kde-workspace.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts.&lt;br /&gt;
&lt;br /&gt;
'''Removed in 4.10, tiling no longer available'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_ACTIVITIES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KDE's Activity concept.&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Release_Schedule</id>
		<title>Schedules/KDE4/4.9 Release Schedule</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Release_Schedule"/>
				<updated>2012-07-22T09:36:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Restore release schedule for 4.9: Undo revision 73884 by Winterz (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;KDE SC 4.9 is a feature release for KDE SC 4. All dates given here are subject to revision, but we will try our best to stick to them if possible. The KDE Release Team is acting as the coordinator for this release.&lt;br /&gt;
&lt;br /&gt;
All deadlines are due 23:59 UTC, but if you need a few more hours, notify someone from the release team.&lt;br /&gt;
&lt;br /&gt;
(the below schedule is generated based on software. Don't edit below, but edit the software and regenerate the schedule.) &lt;br /&gt;
&lt;br /&gt;
You can also add [http://www.kde.org/releaseschedule.ics http://www.kde.org/releaseschedule.ics] as remote calendar to korganizer so you always have the release schedule near you.&lt;br /&gt;
&lt;br /&gt;
== KDE SC 4.9 ==&lt;br /&gt;
&lt;br /&gt;
=== Thursday, May 3, 2012: KDE 4.9 Soft Feature Freeze ===&lt;br /&gt;
Trunk is frozen for feature commits that are not listed in the  planned feature document. Only bugfixes and the code implementing the listed features are to be committed after this date. The feature list also closes today.&lt;br /&gt;
&lt;br /&gt;
Features not already finished or not listed on the planned features page will have to wait until the next KDE SC release.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, May 10, 2012: KDE 4.9 Dependency Freeze ===&lt;br /&gt;
From this moment on it is not allowed to add new dependencies or bump dependencies versions. It is possible to get an exception for this. Post the patch to reviewboard and add the release-team as reviewer. We will check if the dependency is needed and is available on all platforms.&lt;br /&gt;
&lt;br /&gt;
In other words: If you have a feature that requires a new dependency or a version of a dependency that is higher than currently checked for in the build system, you need to have committed this change before this date.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, May 17, 2012: KDE 4.9 Soft Message Freeze ===&lt;br /&gt;
All translated messages (GUI strings) are frozen on this date. Only previously untranslated strings or clear errors in strings can be fixed. No major new strings changes should be done. You cannot add new strings, if you really need one ask kde-i18n-doc for an exception. It is ok to remove strings. Exception: Artwork (try to keep the number of new strings low anyways). Exception: Typo fixes can be fixed until the Hard Message Freeze, but you have to mail kde-i18n-doc saying you made a typo fix change.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, May 17, 2012: KDE 4.9 Soft API Freeze ===&lt;br /&gt;
To allow the bindings people to have proper time to do their work in preparation to the final release, the API should now be mostly fixed. Changing API is allowed, but commits have to be cc'ed to the kde-bindings mailinglist. This is including older APIs and newly introduced libraries/APIs.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, May 17, 2012: KDE 4.9 Hard Feature Freeze ===&lt;br /&gt;
Trunk is frozen for all feature commits, even those listed in the planned feature document. Only bug fixes are allowed.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, May 24, 2012: KDE 4.9 Beta 1 Tagging ===&lt;br /&gt;
Trunk is frozen for beta release tagging. Only urgent fixes, such as those fixing compilation errors, should be committed. The usual beta rules apply as soon as the Beta tarballs have been generated.&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, May 30, 2012: KDE 4.9 Beta 1 Release ===&lt;br /&gt;
The beta becomes available for general consumption.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, June 7, 2012: KDE 4.9 Beta 2 Tagging ===&lt;br /&gt;
Trunk is frozen for beta release tagging. Only urgent fixes, such as those fixing compilation errors, should be committed. The usual beta rules apply as soon as the Beta tarballs have been generated.&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, June 13, 2012: KDE 4.9 Beta 2 Release ===&lt;br /&gt;
The beta becomes available for general consumption.&lt;br /&gt;
&lt;br /&gt;
=== Monday, June 25, 2012: KDE 4.9 Tagging Freeze for Release Candidate 1 ===&lt;br /&gt;
During tagging freeze only compilation fixes for all platforms are allowed to be committed. Everything else (even showstopper fixes) *have* to be run through reviewboard, with the release-team and the affected maintainers as reviewer. &lt;br /&gt;
&lt;br /&gt;
=== Monday, June 25, 2012: KDE 4.9 Hard API Freeze ===&lt;br /&gt;
To allow the bindings people to have proper time to do there work in preparation to the final release, the API is now frozen. No more changes to APIs or header files (except docs) after this date, including older APIs and newly introduced libraries/APIs.&lt;br /&gt;
&lt;br /&gt;
=== Monday, June 25, 2012: KDE 4.9 Hard Message Freeze ===&lt;br /&gt;
Up to now you were able to do typo changes, but you had to mail kde-i18n-doc saying you made a typo fix change. From this moment on you need to contact kde-i18n-doc for every single string change, if noone objects in 5 days you can commit the change.&lt;br /&gt;
&lt;br /&gt;
=== Monday, June 25, 2012: KDE 4.9 Artwork and Bindings Freeze ===&lt;br /&gt;
All artwork is frozen on this date. No new artwork should be added. Existing artwork can continue to be tweaked and fixed.&lt;br /&gt;
&lt;br /&gt;
No new additions to the language bindings, except optional bindings as permitting by the kde-bindings team.&lt;br /&gt;
&lt;br /&gt;
=== Monday, June 25, 2012: KDE 4.9 Documentation Freeze ===&lt;br /&gt;
No more changes to documentation or handbooks after this date. For typos, spelling and simple grammar changes you have to mail kde-i18n-doc for approval.&lt;br /&gt;
&lt;br /&gt;
=== Tuesday, June 26, 2012: KDE 4.9 Release Candidate 1 Tagging ===&lt;br /&gt;
Branch is frozen for release candidate tagging. Only urgent fixes, such as those fixing compilation errors, should be committed. &lt;br /&gt;
&lt;br /&gt;
=== Wednesday, June 27, 2012: KDE 4.9 Release Candidate 1 Release ===&lt;br /&gt;
The release candidate is tagged from the branch. Only urgent fixes, such as those fixing compilation errors, should be committed.As soon as the RC has been confirmed to build it will be released immediately.&lt;br /&gt;
&lt;br /&gt;
=== Monday, July 9, 2012: KDE 4.9 Tagging Freeze for Release Candidate 2 ===&lt;br /&gt;
During tagging freeze only compilation fixes for all platforms are allowed to be committed. Everything else (even showstopper fixes) *have* to be run through reviewboard, with the release-team and the affected maintainers as reviewer. &lt;br /&gt;
&lt;br /&gt;
=== Tuesday, July 10, 2012: KDE 4.9 Release Candidate 2 Tagging ===&lt;br /&gt;
Branch is frozen for release candidate tagging. Only urgent fixes, such as those fixing compilation errors, should be committed. &lt;br /&gt;
&lt;br /&gt;
=== Wednesday, July 11, 2012: KDE 4.9 Release Candidate 2 Release ===&lt;br /&gt;
The release candidate is tagged from the branch. Only urgent fixes, such as those fixing compilation errors, should be committed.As soon as the RC has been confirmed to build it will be released immediately.&lt;br /&gt;
&lt;br /&gt;
=== Wednesday, July 25, 2012: KDE 4.9 Final Tag ===&lt;br /&gt;
The branch is frozen for final release tagging. Only urgent fixes, such as those fixing compilation errors, should be committed. &lt;br /&gt;
&lt;br /&gt;
=== Wednesday, August 1, 2012: KDE 4.9 Release ===&lt;br /&gt;
Final release is released for general consumption.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, September 27, 2012: KDE 4.9.1 tagging ===&lt;br /&gt;
A KDE minor release is tagged and made available to the packagers.&lt;br /&gt;
&lt;br /&gt;
=== Tuesday, October 2, 2012: KDE 4.9.1 release ===&lt;br /&gt;
A KDE minor release is released to the public.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 1, 2012: KDE 4.9.2 tagging ===&lt;br /&gt;
A KDE minor release is tagged and made available to the packagers.&lt;br /&gt;
&lt;br /&gt;
=== Tuesday, November 6, 2012: KDE 4.9.2 release ===&lt;br /&gt;
A KDE minor release is released to the public.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, November 29, 2012: KDE 4.9.3 tagging ===&lt;br /&gt;
A KDE minor release is tagged and made available to the packagers.&lt;br /&gt;
&lt;br /&gt;
=== Tuesday, December 4, 2012: KDE 4.9.3 release ===&lt;br /&gt;
A KDE minor release is released to the public.&lt;br /&gt;
&lt;br /&gt;
=== Thursday, January 10, 2013: KDE 4.9.4 tagging ===&lt;br /&gt;
A KDE minor release is tagged and made available to the packagers.&lt;br /&gt;
&lt;br /&gt;
=== Tuesday, January 15, 2013: KDE 4.9.4 release ===&lt;br /&gt;
A KDE minor release is released to the public.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-07-14T10:26:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWIN_BUILD_TILING */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts.&lt;br /&gt;
&lt;br /&gt;
'''Removed in 4.10, tiling no longer available'''&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_ACTIVITIES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KDE's Activity concept.&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-06-24T17:25:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin::WorkspaceWrapper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
&lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
* ''QString'' '''currentActivity'''&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
* '''currentActivityChanged()''': Signal emitted whenever the current activity changed.&lt;br /&gt;
* '''activitiesChanged(const QString &amp;amp;id)''': Signal emitted whenever the list of activities changed. id id of the new activity&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the Client is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-06-24T17:25:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* Signals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
&lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
* '''currentActivityChanged()''': Signal emitted whenever the current activity changed.&lt;br /&gt;
* '''activitiesChanged(const QString &amp;amp;id)''': Signal emitted whenever the list of activities changed. id id of the new activity&lt;br /&gt;
* '''activityAdded(const QString &amp;amp;id)''': This signal is emitted when a new activity is added id id of the new activity&lt;br /&gt;
* '''activityRemoved(const QString &amp;amp;id)''': This signal is emitted when the activity is removed id id of the removed activity&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the Client is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-06-24T17:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* Read-write Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
&lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the Client is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-06-24T17:23:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* Read-only Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
&lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''bool'' '''onAllDesktops''': Whether the window is on all desktops. That is desktop is -1.&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-06-24T17:23:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* Functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
&lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
* ''KWin::Client *'' '''getClient(qulonglong windowId)''': Finds the Client with the given windowId. windowId The window Id of the Client The found Client or null&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-05-31T06:56:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* Functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerScreenEdge(ElectricBorder border, QScriptValue callback)''': Registers the callback for the screen edge. When the mouse gets pushed against the given edge the callback will be invoked.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
* ''bool'' '''assert(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertTrue(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to true. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertFalse(bool value, QString message = QString())''': Aborts the execution of the script if value does not evaluate to false. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertEquals(QVariant expected, QVariant actual, QString message = QString())''': Aborts the execution of the script if the actual value is not equal to the expected value. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is not null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
* ''bool'' '''assertNotNull(QVariant value, QString message = QString())''': Aborts the execution of the script if value is null. If message is provided an error is thrown with the given message, if not provided an error with default message is thrown.&lt;br /&gt;
&lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-05-18T08:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Updated KWin features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureDone|Kate Part|Reworked Color Configuration|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|KActivities|Encryption for private activities (not available via UI).|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|KActivities|Linking files to activities in Dolphin, Konqueror, Folder View.|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureTodo|KActivities|Activities KIO.|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Thumbnail|fix for bookmarks|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|plasma|MPRIS2 dataengine|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Useraction menu closes when focus passes to another window ({{bug |81743}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: change focus only when moving mouse ({{bug |92290}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications ({{bug |124612}}, Review 104457)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Insufficient stacking order handling for deleted windows ({{bug |158262}}, Review 104519)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. ({{bug |178595}}, Review 104438)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|No reason given why some desktop effects cannot be activated ({{bug |209213}}, Review 104847)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dragging a title bar against a bottom panel twice makes it go under the panel on the second time ({{bug |210926}})|kwin-bugs-null@kde.org}}                                                                                                                            &lt;br /&gt;
{{FeatureDone|kwin|Wobbly windows wobbles strange after quick-maximization ({{bug |222102}})|kwin-bugs-null@kde.org}}                        &lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick ({{bug |229942}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Bug with shading always inactive windows ({{bug |242217}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; ({{bug |249486}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars ({{bug |260938}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Placement Policy 'under mouse' ({{bug |272162}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects ({{bug |273478}}, Review 104436)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|closing session crash ({{bug |282933}}, Review 104690)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function ({{bug |286783}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions ({{bug |288960}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab ({{bug |291916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashed when I was switching windows ({{bug |292614}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Kill helper should be out of process ({{bug |295940}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager ({{bug |296056}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Different binary name for KWin Active ({{bug |296084}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Switcher KCM needs to be reworked ({{bug |297639}}, Review 104525)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Document global JavaScript methods in KWin Scripting API documentation ({{bug |297640}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Elevate windows in addition to highlight ({{bug |297809}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when interacting with Plasma ({{bug |298669}}, Review 104714)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add ABI check to KDecorations ({{bug |299141}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Effects cannot be configured ({{bug |299163}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Adding proper window thumbnail clipping to the QML tabbox ({{bug |299198}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Improve VSync strategy ({{bug |299274}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Screen Edge bindings for KWin Scripting ({{bug |299275}}, Review 104904)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Better QML selection list for Window Switcher layout ({{bug |299278}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add layout specification to D-Bus call for invoking TabBox ({{bug |299279}}, Review 104838)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Default Bindings for Switching between Windows of current Application ({{bug |299308}}, Review 104730)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make desktop focus chains activities aware ({{bug |299309}}, Review 104649)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Zoom should be saved between sessions ({{bug |189956}}, Review 104597)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureDone|Konsole|Add command line options for controlling the visibility of menubar and tabbar|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|New Project Wizard - guided creation based on loaded plugins|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project journal files|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|New Add-Node/Add-Link Toolbar for data types and pointer types|rocs-devel@kde.org|Rocs Developers}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureDone|Pairs|New memory game|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra Mobile|Many improvements, including Android and better Active support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|Granatier|improve config UI for player and arena selection|m-hias@gmx.de|Mathias Kraus}}&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add solution files to some KGoldrunner games|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Okular|Store annotations with documents {{bug |151614}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureInProgress|Okular|Print document with annotations {{bug |159005}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Annotations Screen support (embedded movies in PDF) {{bug |172847}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Aggressive page preloading {{bug |184196}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Hyphen-aware search {{bug |190433}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Multiple bookmarks per page {{bug |157198}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Allow the renaming of bookmark &amp;quot;parent&amp;quot; items|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Allow the page number selector to be added to the toolbar {{bug |279128}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Double click to select workds {{bug |187347}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Make Okular inhibit sleep and screen power management when in Presentation mode|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureInProgress|Okular|Behavior for left/right arrow keys|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Remember the mouse mode on exit|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Make search from the current page the default|okular-devel@kde.org|}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|JuK|MPRIS2 support|alex.merry@kmail.net|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Dragon|MPRIS2 support|hein@kde.org|Eike Hein}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KTnef|Bring back KTnef from the KDE3 days. KTnef is a standalone TNEF attachment viewer|winter@kde.org|Allen Winter}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Akonadi Kolab Resources|Kolab resource using the Kolab libraries to kdepim-runtime|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Extend Akonotes Format|Extend the akonotes format to support features required by zanshin and kolab|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Import pim data|ImportWizard allows to import settings/mails/filters/calendar/addressbook from thunderbird/evolution/etc. when exists.|montel@kde.org|Laurent Montel}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Now Playing|replace with QML version|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureDone|Thumbnail|PO thumbnailer|shuizhuyuanluo@126.com|Ni Hui}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-05-08T18:48:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: InProgress for KWin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Thumbnail|fix for bookmarks|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma|MPRIS2 dataengine|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows (Bug 213847)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Quick Tile shortcuts should be toggle buttons (Bug 263755)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 (Bug 296076)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows (Bug 102607)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|No reason given why some desktop effects cannot be activated (Bug 209213, Review 104847)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt (Bug 266596)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Decoration KCM should show comment for decoration (Bug 296041)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes (Bug 296065)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|DesktopThumbnailItem for QML (Bug 296067)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Packages for Desktop Switching Layouts (Bug 296068)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Walk Through Desktop layout rendering desktop previews (Bug 296069)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch (Bug 296070)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Drop BoxSwitch effect (Bug 296071, Review 104454)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Different binary name for KWin Active (Bug 296084)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab (Bug 296772)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects (Bug 296773)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts (Bug 296774, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 (Bug 296775)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297634)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297635)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Window Switching Layouts (Bug 297636)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297637)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts (Bug 297638)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Window Switcher KCM needs to be reworked (Bug 297639, Review 104525)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows (Bug 297864)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Redesign the kwin's kcm &amp;quot;All effects&amp;quot; (Bug 298991, Review 104849)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae (Bug 299138)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations (Bug 299140)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add ABI check to KDecorations (Bug 299141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|New Window Decoration for Thin Clients (Bug 299143)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations (Bug 299144, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting (Bug 299245)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts (Bug 299247)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Improve VSync strategy (Bug 299274)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Screen Edge bindings for KWin Scripting (Bug 299275)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support Plasma API Extensions in KWin Scripting (Bug 299276)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Move Workspace's compositing functionality to own class Compositor (Bug 299277, Review 102420)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Better QML selection list for Window Switcher layout (Bug 299278)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Default Bindings for Switching between Windows of current Application (Bug 299308, Review 104730)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Useraction menu closes when focus passes to another window (Bug 81743)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: change focus only when moving mouse (Bug 92290)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications (Bug 124612, Review 104457)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Insufficient stacking order handling for deleted windows (Bug 158262, Review 104519)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. (Bug 178595, Review 104438)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dragging a title bar against a bottom panel twice makes it go under the panel on the second time (Bug 210926)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Wobbly windows wobbles strange after quick-maximization (Bug 222102)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick (Bug 229942)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Bug with shading always inactive windows (Bug 242217)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; (Bug 249486)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars (Bug 260938)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Placement Policy 'under mouse' (Bug 272162)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects (Bug 273478, Review 104436)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|closing session crash (Bug 282933, Review 104690)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function (Bug 286783)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions (Bug 288960)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab (Bug 291916)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashed when I was switching windows (Bug 292614)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Kill helper should be out of process (Bug 295940)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager (Bug 296056)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Document global JavaScript methods in KWin Scripting API documentation (Bug 297640)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Elevate windows in addition to highlight (Bug 297809)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when interacting with Plasma (Bug 298669, Review 104714)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Effects cannot be configured (Bug 299163)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Adding proper window thumbnail clipping to the QML tabbox (Bug 299198)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add layout specification to D-Bus call for invoking TabBox (Bug 299279, Review 104838)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make desktop focus chains activities aware (Bug 299309, Review 104649)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Zoom should be saved between sessions (Bug 189956, Review 104597)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureTodo|Konsole|Add command line options for controlling the visibility of menubar and tabbar|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|New Project Wizard - guided creation based on loaded plugins|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project journal files|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|New Add-Node/Add-Link Toolbar for data types and pointer types|rocs-devel@kde.org|Rocs Developers}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|Granatier|improve config UI for player and arena selection|m-hias@gmx.de|Mathias Kraus}}&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add solution files to some KGoldrunner games, possibly using Get Hot New Stuff|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|JuK|MPRIS2 support|alex.merry@kmail.net|Alex Merry}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KTnef|Bring back KTnef from the KDE3 days. KTnef is a standalone TNEF attachment viewer|winter@kde.org|Allen Winter}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Akonadi Kolab Resources|Kolab resource using the Kolab libraries to kdepim-runtime|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Extend Akonotes Format|Extend the akonotes format to support features required by zanshin and kolab|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Now Playing|replace with QML version|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureDone|Thumbnail|PO thumbnailer|shuizhuyuanluo@126.com|Ni Hui}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-05-03T18:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: update kwin feature plan from target milestone 4.9 list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Thumbnail|fix for bookmarks|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma|MPRIS2 dataengine|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows (Bug 213847)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Quick Tile shortcuts should be toggle buttons (Bug 263755)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 (Bug 296076)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows (Bug 102607)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|No reason given why some desktop effects cannot be activated (Bug 209213)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt (Bug 266596)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Decoration KCM should show comment for decoration (Bug 296041)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes (Bug 296065)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|DesktopThumbnailItem for QML (Bug 296067)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Packages for Desktop Switching Layouts (Bug 296068)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Walk Through Desktop layout rendering desktop previews (Bug 296069)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch (Bug 296070)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Drop BoxSwitch effect (Bug 296071)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Different binary name for KWin Active (Bug 296084)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab (Bug 296772)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects (Bug 296773)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for KWin Scripts (Bug 296774)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 (Bug 296775)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297634)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297635)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Window Switching Layouts (Bug 297636)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297637)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts (Bug 297638)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Switcher KCM needs to be reworked (Bug 297639)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows (Bug 297864)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Redesign the kwin's kcm &amp;quot;All effects&amp;quot; (Bug 298991)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae (Bug 299138)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations (Bug 299140)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add ABI check to KDecorations (Bug 299141)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|New Window Decoration for Thin Clients (Bug 299143)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Remove legacy window decorations (Bug 299144)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting (Bug 299245)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts (Bug 299247)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Improve VSync strategy (Bug 299274)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Screen Edge bindings for KWin Scripting (Bug 299275)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support Plasma API Extensions in KWin Scripting (Bug 299276)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move Workspace's compositing functionality to own class Compositor (Bug 299277)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Better QML selection list for Window Switcher layout (Bug 299278)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add layout specification to D-Bus call for invoking TabBox (Bug 299279)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Default Bindings for Switching between Windows of current Application (Bug 299308)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make desktop focus chains activities aware (Bug 299309)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Useraction menu closes when focus passes to another window (Bug 81743)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: change focus only when moving mouse (Bug 92290)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications (Bug 124612)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Insufficient stacking order handling for deleted windows (Bug 158262)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. (Bug 178595)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dragging a title bar against a bottom panel twice makes it go under the panel on the second time (Bug 210926)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Wobbly windows wobbles strange after quick-maximization (Bug 222102)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick (Bug 229942)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Bug with shading always inactive windows (Bug 242217)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; (Bug 249486)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars (Bug 260938)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Placement Policy 'under mouse' (Bug 272162)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects (Bug 273478)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|closing session crash (Bug 282933)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function (Bug 286783)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions (Bug 288960)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab (Bug 291916)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashed when I was switching windows (Bug 292614)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Kill helper should be out of process (Bug 295940)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager (Bug 296056)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Document global JavaScript methods in KWin Scripting API documentation (Bug 297640)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Elevate windows in addition to highlight (Bug 297809)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when interacting with Plasma (Bug 298669)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Effects cannot be configured (Bug 299163)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Adding proper window thumbnail clipping to the QML tabbox (Bug 299198)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Zoom should be saved between sessions (Bug 189956)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureTodo|Konsole|Add command line options for controlling the visibility of menubar and tabbar|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|New Project Wizard - guided creation based on loaded plugins|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project journal files|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|New Add-Node/Add-Link Toolbar for data types and pointer types|rocs-devel@kde.org|Rocs Developers}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|Granatier|improve config UI for player and arena selection|m-hias@gmx.de|Mathias Kraus}}&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add solution files to some KGoldrunner games, possibly using Get Hot New Stuff|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|JuK|MPRIS2 support|alex.merry@kmail.net|Alex Merry}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KTnef|Bring back KTnef from the KDE3 days. KTnef is a standalone TNEF attachment viewer|winter@kde.org|Allen Winter}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Akonadi Kolab Resources|Kolab resource using the Kolab libraries to kdepim-runtime|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Extend Akonotes Format|Extend the akonotes format to support features required by zanshin and kolab|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Now Playing|replace with QML version|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-04-21T14:06:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::WorkspaceWrapper ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
* '''screenResized(int screen)''': This signal is emitted when the size of screen changes. Don't forget to fetch an updated client area.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* '''showOutline(const QRect &amp;amp;geometry)''': Shows an outline at the specified geometry. If an outline is already shown the outline is moved to the new position. Use to remove the outline again.&lt;br /&gt;
* '''showOutline(int x, int y, int width, int height)''': Overloaded method for convenience.&lt;br /&gt;
* '''hideOutline()''': Hides the outline previously shown by showOutline.&lt;br /&gt;
* ''QList&amp;lt; KWin::Client * &amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''focusPolicyChanged()'''&lt;br /&gt;
* '''nextFocusPrefersMouseChanged()'''&lt;br /&gt;
* '''clickRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseChanged()'''&lt;br /&gt;
* '''autoRaiseIntervalChanged()'''&lt;br /&gt;
* '''delayFocusIntervalChanged()'''&lt;br /&gt;
* '''shadeHoverChanged()'''&lt;br /&gt;
* '''shadeHoverIntervalChanged()'''&lt;br /&gt;
* '''tilingChanged()'''&lt;br /&gt;
* '''tilingLayoutChanged()'''&lt;br /&gt;
* '''tilingRaisePolicyChanged()'''&lt;br /&gt;
* '''separateScreenFocusChanged()'''&lt;br /&gt;
* '''activeMouseScreenChanged()'''&lt;br /&gt;
* '''placementChanged()'''&lt;br /&gt;
* '''borderSnapZoneChanged()'''&lt;br /&gt;
* '''windowSnapZoneChanged()'''&lt;br /&gt;
* '''centerSnapZoneChanged()'''&lt;br /&gt;
* '''snapOnlyWhenOverlappingChanged()'''&lt;br /&gt;
* '''showDesktopIsMinimizeAllChanged()'''&lt;br /&gt;
* '''rollOverDesktopsChanged()'''&lt;br /&gt;
* '''focusStealingPreventionLevelChanged()'''&lt;br /&gt;
* '''legacyFullscreenSupportChanged()'''&lt;br /&gt;
* '''operationTitlebarDblClickChanged()'''&lt;br /&gt;
* '''commandActiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandActiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar1Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar2Changed()'''&lt;br /&gt;
* '''commandInactiveTitlebar3Changed()'''&lt;br /&gt;
* '''commandWindow1Changed()'''&lt;br /&gt;
* '''commandWindow2Changed()'''&lt;br /&gt;
* '''commandWindow3Changed()'''&lt;br /&gt;
* '''commandWindowWheelChanged()'''&lt;br /&gt;
* '''commandAll1Changed()'''&lt;br /&gt;
* '''commandAll2Changed()'''&lt;br /&gt;
* '''commandAll3Changed()'''&lt;br /&gt;
* '''keyCmdAllModKeyChanged()'''&lt;br /&gt;
* '''showGeometryTipChanged()'''&lt;br /&gt;
* '''electricBordersChanged()'''&lt;br /&gt;
* '''electricBorderDelayChanged()'''&lt;br /&gt;
* '''electricBorderCooldownChanged()'''&lt;br /&gt;
* '''electricBorderPushbackPixelsChanged()'''&lt;br /&gt;
* '''electricBorderMaximizeChanged()'''&lt;br /&gt;
* '''electricBorderTilingChanged()'''&lt;br /&gt;
* '''borderlessMaximizedWindowsChanged()'''&lt;br /&gt;
* '''killPingTimeoutChanged()'''&lt;br /&gt;
* '''hideUtilityWindowsForInactiveChanged()'''&lt;br /&gt;
* '''inactiveTabsSkipTaskbarChanged()'''&lt;br /&gt;
* '''autogroupSimilarWindowsChanged()'''&lt;br /&gt;
* '''autogroupInForegroundChanged()'''&lt;br /&gt;
* '''compositingModeChanged()'''&lt;br /&gt;
* '''useCompositingChanged()'''&lt;br /&gt;
* '''compositingInitializedChanged()'''&lt;br /&gt;
* '''hiddenPreviewsChanged()'''&lt;br /&gt;
* '''unredirectFullscreenChanged()'''&lt;br /&gt;
* '''glSmoothScaleChanged()'''&lt;br /&gt;
* '''glVSyncChanged()'''&lt;br /&gt;
* '''xrenderSmoothScaleChanged()'''&lt;br /&gt;
* '''maxFpsIntervalChanged()'''&lt;br /&gt;
* '''refreshRateChanged()'''&lt;br /&gt;
* '''glDirectChanged()'''&lt;br /&gt;
* '''glStrictBindingChanged()'''&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationDefines&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''addRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addLayerRepaint(const QRect &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(const QRegion &amp;amp;r)'''&lt;br /&gt;
* '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''bool'' '''untab(const QRect &amp;amp;toGeometry=QRect())'''&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-04-09T20:54:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Global&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Global ==&lt;br /&gt;
Methods and properties added to the global JavaScript object.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Options'' '''options''': Global property to all configuration values of KWin core.&lt;br /&gt;
* ''KWin::Workspace'' '''workspace''': Global property to the core wrapper of KWin.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''void'' '''print(QVariant ... values)''': Prints all provided values to kDebug and as a D-Bus signal&lt;br /&gt;
* ''QVariant'' '''readConfig(QString key, QVariant defaultValue = QVariant())''': Reads the config value for key in the Script's configuration with the optional default value. If not providing a default value and no value stored in the configuration an undefined value is returned.&lt;br /&gt;
* ''bool'' '''registerShortcut(QString title, QString text, QString keySequence, QScriptValue callback)''': Registers keySequence as a global shortcut. When the shortcut is invoked the callback will be called. Title and text are used to name the shortcut and make it available to the global shortcut configuration module.&lt;br /&gt;
&lt;br /&gt;
== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; QObject * &amp;amp;gt;'' '''getClientList() const ''': List of Clients currently managed by KWin. Use this method in QML scripts.&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin. Use this method in JavaScript scripts.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
The Options provide access to KWin internal configuration values. They are available as global '''options''' object.&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''untab(const QRect &amp;amp;amp;toGeometry=QRect())'''&lt;br /&gt;
&lt;br /&gt;
== KWin::TabGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''minSizeChanged()'''&lt;br /&gt;
* '''maxSizeChanged()'''&lt;br /&gt;
=== Functions ===&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-04-09T19:34:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin::Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; QObject * &amp;amp;gt;'' '''getClientList() const ''': List of Clients currently managed by KWin. Use this method in QML scripts.&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin. Use this method in JavaScript scripts.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
The Options provide access to KWin internal configuration values. They are available as global '''options''' object.&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
* ''bool'' '''demandsAttention''': Whether window state _NET_WM_STATE_DEMANDS_ATTENTION is set. This state indicates that some action in or with the window happened. For example, it may be set by the Window Manager if the window requested activation but the Window Manager refused it, or the application may set it if it finished some work. This state may be set by both the Client and the Window Manager. It should be unset by the Window Manager when it decides the window got the required attention (usually, that it got activated).&lt;br /&gt;
* ''bool'' '''blocksCompositing''': A client can block compositing. That is while the Client is alive and the state is set, Compositing is suspended and is resumed when there are no Clients blocking compositing any more.This is actually set by a window property, unfortunately not used by the target application group. For convenience it's exported as a property to the scripts.Use with care!&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
* '''demandsAttentionChanged()''': Emitted whenever the demands attention state changes.&lt;br /&gt;
* '''blockingCompositingChanged()''': Emitted whenever the Client's block compositing state changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''untab(const QRect &amp;amp;amp;toGeometry=QRect())'''&lt;br /&gt;
&lt;br /&gt;
== KWin::TabGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''minSizeChanged()'''&lt;br /&gt;
* '''maxSizeChanged()'''&lt;br /&gt;
=== Functions ===&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-04-09T19:33:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Options added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; QObject * &amp;amp;gt;'' '''getClientList() const ''': List of Clients currently managed by KWin. Use this method in QML scripts.&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin. Use this method in JavaScript scripts.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Options ==&lt;br /&gt;
The Options provide access to KWin internal configuration values. They are available as global '''options''' object.&lt;br /&gt;
&lt;br /&gt;
'''Inherits:''' KDecorationOptions&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''FocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''bool'' '''nextFocusPrefersMouse'''&lt;br /&gt;
* ''bool'' '''clickRaise''': Whether clicking on a window raises it in FocusFollowsMouse mode or not.&lt;br /&gt;
* ''bool'' '''autoRaise''': whether autoraise is enabled FocusFollowsMouse mode or not.&lt;br /&gt;
* ''int'' '''autoRaiseInterval''': autoraise interval&lt;br /&gt;
* ''int'' '''delayFocusInterval''': delayed focus interval&lt;br /&gt;
* ''bool'' '''shadeHover''': Whether shade hover is enabled or not&lt;br /&gt;
* ''int'' '''shadeHoverInterval''': shade hover interval&lt;br /&gt;
* ''int'' '''tilingLayout'''&lt;br /&gt;
* ''int'' '''tilingRaisePolicy''': Tiling window raise policy.&lt;br /&gt;
* ''bool'' '''separateScreenFocus''': whether to see Xinerama screens separately for focus (in Alt+Tab, when activating next client)&lt;br /&gt;
* ''bool'' '''activeMouseScreen''': whether active Xinerama screen is the one with mouse (or with the active window)&lt;br /&gt;
* ''int'' '''placement'''&lt;br /&gt;
* ''bool'' '''focusPolicyIsReasonable'''&lt;br /&gt;
* ''int'' '''borderSnapZone''': the size of the zone that triggers snapping on desktop borders&lt;br /&gt;
* ''int'' '''windowSnapZone''': the size of the zone that triggers snapping with other windows&lt;br /&gt;
* ''int'' '''centerSnapZone''': the size of the zone that triggers snapping on the screen center&lt;br /&gt;
* ''bool'' '''snapOnlyWhenOverlapping''': snap only when windows will overlap&lt;br /&gt;
* ''bool'' '''showDesktopIsMinimizeAll'''&lt;br /&gt;
* ''bool'' '''rollOverDesktops''': whether or not we roll over to the other edge when switching desktops past the edge&lt;br /&gt;
* ''int'' '''focusStealingPreventionLevel''': 0 - 4 , see Workspace::allowClientActivation()&lt;br /&gt;
* ''bool'' '''legacyFullscreenSupport''': support legacy fullscreen windows hack: borderless non-netwm windows with screen geometry&lt;br /&gt;
* ''WindowOperation'' '''operationTitlebarDblClick'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandActiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar1'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar2'''&lt;br /&gt;
* ''MouseCommand'' '''commandInactiveTitlebar3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow1'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow2'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindow3'''&lt;br /&gt;
* ''MouseCommand'' '''commandWindowWheel'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll1'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll2'''&lt;br /&gt;
* ''MouseCommand'' '''commandAll3'''&lt;br /&gt;
* ''uint'' '''keyCmdAllModKey'''&lt;br /&gt;
* ''bool'' '''showGeometryTip''': whether the Geometry Tip should be shown during a window move/resize.&lt;br /&gt;
* ''bool'' '''electricBorders''': Whether electric borders are enabled. With electric borders you can change desktop by moving the mouse pointer towards the edge of the screen&lt;br /&gt;
* ''int'' '''electricBorderDelay''': the activation delay for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderCooldown''': the trigger cooldown for electric borders in milliseconds.&lt;br /&gt;
* ''int'' '''electricBorderPushbackPixels''': the number of pixels the mouse cursor is pushed back when it reaches the screen edge.&lt;br /&gt;
* ''bool'' '''electricBorderMaximize''': Whether a window gets maximized when it reaches top screen edge while being moved.&lt;br /&gt;
* ''bool'' '''electricBorderTiling''': Whether a window is tiled to half screen when reaching left or right screen edge while been moved&lt;br /&gt;
* ''bool'' '''borderlessMaximizedWindows'''&lt;br /&gt;
* ''int'' '''killPingTimeout''': timeout before non-responding application will be killed after attempt to close&lt;br /&gt;
* ''bool'' '''hideUtilityWindowsForInactive''': Whether to hide utility windows for inactive applications.&lt;br /&gt;
* ''bool'' '''inactiveTabsSkipTaskbar'''&lt;br /&gt;
* ''bool'' '''autogroupSimilarWindows'''&lt;br /&gt;
* ''bool'' '''autogroupInForeground'''&lt;br /&gt;
* ''int'' '''compositingMode'''&lt;br /&gt;
* ''bool'' '''useCompositing'''&lt;br /&gt;
* ''int'' '''hiddenPreviews'''&lt;br /&gt;
* ''bool'' '''unredirectFullscreen'''&lt;br /&gt;
* ''int'' '''glSmoothScale''': 0 = no, 1 = yes when transformed, 2 = try trilinear when transformed; else 1, -1 = auto&lt;br /&gt;
* ''bool'' '''glVSync'''&lt;br /&gt;
* ''bool'' '''xrenderSmoothScale'''&lt;br /&gt;
* ''uint'' '''maxFpsInterval'''&lt;br /&gt;
* ''uint'' '''refreshRate'''&lt;br /&gt;
* ''bool'' '''glDirect'''&lt;br /&gt;
* ''bool'' '''glStrictBinding'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''tiling''': Whether tiling is enabled or not&lt;br /&gt;
* ''bool'' '''compositingInitialized'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''untab(const QRect &amp;amp;amp;toGeometry=QRect())'''&lt;br /&gt;
&lt;br /&gt;
== KWin::TabGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''minSizeChanged()'''&lt;br /&gt;
* '''maxSizeChanged()'''&lt;br /&gt;
=== Functions ===&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-04-09T19:31:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: update Workspace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *client, int desktop)'''&lt;br /&gt;
* '''currentDesktopChanged(int desktop)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *client)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *client)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *client)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *client)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *client, bool h, bool v)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *client)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *client)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *client, bool fullScreen, bool user)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *client, bool keepAbove)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
* '''clientDemandsAttentionChanged(KWin::Client *client, bool set)''': The demands attention state for Client c changed to set. c The Client for which demands attention changed set New value of demands attention&lt;br /&gt;
* '''numberScreensChanged(int count)''': Signal emitted when the number of screens changes. count The new number of screens&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; QObject * &amp;amp;gt;'' '''getClientList() const ''': List of Clients currently managed by KWin. Use this method in QML scripts.&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const ''': List of Clients currently managed by KWin. Use this method in JavaScript scripts.&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const KWin::Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''untab(const QRect &amp;amp;amp;toGeometry=QRect())'''&lt;br /&gt;
&lt;br /&gt;
== KWin::TabGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''minSizeChanged()'''&lt;br /&gt;
* '''maxSizeChanged()'''&lt;br /&gt;
=== Functions ===&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-04-09T13:10:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: KWin Feature Plan (auto-generated from target milestone in bugs.kde.org)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick (Bug 229942)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Quick Tile shortcuts should be toggle buttons (Bug 263755)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows (Bug 102607)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Insufficient stacking order handling for deleted windows (Bug 158262)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|No reason given why some desktop effects cannot be activated (Bug 209213)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt (Bug 266596)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Placement Policy 'under mouse' (Bug 272162)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Kill helper should be out of process (Bug 295940)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Decoration KCM should show comment for decoration (Bug 296041)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes (Bug 296065)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|DesktopThumbnailItem for QML (Bug 296067)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Packages for Desktop Switching Layouts (Bug 296068)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Walk Through Desktop layout rendering desktop previews (Bug 296069)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch (Bug 296070)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Drop BoxSwitch effect (Bug 296071)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Different binary name for KWin Active (Bug 296084)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab (Bug 296772)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects (Bug 296773)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for KWin Scripts (Bug 296774)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 (Bug 296775)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Long caption in Thumbnail layout overlaps box for only one item (Bug 297028)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297634)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297635)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Window Switching Layouts (Bug 297636)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297637)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts (Bug 297638)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Switcher KCM needs to be reworked (Bug 297639)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Document global JavaScript methods in KWin Scripting API documentation (Bug 297640)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications (Bug 124612)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. (Bug 178595)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; (Bug 249486)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars (Bug 260938)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects (Bug 273478)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function (Bug 286783)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions (Bug 288960)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab (Bug 291916)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager (Bug 296056)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite]|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Add solution files to some KGoldrunner games, possibly using Get Hot New Stuff|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-03-30T08:20:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin Build Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_ACTIVITIES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KDE's Activity concept.&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Build_Options</id>
		<title>Projects/KWin/Build Options</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Build_Options"/>
				<updated>2012-03-27T19:35:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: Created page with &amp;quot;= KWin Build Options =  This document lists and explains the build options available in KWin source code.  == KWIN_BUILD_DECORATIONS == '''Default:''' ''ON''  Builds the decorati...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Build Options =&lt;br /&gt;
&lt;br /&gt;
This document lists and explains the build options available in KWin source code.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_DECORATIONS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory clients.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_KCMS ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds the decorations in sub-directory kcmkwin&lt;br /&gt;
&lt;br /&gt;
== KWIN_MOBILE_EFFECTS ==&lt;br /&gt;
'''Default:''' ''OFF''&lt;br /&gt;
&lt;br /&gt;
Restricts the building of effects to those useful on mobile (touch) environments.&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TABBOX ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds tabbox (Alt+Tab) support in sub-directory tabbox&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_TILING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds window-tiling support in sub-directory tiling and tilinglayouts&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCREENEDGES ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for screen edge activation&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_SCRIPTING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds support for KWin's scripting framework in sub-directory scripting&lt;br /&gt;
&lt;br /&gt;
== KWIN_BUILD_XRENDER_COMPOSITING ==&lt;br /&gt;
'''Default:''' ''ON''&lt;br /&gt;
&lt;br /&gt;
Builds XRender based compositing support&lt;br /&gt;
&lt;br /&gt;
== KWIN_PLASMA_ACTIVE ==&lt;br /&gt;
'''Default:''' ''Enabled for KDE_PLATFORM_PROFILE not Desktop''&lt;br /&gt;
&lt;br /&gt;
Enables build options listed above for Plasma Active.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin</id>
		<title>Projects/KWin</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin"/>
				<updated>2012-03-27T19:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* General information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects/KWin}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This is a starting page for all relevant KWin documentation, most of which is stored in SVN or on external WWW pages.'''&lt;br /&gt;
&lt;br /&gt;
== General information ==&lt;br /&gt;
&lt;br /&gt;
* [https://mail.kde.org/mailman/listinfo/kwin KWin mailing list]&lt;br /&gt;
* IRC channel #kwin on freenode&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kwin/COMPLIANCE COMPLIANCE] - a document on KWin's compliance to the window manager specifications [http://tronche.com/gui/x/icccm/ ICCCM] and [http://www.freedesktop.org/wiki/Specifications/wm-spec EWMH] (also known as NETWM).&lt;br /&gt;
* [[/4.0-release-notes|KDE4.0 release notes]] - information about changes and new features in KWin in KDE4.0&lt;br /&gt;
* [[/Build_Options|KWin Build Options]] - documentation on the available build options for KWin.&lt;br /&gt;
&lt;br /&gt;
== Developer information ==&lt;br /&gt;
&lt;br /&gt;
* For Developer Information see the [http://community.kde.org/KWin/ KWin Section] in the KDE Community Wiki&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdebase-workspace-apidocs/kwin/lib/html/group__kdecoration.html libkdecoration API documentation] - API documentation for the library used for developing KWin decorations (the link points to documentation for the current development version, for other versions: [http://api.kde.org/4.0-api/kdebase-workspace-apidocs/kwin/lib/html/group__kdecoration.html 4.0] ).&lt;br /&gt;
* [http://www.usermode.org/docs/kwintheme.html KWin decorations HOWTO] - tutorial on writing KWin decorations. Based on KDE3.2 and as such slightly outdated, but it is still usable for newer versions. Note that current decorations should use KCommonDecoration class instead of KDecoration directly like this tutorial does.&lt;br /&gt;
* [http://api.kde.org/4.x-api/kdebase-workspace-apidocs/kwin/lib/html/group__kwineffects.html libkwineffects API documentation ] - Documentation on API for compositing effects - currently needs to be done, developers interested in developing compositing effects for KWin are currently suggested to use source of already [https://projects.kde.org/projects/kde/kdebase/kde-workspace/repository/revisions/master/show/kwin/effects existing effects shipped with KWin] (especially the Howto effect in the tests/ directory as a starting point) and/or ask on the KWin mailing list if necessary. NOTE: This API is currently considered unstable and subject to change.&lt;br /&gt;
* [[Development/Tutorials/KWin/Scripting/API|Scripting API]] and [[Development/Tutorials/KWin/Scripting|KWin Scripting Tutorial]]&lt;br /&gt;
* [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes for version 4.9]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/entry/kwin/CONFIGURING CONFIGURING ] - document on advanced KWin configuration (such as pre-configuring window-specific settings).&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KWin/Scripting_Update_Notes</id>
		<title>Projects/KWin/Scripting Update Notes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KWin/Scripting_Update_Notes"/>
				<updated>2012-03-06T07:12:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* ClientGroup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The KWin Scripting functionality has been reworked and extended in the KDE Plasma Workspaces version 4.9. Unfortunately it was not possible to keep the API 100 % compatible. This document lists most changes. The new API is documented in [[Development/Tutorials/KWin/Scripting/API_4.9]].&lt;br /&gt;
&lt;br /&gt;
In general the API has been changed to make greater use of Properties. This has been done to be able to use the same API in both JavaScript and QML. So instead of&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var opacity = client.opacity();&lt;br /&gt;
opacity = opacity*0.5;&lt;br /&gt;
client.setOpacity(opacity);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
use&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
client.opacity = client.opacity*0.5;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Workspace ==&lt;br /&gt;
=== Methods ===&lt;br /&gt;
The following methods have been renamed as properties:&lt;br /&gt;
* '''dimensions()''' -&amp;gt; '''displaySize'''&lt;br /&gt;
* '''desktopGridSize()''' -&amp;gt; '''desktopGridSize'''&lt;br /&gt;
* '''activeClient()''' -&amp;gt; '''activeClient'''&lt;br /&gt;
&lt;br /&gt;
The following methods have been renamed:&lt;br /&gt;
* '''getAllClients()''' -&amp;gt; '''clientList()''', with the addition that sorting for desktop is no longer provided&lt;br /&gt;
&lt;br /&gt;
The following methods have been removed:&lt;br /&gt;
* '''clientGroups'''&lt;br /&gt;
&lt;br /&gt;
== Toplevel ==&lt;br /&gt;
All methods are available as properties with the same name as the getter methods in the old API except '''hasAlpha''' which is just '''alpha'''.&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
=== Methods ===&lt;br /&gt;
The following methods are no longer available:&lt;br /&gt;
* '''move()''': use the '''geometry''' property&lt;br /&gt;
* '''resize()''': use the '''geometry''' property&lt;br /&gt;
* '''getWindowInfo()''': properties of WindowInfo are merged into Toplevel and Client. See notes to WindowInfo.&lt;br /&gt;
* '''activate()''': use workspace.activateClient() (TODO: currently not yet available)&lt;br /&gt;
* '''setCaption()''': caption cannot be updated through JavaScript. This was an incorrect exported method. Use XProperties&lt;br /&gt;
* '''unminimize()''': set '''minimized''' property to ''false''.&lt;br /&gt;
&lt;br /&gt;
The following methods have been renamed as properties:&lt;br /&gt;
* '''isTransient()''' -&amp;gt; '''transient'''&lt;br /&gt;
* '''isTransientFor()''' -&amp;gt; '''transientFor'''&lt;br /&gt;
* '''isShade()''' -&amp;gt; '''shade'''&lt;br /&gt;
* '''isShadeable()''' -&amp;gt; '''shadeable'''&lt;br /&gt;
* '''isMinimized()''' -&amp;gt; '''minimized'''&lt;br /&gt;
* '''isMinimizable()''' -&amp;gt; '''minimizable'''&lt;br /&gt;
* '''isMaximizable()''' -&amp;gt; '''maximizable'''&lt;br /&gt;
* '''isResizable()''' -&amp;gt; '''resizeable'''&lt;br /&gt;
* '''isMovable()''' -&amp;gt; '''moveable'''&lt;br /&gt;
* '''isMovableAcrossScreens()''' -&amp;gt; '''moveableAcrossScreens'''&lt;br /&gt;
* '''isCloseable()''' -&amp;gt; '''closeable'''&lt;br /&gt;
* '''isFullScreen()/setFullScreen()''' -&amp;gt; '''fullScreen'''&lt;br /&gt;
* '''isFullScreenable()''' -&amp;gt; '''fullScreenable'''&lt;br /&gt;
&lt;br /&gt;
The following methods have been renamed:&lt;br /&gt;
* '''close()''' -&amp;gt; '''closeWindow()'''&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
The events are documented as ''Signals'' in the new documentation. The new API follows the pattern of emitting a signal whenever a value changes. Use the property to query the new value. If the old value is required you should save the state in your script.&lt;br /&gt;
&lt;br /&gt;
The following signals have been renamed:&lt;br /&gt;
* '''clientMoved''' -&amp;gt; '''geometryChanged'''&lt;br /&gt;
* '''minimized''' -&amp;gt; '''minimizedChanged'''&lt;br /&gt;
* '''activated''' -&amp;gt; '''activeChanged'''&lt;br /&gt;
* '''unminimized''' -&amp;gt; '''minimizedChanged'''&lt;br /&gt;
* '''fullScreenSet''' -&amp;gt; '''fullScreenChanged'''&lt;br /&gt;
&lt;br /&gt;
== ClientGroup ==&lt;br /&gt;
ClientGroup is no longer available. Have a look at the tab* methods on Client.&lt;br /&gt;
&lt;br /&gt;
== WindowInfo ==&lt;br /&gt;
WindowInfo is no longer provided. All relevant properties are merged into Toplevel or Client.&lt;br /&gt;
&lt;br /&gt;
=== Moved Properties ===&lt;br /&gt;
* '''isMinimized''' -&amp;gt; '''Client.minimized'''&lt;br /&gt;
* '''windowRole''' -&amp;gt; '''Toplevel.windowRole'''&lt;br /&gt;
* '''windowClassClass''' -&amp;gt; '''Toplevel.resourceClass'''&lt;br /&gt;
* '''windowClassName''' -&amp;gt; '''Toplevel.resourceName'''&lt;br /&gt;
&lt;br /&gt;
=== Dropped Properties ===&lt;br /&gt;
* '''isValid'''&lt;br /&gt;
* '''visibleName''': best match '''Client.caption'''&lt;br /&gt;
* '''state''': use better properties on Toplevel and Client&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-03-06T07:07:33Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin::ClientGroup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *, int)'''&lt;br /&gt;
* '''currentDesktopChanged(int)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *, bool)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const '''&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''untab(const QRect &amp;amp;amp;toGeometry=QRect())'''&lt;br /&gt;
&lt;br /&gt;
== KWin::TabGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''minSizeChanged()'''&lt;br /&gt;
* '''maxSizeChanged()'''&lt;br /&gt;
=== Functions ===&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-03-06T07:06:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin::Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *, int)'''&lt;br /&gt;
* '''currentDesktopChanged(int)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *, bool)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const '''&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::TabGroup'' '''tabGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
* ''bool'' '''isCurrentTab''': Whether this Client is the currently visible Client in its Client Group (Window Tabs). For change connect to the visibleChanged signal on the Client's Group.&lt;br /&gt;
* ''QSize'' '''minSize''': Minimum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
* ''QSize'' '''maxSize''': Maximum size as specified in WM_NORMAL_HINTS&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
* ''bool'' '''skipTaskbar''': Indicates that the window should not be included on a taskbar.&lt;br /&gt;
* ''bool'' '''skipPager''': Indicates that the window should not be included on a Pager.&lt;br /&gt;
* ''bool'' '''noBorder''': Whether the window has a decoration or not. This property is not allowed to be set by applications themselves. The decision whether a window has a border or not belongs to the window manager. If this property gets abused by application developers, it will be removed again.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *c, bool h, bool v)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''skipTaskbarChanged()'''&lt;br /&gt;
* '''skipPagerChanged()'''&lt;br /&gt;
* '''tabGroupChanged()''': Emitted whenever the Client's TabGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBefore(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''tabBehind(Client *other, bool activate)'''&lt;br /&gt;
* ''Q_INVOKABLE bool'' '''untab(const QRect &amp;amp;amp;toGeometry=QRect())'''&lt;br /&gt;
&lt;br /&gt;
== KWin::ClientGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''minSize''': Combined minimum size of all clients in the group.&lt;br /&gt;
* ''QSize'' '''maxSize''': Combined maximum size of all clients in the group.&lt;br /&gt;
* ''int'' '''visibleClientIndex''': The index of the visible Client in this group.&lt;br /&gt;
* ''QList&amp;lt;KWin::Client*&amp;gt;'' '''clients''': The Clients in this group.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Client'' '''visible''': Currently visible client in this group.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''visibleChanged()''': Emitted when the visible Client in this group changes.&lt;br /&gt;
* '''minSizeChanged()''': Emitted when the group's minimum size changes.&lt;br /&gt;
* '''maxSizeChanged()''': Emitted when the group's maximum size changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''add(KWin::Client *c, int before=-1, bool becomeVisible=false)''': Adds c to the group before before in the list. If becomeVisible is true then the added client will become also the visible client.&lt;br /&gt;
* '''remove(int index, const QRect &amp;amp;amp;newGeom=QRect(), bool toNullGroup=false)''': Remove the client at index index from the group. If newGeom is set then the client will move and resize to the specified geometry, otherwise it will stay where the group is located. If toNullGroup is not true then the client will be added to a new group of its own.&lt;br /&gt;
* '''remove(KWin::Client *c, const QRect &amp;amp;amp;newGeom=QRect(), bool toNullGroup=false)''': Remove c from the group. If newGeom is set then the client will move and resize to the specified geometry, otherwise it will stay where the group is located. If toNullGroup is not true then the client will be added to a new group of its own.&lt;br /&gt;
* '''removeAll()''': Remove all clients from this group. Results in all clients except the first being moved to a group of their own.&lt;br /&gt;
* '''closeAll()''': Close all clients in this group.&lt;br /&gt;
* '''move(int index, int before)''': Move the client at index index to the position before the client at index before in the list.&lt;br /&gt;
* '''move(KWin::Client *c, KWin::Client *before)''': Move c to the position before before in the list.&lt;br /&gt;
* '''displayClientMenu(int index, const QPoint &amp;amp;amp;pos)''': Display the right-click client menu belonging to the client at index index at the global coordinates specified by pos.&lt;br /&gt;
* '''displayClientMenu(KWin::Client *c, const QPoint &amp;amp;amp;pos)''': Display the right-click client menu belonging to c at the global coordinates specified by pos.&lt;br /&gt;
* ''int'' '''indexOfClient(KWin::Client *c)''': Returns the list index of c.&lt;br /&gt;
* ''bool'' '''contains(KWin::Client *c)''': Returns whether or not this group contains c.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-03-06T07:05:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin::Toplevel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *, int)'''&lt;br /&gt;
* '''currentDesktopChanged(int)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *, bool)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const '''&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''utility''': Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .&lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
* ''bool'' '''managed''': Whether this Toplevel is managed by KWin (it has control over its placement and other aspects, as opposed to override-redirect windows that are entirely handled by the application).&lt;br /&gt;
* ''bool'' '''deleted''': Whether this Toplevel represents an already deleted window and only kept for the compositor for animations.&lt;br /&gt;
* ''bool'' '''shaped''': Whether the window has an own shape&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''qreal'' '''opacity'''&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
* '''windowShown(KWin::Toplevel *toplevel)'''&lt;br /&gt;
* '''shapedChanged()''': Signal emitted when the window's shape state changed. That is if it did not have a shape and received one or if the shape was withdrawn. Think of Chromium enabling/disabling KWin's decoration.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRect &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(const QRegion &amp;amp;amp;r)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addLayerRepaint(int x, int y, int w, int h)'''&lt;br /&gt;
* ''Q_INVOKABLE void'' '''addRepaintFull()'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::ClientGroup'' '''clientGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''s_unminimized()'''&lt;br /&gt;
* '''maximizeSet(QPair&amp;amp;lt; bool, bool &amp;amp;gt;)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''clientGroupChanged()''': Emitted whenever the Client's ClientGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
&lt;br /&gt;
=== Functions ===  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
&lt;br /&gt;
== KWin::ClientGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''minSize''': Combined minimum size of all clients in the group.&lt;br /&gt;
* ''QSize'' '''maxSize''': Combined maximum size of all clients in the group.&lt;br /&gt;
* ''int'' '''visibleClientIndex''': The index of the visible Client in this group.&lt;br /&gt;
* ''QList&amp;lt;KWin::Client*&amp;gt;'' '''clients''': The Clients in this group.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Client'' '''visible''': Currently visible client in this group.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''visibleChanged()''': Emitted when the visible Client in this group changes.&lt;br /&gt;
* '''minSizeChanged()''': Emitted when the group's minimum size changes.&lt;br /&gt;
* '''maxSizeChanged()''': Emitted when the group's maximum size changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''add(KWin::Client *c, int before=-1, bool becomeVisible=false)''': Adds c to the group before before in the list. If becomeVisible is true then the added client will become also the visible client.&lt;br /&gt;
* '''remove(int index, const QRect &amp;amp;amp;newGeom=QRect(), bool toNullGroup=false)''': Remove the client at index index from the group. If newGeom is set then the client will move and resize to the specified geometry, otherwise it will stay where the group is located. If toNullGroup is not true then the client will be added to a new group of its own.&lt;br /&gt;
* '''remove(KWin::Client *c, const QRect &amp;amp;amp;newGeom=QRect(), bool toNullGroup=false)''': Remove c from the group. If newGeom is set then the client will move and resize to the specified geometry, otherwise it will stay where the group is located. If toNullGroup is not true then the client will be added to a new group of its own.&lt;br /&gt;
* '''removeAll()''': Remove all clients from this group. Results in all clients except the first being moved to a group of their own.&lt;br /&gt;
* '''closeAll()''': Close all clients in this group.&lt;br /&gt;
* '''move(int index, int before)''': Move the client at index index to the position before the client at index before in the list.&lt;br /&gt;
* '''move(KWin::Client *c, KWin::Client *before)''': Move c to the position before before in the list.&lt;br /&gt;
* '''displayClientMenu(int index, const QPoint &amp;amp;amp;pos)''': Display the right-click client menu belonging to the client at index index at the global coordinates specified by pos.&lt;br /&gt;
* '''displayClientMenu(KWin::Client *c, const QPoint &amp;amp;amp;pos)''': Display the right-click client menu belonging to c at the global coordinates specified by pos.&lt;br /&gt;
* ''int'' '''indexOfClient(KWin::Client *c)''': Returns the list index of c.&lt;br /&gt;
* ''bool'' '''contains(KWin::Client *c)''': Returns whether or not this group contains c.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9</id>
		<title>Development/Tutorials/KWin/Scripting/API 4.9</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting/API_4.9"/>
				<updated>2012-03-06T07:04:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* Workspace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workspace ==&lt;br /&gt;
Workspace is the global object injected into each script as '''workspace'''. It provides access to core functionality of the window manager.&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''desktopGridSize'''&lt;br /&gt;
* ''int'' '''desktopGridWidth'''&lt;br /&gt;
* ''int'' '''desktopGridHeight'''&lt;br /&gt;
* ''int'' '''workspaceWidth'''&lt;br /&gt;
* ''int'' '''workspaceHeight'''&lt;br /&gt;
* ''QSize'' '''workspaceSize'''&lt;br /&gt;
* ''QSize'' '''displaySize''': The same of the display, that is all screens.&lt;br /&gt;
* ''int'' '''displayWidth''': The width of the display, that is width of all combined screens.&lt;br /&gt;
* ''int'' '''displayHeight''': The height of the display, that is height of all combined screens.&lt;br /&gt;
* ''int'' '''activeScreen'''&lt;br /&gt;
* ''int'' '''numScreens'''&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''currentDesktop'''&lt;br /&gt;
* ''KWin::Client'' '''activeClient'''&lt;br /&gt;
* ''int'' '''desktops''': The number of desktops currently used. Minimum number of desktops is 1, maximum 20.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''desktopPresenceChanged(KWin::Client *, int)'''&lt;br /&gt;
* '''currentDesktopChanged(int)'''&lt;br /&gt;
* '''clientAdded(KWin::Client *)'''&lt;br /&gt;
* '''clientRemoved(KWin::Client *)'''&lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *)'''&lt;br /&gt;
* '''clientRestored(KWin::Client *)'''&lt;br /&gt;
* '''clientMaximizeSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''killWindowCalled(KWin::Client *)'''&lt;br /&gt;
* '''clientActivated(KWin::Client *)'''&lt;br /&gt;
* '''clientFullScreenSet(KWin::Client *, bool, bool)'''&lt;br /&gt;
* '''clientSetKeepAbove(KWin::Client *, bool)'''&lt;br /&gt;
* '''numberDesktopsChanged(int oldNumberOfDesktops)''': Signal emitted whenever the number of desktops changed. To get the current number of desktops use the property desktops. oldNumberOfDesktops The previous number of desktops.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''slotSwitchDesktopNext()'''&lt;br /&gt;
* '''slotSwitchDesktopPrevious()'''&lt;br /&gt;
* '''slotSwitchDesktopRight()'''&lt;br /&gt;
* '''slotSwitchDesktopLeft()'''&lt;br /&gt;
* '''slotSwitchDesktopUp()'''&lt;br /&gt;
* '''slotSwitchDesktopDown()'''&lt;br /&gt;
* '''slotSwitchToNextScreen()'''&lt;br /&gt;
* '''slotWindowToNextScreen()'''&lt;br /&gt;
* '''slotToggleShowDesktop()'''&lt;br /&gt;
* '''slotWindowMaximize()'''&lt;br /&gt;
* '''slotWindowMaximizeVertical()'''&lt;br /&gt;
* '''slotWindowMaximizeHorizontal()'''&lt;br /&gt;
* '''slotWindowMinimize()'''&lt;br /&gt;
* '''slotWindowShade()'''&lt;br /&gt;
* '''slotWindowRaise()'''&lt;br /&gt;
* '''slotWindowLower()'''&lt;br /&gt;
* '''slotWindowRaiseOrLower()'''&lt;br /&gt;
* '''slotActivateAttentionWindow()'''&lt;br /&gt;
* '''slotWindowPackLeft()'''&lt;br /&gt;
* '''slotWindowPackRight()'''&lt;br /&gt;
* '''slotWindowPackUp()'''&lt;br /&gt;
* '''slotWindowPackDown()'''&lt;br /&gt;
* '''slotWindowGrowHorizontal()'''&lt;br /&gt;
* '''slotWindowGrowVertical()'''&lt;br /&gt;
* '''slotWindowShrinkHorizontal()'''&lt;br /&gt;
* '''slotWindowShrinkVertical()'''&lt;br /&gt;
* '''slotWindowQuickTileLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileRight()'''&lt;br /&gt;
* '''slotWindowQuickTileTopLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileTopRight()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomLeft()'''&lt;br /&gt;
* '''slotWindowQuickTileBottomRight()'''&lt;br /&gt;
* '''slotSwitchWindowUp()'''&lt;br /&gt;
* '''slotSwitchWindowDown()'''&lt;br /&gt;
* '''slotSwitchWindowRight()'''&lt;br /&gt;
* '''slotSwitchWindowLeft()'''&lt;br /&gt;
* '''slotIncreaseWindowOpacity()'''&lt;br /&gt;
* '''slotLowerWindowOpacity()'''&lt;br /&gt;
* '''slotWindowOperations()'''&lt;br /&gt;
* '''slotWindowClose()'''&lt;br /&gt;
* '''slotWindowMove()'''&lt;br /&gt;
* '''slotWindowResize()'''&lt;br /&gt;
* '''slotWindowAbove()'''&lt;br /&gt;
* '''slotWindowBelow()'''&lt;br /&gt;
* '''slotWindowOnAllDesktops()'''&lt;br /&gt;
* '''slotWindowFullScreen()'''&lt;br /&gt;
* '''slotWindowNoBorder()'''&lt;br /&gt;
* '''slotWindowToNextDesktop()'''&lt;br /&gt;
* '''slotWindowToPreviousDesktop()'''&lt;br /&gt;
* '''slotWindowToDesktopRight()'''&lt;br /&gt;
* '''slotWindowToDesktopLeft()'''&lt;br /&gt;
* '''slotWindowToDesktopUp()'''&lt;br /&gt;
* '''slotWindowToDesktopDown()'''&lt;br /&gt;
* ''Q_INVOKABLE QList&amp;amp;lt; KWin::Client * &amp;amp;gt;'' '''clientList() const '''&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, int screen, int desktop) const ''': Returns the geometry a Client can use with the specified option. This method should be preferred over other methods providing screen sizes as the various options take constraints such as struts set on panels into account. This method is also multi screen aware, but there are also options to get full areas. option The type of area which should be considered screen The screen for which the area should be considered desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const QPoint &amp;amp;amp;point, int desktop) const ''': Overloaded method for convenience. option The type of area which should be considered point The coordinates which have to be included in the area desktop The desktop for which the area should be considered, in general there should not be a difference The specified screen geometry&lt;br /&gt;
* ''QRect'' '''clientArea(ClientAreaOption option, const Client *client) const ''': Overloaded method for convenience. client The Client for which the area should be retrieved The specified screen geometry&lt;br /&gt;
* ''QString'' '''desktopName(int desktop) const ''': Returns the name for the given desktop.&lt;br /&gt;
* ''QString'' '''supportInformation() const ''': Provides support information about the currently running KWin instance.&lt;br /&gt;
&lt;br /&gt;
== KWin::Toplevel ==&lt;br /&gt;
Toplevel is an abstract base class for all &amp;quot;Windows&amp;quot;. You cannot use it directly, but everything available on Toplevel is available on Client, too.&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
* ''bool'' '''alpha'''&lt;br /&gt;
* ''qulonglong'' '''frameId'''&lt;br /&gt;
* ''QRect'' '''geometry'''&lt;br /&gt;
* ''int'' '''height'''&lt;br /&gt;
* ''QPoint'' '''pos'''&lt;br /&gt;
* ''int'' '''screen'''&lt;br /&gt;
* ''QSize'' '''size'''&lt;br /&gt;
* ''int'' '''width'''&lt;br /&gt;
* ''qulonglong'' '''windowId'''&lt;br /&gt;
* ''int'' '''x'''&lt;br /&gt;
* ''int'' '''y'''&lt;br /&gt;
* ''int'' '''desktop'''&lt;br /&gt;
* ''QRect'' '''rect'''&lt;br /&gt;
* ''QPoint'' '''clientPos'''&lt;br /&gt;
* ''QSize'' '''clientSize'''&lt;br /&gt;
* ''QByteArray'' '''resourceName'''&lt;br /&gt;
* ''QByteArray'' '''resourceClass'''&lt;br /&gt;
* ''QByteArray'' '''windowRole'''&lt;br /&gt;
* ''bool'' '''desktopWindow''': Returns whether the window is a desktop background window (the one with wallpaper). See _NET_WM_WINDOW_TYPE_DESKTOP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''dock''': Returns whether the window is a dock (i.e. a panel). See _NET_WM_WINDOW_TYPE_DOCK at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''toolbar''': Returns whether the window is a standalone (detached) toolbar window. See _NET_WM_WINDOW_TYPE_TOOLBAR at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''menu''': Returns whether the window is a torn-off menu. See _NET_WM_WINDOW_TYPE_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''normalWindow''': Returns whether the window is a &amp;quot;normal&amp;quot; window, i.e. an application or any other window for which none of the specialized window types fit. See _NET_WM_WINDOW_TYPE_NORMAL at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''dialog''': Returns whether the window is a dialog window. See _NET_WM_WINDOW_TYPE_DIALOG at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''splash''': Returns whether the window is a splashscreen. Note that many (especially older) applications do not support marking their splash windows with this type. See _NET_WM_WINDOW_TYPE_SPLASH at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''utility''':Returns whether the window is a utility window, such as a tool window. See _NET_WM_WINDOW_TYPE_UTILITY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''dropdownMenu''': Returns whether the window is a dropdown menu (i.e. a popup directly or indirectly open from the applications menubar). See _NET_WM_WINDOW_TYPE_DROPDOWN_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''popupMenu''': Returns whether the window is a popup menu (that is not a torn-off or dropdown menu). See _NET_WM_WINDOW_TYPE_POPUP_MENU at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''tooltip''': Returns whether the window is a tooltip. See _NET_WM_WINDOW_TYPE_TOOLTIP at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''notification''': Returns whether the window is a window with a notification. See _NET_WM_WINDOW_TYPE_NOTIFICATION at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''comboBox''': Returns whether the window is a combobox popup. See _NET_WM_WINDOW_TYPE_COMBO at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''bool'' '''dndIcon''': Returns whether the window is a Drag&amp;amp;amp;Drop icon. See _NET_WM_WINDOW_TYPE_DND at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''int'' '''windowType''': Returns the NETWM window type See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html .         &lt;br /&gt;
* ''QStringList'' '''activities'''&lt;br /&gt;
&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
* ''qreal'' '''opacity''': &lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
* '''opacityChanged(KWin::Toplevel *toplevel, qreal oldOpacity)'''&lt;br /&gt;
* '''damaged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;damage)'''&lt;br /&gt;
* '''propertyNotify(KWin::Toplevel *toplevel, long a)'''&lt;br /&gt;
* '''geometryChanged()'''&lt;br /&gt;
* '''geometryShapeChanged(KWin::Toplevel *toplevel, const QRect &amp;amp;amp;old)'''&lt;br /&gt;
* '''windowClosed(KWin::Toplevel *toplevel, KWin::Deleted *deleted)'''&lt;br /&gt;
&lt;br /&gt;
== KWin::Client ==&lt;br /&gt;
The Client class encapsulates a window decoration frame.&lt;br /&gt;
'''Inherits:''' KWin::Toplevel&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''bool'' '''active''': Whether this Client is active or not. Use Workspace::activateClient() to activate a Client. Workspace::activateClient&lt;br /&gt;
* ''QString'' '''caption''': The Caption of the Client. Read from WM_NAME property together with a suffix for hostname and shortcut. To read only the caption as provided by WM_NAME, use the getter with an additional false value.&lt;br /&gt;
* ''bool'' '''closeable''': Whether the window can be closed by the user. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''fullScreenable''': Whether the Client can be set to fullScreen. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''maximizable''': Whether the Client can be maximized both horizontally and vertically. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''minimizable''': Whether the Client can be minimized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''modal''': Whether the Client represents a modal window.&lt;br /&gt;
* ''bool'' '''moveable''': Whether the Client is moveable. Even if it is not moveable, it might be possible to move it to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveableAcrossScreens&lt;br /&gt;
* ''bool'' '''moveableAcrossScreens''': Whether the Client can be moved to another screen. The property is evaluated each time it is invoked. Because of that there is no notify signal. moveable&lt;br /&gt;
* ''bool'' '''providesContextHelp''': Whether the Client provides context help. Mostly needed by decorations to decide whether to show the help button or not.Returns whether the window provides context help or not. If it does, you should show a help menu item or a help button like '?' and call contextHelp() if this is invoked.contextHelp()&lt;br /&gt;
* ''bool'' '''resizeable''': Whether the Client can be resized. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''shadeable''': Whether the Client can be shaded. The property is evaluated each time it is invoked. Because of that there is no notify signal.&lt;br /&gt;
* ''bool'' '''transient''': Whether the Client is a transient Window to another Window. transientFor&lt;br /&gt;
* ''KWin::Client'' '''transientFor''': The Client to which this Client is a transient if any.&lt;br /&gt;
* ''QSize'' '''basicUnit''': By how much the window wishes to grow/shrink at least. Usually QSize(1,1). MAY BE DISOBEYED BY THE WM! It's only for information, do NOT rely on it at all. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''move''': Whether the Client is currently being moved by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''bool'' '''resize''': Whether the Client is currently being resized by the user. Notify signal is emitted when the Client starts or ends move/resize mode.&lt;br /&gt;
* ''QRect'' '''iconGeometry''': The optional geometry representing the minimized Client in e.g a taskbar. See _NET_WM_ICON_GEOMETRY at http://standards.freedesktop.org/wm-spec/wm-spec-latest.html . The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''specialWindow''': Returns whether the window is any of special windows types (desktop, dock, splash, ...), i.e. window types that usually don't have a window frame and the user does not use window management (moving, raising,...) on them. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''bool'' '''wantsInput''': Whether the Client can accept keyboard focus. The value is evaluated each time the getter is called. Because of that no changed signal is provided.&lt;br /&gt;
* ''QPixmap'' '''icon'''&lt;br /&gt;
* ''KWin::ClientGroup'' '''clientGroup''': The &amp;quot;Window Tabs&amp;quot; Group this Client belongs to.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''int'' '''desktop''': The desktop this Client is on. If the Client is on all desktops the property has value -1.Returns the virtual desktop within the workspace() the client window is located in, 0 if it isn't located on any special desktop (not mapped yet), or NET::OnAllDesktops. Do not use desktop() directly, use isOnDesktop() instead.&lt;br /&gt;
* ''bool'' '''fullScreen''': Whether this Client is fullScreen. A Client might either be fullScreen due to the _NET_WM property or through a legacy support hack. The fullScreen state can only be changed if the Client does not use the legacy hack. To be sure whether the state changed, connect to the notify signal.&lt;br /&gt;
* ''QRect'' '''geometry''': The geometry of this Client. Be aware that depending on resize mode the geometryChanged signal might be emitted at each resize step or only at the end of the resize operation.&lt;br /&gt;
* ''bool'' '''keepAbove''': Whether the Client is set to be kept above other windows.&lt;br /&gt;
* ''bool'' '''keepBelow''': Whether the Client is set to be kept below other windows.&lt;br /&gt;
* ''bool'' '''minimized''': Whether the Client is minimized.&lt;br /&gt;
* ''bool'' '''shade''': Whether the Client is shaded.&lt;br /&gt;
* ''bool'' '''skipSwitcher''': Whether the Client should be excluded from window switching effects.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''clientManaging(KWin::Client *)'''&lt;br /&gt;
* '''s_unminimized()'''&lt;br /&gt;
* '''maximizeSet(QPair&amp;amp;lt; bool, bool &amp;amp;gt;)'''&lt;br /&gt;
* '''clientMaximizedStateChanged(KWin::Client *, KDecorationDefines::MaximizeMode)'''&lt;br /&gt;
* '''clientMinimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientUnminimized(KWin::Client *client, bool animate)'''&lt;br /&gt;
* '''clientStartUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''clientStepUserMovedResized(KWin::Client *, const QRect &amp;amp;amp;)'''&lt;br /&gt;
* '''clientFinishUserMovedResized(KWin::Client *)'''&lt;br /&gt;
* '''activeChanged()'''&lt;br /&gt;
* '''captionChanged()'''&lt;br /&gt;
* '''desktopChanged()'''&lt;br /&gt;
* '''fullScreenChanged()'''&lt;br /&gt;
* '''transientChanged()'''&lt;br /&gt;
* '''modalChanged()'''&lt;br /&gt;
* '''shadeChanged()'''&lt;br /&gt;
* '''keepAboveChanged()'''&lt;br /&gt;
* '''keepBelowChanged()'''&lt;br /&gt;
* '''minimizedChanged()'''&lt;br /&gt;
* '''moveResizedChanged()'''&lt;br /&gt;
* '''iconChanged()'''&lt;br /&gt;
* '''skipSwitcherChanged()'''&lt;br /&gt;
* '''clientGroupChanged()''': Emitted whenever the Client's ClientGroup changed. That is whenever the Client is moved to another group, but not when a Client gets added or removed to the Client's ClientGroup.&lt;br /&gt;
&lt;br /&gt;
=== Functions ===  &lt;br /&gt;
* '''closeWindow()''': Closes the window by either sending a delete_window message or using XKill.&lt;br /&gt;
&lt;br /&gt;
== KWin::ClientGroup ==&lt;br /&gt;
&lt;br /&gt;
=== Read-only Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''QSize'' '''minSize''': Combined minimum size of all clients in the group.&lt;br /&gt;
* ''QSize'' '''maxSize''': Combined maximum size of all clients in the group.&lt;br /&gt;
* ''int'' '''visibleClientIndex''': The index of the visible Client in this group.&lt;br /&gt;
* ''QList&amp;lt;KWin::Client*&amp;gt;'' '''clients''': The Clients in this group.&lt;br /&gt;
=== Read-write Properties ===&lt;br /&gt;
  &lt;br /&gt;
* ''KWin::Client'' '''visible''': Currently visible client in this group.&lt;br /&gt;
=== Signals ===&lt;br /&gt;
  &lt;br /&gt;
* '''visibleChanged()''': Emitted when the visible Client in this group changes.&lt;br /&gt;
* '''minSizeChanged()''': Emitted when the group's minimum size changes.&lt;br /&gt;
* '''maxSizeChanged()''': Emitted when the group's maximum size changes.&lt;br /&gt;
=== Functions ===&lt;br /&gt;
  &lt;br /&gt;
* '''add(KWin::Client *c, int before=-1, bool becomeVisible=false)''': Adds c to the group before before in the list. If becomeVisible is true then the added client will become also the visible client.&lt;br /&gt;
* '''remove(int index, const QRect &amp;amp;amp;newGeom=QRect(), bool toNullGroup=false)''': Remove the client at index index from the group. If newGeom is set then the client will move and resize to the specified geometry, otherwise it will stay where the group is located. If toNullGroup is not true then the client will be added to a new group of its own.&lt;br /&gt;
* '''remove(KWin::Client *c, const QRect &amp;amp;amp;newGeom=QRect(), bool toNullGroup=false)''': Remove c from the group. If newGeom is set then the client will move and resize to the specified geometry, otherwise it will stay where the group is located. If toNullGroup is not true then the client will be added to a new group of its own.&lt;br /&gt;
* '''removeAll()''': Remove all clients from this group. Results in all clients except the first being moved to a group of their own.&lt;br /&gt;
* '''closeAll()''': Close all clients in this group.&lt;br /&gt;
* '''move(int index, int before)''': Move the client at index index to the position before the client at index before in the list.&lt;br /&gt;
* '''move(KWin::Client *c, KWin::Client *before)''': Move c to the position before before in the list.&lt;br /&gt;
* '''displayClientMenu(int index, const QPoint &amp;amp;amp;pos)''': Display the right-click client menu belonging to the client at index index at the global coordinates specified by pos.&lt;br /&gt;
* '''displayClientMenu(KWin::Client *c, const QPoint &amp;amp;amp;pos)''': Display the right-click client menu belonging to c at the global coordinates specified by pos.&lt;br /&gt;
* ''int'' '''indexOfClient(KWin::Client *c)''': Returns the list index of c.&lt;br /&gt;
* ''bool'' '''contains(KWin::Client *c)''': Returns whether or not this group contains c.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting</id>
		<title>Development/Tutorials/KWin/Scripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting"/>
				<updated>2012-03-02T07:16:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* KWin Scripting Tutorial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Scripting Tutorial =&lt;br /&gt;
&lt;br /&gt;
{{warning|KWin's Scripting functionality has been reworked for KDE Plasma Workspaces 4.9. This tutorial does not cover the previous API. In case you had an existing script, please consult [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes]] for migration note.}}&lt;br /&gt;
&lt;br /&gt;
== Quick Start: Desktop Console ==&lt;br /&gt;
The easiest way to test KWin scripts is to use the Plasma Desktop Scripting Console which can be opened via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;wm console&amp;quot; as the search term It can be triggered directly via dbus with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
The interactive console allows to send a script to the window manager which is directly loaded and executed. All debug output is displayed in the scripting console. This provides a very easy way to develop and test the script to be written. It is important to know that scripts executed from the scripting console are only used by the window manager as long as the window manager is running. In a new session the script has to be sent to the window manager again.&lt;br /&gt;
&lt;br /&gt;
== Packaging KWin Scripts ==&lt;br /&gt;
In order to have KWin load a script on each session start the script has to be packaged. KWin Scripts use the [[Development/Tutorials/Plasma/PackageOverview|Plasma Package]] format. The recommended file ending for KWin Script packages is '''.kwinscript'''. In the metadata.desktop file of the package the value for &amp;quot;X-KDE-ServiceTypes&amp;quot; has to be '''KWin/Script''', as &amp;quot;X-Plasma-API&amp;quot; only '''javascript''' and '''declarativescript''' are supported.&lt;br /&gt;
&lt;br /&gt;
A packaged KWin Script can either be installed via the KWin Script KCM (note: the list does not yet reload after installing a script) or with the plasmapkg tool: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;plasmapkg --type kwinscript -i /path/to/myscript.kwinscript&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installation the script has to be enabled in the KWin Script KCM. The window manager will load the newly installed script directly at runtime as well as in new sessions.&lt;br /&gt;
&lt;br /&gt;
== Where can I find example scripts? ==&lt;br /&gt;
A few KWin Scripts are shipped directly with the window manager. You can find those in your system installation. Just use plasmapkg to get a list of the available scripts:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
plasmapkg -t kwinscript -l&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scripts can be found in the data install path of your local KDE installation under &amp;quot;kwin/scripts&amp;quot;. E.g. in '''~/.kde/share/apps/kwin/scripts/'''.&lt;br /&gt;
&lt;br /&gt;
Additionally you can find the scripts in the [https://projects.kde.org/projects/kde/kde-workspace/repository/revisions/master/show/kwin/scripts KDE-Workspace repository] and some example scripts in the [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/kwin/scripts KDE Examples repository].&lt;br /&gt;
&lt;br /&gt;
== KWin scripting basics ==&lt;br /&gt;
&lt;br /&gt;
To follow this tutorial, you must have some idea about [http://en.wikipedia.org/wiki/ECMAScript ECMAScript] (or [http://en.wikipedia.org/wiki/JavaScript JavaScript]. A quick introduction can be found in the [http://techbase.kde.org/Development/Tutorials/Plasma#JavaScript Plasma scripting tutorial].&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can either be written in [https://qt-project.org/doc/qt-4.8/scripting.html QtScript] (service type &amp;quot;javascript&amp;quot;) or [https://qt-project.org/doc/qt-4.8/qdeclarativeintroduction.html QML] (service type &amp;quot;declarativescript&amp;quot;). In order to develop KWin Scripts you should know the basic concepts of signals and properties.&lt;br /&gt;
&lt;br /&gt;
=== Global Objects and Functions ===&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can access two global properties '''workspace''' and '''options'''. The workspace object provides the interface to the core of the window manager, the options object provides read access to the current configuration options set on the window manager. To get an overview of what is available, please refer to the [[Development/Tutorials/KWin/Scripting/API_4.9|API documentation]].&lt;br /&gt;
&lt;br /&gt;
The following global functions are available to both QML and QtScript:&lt;br /&gt;
* '''print(QVariant...)''': prints the provided arguments to stdout. Takes an arbitrary number of arguments. Comparable to console.log() which should be preferred in QML scripts.&lt;br /&gt;
* '''readConfig(QString key, QVariant defaultValue=QVariant())''': reads a config option of the KWin Script. First argument is the config key, second argument is an optional default value in case the config key does not exist in the config file.&lt;br /&gt;
&lt;br /&gt;
=== Clients ===&lt;br /&gt;
The window manager calls a window it manages a &amp;quot;Client&amp;quot;. Most methods of workspace operating on windows either return a Client or require a Client. Internally the window manager supports more types of windows, which are not clients. Those windows are not available for KWin Scripts, but for KWin Effects. To have a common set of properties some properties and signals are defined on the parent class of Client called '''Toplevel'''. Be sure to check the documentation of that class, too when looking for properties. Be aware that some properties are defined as read-only on Toplevel, but as read-write on Client.&lt;br /&gt;
&lt;br /&gt;
The following examples illustrates how to get hold of all clients managed by the window manager and prints the clients' caption:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var clients = workspace.clientList(); &lt;br /&gt;
for (var i=0; i&amp;lt;clients.length; i++) {&lt;br /&gt;
  print(clients[i].caption);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example illustrates how to get informed about newly managed clients and prints out the window id of the new client:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
workspace.clientAdded.connect(function(client) {&lt;br /&gt;
  print(client.windowId);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To understand which parameters are passed to the event handlers (i.e. the functions we connect to), one can always refer the [[Development/Tutorials/KWin/Scripting/API]].&lt;br /&gt;
&lt;br /&gt;
== Your first (useful) script ==&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will be creating a script based on a suggestion by Eike Hein. In Eike’s words: ''“A quick use case question: For many years I’ve desired the behavior of disabling keep-above on a window with keep-above enabled when it is maximized, and re-enabling keep-above when it is restored. Is that be possible with kwin scripting? It’ll need the ability to trigger methods on state changes and store information above a specific window across those state changes, I guess.”''&lt;br /&gt;
&lt;br /&gt;
Other than the really function and useful script idea, what is really great about this is that it makes for a perfect tutorial example. I get to cover most of the important aspects of KWin scripting while at the same time creating something useful.&lt;br /&gt;
&lt;br /&gt;
So let’s get on with it…&lt;br /&gt;
&lt;br /&gt;
=== The basic outline ===&lt;br /&gt;
'''Design statement''': For every window that is set to '''‘Keep Above’''' others, the window should not be above all windows when it is maximized.&lt;br /&gt;
&lt;br /&gt;
To do so, this is how we’ll proceed:&lt;br /&gt;
#Create an array of clients whose '''‘Keep Above’''' property has been removed for maximized windows&lt;br /&gt;
#Whenever a client is maximized, if it’s ''''‘Keep Above’''' property is set, remove the '''‘Keep Above’''' property.&lt;br /&gt;
#Whenever a client is restored, if it is in the ‘array’, set it’s '''‘Keep Above’''' property.&lt;br /&gt;
&lt;br /&gt;
==== The basic framework ====&lt;br /&gt;
So, for first steps, let us just create an array:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
var keepAboveMaximized = new Array();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we need to know whenever a window got maximized. There are two approaches to achieve that: either connect to a signal emitted on the workspace object or to a signal of the client. As we need to track all Clients it is easier to just use the signal '''clientMaximizeSet'' on the workspace. This signal is emitted whenever the maximization state of a Client changes and passes the client and two boolean flags to the callback. The flags indicate whether the Client is maximized horizontally and/or vertically. If a client is maximized both horizontally and vertically it is considered as fully maximized. Let's try it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
workspace.clientMaximizeSet.connect(function(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    print(client.caption + &amp;quot; is fully maximized&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    print(client.caption + &amp;quot; is not maximized&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Best give the script a try in the desktop scripting console and play with your windows. Remember right and middle clicking the maximize button changes the horizontal/vertical state of the window.&lt;br /&gt;
&lt;br /&gt;
==== Checking keep above ====&lt;br /&gt;
Now we actually want to do something with the maximized Client. We need to check whether the window is set as keep above. If it is so, we need to remove the keep above state and remember that we modified the Client. For better readability the callback is moved into an own method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This code checks whether the window is maximized, if that is the case we access the Client's '''keepAbove''' property which is a boolean. If the Client is keep above we append the Client to our global array '''keepAboveMaximized''' of Clients we modified. This is important to be able to reset the keep above state when the window gets restored again.&lt;br /&gt;
&lt;br /&gt;
Last but not least we have to remove keep above which is a simple assignment to the Client's property. If you want to test it in the desktop scripting console remember to adjust the signal connection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
workspace.clientMaximizeSet.connect(manageKeepAbove);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Restoring it all ====&lt;br /&gt;
&lt;br /&gt;
Now the last and most important part of it all. Whenver the client is restored, we must set it’s '''‘Keep Above’''' property if it was set earlier. To do this, we must simply extend our '''manageKeepAbove''' code to handle this scenario. In case the client is not maximized both vertically and horizontally, we check if the client is in our '''keepAboveMaximized''' arrray and if it is, we set its '''‘Keep Above’''' property, otherwise we don’t bother:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // no longer maximized&lt;br /&gt;
    var found = keepAboveMaximized.indexOf(client);&lt;br /&gt;
    if (found != -1) {&lt;br /&gt;
      client.keepAbove = true;&lt;br /&gt;
      keepAboveMaximized.splice(found, 1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the end, our entire script looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
var keepAboveMaximized = new Array();&lt;br /&gt;
&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // no longer maximized&lt;br /&gt;
    var found = keepAboveMaximized.indexOf(client);&lt;br /&gt;
    if (found != -1) {&lt;br /&gt;
      client.keepAbove = true;&lt;br /&gt;
      keepAboveMaximized.splice(found, 1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
workspace.clientMaximizeSet.connect(manageKeepAbove);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script in Plasma Package structure can be found in the [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/kwin/scripts/keepaboverestored kde-examples repository].&lt;br /&gt;
&lt;br /&gt;
=== What next? ===&lt;br /&gt;
The script is of course very simple. It does not take care of windows which are already present when the window manager starts. It might be an idea to restrict the script to some window classes (e.g. video players). It's up to you.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting</id>
		<title>Development/Tutorials/KWin/Scripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting"/>
				<updated>2012-03-02T07:06:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* The basic outline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Scripting Tutorial =&lt;br /&gt;
&lt;br /&gt;
{{warning|KWin's Scripting functionality has been reworked for KDE Plasma Workspaces 4.9. This tutorial does not cover the previous API. In case you had an existing script, please consult [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes]] for migration note.}}&lt;br /&gt;
&lt;br /&gt;
== Quick Start: Desktop Console ==&lt;br /&gt;
The easiest way to test KWin scripts is to use the Plasma Desktop Scripting Console which can be opened via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;wm console&amp;quot; as the search term It can be triggered directly via dbus with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
The interactive console allows to send a script to the window manager which is directly loaded and executed. All debug output is displayed in the scripting console. This provides a very easy way to develop and test the script to be written. It is important to know that scripts executed from the scripting console are only used by the window manager as long as the window manager is running. In a new session the script has to be sent to the window manager again.&lt;br /&gt;
&lt;br /&gt;
== Packaging KWin Scripts ==&lt;br /&gt;
In order to have KWin load a script on each session start the script has to be packaged. KWin Scripts use the [[Development/Tutorials/Plasma/PackageOverview|Plasma Package]] format. The recommended file ending for KWin Script packages is '''.kwinscript'''. In the metadata.desktop file of the package the value for &amp;quot;X-KDE-ServiceTypes&amp;quot; has to be '''KWin/Script''', as &amp;quot;X-Plasma-API&amp;quot; only '''javascript''' and '''declarativescript''' are supported.&lt;br /&gt;
&lt;br /&gt;
A packaged KWin Script can either be installed via the KWin Script KCM (note: the list does not yet reload after installing a script) or with the plasmapkg tool: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;plasmapkg --type kwinscript -i /path/to/myscript.kwinscript&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installation the script has to be enabled in the KWin Script KCM. The window manager will load the newly installed script directly at runtime as well as in new sessions.&lt;br /&gt;
&lt;br /&gt;
== KWin scripting basics ==&lt;br /&gt;
&lt;br /&gt;
To follow this tutorial, you must have some idea about [http://en.wikipedia.org/wiki/ECMAScript ECMAScript] (or [http://en.wikipedia.org/wiki/JavaScript JavaScript]. A quick introduction can be found in the [http://techbase.kde.org/Development/Tutorials/Plasma#JavaScript Plasma scripting tutorial].&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can either be written in [https://qt-project.org/doc/qt-4.8/scripting.html QtScript] (service type &amp;quot;javascript&amp;quot;) or [https://qt-project.org/doc/qt-4.8/qdeclarativeintroduction.html QML] (service type &amp;quot;declarativescript&amp;quot;). In order to develop KWin Scripts you should know the basic concepts of signals and properties.&lt;br /&gt;
&lt;br /&gt;
=== Global Objects and Functions ===&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can access two global properties '''workspace''' and '''options'''. The workspace object provides the interface to the core of the window manager, the options object provides read access to the current configuration options set on the window manager. To get an overview of what is available, please refer to the [[Development/Tutorials/KWin/Scripting/API_4.9|API documentation]].&lt;br /&gt;
&lt;br /&gt;
The following global functions are available to both QML and QtScript:&lt;br /&gt;
* '''print(QVariant...)''': prints the provided arguments to stdout. Takes an arbitrary number of arguments. Comparable to console.log() which should be preferred in QML scripts.&lt;br /&gt;
* '''readConfig(QString key, QVariant defaultValue=QVariant())''': reads a config option of the KWin Script. First argument is the config key, second argument is an optional default value in case the config key does not exist in the config file.&lt;br /&gt;
&lt;br /&gt;
=== Clients ===&lt;br /&gt;
The window manager calls a window it manages a &amp;quot;Client&amp;quot;. Most methods of workspace operating on windows either return a Client or require a Client. Internally the window manager supports more types of windows, which are not clients. Those windows are not available for KWin Scripts, but for KWin Effects. To have a common set of properties some properties and signals are defined on the parent class of Client called '''Toplevel'''. Be sure to check the documentation of that class, too when looking for properties. Be aware that some properties are defined as read-only on Toplevel, but as read-write on Client.&lt;br /&gt;
&lt;br /&gt;
The following examples illustrates how to get hold of all clients managed by the window manager and prints the clients' caption:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var clients = workspace.clientList(); &lt;br /&gt;
for (var i=0; i&amp;lt;clients.length; i++) {&lt;br /&gt;
  print(clients[i].caption);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example illustrates how to get informed about newly managed clients and prints out the window id of the new client:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
workspace.clientAdded.connect(function(client) {&lt;br /&gt;
  print(client.windowId);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To understand which parameters are passed to the event handlers (i.e. the functions we connect to), one can always refer the [[Development/Tutorials/KWin/Scripting/API]].&lt;br /&gt;
&lt;br /&gt;
== Your first (useful) script ==&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will be creating a script based on a suggestion by Eike Hein. In Eike’s words: ''“A quick use case question: For many years I’ve desired the behavior of disabling keep-above on a window with keep-above enabled when it is maximized, and re-enabling keep-above when it is restored. Is that be possible with kwin scripting? It’ll need the ability to trigger methods on state changes and store information above a specific window across those state changes, I guess.”''&lt;br /&gt;
&lt;br /&gt;
Other than the really function and useful script idea, what is really great about this is that it makes for a perfect tutorial example. I get to cover most of the important aspects of KWin scripting while at the same time creating something useful.&lt;br /&gt;
&lt;br /&gt;
So let’s get on with it…&lt;br /&gt;
&lt;br /&gt;
=== The basic outline ===&lt;br /&gt;
'''Design statement''': For every window that is set to '''‘Keep Above’''' others, the window should not be above all windows when it is maximized.&lt;br /&gt;
&lt;br /&gt;
To do so, this is how we’ll proceed:&lt;br /&gt;
#Create an array of clients whose '''‘Keep Above’''' property has been removed for maximized windows&lt;br /&gt;
#Whenever a client is maximized, if it’s ''''‘Keep Above’''' property is set, remove the '''‘Keep Above’''' property.&lt;br /&gt;
#Whenever a client is restored, if it is in the ‘array’, set it’s '''‘Keep Above’''' property.&lt;br /&gt;
&lt;br /&gt;
==== The basic framework ====&lt;br /&gt;
So, for first steps, let us just create an array:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
var keepAboveMaximized = new Array();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we need to know whenever a window got maximized. There are two approaches to achieve that: either connect to a signal emitted on the workspace object or to a signal of the client. As we need to track all Clients it is easier to just use the signal '''clientMaximizeSet'' on the workspace. This signal is emitted whenever the maximization state of a Client changes and passes the client and two boolean flags to the callback. The flags indicate whether the Client is maximized horizontally and/or vertically. If a client is maximized both horizontally and vertically it is considered as fully maximized. Let's try it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
workspace.clientMaximizeSet.connect(function(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    print(client.caption + &amp;quot; is fully maximized&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    print(client.caption + &amp;quot; is not maximized&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Best give the script a try in the desktop scripting console and play with your windows. Remember right and middle clicking the maximize button changes the horizontal/vertical state of the window.&lt;br /&gt;
&lt;br /&gt;
==== Checking keep above ====&lt;br /&gt;
Now we actually want to do something with the maximized Client. We need to check whether the window is set as keep above. If it is so, we need to remove the keep above state and remember that we modified the Client. For better readability the callback is moved into an own method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This code checks whether the window is maximized, if that is the case we access the Client's '''keepAbove''' property which is a boolean. If the Client is keep above we append the Client to our global array '''keepAboveMaximized''' of Clients we modified. This is important to be able to reset the keep above state when the window gets restored again.&lt;br /&gt;
&lt;br /&gt;
Last but not least we have to remove keep above which is a simple assignment to the Client's property. If you want to test it in the desktop scripting console remember to adjust the signal connection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
workspace.clientMaximizeSet.connect(manageKeepAbove);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Restoring it all ====&lt;br /&gt;
&lt;br /&gt;
Now the last and most important part of it all. Whenver the client is restored, we must set it’s '''‘Keep Above’''' property if it was set earlier. To do this, we must simply extend our '''manageKeepAbove''' code to handle this scenario. In case the client is not maximized both vertically and horizontally, we check if the client is in our '''keepAboveMaximized''' arrray and if it is, we set its '''‘Keep Above’''' property, otherwise we don’t bother:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // no longer maximized&lt;br /&gt;
    var found = keepAboveMaximized.indexOf(client);&lt;br /&gt;
    if (found != -1) {&lt;br /&gt;
      client.keepAbove = true;&lt;br /&gt;
      keepAboveMaximized.splice(found, 1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the end, our entire script looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
var keepAboveMaximized = new Array();&lt;br /&gt;
&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // no longer maximized&lt;br /&gt;
    var found = keepAboveMaximized.indexOf(client);&lt;br /&gt;
    if (found != -1) {&lt;br /&gt;
      client.keepAbove = true;&lt;br /&gt;
      keepAboveMaximized.splice(found, 1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
workspace.clientMaximizeSet.connect(manageKeepAbove);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script in Plasma Package structure can be found in the [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/kwin/scripts/keepaboverestored kde-examples repository].&lt;br /&gt;
&lt;br /&gt;
=== What next? ===&lt;br /&gt;
The script is of course very simple. It does not take care of windows which are already present when the window manager starts. It might be an idea to restrict the script to some window classes (e.g. video players). It's up to you.&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting</id>
		<title>Development/Tutorials/KWin/Scripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting"/>
				<updated>2012-03-02T06:55:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* The basic outline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Scripting Tutorial =&lt;br /&gt;
&lt;br /&gt;
{{warning|KWin's Scripting functionality has been reworked for KDE Plasma Workspaces 4.9. This tutorial does not cover the previous API. In case you had an existing script, please consult [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes]] for migration note.}}&lt;br /&gt;
&lt;br /&gt;
== Quick Start: Desktop Console ==&lt;br /&gt;
The easiest way to test KWin scripts is to use the Plasma Desktop Scripting Console which can be opened via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;wm console&amp;quot; as the search term It can be triggered directly via dbus with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
The interactive console allows to send a script to the window manager which is directly loaded and executed. All debug output is displayed in the scripting console. This provides a very easy way to develop and test the script to be written. It is important to know that scripts executed from the scripting console are only used by the window manager as long as the window manager is running. In a new session the script has to be sent to the window manager again.&lt;br /&gt;
&lt;br /&gt;
== Packaging KWin Scripts ==&lt;br /&gt;
In order to have KWin load a script on each session start the script has to be packaged. KWin Scripts use the [[Development/Tutorials/Plasma/PackageOverview|Plasma Package]] format. The recommended file ending for KWin Script packages is '''.kwinscript'''. In the metadata.desktop file of the package the value for &amp;quot;X-KDE-ServiceTypes&amp;quot; has to be '''KWin/Script''', as &amp;quot;X-Plasma-API&amp;quot; only '''javascript''' and '''declarativescript''' are supported.&lt;br /&gt;
&lt;br /&gt;
A packaged KWin Script can either be installed via the KWin Script KCM (note: the list does not yet reload after installing a script) or with the plasmapkg tool: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;plasmapkg --type kwinscript -i /path/to/myscript.kwinscript&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installation the script has to be enabled in the KWin Script KCM. The window manager will load the newly installed script directly at runtime as well as in new sessions.&lt;br /&gt;
&lt;br /&gt;
== KWin scripting basics ==&lt;br /&gt;
&lt;br /&gt;
To follow this tutorial, you must have some idea about [http://en.wikipedia.org/wiki/ECMAScript ECMAScript] (or [http://en.wikipedia.org/wiki/JavaScript JavaScript]. A quick introduction can be found in the [http://techbase.kde.org/Development/Tutorials/Plasma#JavaScript Plasma scripting tutorial].&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can either be written in [https://qt-project.org/doc/qt-4.8/scripting.html QtScript] (service type &amp;quot;javascript&amp;quot;) or [https://qt-project.org/doc/qt-4.8/qdeclarativeintroduction.html QML] (service type &amp;quot;declarativescript&amp;quot;). In order to develop KWin Scripts you should know the basic concepts of signals and properties.&lt;br /&gt;
&lt;br /&gt;
=== Global Objects and Functions ===&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can access two global properties '''workspace''' and '''options'''. The workspace object provides the interface to the core of the window manager, the options object provides read access to the current configuration options set on the window manager. To get an overview of what is available, please refer to the [[Development/Tutorials/KWin/Scripting/API_4.9|API documentation]].&lt;br /&gt;
&lt;br /&gt;
The following global functions are available to both QML and QtScript:&lt;br /&gt;
* '''print(QVariant...)''': prints the provided arguments to stdout. Takes an arbitrary number of arguments. Comparable to console.log() which should be preferred in QML scripts.&lt;br /&gt;
* '''readConfig(QString key, QVariant defaultValue=QVariant())''': reads a config option of the KWin Script. First argument is the config key, second argument is an optional default value in case the config key does not exist in the config file.&lt;br /&gt;
&lt;br /&gt;
=== Clients ===&lt;br /&gt;
The window manager calls a window it manages a &amp;quot;Client&amp;quot;. Most methods of workspace operating on windows either return a Client or require a Client. Internally the window manager supports more types of windows, which are not clients. Those windows are not available for KWin Scripts, but for KWin Effects. To have a common set of properties some properties and signals are defined on the parent class of Client called '''Toplevel'''. Be sure to check the documentation of that class, too when looking for properties. Be aware that some properties are defined as read-only on Toplevel, but as read-write on Client.&lt;br /&gt;
&lt;br /&gt;
The following examples illustrates how to get hold of all clients managed by the window manager and prints the clients' caption:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var clients = workspace.clientList(); &lt;br /&gt;
for (var i=0; i&amp;lt;clients.length; i++) {&lt;br /&gt;
  print(clients[i].caption);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following example illustrates how to get informed about newly managed clients and prints out the window id of the new client:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
workspace.clientAdded.connect(function(client) {&lt;br /&gt;
  print(client.windowId);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To understand which parameters are passed to the event handlers (i.e. the functions we connect to), one can always refer the [[Development/Tutorials/KWin/Scripting/API]].&lt;br /&gt;
&lt;br /&gt;
== Your first (useful) script ==&lt;br /&gt;
&lt;br /&gt;
In this tutorial we will be creating a script based on a suggestion by Eike Hein. In Eike’s words: ''“A quick use case question: For many years I’ve desired the behavior of disabling keep-above on a window with keep-above enabled when it is maximized, and re-enabling keep-above when it is restored. Is that be possible with kwin scripting? It’ll need the ability to trigger methods on state changes and store information above a specific window across those state changes, I guess.”''&lt;br /&gt;
&lt;br /&gt;
Other than the really function and useful script idea, what is really great about this is that it makes for a perfect tutorial example. I get to cover most of the important aspects of KWin scripting while at the same time creating something useful.&lt;br /&gt;
&lt;br /&gt;
So let’s get on with it…&lt;br /&gt;
&lt;br /&gt;
=== The basic outline ===&lt;br /&gt;
'''Design statement''': For every window that is set to '''‘Keep Above’''' others, the window should not be above all windows when it is maximized.&lt;br /&gt;
&lt;br /&gt;
To do so, this is how we’ll proceed:&lt;br /&gt;
#Create an array of clients whose '''‘Keep Above’''' property has been removed for maximized windows&lt;br /&gt;
#Whenever a client is maximized, if it’s ''''‘Keep Above’''' property is set, remove the '''‘Keep Above’''' property.&lt;br /&gt;
#Whenever a client is restored, if it is in the ‘array’, set it’s '''‘Keep Above’''' property.&lt;br /&gt;
&lt;br /&gt;
==== The basic framework ====&lt;br /&gt;
So, for first steps, let us just create an array:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
var keepAboveMaximized = new Array();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we need to know whenever a window got maximized. There are two approaches to achieve that: either connect to a signal emitted on the workspace object or to a signal of the client. As we need to track all Clients it is easier to just use the signal '''clientMaximizeSet'' on the workspace. This signal is emitted whenever the maximization state of a Client changes and passes the client and two boolean flags to the callback. The flags indicate whether the Client is maximized horizontally and/or vertically. If a client is maximized both horizontally and vertically it is considered as fully maximized. Let's try it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
workspace.clientMaximizeSet.connect(function(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    print(client.caption + &amp;quot; is fully maximized&amp;quot;);&lt;br /&gt;
  } else {&lt;br /&gt;
    print(client.caption + &amp;quot; is not maximized&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Best give the script a try in the desktop scripting console and play with your windows. Remember right and middle clicking the maximize button changes the horizontal/vertical state of the window&lt;br /&gt;
&lt;br /&gt;
==== Restoring it all ====&lt;br /&gt;
&lt;br /&gt;
Now the last and most important part of it all. Whenver the client is restored, we must set it’s '''‘Keep Above’''' property if it was set earlier. To do this, we must simply extend our '''manageKeepAbove''' code to handle this scenario. In case the client is not maximized both vertically and horizontally, we check if the client is in our '''ka_clients''' arrray and if it is, we set its '''‘Keep Above’''' property, otherwise we don’t bother:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // no longer maximized&lt;br /&gt;
    var found = keepAboveMaximized.indexOf(client);&lt;br /&gt;
    if (found != -1) {&lt;br /&gt;
      client.keepAbove = true;&lt;br /&gt;
      keepAboveMaximized.splice(found, 1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the end, our entire script looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=javascript&amp;gt;&lt;br /&gt;
var keepAboveMaximized = new Array();&lt;br /&gt;
&lt;br /&gt;
function manageKeepAbove(client, h, v) {&lt;br /&gt;
  if (h &amp;amp;&amp;amp; v) {&lt;br /&gt;
    // maximized&lt;br /&gt;
    if (client.keepAbove) {&lt;br /&gt;
      keepAboveMaximized[keepAboveMaximized.length] = client;&lt;br /&gt;
      client.keepAbove = false;&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    // no longer maximized&lt;br /&gt;
    var found = keepAboveMaximized.indexOf(client);&lt;br /&gt;
    if (found != -1) {&lt;br /&gt;
      client.keepAbove = true;&lt;br /&gt;
      keepAboveMaximized.splice(found, 1);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
workspace.clientMaximizeSet.connect(manageKeepAbove);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The script in Plasma Package structure can be found in the [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/kwin/scripts/keepaboverestored kde-examples repository].&lt;/div&gt;</summary>
		<author><name>Mgraesslin</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWin/Scripting</id>
		<title>Development/Tutorials/KWin/Scripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWin/Scripting"/>
				<updated>2012-03-02T06:44:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mgraesslin: /* The basic framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KWin Scripting Tutorial =&lt;br /&gt;
&lt;br /&gt;
{{warning|KWin's Scripting functionality has been reworked for KDE Plasma Workspaces 4.9. This tutorial does not cover the previous API. In case you had an existing script, please consult [[Projects/KWin/Scripting_Update_Notes|Scripting Update Notes]] for migration note.}}&lt;br /&gt;
&lt;br /&gt;
== Quick Start: Desktop Console ==&lt;br /&gt;
The easiest way to test KWin scripts is to use the Plasma Desktop Scripting Console which can be opened via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;wm console&amp;quot; as the search term It can be triggered directly via dbus with &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveKWinConsole&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
The interactive console allows to send a script to the window manager which is directly loaded and executed. All debug output is displayed in the scripting console. This provides a very easy way to develop and test the script to be written. It is important to know that scripts executed from the scripting console are only used by the window manager as long as the window manager is running. In a new session the script has to be sent to the window manager again.&lt;br /&gt;
&lt;br /&gt;
== Packaging KWin Scripts ==&lt;br /&gt;
In order to have KWin load a script on each session start the script has to be packaged. KWin Scripts use the [[Development/Tutorials/Plasma/PackageOverview|Plasma Package]] format. The recommended file ending for KWin Script packages is '''.kwinscript'''. In the metadata.desktop file of the package the value for &amp;quot;X-KDE-ServiceTypes&amp;quot; has to be '''KWin/Script''', as &amp;quot;X-Plasma-API&amp;quot; only '''javascript''' and '''declarativescript''' are supported.&lt;br /&gt;
&lt;br /&gt;
A packaged KWin Script can either be installed via the KWin Script KCM (note: the list does not yet reload after installing a script) or with the plasmapkg tool: &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;plasmapkg --type kwinscript -i /path/to/myscript.kwinscript&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installation the script has to be enabled in the KWin Script KCM. The window manager will load the newly installed script directly at runtime as well as in new sessions.&lt;br /&gt;
&lt;br /&gt;
== KWin scripting basics ==&lt;br /&gt;
&lt;br /&gt;
To follow this tutorial, you must have some idea about [http://en.wikipedia.org/wiki/ECMAScript ECMAScript] (or [http://en.wikipedia.org/wiki/JavaScript JavaScript]. A quick introduction can be found in the [http://techbase.kde.org/Development/Tutorials/Plasma#JavaScript Plasma scripting tutorial].&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can either be written in [https://qt-project.org/doc/qt-4.8/scripting.html QtScript] (service type &amp;quot;javascript&amp;quot;) or [https://qt-project.org/doc/qt-4.8/qdeclarativeintroduction.html QML] (service type &amp;quot;declarativescript&amp;quot;). In order to develop KWin Scripts you should know the basic concepts of signals and properties.&lt;br /&gt;
&lt;br /&gt;
=== Global Objects and Functions ===&lt;br /&gt;
&lt;br /&gt;
KWin Scripts can access two global properties '''workspace''' and '''options'''. The workspace object provides the interface to the core of the window manager, the options object provide