<?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=Mwoehlke&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=Mwoehlke&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Mwoehlke"/>
		<updated>2013-05-23T05:30:37Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/KDE4</id>
		<title>Getting Started/Build/KDE4</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/KDE4"/>
				<updated>2009-09-16T15:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: s/qt-copy/kde-qt/, remove HAL (never had complete instructions)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 (Development version, TRUNK) From Source|&lt;br /&gt;
&lt;br /&gt;
pre=[[../../Sources/Anonymous_SVN|Anonymous SVN Quickstart Guide]]|&lt;br /&gt;
&lt;br /&gt;
next=[[../../Set_up_KDE_4_for_development|Set up KDE 4 for development]]|&lt;br /&gt;
&lt;br /&gt;
reading=[[../kdesvn-build|kdesvn-build: The KDE From Subversion Build Tool]]&amp;lt;br&amp;gt;[[Contribute/Send Patches|Contributing/Sending Patches]]&amp;lt;br&amp;gt;[[../../Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]&amp;lt;br&amp;gt;[[Development/Tutorials/CMake |Introduction to CMake]]&amp;lt;br&amp;gt;[[../KDE4/FreeBSD|FreeBSD notes]]&amp;lt;br&amp;gt;[[../KDE4/Mac OS X|Instructions for Mac OS X]]&amp;lt;br&amp;gt;[[../KDE4/Windows|Instructions for MS Windows]]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
This tutorial shows one way to get KDE from trunk running on Linux/BSD systems. There are also tutorials for [[Getting_Started/Build/KDE4/FreeBSD|FreeBSD]], [[/Windows|Windows]], [[/Mac OS X|Mac OS X]] and [http://solaris.kde.org/ Solaris]. This tutorial creates a special user, kde-devel, that will run KDE trunk. On the one hand, this allows other users to continue with another KDE version. On the other hand, testing special system-wide code like the KDE display manager is not possible. There is a tutorial to&lt;br /&gt;
[[Getting_Started/Build/KDE4/onVmWare|set up KDE 4 trunk on a virtual machine]].&lt;br /&gt;
&lt;br /&gt;
Throughout the tutorial the bash shell is used.&lt;br /&gt;
&lt;br /&gt;
{{warning|Expect a higher risk of build failure '''on Mondays''' when most kdelibs changes are committed. [http://developer.kde.org/~dirk/dashboard/ Dashboard] reports unexpected breakages. You are encouraged to fix failing modules.}}&lt;br /&gt;
&lt;br /&gt;
== Create a user account for KDE4 development ==&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
Some people like to have a separate user account for KDE 4 (for instance an old bug deleted files by mistake), and the instructions below were written with that approach.&lt;br /&gt;
&lt;br /&gt;
However it is much more efficient to do everything with a single user account, see [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]&lt;br /&gt;
for more details. &lt;br /&gt;
&lt;br /&gt;
You can still follow the instructions below, but don't put the environment variables in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;, put them in a separate file that you source to switch to the KDE 4 environment.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Command Line ===&lt;br /&gt;
{{Note|&lt;br /&gt;
On some systems a new user is configured by default to use {{path|/bin/sh}}. Using {{path|/bin/sh}} can be very inconvenient to work with and you may want to change it to {{path|/bin/bash}} or another shell.&lt;br /&gt;
On Ark Linux and Fedora, you can skip the &amp;lt;tt&amp;gt;-s /bin/bash&amp;lt;/tt&amp;gt; switch - {{path|/bin/sh}} is {{path|bash}}.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
useradd -m kde-devel -s /bin/bash&lt;br /&gt;
passwd kde-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
The new kde-devel user will not be added automatically to all the user groups, which will result in not having sound, not being able to sudo, etc. Edit your /etc/groups file to add the kde-devel user to all the groups that you need (probably the groups that your usual username is already assigned to).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Option 2: Using KControl ===&lt;br /&gt;
&lt;br /&gt;
Instead of using the commands above, you can also use the User module in the KDE Control Center if you already have KDE3 installed.&lt;br /&gt;
&lt;br /&gt;
=== Setting up the environment ===&lt;br /&gt;
&lt;br /&gt;
Copy the {{path|~/.bashrc}} from your normal user account to the new kde-devel account. Next, copy and paste the contents of the [[Getting Started/Increased Productivity in KDE4 with Scripts/.bashrc|example .bashrc]] into {{path|~kde-devel/.bashrc}}. Be sure to comment out the line &amp;lt;tt&amp;gt;alias make=makeobj&amp;lt;/tt&amp;gt; if you do not have the &amp;lt;tt&amp;gt;[[Getting Started/Build/KDE4#Required Software|makeobj]]&amp;lt;/tt&amp;gt; command available. Alternatively, you can download the kde-sdk package (or perform a subversion checkout) and include the kde-sdk/scripts/ directory in your path. You will probably also want to modify the path to make sure it doesn't include your kde3 paths. Also if you want to use KDevelop to develop KDE 4 applications you may pass the ''-GKDevelop3'' flag to the ''cmake'' command (to make CMake generate KDevelop project files, it will help to avoid rebuilding in the future, see [[Getting_Started/Set_up_KDE_4_for_development#Setting_up_the_environment|this]]).  &lt;br /&gt;
To make it run, you have to open a new bash or to execute &lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
source ~/.bashrc&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will provide access to commands such as &amp;lt;tt&amp;gt;cmakekde&amp;lt;/tt&amp;gt; that are used in this tutorial as well as ensure that the proper paths are in place for Qt, KDE and CMake binaries.&lt;br /&gt;
&lt;br /&gt;
For more information, please read the [[Getting Started/Increased Productivity in KDE4 with Scripts]] tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Switching to the New User ===&lt;br /&gt;
Switch to the user kde-devel:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
ssh -X kde-devel@localhost&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
If the ssh command fails, check out the [[Getting_Started/Set_up_KDE_4_for_development#Launching_KDE_4_apps|Launching KDE 4 apps]] section of the [[Getting_Started/Set_up_KDE_4_for_development|KDE4 development guide]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Required packages from your distribution ==&lt;br /&gt;
The requirements to build kde4 from source vary from distribution to distribution. Instructions for your distribution are provided below:&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Ark Linux|Ark Linux]]&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Arch Linux|Arch Linux]]&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Fedora|Fedora]]&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Kubuntu and Debian|Kubuntu and Debian]]&lt;br /&gt;
* [[Getting_Started/Build/KDE4/openSUSE|openSUSE]] Note: there is a [http://en.opensuse.org/KDE/Developing/Guide specific guide for openSUSE]. However be careful because it updates a huge number of your stable packages.&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Gentoo|Gentoo]]&lt;br /&gt;
* [[Getting_Started/Build/KDE4/LFS|Linux from Scratch]] or to build from source.&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Mandriva|Mandriva]]&lt;br /&gt;
&lt;br /&gt;
* [[Getting_Started/Build/KDE4/Generic|any other distro]]&lt;br /&gt;
&lt;br /&gt;
Your next compilation step depends on the packages supplied by your distro.&lt;br /&gt;
&lt;br /&gt;
=== Compiling kde-qt, etc. ===&lt;br /&gt;
If you do not want to use the packages provided by your distro you can compile things like Qt yourself. Instructions for building all dependencies including CMake, Qt4 (kde-qt) and kdesupport are available in [[Getting_Started/Build/KDE4/Prerequisites|the build prerequisites page]].  Note that automoc, phonon, strigi, soprano, and a few other things are part of kdesupport, so if you have errors about these missing, you'll need to get kdesupport.&lt;br /&gt;
&lt;br /&gt;
== Building KDE for development or stable use ==&lt;br /&gt;
&lt;br /&gt;
The commands below are used to build the latest unstable version of KDE from trunk. This should not be used in a production environment, but is recommended for developers.&lt;br /&gt;
&lt;br /&gt;
To build the stable version of KDE4, change the svn checkout commands below to &amp;lt;tt&amp;gt;branches/KDE/4.3/&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;trunk/KDE/&amp;lt;/tt&amp;gt;, ie:&lt;br /&gt;
&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/branches/KDE/4.3/kdelibs&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/branches/KDE/4.3/kdepimlibs&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/branches/KDE/4.3/kdebase&lt;br /&gt;
&lt;br /&gt;
etc...&lt;br /&gt;
&lt;br /&gt;
== kdelibs ==&lt;br /&gt;
&lt;br /&gt;
We can now move on to building KDE's base libraries.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
 cd   &lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 mkdir KDE &amp;amp;&amp;amp; cd KDE&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We change to the base source directory (line 1) then make and go into the KDE directory (line 3). We download the sources for kdelibs using subversion (line 4), go into the new {{path|~/kde/src/KDE/kdelibs}} directory (line 5), and commence the build (line 6). This will leave us in the &amp;lt;tt&amp;gt;kdelibs&amp;lt;/tt&amp;gt; build directory after the build is completed.&lt;br /&gt;
&lt;br /&gt;
{{tip|There might be missing dependencies on your system! They are easily overlooked in the output of &amp;lt;tt&amp;gt;cmakekde&amp;lt;/tt&amp;gt;.&lt;br /&gt;
You might want to do a &amp;lt;tt&amp;gt;cmake $KDE_SRC/KDE/MODULE_NAME&amp;lt;/tt&amp;gt; prior to compiling any kde modules (like kdelibs, kdepimlibs etc.)}}&lt;br /&gt;
&lt;br /&gt;
=== Additional KDE-specific CMake know-how ===&lt;br /&gt;
&lt;br /&gt;
There are additional CMake modules in {{path|kdelibs/cmake/modules/}} that are necessary for building KDE4 applications. These will be installed for you when  kdelibs itself is installed.&lt;br /&gt;
&lt;br /&gt;
To make a non-debug-release (e.g. suppressing all kDebug() messages), use e.g.&lt;br /&gt;
 cmake -DCMAKE_BUILD_TYPE=Release . &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
For troubleshooting information, see the [[Getting_Started/Build/KDE4/Troubleshooting#Issues_building_kdelibs|kdelibs troubleshooting section]].&lt;br /&gt;
&lt;br /&gt;
== kdepimlibs ==&lt;br /&gt;
Currently kdebase depends on kdepimlibs so it is required to install it first. These libraries are also shared by other packages such as those within kdepim, kdeutils and kdenetwork.&lt;br /&gt;
&lt;br /&gt;
=== libical ===&lt;br /&gt;
Download libical from http://sourceforge.net/project/showfiles.php?group_id=16077, compile, link and install it.&lt;br /&gt;
 tar xvzf libical-0.41.tar.gz&lt;br /&gt;
 cd libical-0.41&lt;br /&gt;
 ./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
 cs KDE # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs&lt;br /&gt;
 cd kdepimlibs&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We go into the KDE source directory (line 1), download the source code for kdepimlibs using subversion (line 2) and then go into the new {{path|~/kde/src/KDE/kdepimlibs}} directory (line 3). We then commence the build (line 4). This will leave us in the &amp;lt;tt&amp;gt;kdepimlibs&amp;lt;/tt&amp;gt; build directory after the build is completed.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
For troubleshooting information, see the [[Getting_Started/Build/KDE4/Troubleshooting#Issues_building_kdepimlibs|kdepimlibs troubleshooting section]].&lt;br /&gt;
&lt;br /&gt;
== kdebase ==&lt;br /&gt;
kdebase is divided into three parts:&lt;br /&gt;
* '''apps'''&lt;br /&gt;
:This contains applications like Dolphin or KWrite.&lt;br /&gt;
* '''runtime'''&lt;br /&gt;
:This contains things needed by every application at runtime, like icons. It is a required dependency for each KDE application, so you have to compile and install this.&lt;br /&gt;
* '''workspace'''&lt;br /&gt;
:This contains things specific to the KDE desktop, like Plasma or the window manager. Most stuff here depends on X11. You only need it if you want to build a full KDE desktop.&lt;br /&gt;
&lt;br /&gt;
You can build all of kdebase at once, which is described in the recipe below. If you only want to build kdebase-runtime, which is the only requirement, you can replace &amp;lt;code bash&amp;gt;cd kdebase&amp;lt;/code&amp;gt; with &amp;lt;code bash&amp;gt;cd kdebase/runtime&amp;lt;/code&amp;gt; in the recipe below.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
 cs KDE # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase&lt;br /&gt;
 cd kdebase&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
For troubleshooting information, see the [[Getting_Started/Build/KDE4/Troubleshooting#Issues_building_kdebase|kdebase troubleshooting section]].&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
Most KDE users are going to install translations before being able to use their desktop properly. Full information is given in the Localisation tutorial at [[Development/Tutorials/Localization/Building_KDE's_l10n_Module]].&lt;br /&gt;
For a single language, the following receipe installs messages and translated documentation:&lt;br /&gt;
&lt;br /&gt;
=== The Receipe ===&lt;br /&gt;
 cs KDE # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout -N svn://anonsvn.kde.org/home/kde/trunk/l10n-kde4&lt;br /&gt;
 cd l10n-kde4&lt;br /&gt;
 svn checkout scripts &amp;lt;language&amp;gt;&lt;br /&gt;
 ./scripts/autogen.sh &amp;lt;language&amp;gt;&lt;br /&gt;
 cd &amp;lt;language&amp;gt;&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running KDE 4 programs ==&lt;br /&gt;
&lt;br /&gt;
You can now run KDE 4 programs (e.g. kwrite) by typing:&lt;br /&gt;
 ssh -X kde-devel@localhost&lt;br /&gt;
 kwrite &lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
For troubleshooting issues see [[Getting_Started/Build/KDE4/Troubleshooting#Running_programs|troubleshooting running programs]].&lt;br /&gt;
&lt;br /&gt;
== Generating local API documentation ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Tools/apidox|generating apidox]] page.&lt;br /&gt;
&lt;br /&gt;
== Staying up to date ==&lt;br /&gt;
&lt;br /&gt;
In order to keep the kde4 installation up to date, each of the modules installed should be updated periodically. As Monday is the day for big changes in kdelibs, Tuesday may be the best day to do this. For each module checked out, run &amp;lt;tt&amp;gt;svn up&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
cs kdesupport # cs is not a typo&lt;br /&gt;
svn up&lt;br /&gt;
cb # cb is not a typo&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: it is not necessary to run cmakekde for updates.&lt;br /&gt;
&lt;br /&gt;
== Installing a subset of a module ==&lt;br /&gt;
&lt;br /&gt;
Many modules in KDE contain a large number of programs which could take a long time to download and compile. In cases where you want to work only on a particular program or programs in a module, it is possible to download and compile particular folders. In some cases, certain folders are required for any build of the module. This is determined in the CMakeLists.txt file of the module. For example the [http://websvn.kde.org/branches/KDE/4.0/kdegames/CMakeLists.txt?view=markup kdegames CMakeLists.txt file] lists:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_subdirectory(libkdegames)&lt;br /&gt;
add_subdirectory(libkmahjongg)&lt;br /&gt;
&lt;br /&gt;
macro_optional_add_subdirectory(doc)&lt;br /&gt;
macro_optional_add_subdirectory(lskat)&lt;br /&gt;
macro_optional_add_subdirectory(katomic)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, the libkdegames and libkmahjongg directories are required to build any of kdegames. The cmake directory will also usually be required. All the other directories (doc, katomic etc) are optional. They will be built if present on your machine. In this example, we build kmahjongg and kbattleship:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
cs KDE&lt;br /&gt;
svn co -N svn://anonsvn.kde.org/home/kde/trunk/KDE/kdegames # The -N switch performs a non-recursive checkout&lt;br /&gt;
cd kdegames&lt;br /&gt;
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdegames/libkdegames # Get required directories&lt;br /&gt;
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdegames/libkmahjongg&lt;br /&gt;
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdegames/cmake&lt;br /&gt;
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdegames/kbattleship # Get optional directories&lt;br /&gt;
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdegames/kmahjongg&lt;br /&gt;
cmakekde &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Success! ==&lt;br /&gt;
&lt;br /&gt;
You are now ready to start building other svn modules in the same fashion as you built kdebase, running and testing KDE4 or writing your own patches and applications.&lt;br /&gt;
&lt;br /&gt;
For further isolation of your development environment change symbolic links, which you will see after executing ls -lh $(kde4-config --localprefix), assuming newly installed kde4-config is called.&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started/Set up KDE 4 for development|Set up KDE 4 for development]] tutorial for how to start KDE 4 applications and how to use KDevelop to work on them.&lt;br /&gt;
&lt;br /&gt;
For most of what you need to know on patches see: [[Contribute/Send Patches|Contributing/Sending Patches]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build KDE]]&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Getting_Started/Build/Requirements</id>
		<title>Archive:Getting Started/Build/Requirements</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Getting_Started/Build/Requirements"/>
				<updated>2009-09-14T18:47:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: replace qt-copy references with kde-qt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/Prerequisites}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 From Source/Prerequisites|&lt;br /&gt;
&lt;br /&gt;
pre=[[../|KDE SVN Quickstart Guide]]|&lt;br /&gt;
&lt;br /&gt;
next=[[../|KDE SVN Quickstart Guide]]|&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
Some or all of these packages should be available for installation from your distribution. For ease of installation and upgrading it is a good idea to install distribution packages if a recent enough version is provided. Software required to build KDE4 includes:&lt;br /&gt;
&lt;br /&gt;
* gcc and g++, preferably version 4.2 or higher&lt;br /&gt;
* svn, the subversion revision control client&lt;br /&gt;
* pkg-config&lt;br /&gt;
* development libraries and headers for X11, OpenGL (mesa-common-dev and libglu1-mesa-dev), libjpeg, libpng, libungif, [http://clucene.sourceforge.net/index.php/Downloads libclucene], [http://download.librdf.org/source/ librdf], libxml2 and libxslt&lt;br /&gt;
* the &amp;lt;tt&amp;gt;makeobj&amp;lt;/tt&amp;gt; script, which is included in kdesdk. You can install it from kdesdk (kdesdk-scripts on Debian) or similar packages, or download at [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj WebSVN]&lt;br /&gt;
* the [http://freedesktop.org/wiki/Software/shared-mime-info shared-mime-info package], is the freedesktop MIME standard now used in KDE&lt;br /&gt;
* [http://boost.org/ boost], used by kdebase; after build and/or install, in order to make cmake aware about its location (FindBoost),  add the boost directory (which contains the include subdirectory) to CMAKE_INCLUDE_PATH or set a environment variable called BOOST_ROOT that points to the boost directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== D-Bus ==&lt;br /&gt;
QtDBus and KDE are known to work with D-Bus versions 0.62, as well as 0.92 and upwards. Versions 0.60 and 0.61 may work too but are not tested. Versions 0.90 and 0.91 are known not to work. We recommend using post-1.0 release versions (at least 0.94), so consider upgrading if you haven't done so.&lt;br /&gt;
&lt;br /&gt;
You may skip this section if you have a recent D-Bus version or if you don't want to upgrade. You probably want to skip building the bindings until/unless you know you will be building HAL (see below).&lt;br /&gt;
&lt;br /&gt;
Before running these steps in the recipe, make sure your X11 headers and libraries are available. The configure script run on line 5 of the following instructions should output:&lt;br /&gt;
 Building X11 code:        yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&lt;br /&gt;
{{tip|Make sure you did set up your environment correctly as described [[Getting_Started/Build/KDE4#Setting_up_the_environment|above]]. This is necessary for the &amp;lt;tt&amp;gt;cs&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cb&amp;lt;/tt&amp;gt; functions to work.}}&lt;br /&gt;
(NOTE: on my intrepid installation, I had to additionally set my CFLAGS to '-D_GNU_SOURCE' for this to work)&lt;br /&gt;
&lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]] &lt;br /&gt;
 wget http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz&lt;br /&gt;
 tar -xvzf dbus-1.0.2.tar.gz&lt;br /&gt;
 cd dbus-1.0.2/&lt;br /&gt;
 ./configure --prefix=$DBUSDIR --localstatedir=/var&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo dbus-uuidgen --ensure&lt;br /&gt;
&lt;br /&gt;
 cs # see above&lt;br /&gt;
 wget http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.74.tar.gz&lt;br /&gt;
 tar -xvzf dbus-glib-0.74.tar.gz&lt;br /&gt;
 cd dbus-glib-0.74/&lt;br /&gt;
 ./configure --prefix=$DBUSDIR&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 cd&lt;br /&gt;
 sudo chown -R kde-devel:kde-devel *&lt;br /&gt;
&lt;br /&gt;
=== What's Happening === &lt;br /&gt;
After changing into the source directory (line 1), D-Bus source code is downloaded from freedesktop.org (line 2) and unpacked (line 3). After going into the newly created D-Bus directory (line 4), the build is set up using the supplied {{path|configure}} script (line 5). After building (line 6) and installing (line 7) D-Bus, we use the &amp;lt;tt&amp;gt;dbus-uuidgen&amp;lt;/tt&amp;gt; tool to install a machine identification file that allows the bus to start automatically when the desktop session starts (line 8).&lt;br /&gt;
&lt;br /&gt;
Note that you need write access to {{path|/var}} for the last two steps. If your system does not have the sudo command, you can use the &amp;lt;tt&amp;gt;su&amp;lt;/tt&amp;gt; command instead, e.g. &amp;lt;tt&amp;gt;su -c &amp;quot;make install&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The steps for building the glib bindings are similar to the above.&lt;br /&gt;
&lt;br /&gt;
When these two packages are done building, we must fix the file ownership because 'sudo make install' has created root owned files and directories in ~kde-devel/kde.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get the error:&lt;br /&gt;
&amp;quot;configure: error: DBus development libraries not found&amp;quot;&lt;br /&gt;
do this:&lt;br /&gt;
export PKG_CONFIG_PATH=/lib/pkgconfig/&lt;br /&gt;
&lt;br /&gt;
== CMake ==&lt;br /&gt;
Skip this if you have [http://cmake.org/ CMake] &amp;gt;=2.6.2 installed. &lt;br /&gt;
You should be able to directly use the binary packages available on the [http://cmake.org/HTML/index.html CMake site]. There are also distribution specific packages available.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click Here to learn more]] &lt;br /&gt;
 wget http://www.cmake.org/files/v2.6/cmake-2.6.2.tar.gz&lt;br /&gt;
 tar -zxf cmake-2.6.2.tar.gz&lt;br /&gt;
 mkdir cmake-build&lt;br /&gt;
 cd cmake-build &lt;br /&gt;
 ../cmake-2.6.2/bootstrap&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
First, we go back to the &amp;lt;tt&amp;gt;kde-devel&amp;lt;/tt&amp;gt; user's source directory (line 1), get the CMake sources (line 2) and unpack them (line 3). We create a directory to build CMake in (line 4) and go into it (line 5). We then run the CMake bootstrap script to set up the CMake build (line 6), then make (line 7) and install it (line 8) using the root user.&lt;br /&gt;
&lt;br /&gt;
If your system does not have the &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt; command, you can instead do &amp;lt;tt&amp;gt;su -c &amp;quot;make install&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Qt ==&lt;br /&gt;
Next we need to get Qt4. KDE 4.3 builds against Qt 4.5, however KDE trunk requires Qt 4.6. If you plan to build trunk on an ongoing basis, it is probably easier to track kde-qt, especially as KDE trunk may occasionally require a pre-release version of Qt.&lt;br /&gt;
&lt;br /&gt;
Most up-to-date distributions will have packages of sufficiently new Qt to build the latest KDE stable branch. Some distributions may even package kde-qt; if so, using it is a viable option. If the distribution you use does not provide packages of the necessary version of Qt, it will be necessary to use the recipe below. More information can be found in the sections of the tutorial specific to each distribution.&lt;br /&gt;
&lt;br /&gt;
Building qt4.4 with the -no-qt3support option will cause things to break.&lt;br /&gt;
&lt;br /&gt;
Please read the [http://qt.gitorious.org/+kde-developers/qt/kde-qt/blobs/4.5.2-patched/README.kde-qt README.kde-qt] file for the necessary Qt configure options as well as currently known issues.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
 cs # Note: cs is not a typo. See  [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|&amp;lt;font color=red&amp;gt;.bashrc&amp;lt;/font&amp;gt;]] &lt;br /&gt;
 git clone git://gitorious.org/+kde-developers/qt/kde-qt.git qt-kde&lt;br /&gt;
 cd qt-kde&lt;br /&gt;
 ./configure [copy/paste configure line from README.kde-qt replacing &amp;lt;installdir&amp;gt; with $QTDIR]&lt;br /&gt;
 make -j2 # use 'make -j(X+1)' where X is your number of processors, to compile faster&lt;br /&gt;
 # if we don't install, we'll just clear obj files to&lt;br /&gt;
 # save disk space&lt;br /&gt;
 if [ &amp;quot;$QTDIR&amp;quot; = &amp;quot;`pwd`&amp;quot; ]; then \&lt;br /&gt;
 find . -name '*.o' -delete ; \&lt;br /&gt;
 else make install; fi;&lt;br /&gt;
&lt;br /&gt;
'''Make sure &amp;lt;tt&amp;gt;which qmake&amp;lt;/tt&amp;gt; delivers something out of $QTDIR, e.g.:'''&lt;br /&gt;
 /home/kde-devel/qt-kde/bin/qmake&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We switch back to the &amp;lt;tt&amp;gt;kde-devel&amp;lt;/tt&amp;gt; user's home directory (line 1) and download the source code, KDE branch, from gitorious using git (line 2). After changing into the resulting {{path|qt-kde}} directory (line 3), we then set up the build using the &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; script (line 4). The various command line options used are explained in the {{path|qt-kde/README.kde-qt}} file. Finally, we build the minimal requirements for KDE (line 6) and install (line 9) Qt. If install dir is the same as the current dir (line 7), then we just free some space (line 8) instead. If you want all the example and demo applications, you can either build them individually or simply do a &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; from the {{path|qt-kde}} directory. &lt;br /&gt;
&lt;br /&gt;
Note that the installation does not require root as it installs Qt locally into {{path|$QTDIR}}. Installation is necessary if {{path|$QTDIR}} differs from the source directory.&lt;br /&gt;
In the end, we make sure the cmake macro to find the Qt directory will work. It must be able to find qmake in $QTDIR.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get &amp;quot;error: X11/Xlib.h: No such file or directory&amp;quot;, install the devel package of &amp;lt;tt&amp;gt;xorg&amp;lt;/tt&amp;gt; (the actual name may vary between operating systems, for example it is &amp;lt;tt&amp;gt;xorg-dev&amp;lt;/tt&amp;gt; on Ubuntu based systems such as Kubuntu). &lt;br /&gt;
&lt;br /&gt;
If you get an error in the configure step about missing defines, check the value of &amp;lt;tt&amp;gt;$QMAKESPEC&amp;lt;/tt&amp;gt;.  Some distributions set this to point directly to the system-installed Qt.  If &amp;lt;tt&amp;gt;unset QMAKESPEC&amp;lt;/tt&amp;gt; solves the problem, you probably want to add it to the &amp;lt;tt&amp;gt;~/.bashrc&amp;lt;/tt&amp;gt; script.&lt;br /&gt;
&lt;br /&gt;
If you get an error &amp;quot;.pch/debug-shared/QtCore&amp;quot;, this is because Qt-4.3 enables precompiled headers if your gcc supports it, but for some reason it doesn't work for you. If you use distcc, configure qt with -no-pch. If you use icecream, update to the latest icecream from svn trunk.&lt;br /&gt;
&lt;br /&gt;
Try running any Qt program, like {{program|assistant}}. '''Note:''' You may need to run &amp;lt;tt&amp;gt;xhost +local:kde-devel&amp;lt;/tt&amp;gt; as your regular kde3 user to run this application.  If it crashes in QSpanData::adjustSpanMethods, then your problem is the oxygen style. Try removing {{path|lib/kde4/plugins/styles/kstyle-oxygen.so}} and {{path|lib/kde4/plugins/styles/oxygen.so}} if they exist in the KDE install prefix.&lt;br /&gt;
&lt;br /&gt;
=== Generating local API documentation ===&lt;br /&gt;
It's nice to have the Qt documentation locally for nice integration with [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|KDevelop]], and doing this is really quite easy (also shown in {{path|README.kde-qt}}):&lt;br /&gt;
 cd $KDE_SRC/qt-kde&lt;br /&gt;
 make docs&lt;br /&gt;
 ./config.status&lt;br /&gt;
 make install&lt;br /&gt;
Note that it is necessary to do this only once, even if you rebuild Qt later.&lt;br /&gt;
&lt;br /&gt;
== HAL ==&lt;br /&gt;
&lt;br /&gt;
{{tip|You can use qdbusviewer to see if you have org.freedesktop.hal. If not, you might need a newer version of hal. If you have org.freedesktop.hal, you probably don't need to, and don't ''want'' to, roll your own HAL.}}&lt;br /&gt;
&lt;br /&gt;
If your system requires you to build a newer version of HAL, there's a decent chance you'll need to build other stuff as well, some of which may not be straight forward. This, however, should only be required for older distros.&lt;br /&gt;
&lt;br /&gt;
== kdesupport ==&lt;br /&gt;
&lt;br /&gt;
{{warning|Don't forget to read the [[Getting_Started/Build/KDE4#Setting_up_the_environment|Setting Up The Environment]] section first.}}&lt;br /&gt;
&lt;br /&gt;
There are several libraries that KDE applications rely on in the kdesupport module. This includes Phonon, Strigi and Soprano for file metadata and search, QImageBlitz for image manipulation needed in kdebase, eigen for visual effects in applications such as Kalzium, taglib for music players and qca for some cryptographic needs. &lt;br /&gt;
&lt;br /&gt;
Strigi itself has a few dependencies as well: you will need the libraries and headers for libz, libbz2, openssl (libcrypto or libssl), libclucene (&amp;gt;=0.9.16a but watch out: version 0.9.17 does '''not''' work), and either libxml2 or libexpat.&lt;br /&gt;
&lt;br /&gt;
Please remember that if you use openSUSE, you can install the needed packages from the KDE:KDE4 buildservice repository and do not have to bother with fiddling the details below. Skip to the kdelibs section. &lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/&lt;br /&gt;
 cd kdesupport&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We change to the base source directory (line 1). We download the sources in kdesupport using subversion (line 2), go into the new {{path|~/kde/src/kdesupport}} directory (line 3), and commence the build (line 4). This will leave us in the kdesupport build directory after the build is completed.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get &lt;br /&gt;
   cmakekde: command not found&lt;br /&gt;
then you have to go manually into the kdesupport directory in ~ and execute the command cmakekde. if this still doesn't work, then something is wrong with your bashrc.&lt;br /&gt;
&lt;br /&gt;
If you get &lt;br /&gt;
 CMake Error: This project requires some variables to be set,&lt;br /&gt;
 and cmake can not find them.&lt;br /&gt;
 Please set the following variables:&lt;br /&gt;
 LIBXML2_INCLUDE_DIR (ADVANCED)&lt;br /&gt;
you should install the development package for libxml2.&lt;br /&gt;
&lt;br /&gt;
If you get &lt;br /&gt;
 CMake Error: Could NOT find REDLAND&lt;br /&gt;
then you need librdf from the Redland.&lt;br /&gt;
If your distribution does not provide the librdf package, you can download the source there: [http://download.librdf.org/source/ http://download.librdf.org/source/] and build it.&lt;br /&gt;
(Gentoo users: The ebuild for librdf is named dev-libs/redland)&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
 Fetching external item into 'kdesupport/admin'&lt;br /&gt;
 Error validating server certificate for 'https://...'&lt;br /&gt;
see [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]]&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
 FILE cannot create directory: /usr/lib[64]/qt4/plugins/crypto. Maybe need administrative privileges.&lt;br /&gt;
 &lt;br /&gt;
 make: *** [install] Error 255&lt;br /&gt;
take a second look in the .bashrc file described above, are paths correct?  ($QTDIR and $PATH are used to get the QT installation path)&lt;br /&gt;
Alternatively, you may see this error if you decided to use a distribution installed version of qt4 and skipped the Qt install above.  Either install qt-kde as describe above, or &amp;quot;sudo make install&amp;quot;. If you use &amp;quot;sudo make install&amp;quot;, make sure that you change the ownership back to your user for some of the ~/kde subdirectories that were effected by using sudo (ie. &amp;quot;&amp;lt;tt&amp;gt;sudo chown -R kde-devel:kde-devel ~/kde&amp;lt;/tt&amp;gt;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
If you get a message related to &lt;br /&gt;
   target libQtTest.so not found&lt;br /&gt;
you may need to recompile qt-kde. This time you should take out&lt;br /&gt;
   -nomake demos -nomake examples&lt;br /&gt;
from the configure command, so that Qt generates library QtTest.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
      CMake Error: Qt qmake not found!&lt;br /&gt;
Then:&lt;br /&gt;
      1) uncomment Qt section in .bashrc script (QTDIR, QT_PLUGINS_DIR,      &lt;br /&gt;
            PKG_CONFIG_PATH variable settings).&lt;br /&gt;
      2) source ~/.bashrc&lt;br /&gt;
      3) cd &amp;amp;&amp;amp; cd qt-kde&lt;br /&gt;
      4) make confclean&lt;br /&gt;
      5) repeat steps for installing Qt (from ./configure line).&lt;br /&gt;
      6) retry building kdesupport&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
      &amp;quot;CMake Error: Could NOT find BZip2&amp;quot;&lt;br /&gt;
then&lt;br /&gt;
      sudo apt-get install libbz2-dev&lt;br /&gt;
or&lt;br /&gt;
      urpmi libbzip2_1-devel&lt;br /&gt;
&lt;br /&gt;
If you get &lt;br /&gt;
      message that MySql support cannot be enabled&lt;br /&gt;
then&lt;br /&gt;
      you need to install corresponding devel package. (libmysqlclient-devel  for SuSe 11.1)&lt;br /&gt;
&lt;br /&gt;
== Next Step ==&lt;br /&gt;
Once all requirements have been installed it is time to install [[../#kdelibs|kdelibs]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-06-29T21:25:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Session management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to container, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grid Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the grid &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
The desktop and each container type have their own default setting whether they should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. Individual containers can also be configured for regular/shared or use the container-type default.&lt;br /&gt;
&lt;br /&gt;
When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in that container (not limited to immediate children) — &amp;quot;take all&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
Note that typical &amp;quot;hide menubar&amp;quot; option affects only application menu, not shared menu. To hide shared menubar user has to select &amp;quot;hide container menubar&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ MAYBE: in case with shared menu there could be added such container entries like &amp;quot;close window&amp;quot;, &amp;quot;create preset&amp;quot;, &amp;quot;convert to&amp;quot;, &amp;quot;help&amp;quot;, so the user would not have to use context menu to pick up those. And such entries would show up even if app does not have menu on its own. }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates containers.&lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (e.g. KWrite and Konqueror in GAI), and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
Data saved:&lt;br /&gt;
* set of windows of the container&lt;br /&gt;
* container type&lt;br /&gt;
* container class name&lt;br /&gt;
* container title&lt;br /&gt;
* container shared menu settings&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;At some point, we would like to be able to configure launching saved groups with arguments (e.g. file names), including which new application instances should get what arguments. This would allow e.g. an action on HTML documents to open the aforementioned KWrite+Konqueror group for simultaneous viewing and editing of the document(s).&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Collapsed entry in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with collapsed tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages collapsing (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] collapse similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] collapse similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or collapsed entry.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ nicer screenshot to show both of them in action }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar windows are those belonging to the same application, or containers with the same class. By default, each container is assigned a &amp;quot;class name&amp;quot; from its initial: contents and type. The class name can also be changed by the user for fine control over collapsing.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
TAI has special options for incremental adding:&amp;lt;br&amp;gt;&lt;br /&gt;
( ) add new entry next to the current one&amp;lt;br&amp;gt;&lt;br /&gt;
(*) add new entry as the last one&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
When the window which had focus is closed, focus is given to the next most recent window in the historic bookkeeping. A global option allows this behavior to be changed for TAI containers.&lt;br /&gt;
&lt;br /&gt;
When a window in a tabbed container is closed:&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Give focus to the previously-active window&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Give focus to the spatially adjacent window&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Give focus to nearest sibling of the same application kind, when possible&lt;br /&gt;
&lt;br /&gt;
The second option prefers the next window, but uses the previous window if the window closed was last in the spatial order.&lt;br /&gt;
&lt;br /&gt;
==== Close current document ====&lt;br /&gt;
''Close current document'' is only partly in the scope of NWI, as it is implemented at the application level. Applications may:&lt;br /&gt;
* not implement close-document&lt;br /&gt;
* always close the document, but never close the window&lt;br /&gt;
* always close the window&lt;br /&gt;
* conditionally close the window&lt;br /&gt;
&lt;br /&gt;
This last case involves NWI communication, likely by sending a 'close-window-conditional' signal to the WM. The window will be closed if the window has at least one sibling (application instance) of the same application kind. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine. (See the glossary for a more precise definition of when application instances are considered as belonging to &amp;quot;the same application&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The choice of behavior, and if any configuration is available, is left to the application.&lt;br /&gt;
&lt;br /&gt;
==== Quit application ====&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror). Also refers to the collection of all application instances which are of the same application kind running with the same access class (see below).&lt;br /&gt;
; application instance : See application window. For this page, an instance is '''not''' the same as a process.&lt;br /&gt;
; application window : A window of a particular application &amp;lt;font color=green&amp;gt;{ usually used when discussing sibling windows where some may be the same application }&amp;lt;/font&amp;gt;. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
When considering if two application instances belong to the same application, a number of factors which together comprise the &amp;quot;access class&amp;quot; (roughly referring to the expected permission set possessed by the application instance) are considered. These are the instance's security credentials &amp;lt;font color=green&amp;gt;{ for now, only euid is considered }&amp;lt;/font&amp;gt; and host machine. Two windows are not considered as belonging to the same application if:&lt;br /&gt;
* They are running from different machines (e.g. one local, one remote over X forwarding or specification of a remote X server)&lt;br /&gt;
* They were started under different users&lt;br /&gt;
* They do not belong to the same X session&lt;br /&gt;
&lt;br /&gt;
It should be noted that the window manager only considers windows under its control — that is, those running in the same X session. An application instance in another session cannot be considered as another instance of an application, since the window manager would not know about such a window.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-06-03T19:49:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: 'keep focus on same application kind' option when closing windows&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
The desktop and each container type have their own default setting whether they should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. Individual containers can also be configured for regular/shared or use the container-type default.&lt;br /&gt;
&lt;br /&gt;
When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in that container (not limited to immediate children) — &amp;quot;take all&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups. &lt;br /&gt;
&lt;br /&gt;
Data saved:&lt;br /&gt;
* set of windows of the container&lt;br /&gt;
* container type&lt;br /&gt;
* container class name&lt;br /&gt;
* container title&lt;br /&gt;
* container shared menu settings&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] group similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or group.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ nicer screenshot to show both of them in action }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar windows are those belonging to the same application, or containers with the same class. By default, each container is assigned a &amp;quot;class name&amp;quot; from its initial: contents and type. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
TAI has special options for incremental adding:&amp;lt;br&amp;gt;&lt;br /&gt;
( ) add new entry next to the current one&amp;lt;br&amp;gt;&lt;br /&gt;
(*) add new entry as the last one&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
When the window which had focus is closed, focus is given to the next most recent window in the historic bookkeeping. A global option allows this behavior to be changed for TAI containers.&lt;br /&gt;
&lt;br /&gt;
When a window in a tabbed container is closed:&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Give focus to the previously-active window&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Give focus to the spatially adjacent window&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Give focus to nearest sibling of the same application kind, when possible&lt;br /&gt;
&lt;br /&gt;
The second option prefers the next window, but uses the previous window if the window closed was last in the spatial order.&lt;br /&gt;
&lt;br /&gt;
==== Close current document ====&lt;br /&gt;
''Close current document'' is only partly in the scope of NWI, as it is implemented at the application level. Applications may:&lt;br /&gt;
* not implement close-document&lt;br /&gt;
* always close the document, but never close the window&lt;br /&gt;
* always close the window&lt;br /&gt;
* conditionally close the window&lt;br /&gt;
&lt;br /&gt;
This last case involves NWI communication, likely by sending a 'close-window-conditional' signal to the WM. The window will be closed if the window has at least one sibling (application instance) of the same application kind. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine. (See the glossary for a more precise definition of when application instances are considered as belonging to &amp;quot;the same application&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The choice of behavior, and if any configuration is available, is left to the application.&lt;br /&gt;
&lt;br /&gt;
==== Quit application ====&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror). Also refers to the collection of all application instances which are of the same application kind running with the same access class (see below).&lt;br /&gt;
; application instance : See application window. For this page, an instance is '''not''' the same as a process.&lt;br /&gt;
; application window : A window of a particular application &amp;lt;font color=green&amp;gt;{ usually used when discussing sibling windows where some may be the same application }&amp;lt;/font&amp;gt;. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
When considering if two application instances belong to the same application, a number of factors which together comprise the &amp;quot;access class&amp;quot; (roughly referring to the expected permission set possessed by the application instance) are considered. These are the instance's security credentials &amp;lt;font color=green&amp;gt;{ for now, only euid is considered }&amp;lt;/font&amp;gt; and host machine. Two windows are not considered as belonging to the same application if:&lt;br /&gt;
* They are running from different machines (e.g. one local, one remote over X forwarding or specification of a remote X server)&lt;br /&gt;
* They were started under different users&lt;br /&gt;
* They do not belong to the same X session&lt;br /&gt;
&lt;br /&gt;
It should be noted that the window manager only considers windows under its control — that is, those running in the same X session. An application instance in another session cannot be considered as another instance of an application, since the window manager would not know about such a window.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-06-02T21:58:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Closing documents and windows */ update based on latest discussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
The desktop and each container type have their own default setting whether they should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. Individual containers can also be configured for regular/shared or use the container-type default.&lt;br /&gt;
&lt;br /&gt;
When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in that container (not limited to immediate children) — &amp;quot;take all&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups. &lt;br /&gt;
&lt;br /&gt;
Data saved:&lt;br /&gt;
* set of windows of the container&lt;br /&gt;
* container type&lt;br /&gt;
* container class name&lt;br /&gt;
* container title&lt;br /&gt;
* container shared menu settings&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] group similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or group.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ nicer screenshot to show both of them in action }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar windows are those belonging to the same application, or containers with the same class. By default, each container is assigned a &amp;quot;class name&amp;quot; from its initial: contents and type. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
TAI has special options for incremental adding:&amp;lt;br&amp;gt;&lt;br /&gt;
( ) add new entry next to the current one&amp;lt;br&amp;gt;&lt;br /&gt;
(*) add new entry as the last one&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
When the window which had focus is closed, focus is given to the next most recent window in the historic bookkeeping. A global option allows this behavior to be changed for TAI containers.&lt;br /&gt;
&lt;br /&gt;
When a window in a tabbed container is closed:&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Give focus to the previously-active window&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Give focus to the spatially adjacent window&lt;br /&gt;
&lt;br /&gt;
The second option prefers the next window, but uses the previous window if the window closed was last in the spatial order.&lt;br /&gt;
&lt;br /&gt;
==== Close current document ====&lt;br /&gt;
''Close current document'' is only partly in the scope of NWI, as it is implemented at the application level. Applications may:&lt;br /&gt;
* not implement close-document&lt;br /&gt;
* always close the document, but never close the window&lt;br /&gt;
* always close the window&lt;br /&gt;
* conditionally close the window&lt;br /&gt;
&lt;br /&gt;
This last case involves NWI communication, likely by sending a 'close-window-conditional' signal to the WM. The window will be closed if the window has at least one sibling (application instance) of the same application kind. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine. (See the glossary for a more precise definition of when application instances are considered as belonging to &amp;quot;the same application&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
The choice of behavior, and if any configuration is available, is left to the application.&lt;br /&gt;
&lt;br /&gt;
==== Quit application ====&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror). Also refers to the collection of all application instances which are of the same application kind running with the same access class (see below).&lt;br /&gt;
; application instance : See application window. For this page, an instance is '''not''' the same as a process.&lt;br /&gt;
; application window : A window of a particular application &amp;lt;font color=green&amp;gt;{ usually used when discussing sibling windows where some may be the same application }&amp;lt;/font&amp;gt;. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
When considering if two application instances belong to the same application, a number of factors which together comprise the &amp;quot;access class&amp;quot; (roughly referring to the expected permission set possessed by the application instance) are considered. These are the instance's security credentials &amp;lt;font color=green&amp;gt;{ for now, only euid is considered }&amp;lt;/font&amp;gt; and host machine. Two windows are not considered as belonging to the same application if:&lt;br /&gt;
* They are running from different machines (e.g. one local, one remote over X forwarding or specification of a remote X server)&lt;br /&gt;
* They were started under different users&lt;br /&gt;
* They do not belong to the same X session&lt;br /&gt;
&lt;br /&gt;
It should be noted that the window manager only considers windows under its control — that is, those running in the same X session. An application instance in another session cannot be considered as another instance of an application, since the window manager would not know about such a window.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-06-01T16:21:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: root containers &amp;quot;can't&amp;quot; be closed (logging off doesn't count), so don't need to say &amp;quot;non-root&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
The desktop and each container type have their own default setting whether they should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. Individual containers can also be configured for regular/shared or use the container-type default.&lt;br /&gt;
&lt;br /&gt;
When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in that container (not limited to immediate children) — &amp;quot;take all&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups. &lt;br /&gt;
&lt;br /&gt;
Data saved:&lt;br /&gt;
* set of windows of the container&lt;br /&gt;
* container type&lt;br /&gt;
* container class name&lt;br /&gt;
* container title&lt;br /&gt;
* container shared menu settings&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] group similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or group.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ nicer screenshot to show both of them in action }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar windows are those belonging to the same application, or containers with the same class. By default, each container is assigned a &amp;quot;class name&amp;quot; from its initial: contents and type. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine. (See the glossary for a more precise definition of when application instances are considered as belonging to &amp;quot;the same application&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
[x] confirm closing container with multiple windows&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror). Also refers to the collection of all application instances which are of the same application kind running with the same access class (see below).&lt;br /&gt;
; application instance : See application window. For this page, an instance is '''not''' the same as a process.&lt;br /&gt;
; application window : A window of a particular application &amp;lt;font color=green&amp;gt;{ usually used when discussing sibling windows where some may be the same application }&amp;lt;/font&amp;gt;. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
When considering if two application instances belong to the same application, a number of factors which together comprise the &amp;quot;access class&amp;quot; (roughly referring to the expected permission set possessed by the application instance) are considered. These are the instance's security credentials &amp;lt;font color=green&amp;gt;{ for now, only euid is considered }&amp;lt;/font&amp;gt; and host machine. Two windows are not considered as belonging to the same application if:&lt;br /&gt;
* They are running from different machines (e.g. one local, one remote over X forwarding or specification of a remote X server)&lt;br /&gt;
* They were started under different users&lt;br /&gt;
* They do not belong to the same X session&lt;br /&gt;
&lt;br /&gt;
It should be noted that the window manager only considers windows under its control — that is, those running in the same X session. An application instance in another session cannot be considered as another instance of an application, since the window manager would not know about such a window.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-26T21:43:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: another try at shared menu wording, add ref to glossary when talking about 'belonging to same application'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
The desktop and each container type have their own default setting whether they should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. Individual containers can also be configured for regular/shared or use the container-type default.&lt;br /&gt;
&lt;br /&gt;
When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in that container (not limited to immediate children) — &amp;quot;take all&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups. &lt;br /&gt;
&lt;br /&gt;
Data saved:&lt;br /&gt;
* set of windows of the container&lt;br /&gt;
* container type&lt;br /&gt;
* container class name&lt;br /&gt;
* container title&lt;br /&gt;
* container shared menu settings&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] group similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or group.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ nicer screenshot to show both of them in action }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar windows are those belonging to the same application, or containers with the same class. By default, each container is assigned a &amp;quot;class name&amp;quot; from its initial: contents and type. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine. (See the glossary for a more precise definition of when application instances are considered as belonging to &amp;quot;the same application&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror). Also refers to the collection of all application instances which are of the same application kind running with the same access class (see below).&lt;br /&gt;
; application instance : See application window. For this page, an instance is '''not''' the same as a process.&lt;br /&gt;
; application window : A window of a particular application &amp;lt;font color=green&amp;gt;{ usually used when discussing sibling windows where some may be the same application }&amp;lt;/font&amp;gt;. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
When considering if two application instances belong to the same application, a number of factors which together comprise the &amp;quot;access class&amp;quot; (roughly referring to the expected permission set possessed by the application instance) are considered. These are the instance's security credentials &amp;lt;font color=green&amp;gt;{ for now, only euid is considered }&amp;lt;/font&amp;gt; and host machine. Two windows are not considered as belonging to the same application if:&lt;br /&gt;
* They are running from different machines (e.g. one local, one remote over X forwarding or specification of a remote X server)&lt;br /&gt;
* They were started under different users&lt;br /&gt;
* They do not belong to the same X session&lt;br /&gt;
&lt;br /&gt;
It should be noted that the window manager only considers windows under its control — that is, those running in the same X session. An application instance in another session cannot be considered as another instance of an application, since the window manager would not know about such a window.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-26T16:57:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: minor edits, updates to &amp;quot;application&amp;quot; in glossary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
Each type of container has its own setting whether it should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. User can change the default value of this settings or specify it for each individual container. When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in that container (not limited to immediate children) — &amp;quot;take all&amp;quot; mechanism.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups. &lt;br /&gt;
&lt;br /&gt;
Data saved:&lt;br /&gt;
* set of windows of the container&lt;br /&gt;
* container type&lt;br /&gt;
* container class name&lt;br /&gt;
* container title&lt;br /&gt;
* container shared menu settings&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] group similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or group.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ nicer screenshot to show both of them in action }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similar windows are those belonging to the same application, or containers with the same class. By default, each container is assigned a &amp;quot;class name&amp;quot; from its initial: contents and type. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror). Also refers to the collection of all application instances which are of the same application kind running with the same access class (see below).&lt;br /&gt;
; application instance : See application window. For this page, an instance is '''not''' the same as a process.&lt;br /&gt;
; application window : A window of a particular application &amp;lt;font color=green&amp;gt;{ usually used when discussing sibling windows where some may be the same application }&amp;lt;/font&amp;gt;. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
When considering if two application instances belong to the same application, a number of factors which together comprise the &amp;quot;access class&amp;quot; (roughly referring to the expected permission set possessed by the application instance) are considered. These are the instance's security credentials &amp;lt;font color=green&amp;gt;{ for now, only euid is considered }&amp;lt;/font&amp;gt; and host machine. Two windows are not considered as belonging to the same application if:&lt;br /&gt;
* They are running from different machines (e.g. one local, one remote over X forwarding or specification of a remote X server)&lt;br /&gt;
* They were started under different users&lt;br /&gt;
* They do not belong to the same X session&lt;br /&gt;
&lt;br /&gt;
It should be noted that the window manager only considers windows under its control — that is, those running in the same X session. An application instance in another session cannot be considered as another instance of an application, since the window manager would not know about such a window.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-21T17:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature, or at least putting us very close to having it.''&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser).&lt;br /&gt;
&lt;br /&gt;
Each container may also specify if it should display a unified (shared) menu, or allow menus to be displayed in the child windows as they normally would. Each container type has its own default value for this setting that can be changed for individual containers. When displaying a shared menu, the menu for the active leaf (that is, the descendent window that has input focus) is displayed in the top of the container, and no other menus are displayed in the container (not limited to immediate children).&lt;br /&gt;
&lt;br /&gt;
Default options:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] TAI uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] override the container setting for the desktop&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; [ ] desktop uses shared menu&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
[x] group similar windows on the task bar&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group similar windows in pop-up lists&lt;br /&gt;
&lt;br /&gt;
By default, each container is assigned a &amp;quot;class name&amp;quot; from the type of container and its contents. The class name can also be changed by the user for fine control over grouping. This name is included when saving container sets.&lt;br /&gt;
&lt;br /&gt;
''A pop-up list would be e.g. the menu that appears when selecting a task bar entry for a container or group.''&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application (which may belong to more than one process).''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : See application window. For this page, an instance is ''not'' the same as a process.&lt;br /&gt;
; application window : A window of a particular application, usually used when discussing sibling windows where some may be the same application. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-20T21:18:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the happy side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature :-), or at least putting us very close to having it.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the application window's container, or within the container's parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
(*) no auto-grouping&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group applications only&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group similar windows &amp;lt;font color=green&amp;gt; { it will be explained later }&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group entries in containers&lt;br /&gt;
&lt;br /&gt;
By default, each container is assigned a &amp;quot;class name&amp;quot; from the type of container and its contents. Saved containers have their own class name. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most applications quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Quit application is not really in scope of NWI, but since it is related to closing application window(s), we list it for the purpose of reference and to show the difference between those two actions. This document does not address the question whether &amp;quot;quit application&amp;quot; should exit only the active window, the corresponding application process, or all instances of the application.''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : See application window. For this page, an instance is ''not'' the same as a process.&lt;br /&gt;
; application window : A window of a particular application, usually used when discussing sibling windows where some may be the same application. A process (as defined by the operating system) may have more than one application window.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-20T21:10:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Task bar presentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the happy side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature :-), or at least putting us very close to having it.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the application window's container, or within the container's parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Container presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
Containers will use a window title that may represent information about the active window and/or the container type. This can be changed by the user, per container, in a similar manner to naming tabs in Konsole. Special character sequences may be used to substitute information such as the window title of the active child, or the descendent which has input focus (or &amp;quot;would have&amp;quot;, if the container is given focus). These titles are used in the container's title bar, where applicable, and in task lists (task bar, window switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
(*) no auto-grouping&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group applications only&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group similar windows &amp;lt;font color=green&amp;gt; { it will be explained later }&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group entries in containers&lt;br /&gt;
&lt;br /&gt;
By default, each container is assigned a &amp;quot;class name&amp;quot; from the type of container and its contents. Saved containers have their own class name. The class name can also be changed by the user for fine control over grouping.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application instance&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most application instances quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior. For regular application (such they don't stay in systray) closing its window is equivalent with quitting the application process.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Application quit is not really in scope of NWI but since it is related to closing application window we put it there just as reference and to show the difference between those two actions.''&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application window : A window of a particular application process, usually used when discussing sibling windows where some may be the same application. A process may have more than one application window.&lt;br /&gt;
; application instance : another term for application window&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-20T18:21:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Nested Windows Interface (NWI) */ fix typo/thinko&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the happy side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature :-), or at least putting us very close to having it.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the application window's container, or within the container's parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
(*) no auto-grouping&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group applications only&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group similar windows &amp;lt;font color=green&amp;gt; { it will be explained later }&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group entries in containers&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application instance&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most application instances quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior. For regular application (such they don't stay in systray) closing its window is equivalent with quitting the application instance.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-20T18:09:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Floating Application Interface (FAI) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&amp;lt;br/&amp;gt;&lt;br /&gt;
[ ] Show scrollbars (when needed) and allow windows to be moved outside the visible area.&amp;lt;br/&amp;gt;&lt;br /&gt;
(*) Use mini-task-bar&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows to bottom of window (appear as shaded title bars)&amp;lt;br/&amp;gt;&lt;br /&gt;
( ) Minimize windows in place (minimize == shade)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Writing the FAI backend to allow scroll bars, and rewriting the root as another FAI container, should have the happy side effect of giving us the much-requested &amp;quot;virtual desktop&amp;quot; feature :-), or at least putting us very close to having it.&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the parent container, or within the parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
(*) no auto-grouping&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group applications only&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group similar windows &amp;lt;font color=green&amp;gt; { it will be explained later }&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group entries in containers&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application instance&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most application instances quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior. For regular application (such they don't stay in systray) closing its window is equivalent with quitting the application instance.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-20T16:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: minor wording improvements and proofing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type. When using multiple desktops, each desktop is considered a separate container; as such, individual desktops may be set to different container types (e.g. desktop 1 is TAI, desktop 2 is GAI, desktops 3 and 4 are FAI).&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the parent container, or within the parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the task bar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
NWI also provides options for controlling the way the task bar manages grouping (merging of task entries into a single top-level entry):&amp;lt;br&amp;gt;&lt;br /&gt;
(*) no auto-grouping&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group applications only&amp;lt;br&amp;gt;&lt;br /&gt;
( ) group similar windows &amp;lt;font color=green&amp;gt; { it will be explained later }&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] group entries in containers&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it. Once a container is created, the user can label it as she/he likes (the label will be used as the container title, e.g. in the titlebar, task bar, switcher, etc.).&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty application windows (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* quit current application instance&lt;br /&gt;
* close current application window/tab&lt;br /&gt;
* close current application window/tab siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close parent container of the current application window/tab (not counting desktop)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most application instances quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior. For regular application (such they don't stay in systray) closing its window is equivalent with quitting the application instance.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| quit current application instance || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab || &amp;lt;none&amp;gt; &amp;lt;font color=green&amp;gt;{ alt+q? }&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current application window/tab siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close parent container of the current application window/tab || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-19T20:04:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: more assorted edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of an application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type.&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the parent container, or within the parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instance set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the taskbar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded windows is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it.&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add a new application instance of the same type as the current window, as a new sibling of the current window (equivalent to the &amp;quot;new tab&amp;quot; feature of many web browsers)&lt;br /&gt;
* add a duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; the application instance and the document)&lt;br /&gt;
* add the &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop the desired window, or start a new application instance; it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop a window directly to the container without creating the hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance for the entire session (all desktops). If the user tries to create a new hollow application instance, the previous one disappears. Existence of the hollow application instance indicates that the next user action will be adding a window to that container (thus drag&amp;amp;drop is easier in such case). Note that dialogs are not &amp;quot;sucked in&amp;quot; (this would be inconvenient if the dialog is the application launcher!).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are distinct actions. The WM provides an option to control that behavior:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off, then a window cannot &amp;quot;fall off&amp;quot; the container while being moved.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty applications (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* close current window&lt;br /&gt;
* close current window siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means that all windows within the container are closed. Most application instances quit when their windows are closed. Some kinds of application may continue to run after their windows are closed (systray applications, in particular, whose systray icons remain after their windows are closed). The use of containers does not change this behavior.&lt;br /&gt;
&lt;br /&gt;
Default options for user actions:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] on close of document, close &amp;quot;its&amp;quot; application instance as well if there are sibling instances of such application kind within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] on close of last application instance in container, keep this instance (do not close it)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] close the document only instead&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
* Accept new application ''(add hollow application)'' &lt;br /&gt;
* Convert to...&lt;br /&gt;
** GAI&lt;br /&gt;
** FAI&lt;br /&gt;
** TAI&lt;br /&gt;
* Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| close current application || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current window || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging windows. The user can exchange the marked window with any other one (not only siblings). After exchange, the marked window remains marked (exchange is not switch). Exchange means that windows take each other's &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
Initially, the current application instance is marked.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-19T18:10:25Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Arranging windows as container */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type.&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the parent container, or within the parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instances set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the taskbar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded application instances is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it.&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;create container&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons and container type selection)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add the application instance as current one&lt;br /&gt;
* add the duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; application instance and the document)&lt;br /&gt;
* add &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop desired application instance or start new, it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop application instance directly to the container without creating hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance per entire KDE (all desktops). If user tries to create new hollow application instance, the previous one disappears. Existence of hollow application instance indicates that the next user action will be adding application instance to that container (thus drag&amp;amp;drop is easier in such case).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are technically two distinct actions. WM provides option to control that behaviour:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off while moving the window of application instance (in FAI for example), the window cannot &amp;quot;fall off&amp;quot; the container.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents, application instances and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty applications (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* close current application&lt;br /&gt;
* close current window &amp;lt;font color=green&amp;gt;{ container }&amp;lt;/font&amp;gt;&lt;br /&gt;
* close current window &amp;lt;font color=green&amp;gt;{ application }&amp;lt;/font&amp;gt;  siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;application&amp;quot; here refers to all windows belonging to a particular kind of program (e.g. &amp;quot;kwrite&amp;quot;, &amp;quot;konqueror&amp;quot;), including those belonging to different processes, so closing an application should result in no instances of that application running (at least within a given user/session).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ see ML for sorting this out }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Default options for &amp;quot;close current document&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] closing document closes &amp;quot;its&amp;quot; application if there are sibling instances of that application within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] do not allow closing last application instance in container&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] instead of closing last application instance in container, close the document only&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means all application instances close their windows — for regular applications it means they quit, but for systray applications it means the windows are closed but the application instances keep running (indicating that fact by showing appropriate icons in the systray).&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
| Accept new application ''(add hollow application)'' &lt;br /&gt;
|-&lt;br /&gt;
| Convert to...&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; GAI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FAI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TAI&lt;br /&gt;
|-&lt;br /&gt;
| Save set as...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| close current application || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current window || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging application instances. The user can exchange the current application instance with any other one (not only siblings). After exchange, the current application instance still has focus (exchange is not switch). Exchange means application instances take each other &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window of application instance to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-19T18:06:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: reword shared menus section, also add that decorations can change visual of containers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type.&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
The visual aspect of containers is controlled by the window decorator, so different decorators may make different choices regarding how containers are displayed (for example, TAI might have a title bar and tab strip, or might combine the two in the manner of Google's Chrome browser). It is recommended that decorations provide menu placement as an option, per container type. This will control if the menu appears within the application instance window (which would mean many menus in FAI, GAI containers), within the parent container, or within the parent container. The last choice cascades; that is, the menu is &amp;quot;pushed&amp;quot; up until a container that does not use this option (the root cannot, as it has no parent). With all containers displaying in the parent, menus would appear as in OS-X; that is, one menu bar at the top of the screen, which changes to reflect the window that has focus.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instances set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the taskbar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded application instances is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it.&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;select windows&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add the application instance as current one&lt;br /&gt;
* add the duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; application instance and the document)&lt;br /&gt;
* add &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop desired application instance or start new, it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop application instance directly to the container without creating hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance per entire KDE (all desktops). If user tries to create new hollow application instance, the previous one disappears. Existence of hollow application instance indicates that the next user action will be adding application instance to that container (thus drag&amp;amp;drop is easier in such case).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are technically two distinct actions. WM provides option to control that behaviour:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off while moving the window of application instance (in FAI for example), the window cannot &amp;quot;fall off&amp;quot; the container.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents, application instances and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty applications (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* close current application&lt;br /&gt;
* close current window &amp;lt;font color=green&amp;gt;{ container }&amp;lt;/font&amp;gt;&lt;br /&gt;
* close current window &amp;lt;font color=green&amp;gt;{ application }&amp;lt;/font&amp;gt;  siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;application&amp;quot; here refers to all windows belonging to a particular kind of program (e.g. &amp;quot;kwrite&amp;quot;, &amp;quot;konqueror&amp;quot;), including those belonging to different processes, so closing an application should result in no instances of that application running (at least within a given user/session).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ see ML for sorting this out }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Default options for &amp;quot;close current document&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] closing document closes &amp;quot;its&amp;quot; application if there are sibling instances of that application within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] do not allow closing last application instance in container&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] instead of closing last application instance in container, close the document only&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means all application instances close their windows — for regular applications it means they quit, but for systray applications it means the windows are closed but the application instances keep running (indicating that fact by showing appropriate icons in the systray).&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
| Accept new application ''(add hollow application)'' &lt;br /&gt;
|-&lt;br /&gt;
| Convert to...&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; GAI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FAI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TAI&lt;br /&gt;
|-&lt;br /&gt;
| Save set as...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| close current application || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current window || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging application instances. The user can exchange the current application instance with any other one (not only siblings). After exchange, the current application instance still has focus (exchange is not switch). Exchange means application instances take each other &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window of application instance to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-19T17:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: update glossary (and remove ?AI acronyms; not needed as they have their own sections)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an window of application instance with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type.&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application instance, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several application instances in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Mac-shared-menu.png|240px|thumb|right|Mac shared menu]] &lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
You can configure each container type (+ desktop separately) to show shared menu per whole container — menu of the pane of the active application instance. Shared menu goes &amp;quot;up&amp;quot; as it can (as far container accepts shared menu). It is similar to Mac menu concept but not limited to desktop.&lt;br /&gt;
&lt;br /&gt;
Shared menu — default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] desktop&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI&amp;lt;br&amp;gt;&lt;br /&gt;
[x] TAI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the windows of application instances within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the application instances, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application instances set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the taskbar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded application instances is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it.&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;select windows&amp;quot; (control dialog appears with &amp;quot;accept&amp;quot; and &amp;quot;cancel&amp;quot; buttons)&lt;br /&gt;
# select desired windows&lt;br /&gt;
# click LMB on &amp;quot;accept&amp;quot; or press [Enter] key — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add the application instance as current one&lt;br /&gt;
* add the duplicate of the current application instance (i.e. it &amp;quot;copies&amp;quot; application instance and the document)&lt;br /&gt;
* add &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop desired application instance or start new, it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop application instance directly to the container without creating hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application instance per entire KDE (all desktops). If user tries to create new hollow application instance, the previous one disappears. Existence of hollow application instance indicates that the next user action will be adding application instance to that container (thus drag&amp;amp;drop is easier in such case).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are technically two distinct actions. WM provides option to control that behaviour:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] allow tearing off window while rearranging&lt;br /&gt;
&lt;br /&gt;
If this option is turned off while moving the window of application instance (in FAI for example), the window cannot &amp;quot;fall off&amp;quot; the container.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents, application instances and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty applications (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* close current application&lt;br /&gt;
* close current window &amp;lt;font color=green&amp;gt;{ container }&amp;lt;/font&amp;gt;&lt;br /&gt;
* close current window &amp;lt;font color=green&amp;gt;{ application }&amp;lt;/font&amp;gt;  siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;application&amp;quot; here refers to all windows belonging to a particular kind of program (e.g. &amp;quot;kwrite&amp;quot;, &amp;quot;konqueror&amp;quot;), including those belonging to different processes, so closing an application should result in no instances of that application running (at least within a given user/session).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ see ML for sorting this out }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Default options for &amp;quot;close current document&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] closing document closes &amp;quot;its&amp;quot; application if there are sibling instances of that application within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] do not allow closing last application instance in container&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] instead of closing last application instance in container, close the document only&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Closing an entire container means all application instances close their windows — for regular applications it means they quit, but for systray applications it means the windows are closed but the application instances keep running (indicating that fact by showing appropriate icons in the systray).&lt;br /&gt;
&lt;br /&gt;
=== Container special menu items ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
| Accept new application ''(add hollow application)'' &lt;br /&gt;
|-&lt;br /&gt;
| Convert to...&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; GAI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; FAI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TAI&lt;br /&gt;
|-&lt;br /&gt;
| Save set as...&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| close current application || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current window || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application instance to application instance. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift] — default mod key will likely be [alt] or [win].&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging application instances. The user can exchange the current application instance with any other one (not only siblings). After exchange, the current application instance still has focus (exchange is not switch). Exchange means application instances take each other &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — the window of application instance to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
; application : An application kind in general sense (e.g. Konqueror) running on a unique machine. Two instances of the same application kind, but running on different machines (e.g. one local instance, one instance being run over X forwarding) are considered different applications.&lt;br /&gt;
; application instance : A window of a particular application kind, usually used when discussing sibling windows where some may be the same application. A process may have more than one application instance.&lt;br /&gt;
; container : A special type of window which is not an application instance, but contains one or more child windows.&lt;br /&gt;
; leaf : An application instance or other window which is not a container; may also include dialogs, etc.&lt;br /&gt;
; root : The node in the window tree corresponding to the desktop. The root has no parent, and its siblings are the other virtual desktops.&lt;br /&gt;
; sibling : A window belonging to the same direct parent container as a reference window.&lt;br /&gt;
; window : An object (area) in sense of the geometry which is either an application instance or a container.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-16T02:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Closing documents, applications and windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an application window with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type.&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several applications in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
You can configure each container type (+ desktop separately) to show shared menu per whole container — menu of the active application pane. Shared menu goes &amp;quot;up&amp;quot; as it can (as far container accepts shared menu).&lt;br /&gt;
&lt;br /&gt;
Shared menu — default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] desktop&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI&amp;lt;br&amp;gt;&lt;br /&gt;
[x] TAI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the applications within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the applications, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the taskbar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows — be they leaves or containers — that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded applications is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it.&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;select windows&amp;quot;&lt;br /&gt;
# select desired windows&lt;br /&gt;
# RMB on the desktop to get context menu again&lt;br /&gt;
# choose &amp;quot;group selection&amp;quot; — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add the application as current one &lt;br /&gt;
* add the duplicate of the current application (i.e. it &amp;quot;copies&amp;quot; application and the document)&lt;br /&gt;
* add &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop desired application or start new, it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop application directly to the container without creating hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application per entire KDE (all desktops). If user tries to create new hollow application, the previous one disappears. Existence of hollow application indicates that the next user action will be adding application to that container (thus drag&amp;amp;drop is easier in such case).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are two distinct actions; i.e. while moving the application (in FAI for example), the application cannot &amp;quot;fall off&amp;quot; the container.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents, applications and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty applications (that is, application windows with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* close current application&lt;br /&gt;
* close current window&lt;br /&gt;
* close current window siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;application&amp;quot; here refers to all windows belonging to a particular kind of program (e.g. &amp;quot;kwrite&amp;quot;, &amp;quot;konqueror&amp;quot;), including those belonging to different processes, so closing an application should result in no instances of that application running (at least within a given user/session).&lt;br /&gt;
&lt;br /&gt;
Depending on user preference, closing the current document may be denied, may give an &amp;quot;empty application&amp;quot;, or may close the current window. When making this decision, &amp;quot;application instances&amp;quot; need not belong to the same process, although they do need to be running on the same machine.&lt;br /&gt;
&lt;br /&gt;
Default options for &amp;quot;close current document&amp;quot;:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] closing document closes &amp;quot;its&amp;quot; application if there are sibling instances of that application within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] do not allow closing last application instance in container&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] instead of closing last application instance in container, close the document only&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Closing a entire container means each application quits, not just closes its &amp;quot;pane&amp;quot;. This difference is important for systray applications — in other words, such applications are not torn off when their parent-container closes.&lt;br /&gt;
&lt;br /&gt;
=== Special container menu items ===&lt;br /&gt;
&lt;br /&gt;
Accept new application ''(add hollow application)''&amp;lt;br&amp;gt;&lt;br /&gt;
Convert to...&lt;br /&gt;
* GAI&lt;br /&gt;
* FAI&lt;br /&gt;
* TAI&lt;br /&gt;
Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| close current application || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current window || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application to application. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift].&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ Default mod key will likely be [alt] or [win]; any mod key is allowed — but it seems limited, why [meta] couldn't be mod key? }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging applications. The user can exchange the current application with any other one (not only siblings). After exchange, the current application still has focus (exchange is not switch). Exchange means applications take each other &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — an application to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/NWI</id>
		<title>Projects/Usability/NWI</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/NWI"/>
				<updated>2009-05-16T01:21:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: assorted additions and proofing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The idea of NWI (Nested Windows Interface) emerged from the discussion about MDI (Multiple Document Interface) on [https://mail.kde.org/mailman/listinfo/kde-usability kde-usability] (and later [https://mail.kde.org/mailman/listinfo/kde-usability-devel kde-usability-devel]) mailing list — so far each application had to implement the most suitable UI by its own (TDI in Konqueror, SDI in Okular) which led to inconsistent behaviour (&amp;quot;is closing the last document possible?&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
[[File:Nwi-rationale.png|240px|thumb|right|Kpdf + manual &amp;quot;grouping&amp;quot; of KWrite and Konqueror]] &lt;br /&gt;
&lt;br /&gt;
NWI is thought as a uniform UI on one hand, while helping to increase productivity by extending the idea of tiles and tabs on the other. Consider an example: you edit some data in one application (e.g. an html file in KWrite), and you view the results using another application (in this instance, Konqueror). So although there is no relation between KWrite and Konqueror, for this task — a task you perform right now — those two applications are related. Currently — if you run more than those two applications — when you switch to KWrite, the Window Manager (WM) will bring only KWrite to the front. If another window has meanwhile covered Konqueror, you now have to bring that window to the front by yourself. This is tiresome. With grouping, KWrite and Konqueror would act as one — you switch to group, all applications are put in front.&lt;br /&gt;
&lt;br /&gt;
NWI moves document grouping from the application level to the Window Manager level. Multiple applications — even those using unrelated toolkits (e.g. KDE and Gnome) — can be grouped and managed as a single entity. You are probably familiar with tabs from modern web browsers, and split views from e.g. Kate. Now imagine every program you use having tab support, split view support, and being able to combine them in any combination.&lt;br /&gt;
&lt;br /&gt;
== What is it? ==&lt;br /&gt;
&lt;br /&gt;
Probably you are already familiar with several User Interface designs; TDI, MDI, SDI, and so on. Some of them have proven to be very useful, some of them, not especially. In the NWI world, the most basic — yet the more flexible — UI you can think of is built from those below:&lt;br /&gt;
&lt;br /&gt;
=== Single Application Interface (SAI) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Sai-konqueror.png|240px|thumb|right|Konqueror in SAI mode]] &lt;br /&gt;
&lt;br /&gt;
This is really the simplest UI; no magic here. All you have is just an application window with some data — if a &amp;quot;window&amp;quot; can hold only one document, it is SAI. Examples: Kpdf, Okular.&lt;br /&gt;
&lt;br /&gt;
Applications can can postpone &amp;quot;real&amp;quot; UI mode — &amp;quot;decide later whether this SAI or TAI&amp;quot;. In other words, there is an option &amp;quot;show tabs&amp;quot; (per each application supporting such mode), which translates to:&amp;lt;br&amp;gt;&lt;br /&gt;
off &amp;amp;rarr; start as SAI, user can add another tab later&amp;lt;br&amp;gt;&lt;br /&gt;
on &amp;amp;rarr; from the start work as TAI (show even single tab)&lt;br /&gt;
&lt;br /&gt;
In another sense, SAI can be thought of as a leaf; an actual window, rather than one of the container types that follow.&lt;br /&gt;
&lt;br /&gt;
=== Grouped Applications Interface (GAI) ===&lt;br /&gt;
&lt;br /&gt;
''A more accurate name would be Tiling Applications Interface, but this would produce the same acronym as Tabbed Applications Interface.''&lt;br /&gt;
&lt;br /&gt;
GAI is a container that displays multiple &amp;quot;views&amp;quot; (a window, document, or other collection of data or controls) next to each other, vertically and/or horizontally, usually with no space between. From a geometrical point of view, GAI container behaves as one window with many panes. Example: Kate, KMail.&lt;br /&gt;
&lt;br /&gt;
GAI has one shared titlebar (for the container), plus at user request each embedded window may have a mini-titlebar.&lt;br /&gt;
&lt;br /&gt;
When you finish grouping, you still can change the proportions of the group &amp;quot;panes&amp;quot;. You can also rearrange them — via context menu or simply like dragging docked windows. Changing the size of one pane will generally change the size of adjacent panes, so that the entire container is filled.&lt;br /&gt;
&lt;br /&gt;
=== Floating Application Interface (FAI) ===&lt;br /&gt;
&lt;br /&gt;
The most common FAI container is desktop; windows in an FAI container can be moved freely, and altering the geometry of one window does not have an effect on any others. While the desktop will default to FAI mode, it is possible to switch it to another type.&lt;br /&gt;
&lt;br /&gt;
The FAI container can be any non-root container as well — being able to convert to/from any container, FAI helps reorganizing windows inside GAI. Non-root FAI is what some people (especially those familiar with its use in the Microsoft world) call &amp;quot;MDI&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A minimized window in an FAI root container (desktop) is hidden and accessible from the task bar/panel. Windows in a non-root FAI container &amp;quot;minimize&amp;quot; to just a title bar (much like shading), so they are directly accessible all the time.&lt;br /&gt;
&lt;br /&gt;
When resizing the parent container, the visible portions of the embedded windows are preserved (the embedded windows are &amp;quot;pushed&amp;quot;). If this is no longer possible, the windows are resized.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=green&amp;gt;Possible options:&lt;br /&gt;
 * Show scrollbars (when needed) and allow windows to be moved outside the visible area. This is arguably the much-requested &amp;quot;virtual desktop&amp;quot; feature if applied to the root container.&lt;br /&gt;
* Have a mini-panel in FAI containers? (Is it possible to integrate with plasma for this?)&lt;br /&gt;
* &amp;quot;Minimized&amp;quot; windows' title bars are moved to the bottom of the container?&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabbed Applications Interface (TAI) ===&lt;br /&gt;
&lt;br /&gt;
If you've used a modern web browser, you have almost certainly experienced TAI in the form of TDI (Tabbed Document Interface). You launch one application, and you can then open multiple data views (documents, web pages, even shell sessions) in one window, with one per tab. Example: Konqueror, Konsole.&lt;br /&gt;
&lt;br /&gt;
TAI goes a little further than TDI, because you can arrange several applications in tabs and put them into one window. So in one tab you can have Konqueror displaying web page, and in the second tab you can have Okular displaying pdf file. (Microsoft Internet Explorer does this to a limited extent with Adobe Acrobat integration. Imagine being able to open any document from a web page in an appropriate viewer and have it be just another tab.)&lt;br /&gt;
&lt;br /&gt;
By default, tabs are shown at the top of the window, but the user can choose for them to be on any side. This can be configured both as a global default, and per container.&lt;br /&gt;
&lt;br /&gt;
=== Nested Windows Interface (NWI) ===&lt;br /&gt;
&lt;br /&gt;
Once the container is arranged, you can think of it as a window. As such, you can put into another container, thus nesting containers. Therefore, the UI in general is called NWI; Nested Windows Interface.&lt;br /&gt;
&lt;br /&gt;
You can configure each container type (+ desktop separately) to show shared menu per whole container — menu of the active application pane. Shared menu goes &amp;quot;up&amp;quot; as it can (as far container accepts shared menu).&lt;br /&gt;
&lt;br /&gt;
Shared menu — default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] desktop&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] GAI&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] FAI&amp;lt;br&amp;gt;&lt;br /&gt;
[x] TAI&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Containers cannot get focus — only the applications within can get focus — however they appear in window lists (e.g. window switcher, task bar) as if they could get the focus (you can think of the container as focus-proxy). Requesting that a container be given focus (e.g. by window switcher, task bar, or clicking the container's title bar) will give focus to the window within that container that most recently had focus. If that window is itself a container, then the window in ''that'' container that most recently had focus will receive it, and so on until a leaf (a non-container window) is reached.&lt;br /&gt;
&lt;br /&gt;
=== Session management ===&lt;br /&gt;
&lt;br /&gt;
When you turn the session management on (at KDE level), SM not only restores the applications, but also recreates grouping. &lt;br /&gt;
&lt;br /&gt;
It is also possible to save the current application set of the container as a preset (like: Kwrite+Konqueror) and then later launch such group at once. This saves recreating commonly-used groups.&lt;br /&gt;
&lt;br /&gt;
=== Task bar presentation ===&lt;br /&gt;
&lt;br /&gt;
[[File:Taskbar_list.png|240px|thumb|right|Group list in the taskbar]]&lt;br /&gt;
&lt;br /&gt;
The task bar shows (directly) only those windows — be they leaves or containers — that live directly in the root container. When user clicks LMB on &lt;br /&gt;
container entry in the task bar, the list of all embedded applications is shown (containers show items which expand to the windows they contain, and so on). As with grouped tasks, containers show a small number with the number of windows they contain.&lt;br /&gt;
&lt;br /&gt;
=== Managing the containers ===&lt;br /&gt;
&lt;br /&gt;
Except for the root container (the desktop), empty containers are not allowed. Thus you have to point out which windows you would like to group or convert one of the windows to be container and add another window to it.&lt;br /&gt;
&lt;br /&gt;
==== Arranging windows as container ====&lt;br /&gt;
&lt;br /&gt;
# launch applications as you like&lt;br /&gt;
# RMB on the desktop to get context menu&lt;br /&gt;
# choose &amp;quot;select windows&amp;quot;&lt;br /&gt;
# select desired windows&lt;br /&gt;
# RMB on the desktop to get context menu again&lt;br /&gt;
# choose &amp;quot;group selection&amp;quot; — container is created &lt;br /&gt;
&lt;br /&gt;
To select windows:&lt;br /&gt;
* with Shift+LMB pressed down select region over the windows (like in KSnapshot)&lt;br /&gt;
* with Ctrl pressed down click LMB on the window (to deselect click again)&lt;br /&gt;
&lt;br /&gt;
You can also run any switcher when selecting; this is useful for FAI containers.&lt;br /&gt;
&lt;br /&gt;
==== Incremental adding ====&lt;br /&gt;
&lt;br /&gt;
[[File:Gai-adding_app.png|240px|thumb|right|Creating GAI by adding hollow application]] &lt;br /&gt;
&lt;br /&gt;
You can:&lt;br /&gt;
* add the application as current one &lt;br /&gt;
* add the duplicate of the current application (i.e. it &amp;quot;copies&amp;quot; application and the document)&lt;br /&gt;
* add &amp;quot;hollow&amp;quot; application — after that you drag&amp;amp;drop desired application or start new, it will be &amp;quot;sucked&amp;quot; into the container&lt;br /&gt;
* drag&amp;amp;drop application directly to the container without creating hollow application&lt;br /&gt;
&lt;br /&gt;
There can be only one hollow application per entire KDE (all desktops). If user tries to create new hollow application, the previous one disappears. Existence of hollow application indicates that the next user action will be adding application to that container (thus drag&amp;amp;drop is easier in such case).&lt;br /&gt;
&lt;br /&gt;
==== Disassembling the container ====&lt;br /&gt;
&lt;br /&gt;
* user can convert any container to any other type (for example FAI to GAI)&lt;br /&gt;
* user can tear off any window from the container to other container by drag&amp;amp;drop, even if the source and target containers are different types&lt;br /&gt;
&lt;br /&gt;
From the accepting container's point of view, tearing off is the same as adding a window.&lt;br /&gt;
&lt;br /&gt;
Please note that moving embedded windows within a container and tearing them off are two distinct actions; i.e. while moving the application (in FAI for example), the application cannot &amp;quot;fall off&amp;quot; the container.&lt;br /&gt;
&lt;br /&gt;
=== Closing documents, applications and windows ===&lt;br /&gt;
&lt;br /&gt;
Empty containers (except for desktop) are not allowed; empty applications (those with no document opened) are allowed.&lt;br /&gt;
&lt;br /&gt;
* close current document&lt;br /&gt;
* close current application&lt;br /&gt;
* close current application siblings (i.e. close all children of the parent, except the current one)&lt;br /&gt;
* close current window&lt;br /&gt;
* close topmost container (not counting desktop)&lt;br /&gt;
&lt;br /&gt;
Default options for non-FAI containers:&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] closing document closes &amp;quot;its&amp;quot; application if there are sibling instances of that application within the container&amp;lt;br&amp;gt;&lt;br /&gt;
[x] do not allow to close last application in container&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[x] instead of closing last application in container, close the document only&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Closing a entire container means each application quits, not just closes its &amp;quot;pane&amp;quot;. This difference is important for systray applications — in other words, such applications are not torn off when their parent-container closes.&lt;br /&gt;
&lt;br /&gt;
=== Special container menu items ===&lt;br /&gt;
&lt;br /&gt;
Accept new application ''(add hollow application)''&amp;lt;br&amp;gt;&lt;br /&gt;
Convert to...&lt;br /&gt;
* GAI&lt;br /&gt;
* FAI&lt;br /&gt;
* TAI&lt;br /&gt;
Save set as...&lt;br /&gt;
&lt;br /&gt;
=== Default key bindings ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Closing&lt;br /&gt;
|-&lt;br /&gt;
| close current document || [ctrl+w]&lt;br /&gt;
|-&lt;br /&gt;
| close current application || [ctrl+q]&lt;br /&gt;
|-&lt;br /&gt;
| close current application siblings || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| close current window || [alt+f4]&lt;br /&gt;
|-&lt;br /&gt;
| close topmost container || [alt+shift+f4]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Changing container type&lt;br /&gt;
|-&lt;br /&gt;
| to GAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to FAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|to TAI || &amp;lt;none&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Adding applications&lt;br /&gt;
|-&lt;br /&gt;
| empty copy || [ctrl+n]&lt;br /&gt;
|-&lt;br /&gt;
| duplicate || [ctrl+d]&lt;br /&gt;
|-&lt;br /&gt;
| hollow || [ctrl+h]&lt;br /&gt;
|-&lt;br /&gt;
| start direct dragging || [ctrl+LMB]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Switchers ==&lt;br /&gt;
&lt;br /&gt;
A switcher is a program that lets the user switch from application to application. Visual appearance is up to the switcher. The user will select one switcher to be the primary switcher; other switchers may be configured as &amp;quot;auxiliary switchers&amp;quot;, with any number of auxiliary switchers possible at one time.&lt;br /&gt;
&lt;br /&gt;
The primary switcher is activated by pressing and holding a &amp;quot;mod&amp;quot; key plus another key to make a navigation key. (For example, a navigation key might be [tab] or [shift-tab]; using mod as [alt] gives the switching keys commonly known today.) At that point, the primary switcher is active, and to keep it running, the user must continue to hold the mod key. Releasing the mod key will give focus to the window currently in the switcher; pressing the cancel key (default [escape]) will cancel the switch. Switchers may also (optionally) make use of the mouse.&lt;br /&gt;
&lt;br /&gt;
Auxiliary switchers are triggered by a global key or key combination. The combination need not include a modifier, and it is not needed to hold a modifier to keep the switcher active. The switcher will be operational until the user commits the switch (default [enter]) or cancels the switch.&lt;br /&gt;
&lt;br /&gt;
Mod is any modifier key allowed/recognized by X, except [ctrl] and [shift].&lt;br /&gt;
&amp;lt;font color=green&amp;gt;{ Default mod key will likely be [alt] or [win]; any mod key is allowed — but it seems limited, why [meta] couldn't be mod key? }&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When window is a container, after switching to it, focus is given as described at the top of the Features section. Each container remembers the last window to have focus.&lt;br /&gt;
&lt;br /&gt;
==== Exchange ====&lt;br /&gt;
&lt;br /&gt;
Switchers are used for switching (focus change) windows, but they have another purpose: exchanging applications. The user can exchange the current application with any other one (not only siblings). After exchange, the current application still has focus (exchange is not switch). Exchange means applications take each other &amp;quot;places&amp;quot; in a geometrical sense (which includes position in the container hierarchy).&lt;br /&gt;
&lt;br /&gt;
=== Keyboard shortcut actions ===&lt;br /&gt;
&lt;br /&gt;
* (window, desktop) sequence switch&lt;br /&gt;
* (window, desktop, global) historic switch&lt;br /&gt;
* (window, desktop) spatial switch&lt;br /&gt;
* (window) container-smart switch&lt;br /&gt;
&lt;br /&gt;
The ones marked &amp;quot;global&amp;quot; switch through all desktops, marked &amp;quot;desktop&amp;quot; switch only on the current desktop, marked &amp;quot;window&amp;quot; are constrained to the parent container of the active window.&lt;br /&gt;
&lt;br /&gt;
In TAI switches spatial up = spatial left and spatial down = spatial right (because of the tabs placement).&lt;br /&gt;
&lt;br /&gt;
Scope of the switches:&lt;br /&gt;
* sequence — direct children only&lt;br /&gt;
* historic — direct children only&lt;br /&gt;
* spatial — all children (i.e. children, grandchildren, and so on...)&lt;br /&gt;
&lt;br /&gt;
Container smart switches:&lt;br /&gt;
* GAI — historic&lt;br /&gt;
* FAI — historic&lt;br /&gt;
* TAI — spatial&lt;br /&gt;
&lt;br /&gt;
User can choose (option) if she/he prefers switch-wrap on or off, for each switcher mode separately. For sequence and historic switching, wrap means after last comes the first (and vice versa); for spatial that after rightmost comes the leftmost, after lowest comes the highest (and vice versa).&lt;br /&gt;
&lt;br /&gt;
Default settings:&amp;lt;br&amp;gt;&lt;br /&gt;
[x] sequence wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[x] historic wrap&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] spatial wrap&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Spatial and sequence switching properties ====&lt;br /&gt;
&lt;br /&gt;
Both of these switching modes are based on window placement, so for TAI container they are equivalent.&lt;br /&gt;
&lt;br /&gt;
The order of the sequence switching depends on KDE language settings (i.e. it is the same as reading &amp;quot;order&amp;quot;). Thus you can call sequence switching as switch-as-you-read (titlebars). It means that container edges are no limits for sequence switch, but they are limits for spatial switch.&lt;br /&gt;
&lt;br /&gt;
Another observation — an application to the right of its neighbor is not always left for spatial switch; that is, spatial-switch-left followed by spatial-switch-right may not put you back where you started. For sequence switch there is such guarantee: when you switch next and then previous, you will always return to the same place.&lt;br /&gt;
&lt;br /&gt;
=== Default keyboard bindings ===&lt;br /&gt;
&lt;br /&gt;
How to read it — first goes the container. It means the switch is bounded to that type of container. The second goes action. For example &amp;quot;desktop up&amp;quot; means this actions go to next upper window in current desktop. For auxiliary switchers the default shortcuts are the same, just [mod] key is dropped out (i.e. [left] instead of [win+left]).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellpadding=6 cellspacing=2&lt;br /&gt;
! colspan=2 | Sequence switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| window next   ||  [win+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+backspace]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+shift+backspace]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Spatial switch&lt;br /&gt;
|-&lt;br /&gt;
| window up || [win+up]&lt;br /&gt;
|-&lt;br /&gt;
| window down || [win+down]&lt;br /&gt;
|-&lt;br /&gt;
| window right || [win+right]&lt;br /&gt;
|-&lt;br /&gt;
| window left || [win+left]&lt;br /&gt;
|-&lt;br /&gt;
| desktop up || [alt+up]&lt;br /&gt;
|-&lt;br /&gt;
| desktop down || [alt+down]&lt;br /&gt;
|-&lt;br /&gt;
| desktop right || [alt+right]&lt;br /&gt;
|-&lt;br /&gt;
| desktop left || [alt+left]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Historic switch&lt;br /&gt;
|-&lt;br /&gt;
| window back || [win+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| window forward || [win+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| desktop back || [alt+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| desktop forward || [alt+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
| global back || [alt+ctrl+pgup]&lt;br /&gt;
|-&lt;br /&gt;
| global forward || [alt+ctrl+pgdn]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Smart switch&lt;br /&gt;
|-&lt;br /&gt;
| window previous || [win+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| window next    ||  [win+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop previous || [alt+shift+tab]&lt;br /&gt;
|-&lt;br /&gt;
| desktop next     || [alt+tab]&lt;br /&gt;
|-&lt;br /&gt;
! colspan=2 | Other actions&lt;br /&gt;
|-&lt;br /&gt;
| cancel switch || [mod+escape]&lt;br /&gt;
|-&lt;br /&gt;
| commit switch || [mod+enter] (or just release [mod])&lt;br /&gt;
|-&lt;br /&gt;
| exchange || [mod+ins] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Primary switcher is activated by any of the above (except the last section) and stays active as long as mod is held or until user commits or cancels switch. Cancel does not undo exchanges made.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
* [http://en.gentoo-wiki.com/wiki/Window_Managers Gentoo Window Managers]&lt;br /&gt;
* [http://modeemi.fi/~tuomov/ion/ Ion], (successor of PWM) tiling and tabbing Window Manager&lt;br /&gt;
&lt;br /&gt;
Projects:&lt;br /&gt;
* [http://developer.kde.org/seasonofkde/project.php?kwin_tabs.xml Season of KDE 2006], tabs (window groups) support in KWin&lt;br /&gt;
* [http://socghop.appspot.com/student_project/show/google/gsoc2009/kde/t124022561044 GSoC 2009], Show Student Project KWin: Window tabbing for KDE&lt;br /&gt;
&lt;br /&gt;
Bounties:&lt;br /&gt;
* [http://www.undefinedfire.com/kde/500-kwin-bounty/ TAI Bounty], $500 bounty for adding TAI to KWin&lt;br /&gt;
&lt;br /&gt;
KDE wish reports:&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=42023 PWM-like tabbing support for windows], adding TAI to KWin&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=120595 Enable grouping of windows by welding the edges together], same as GAI concept but container window does not have to be rectangular,&lt;br /&gt;
* [https://bugs.kde.org/show_bug.cgi?id=59338 Window tiling (Ion-like window layout and control)], desktop as GAI container,&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-04-06T23:53:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* kdegames */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org+msoeken(at)informatik(dot)uni-bremen(dot)de|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureTodo|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
|}&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Okteta|make editing capability to Decoding table |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 support for import by drop, both url and data|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|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|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|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdelirc|Bring back kdelirc|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureTodo|ark|Improve support for pure gzip and bzip2 files|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ark| Finish the cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for ACE archives  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossfalcon|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Bookmarks|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureTodo|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureInProgress|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|PoTD Engine|Import PoTD engine|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Metadata Engine|Import Metadata engine|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan</id>
		<title>Schedules/KDE4/4.1 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan"/>
				<updated>2008-06-05T00:13:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: moving my 4.1 planned features...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for KDE 4.1. '''The deadline for adding entries to this page has already passed'''.&lt;br /&gt;
&lt;br /&gt;
Any features which are not mentioned on this page must be rescheduled for 4.2 and added to the list at [[Schedules/KDE4/4.2 Feature Plan]].&lt;br /&gt;
&lt;br /&gt;
Please ensure that any entries you have on this page are kept up to date with respect to their status (''todo'', ''in-progress'' or ''done'').&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|various|[[Projects/Widgets_and_Classes | Classes and Widgets]] that should be moved from others modules up into kdelibs|kde-core-devel@kde.org|The Core Developers}}&lt;br /&gt;
{{FeatureDone|kdeui|Add KFadeWidgetEffect to easily add fading UI transitions to KDE applications|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|kdeui|Make icon naming spec compliant 3rd party icon themes like Tango or gnome-icon-theme work correctly.|jpetso@gmx.at|Jakob Petsovits}}&lt;br /&gt;
{{FeatureDone|kross|Add QtScript support|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|KHTML|Support CSS3 Media Queries|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KHTML|Efficient smooth scrolling|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|Phonon KCM|More UI feedback|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|better integration of pulseaudio|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|allow backend switching on the fly|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|Phonon|subtitle, audio track selection|kretz@kde.org|Matthias Kretz and Ian Monroe}}&lt;br /&gt;
{{FeatureTodo|Phonon|DVD menu selection support|imonroe@kde.org|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Phonon|update device preference on the fly|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|kdeui|Goya, a framework for inserting controls into itemviews in a really easy and fast way|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureDone | kdeui | Rich textedit widget supporting most rich text features. | steveire@gmail.com | Stephen Kelly }}&lt;br /&gt;
{{FeatureInProgress|kdeui|Shortcut schemes for KDE applications|adymo@kdevelop.org|Alexander Dymo}}&lt;br /&gt;
{{FeatureDone|kmimetypetrader/kbuildsycoca|Replace use of profilerc for ordering applications with new mimeapps.list standard|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureDone|knewstuff|Support caching, and speed up the interface through use of Models/Views and goya|jeremy@scitools.com|Jeremy Whiting}}&lt;br /&gt;
{{FeatureInProgress|Phonon KCM|Handle advanced devices|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|KDEPrint|Add CUPS Options tabs to QPrintDialog to support n-up, page borders, banner pages, page labels, mirror pages, job scheduling, and manual CUPS options.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureInProgress|KIO|speed limits on KIO Transfers|nolis71cu@gmail.com|Manolo Valdes}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Printing of shortcuts from the shortcut dialog|apaku@gmx.de|Andreas Pakulat}}&lt;br /&gt;
{{FeatureDone|Kate Part|Annotation framework for the editor|apaku@gmx.de|Andreas Pakulat}}&lt;br /&gt;
{{FeatureInProgress|KJS|Bytecode interpreter and performance improvements|maksim@kde.org|Maks Orlovich}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Sync class and file structure with WebKit to prepare merging|porten@kde.org|Harri Porten}}&lt;br /&gt;
{{FeatureInProgress|KHTML|contentEditable/designMode implementation|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|KCalenderSystem|Complete migration of Jalali, Hijri, and Hebrew calendars to new code base.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|dnssd|Models for service browser and domain browser.|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|KHTML|Adaptable/Scriptable workarounds for broken websites.|maksim@kde.org|Maks Orlovich}}&lt;br /&gt;
{{FeatureTodo|KHTML|support for borders-* properties from the CSS3 Background and Borders Module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|KHTML|support for Audio/Video tags from the HTML5 draft specification|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KHTML|prospective loading of other network resources while waiting for arrival of blocking scripts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|KJS|Public API for extensions. Possibly analog to JavaScriptCore's C API.|porten@kde.org|Harri Porten}}&lt;br /&gt;
{{FeatureTodo|KTextEditor|Several interface extensions (e.g. open/save filter)|kwrite-devel@kde.org|Kate Developers}}&lt;br /&gt;
{{FeatureTodo|KTextEditor|Plugin for basic collaborative editing|kwrite-devel@kde.org|Kate Developers}}&lt;br /&gt;
{{FeatureInProgress|Kate Part|Scripting support for indentation and little helpers|kwrite-devel@kde.org|Kate Developers}}&lt;br /&gt;
{{FeatureTodo|Kate Part|Input modes to allow e.g. vim-like editing|kwrite-devel@kde.org|Kate Developers}}&lt;br /&gt;
{{FeatureDone|KIO|Implement support for inline editing in KFileItemDelegate|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|KIO|Add support for drawing text shadows in KFileItemDelegate|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|Emoticons lib|An emoticons library so each applications doesn't have to implement the same things over and over again |brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureDone|KFile|Implement fd.o desktop-bookmark-spec for KFilePlacesModel|nf2@scheinwelt.at|Norbert Frese}}&lt;br /&gt;
{{FeatureTodo|kdeui| Support for About Data of libs and modules used by a program |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|kdeui|Drop-in replacement for QFontComboBox, with more informative previews in non-Latin1 locales|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureDone|KAboutLicense|Select licenses by keyword, to centralize license info texts for frequent licenses.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureDone|KIO|KIO::AuthInfo and PasswordDialog: optional fields (like &amp;quot;domain&amp;quot;); optional anonymous switch and flag to suppress KIO's password caching|nf2@scheinwelt.at|Norbert Frese}}&lt;br /&gt;
{{FeatureTodo|kdeui|Support for KConfigGroup in KConfigSkeleton|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Akonadi|Move the Akonadi development library from kdepim.|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
{{FeatureInProgress|Akonadi|Item size ([[Projects/PIM/Akonadi#Core|details]])|thomas.mcguire@gmx.net|Thomas McGuire}}&lt;br /&gt;
{{FeatureTodo|Akonadi|Payload serialization format versioning ([[Projects/PIM/Akonadi#Core|details]])|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
{{FeatureTodo|Akonadi|Item streaming in ItemSync/ResourceBase ([[Projects/PIM/Akonadi#Core|details]])|tomalbers@kde.nl|Tom Albers}}&lt;br /&gt;
{{FeatureInProgress|Akonadi|API for additional item parts ([[Projects/PIM/Akonadi#Core|details]])|vkrause@kde.org,tokoe@kde.org|Volker Krause/Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akonadi|Infrastructure for showing additional dialogs from agents/resources ([[Projects/PIM/Akonadi#Core|details]])|tomalbers@kde.nl|Tom Albers}}&lt;br /&gt;
{{FeatureTodo|Akonadi|Allow to limit ItemFetchJob to current cache content ([[Projects/PIM/Akonadi#Core|details]])|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
{{FeatureInProgress|Akonadi|Fix API for item/collection modifications ([[Projects/PIM/Akonadi#Core|details]])|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
{{FeatureTodo|Akonadi|Error reporting ([[Projects/PIM/Akonadi#Core|details]])|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureTodo|gpgme++2|newly designed gpgme++ (multithreaded, exceptions, less event loop integration: better for Windows)|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|kpimutils|Change linklocator to use the new emoticon lib|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Dolphin|Details-view: Allow to open folders as tree (turned off per default).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Refactor view-action handling to a DolphinViewActionHandler to share more code with DolphinPart|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureDone|Konqueror|Re-implement Copy To / Move To in the popup menu|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureDone|Konqueror|Separate Home URL settings in konquerorrc and kfmrc; save toolbar settings into the profile automatically|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureDone|Dolphin|Simplify selecting of files in the single-click mode (based on http://aseigo.blogspot.com/2006/04/icons.html).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Raptor|The KDE4-Application-Menu}}&lt;br /&gt;
{{FeatureDone|Dolphin|Provide optional tooltips for files and directories.|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Tabs|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Konqueror|Bring back the large tooltip like in kde3|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureDone|Konqueror|Session management (save/restore session/restore from crash).|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureDone|Konqueror|Support for undo closed window.|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureDone|Konqueror|Allow to configure the Dolphin KPart within the Konquerors settings dialog.|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|KInfocenter|Improve code and usability.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureDone|KInfocenter|Reimplement partitions list.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureDone|KInfocenter|Reimplement memory module.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureDone|KInfocenter|Reimplement PCI module.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|KInfocenter|Reimplement Network module.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Plasma|Kickoff orientation dependent layout|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Restore menu system|montel@kde.org|Laurent Montel}}&lt;br /&gt;
{{FeatureDone|KCM autostart|Configure autostart desktop file|montel@kde.org|Laurent Montel}}&lt;br /&gt;
{{FeatureDone|Plasma|improve fail to launch and needs &lt;br /&gt;
config|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|ksmserver|UI for selecting WMs|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|Plasma|polish kickoff|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureDone|Plasma|toolbox improvements |aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|GHNS2 plasma themes|jeremy@scitools.com|Jeremy Whiting}}&lt;br /&gt;
{{FeatureDone|Plasma|Resizable, relocatable panel|binner@kde.org|Stephan Binner}}&lt;br /&gt;
{{FeatureInProgress|Solid|Refactor Solid::Control networking|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|Solid|Backend for NetworkManager 0.7|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|System Settings|Filtering/Lazy load category modules|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|KSysGuard|Monitor process I/O|tapsell@kde.org|John Tapsell}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Mac-like menu bar plasmoid|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|System Settings|Administrator mode support|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|krunner|Revamp GUI.|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|keyboard shortcuts|Chani Armitage|chanika@gmail.com}}&lt;br /&gt;
{{FeatureDone|Plasma|webkit widget|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|dashboard widget support|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|Plasma|QtScript scriptengine|richmoore44@gmail.com|Richard Moore}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Improve QtScript support|richmoore44@gmail.com|Richard Moore}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Zooming User Interface|chanika@gmail.com|Chani Armitage}}&lt;br /&gt;
{{FeatureDone|Plasma|Multiple Desktop Containments|chanika@gmail.com|Chani Armitage}}&lt;br /&gt;
{{FeatureDone|Plasma|API changes [[Projects/Plasma/Tokamak1]]|panel-devel@kde.org|Plasma team }}&lt;br /&gt;
{{FeatureInProgress|Plasma|Panel Toolbox|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Panel changes to make it work with the new default theme|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Generic folder view applet/containment, that can also be used as the desktop background (showing the desktop folder).|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|Krunner|Configuration dialog for KRunner|ryan.bitanga@gmail.com|Ryan P. Bitanga}}&lt;br /&gt;
{{FeatureDone|Plasma|Temperature sensing in the device engine|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureDone|Plasma|Video data in the device engine|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|Plasma|New plasma themes|nuno@oxygen-icons.org|Nuno Pinheiro}}&lt;br /&gt;
{{FeatureDone|Plasma|change showConfigurationInterfaction to createConfigurationInterface|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Plasma::Service |aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|panel hiding |aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|KWin|non-linear animations also for KWin|sebas@kde.org|Sebastian Kuegler}}&lt;br /&gt;
{{FeatureDone|KWin|Compiz's wobbly like effect for KWin|cedric.borgese@gmail.com|Cédric Borgese}}&lt;br /&gt;
{{FeatureTodo|KDM|Theme KDM (login manager) by default|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Splash screen|New default splashscreen|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureInProgress|Nepomuk|Simple Desktop Search client based on Nepomuk search|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add a dataengine that implements Notifications DBus interface plasmoid which provides cute visualization of notifications along with nice and easy way to interact with them|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Plasma|loadDefaultSetup from a file, not hardcoded|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|ksmserver|Make the fade-to-gray logout effect work even when composite is disabled|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|nepomuk|Service that monitors file rename and delete operations and updates the metadata accordingly. kded module already exists in playground. problem: depends on inotify.|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
{{FeatureDone|KCM emoticons|Adding/editing/removing emoticons theme|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureDone|KCM splash screen|Be able to install splash screen themes via GHNS2|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|KCM icons|Be able to install icon themes via GHNS2|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureInProgress|phonon-xine|snapshots in video widget|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureTodo|phonon-xine|try to make VideoWidget work on GraphicsView|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureTodo|phonon-xine|make states compatible to other backends|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureTodo|phonon-xine|better support for pulseaudio (most work possibly in kdelibs)|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|phonon-gstreamer|Make phonon-gstreamer as released with Qt 4.4 fully integrate into KDE and add the features added to libphonon after libphonon 4.1|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|desktop ioslave|Add an ioslave that lists the contents of the desktop folder, and reports the names in the .desktop files instead of the actual file names.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|knotify|Add support for galago-like desktop notifications spec - if knotify will find a certain DBus service on session bus, it'll forward its popup notification events to this service |dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureInProgress|Oxygen cursors|Oxygen cursor set|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KMagnifier|Add color blindness simulation|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KSystemLog|KSystemLog, a Log Viewer Tool. Move from kde-apps|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureDone|KCron|Do some refactoring in KCron|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureDone|KCron|Improve ergonomy and general interface|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureDone|KCron|Fix all existing bugs in KCron|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureDone|KCron|Convert KCron into a KCM Module, to use it in System Settings|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureInProgress|Environment Variables|Create a environment variables KCM Module|nicolas.ternisien@gmail.com}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Smoke2|Move modular Smoke2 to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureDone|PHP-Qt|Move PHP-Qt to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureDone|krossjava|Move krossjava to kdebindings-trunk.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|krosspython|Implicit convert PyQt/PyKDE QObject/QWidget instances.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|krossruby|Implicit convert QtRuby/Korundum QObject/QWidget instances.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Qyoto|Add delegate support for signal/slot connections.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kalzium|Clean up the database. I am syncing with the BlueObelisk data repository again. There we decided to remove the density (not a element property but a compound property. I also removed the mean weight. We think it is better to provide correct data than a lot (but partly wrong) data.|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Calculator Plasmoid|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Vector support|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|KAlgebra|2D Function support improved|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|Step|A physics simulator, move from playground to kdeedu module |ks.vladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureDone|Kalzium|Update the snapshot of libavogadro to 0.6.1. This introduces a gazillion new possibilities for the 3D renderer and fixes many issues.|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureDone|Kalzium|Make use of the new libavogadro-version.|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureDone|Kalzium|Expose molecular editing features of libavogadro.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureInProgress|KStars|Tool to predict Conjunctions|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureInProgress|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KDE-Version settings dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Qt-Version settings dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Improved KML support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|OpenStreetMap support using original OSM tiles|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Real Time Cloud-Cover|tackat@kde.org|David Roberts / Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Copy position to clipboard|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Create Tiles on compile time|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Mercator Projection|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Usage of Marble in non-widgets|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureDone|Parley|Redesigned main window|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureDone|Parley|Vocabulary Plasmoid|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureDone|Step|Improve GUI for creating gas|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Variables share between 2D and Console|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Export canvas as image|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Add command line|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Add a color picker|nielsslot@gmail.com|Niels Slot}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|Parley|Improved printing support|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureDone|Kiten|Link radselect with kiten|jkerian@gmail.com|Joe Kerian}}&lt;br /&gt;
{{FeatureDone|Kiten|Sort output by dictionary/user selected sorting values|jkerian@gmail.com|Joe Kerian}}&lt;br /&gt;
{{FeatureDone|Kig|Cubic-line intersection in case two of the three intersection points are already present|paolini@dmf.unicatt.it|Maurizio Paolini}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KDiamond|New game, move to kdegames|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KDiamond|Get themes with KNewStuff|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KNetWalk|Better scoring system|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureDone|KNetWalk|Add support for loading new themes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureDone|Kollision|Move to kdereview/kdegames|p.capriotti@gmail.com|Paolo Capriotti}}&lt;br /&gt;
{{FeatureDone|Kubrick|New game, 3D OpenGL - move to playground|ianw}}&lt;br /&gt;
{{FeatureDone|Kubrick|Polish up the features|ianw}}&lt;br /&gt;
{{FeatureDone|Kubrick|Port to Qt4 and KDE4|ianw}}&lt;br /&gt;
{{FeatureDone|KBlocks|Finish display of points and level|piacentini@kde.org}}&lt;br /&gt;
{{FeatureDone|KBlocks|Implement KNewStuff support|piacentini@kde.org}}&lt;br /&gt;
{{FeatureDone|KBlocks|Implement key/action/shortcut configuration|piacentini@kde.org}}&lt;br /&gt;
{{FeatureDone|KBlocks|Docbook|piacentini@kde.org}}&lt;br /&gt;
{{FeatureInProgress|KGoldRunner|Improved theming and animation|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureInProgress|KGoldRunner|Sound support and theming|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureInProgress|KSquares|Multiplayer support|josef}}&lt;br /&gt;
{{FeatureDone|KsirK|New game, move to kdereview|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|KsirK|Make network games work again|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|KBattleship|Bring back Zeroconf support for network games|qbast@go2.pl}}&lt;br /&gt;
{{FeatureInProgress|Kubrick|New game, 3D OpenGL - in kdereview|ianw}}&lt;br /&gt;
{{FeatureInProgress|KGGZ|Add kggzcore and kggzdmod libraries|josef}}&lt;br /&gt;
{{FeatureTodo|KBlocks|Add additional themes|piacentini@kde.org}}&lt;br /&gt;
{{FeatureInProgress|KBreakout|Finish it, and move it from playground to kdegames|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KGGZ|Add new Qt4-based core client as successor to the old KDE3-based KGGZ|josef (now SoC proposal)}}&lt;br /&gt;
{{FeatureTodo|KGGZ|Fire-and-forget highscore submission for single-player games and client-to-client multiplayer games|josef)}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Also see kdegames/kgoldrunner/TODO|ianw}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Hot new stuff support for themes and levels|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Startup screen|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Reimplement the Board Editor|piacentini@kde.org}}&lt;br /&gt;
{{FeatureDone|KMines|Add pause actions|eike.lange@kdemail.net}}&lt;br /&gt;
{{FeatureDone|KNetWalk|Configurable keyboard support|eike.lange@kdemail.net}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Support for custom and non-square board sizes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KShisen|Port to KScoreDialog|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|Kubrick|See SVN file kubrick/TODO|ianw}}&lt;br /&gt;
{{FeatureDone|Kubrick|Move to KDE Games for 4.1|ianw}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Gwenview|Undo system|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Fullscreen meta information|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Ability to open an image with another application|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Okular|Better Text-To-Speech integration: speech the whole document, the current page or the selection.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Okular|Encryption support for ODF generator|bradh@kde.org}}&lt;br /&gt;
{{FeatureDone|Okular|Backward direction for text search.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Centralized text &amp;amp; graphics antialias configuration.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Okular|EPub backend.|elylevy@cs.huji.ac.il|Ely Levy}}&lt;br /&gt;
{{FeatureInProgress|Okular|Improved form support (add missing types, handle the fields better).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Support for tagging with Nepomuk|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Thumbnail bar in view and fullscreen modes|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Crop ratio|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|KIPI support|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Red eye correction|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Start page|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Okular|JavaScript support (mostly for PDF documents).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Okular|Improved placement and sizing of the presentation mode: choose the screen to use, adapt to screen size changes.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|File attachment annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Improve annotation support: for existing types (rubber stamps, line, note, etc), and for the way they are constructed and handled.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Separate the &amp;quot;view properties&amp;quot; out of the Document, in a View class. Use it for the page view and the presentation mode.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Per-document zoom level.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|libksane|Move libksane to kdegraphics|kare.sars@kolumbus.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|ksaneplugin|Replase libkscan with ksaneplugin|kare.sars@kolumbus.fi|Kåre Särs}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Dragon Player|A simple Phonon-based videoplayer application|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|Make Dragon indipendent from Xine|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|File Manager|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|play media dialog|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|slider changes|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|show info while playing audio files|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureDone|JuK|Show cover art from more sources|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KGet|Group-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Torrent-Support|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Transfer-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Webinterface|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|Kopete|AIM offline messages|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|OTR Encryption support|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|Kopete|Status manager|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Non-intrusive notification system|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Bring back chat style selection via knewstuff2|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Kopete|ICQ 6 status icons|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Use notebook lid for auto away|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|use the new emoticons library|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureDone|KGet|Nepomuk-Integration|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Global Speedlimits|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Setup libbtcore from KTorrent in KGet (to avoid dependency to extragear)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|KGet|Extend the TransferHistory to use SQLite and XML-Backends and display the information inside a kcategorizedview|jgoday@gmail.com|Javier Goday}}&lt;br /&gt;
{{FeatureTodo|Kopete|GroupWise chatroom support|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|[http://decibel.kde.org Decibel]|Decibel, a framework for real time communication services. Move from playground/pim|info@basyskom.de|Tobias Hunger}}&lt;br /&gt;
{{FeatureDone|KRDC|Optional system tray icon (with quick access to bookmarks)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|KRDC|Improved behavior of entering special keys for better workflow|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|KRDC|Zeroconf support (detecting remote desktop services in local network)|romnes@stud.ntnu.no|Magnus Romnes}}&lt;br /&gt;
{{FeatureInProgress|KRDC|Bookmark dock widget for quick access to bookmars, zero conf detected services and recently used connections|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|KRDC|Support for up- and downscaling VNC remote desktop|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KAddressbook|Ability to add LDAP search results to distribution lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Indication of which resource folder a contact belongs to|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Read-only view for contacts in read-only folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|copy/cut/paste context menu items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAlarm|Allow use of multiple calendar resources|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Handle time zones and seasonal time changes properly|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Abolish alarm daemon and make kalarm trigger alarms itself|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Replace simple repetitions by recurrence sub-repetitions to reduce confusion|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|New option for display alarm text to be generated by a command|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Option to display alarm only if pre-alarm command succeeded|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|New option to specify reminder times in minutes|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Prevent multiple identical error messages accumulating for the same alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Provide &amp;quot;don't show again for this alarm&amp;quot; option for command error messages|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Remember main window show/hide options used when KAlarm closed instead of setting them in Preferences dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Simplification and improvements to alarm edit dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Option to display alarms in centre of screen, with enable delay on buttons to avoid accidental acknowledgement|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KJots|Support more rich text features like text formatting, hyperlinks and ordered/unordered lists.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|KJots|Add checkmarks to pages.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|KJots|Port to KRichText widget.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|KJots|Create a Kontact::Plugin to integrate kjots into Kontact.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|Kleopatra|Ability to search in internal and external certificates at the same time|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|General UI Server|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|Kleopatra|New, tabbed, mainwindow design|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to create hyperlinks in HTML messages|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to easily create todos with reminders from emails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to open messages from search results when the reader is hidden|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better invitation update emails showing what changed|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better reminder visualization in very small events|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better, natural language search criteria names|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Clickable status columns|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Client side configurability of warnings in shared folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Colored ribbons for indication of signing and encryption status in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Configuration option for whether invitation emails are automatically deleted or not when having been acted upon|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Copy/paste and drag and drop from/to the mail composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Decryption on demand in reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Display of quota information in foldertree tooltips|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop and copy and paste support in the search result viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop from the mail reader window and mime-tree viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop of folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Editing of attachments from the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Export and import of filters|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Favorites Folder|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Folder quicksearch|m.koller@surfeu.at|Martin Koller}}&lt;br /&gt;
{{FeatureDone|KMail|Harmonization of actions in main and standalone mail reader windows|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|IMAP Server storage of non-standard flags|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved TNEF attachment handling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved quota warnings|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Initialize full search from quicksearch on request|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Override font and fontsize for standalone message viewers|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Per-folder identity configurability|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Recursive IMAP cache troubleshooting|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Resizable recipients area in composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for creating new mails based on received mails (Resend)|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for immediate sync of resource folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for soft line breaking|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Tab navigation through groups in the address completion|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Text snippets with shortcuts and variable expansion in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Warning about active out-of-office scripts|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|lost+found recovery of locally changed folders that lose access rights|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Port to use KRichTextEdit||Thomas McGuire}}&lt;br /&gt;
{{FeatureDone|KNotes|Ability to print notes|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KonsoleKalendar|Support &amp;quot;file&amp;quot; and &amp;quot;localdir&amp;quot; resources|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Kontact|Config option to close despite system tray|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Harmonization of component naming in sidebar, configuration, summary view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Right-aligned component navigation toolbar|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Ubiquitous sync actions|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Ability to have both distribution lists and addresbook extension visible|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Aggregated reminders view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Better default resource colors|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Drag and drop of attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Faster initial loading of kolab resources|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Forwarding and delegation of invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved coloring of agenda view items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved event printing|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Merge of the attachment view in into the main page|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Merge of the free-busy and attendee views for easier scheduling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Month view scrolling, paging, mouse-wheeling|tom_t@gmx.at|Thomas Thrainer}}&lt;br /&gt;
{{FeatureDone|KOrganizer|More readable Kolab resource folder labels|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Redesigned incidence editor UI|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Side-by-side calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Support for by-value attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Timeline calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Rich text incidence editor|mike@mikearthur.co.uk|Mike Arthur}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Hide/Show reminder daemon icon in the systeay|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|KOrganizer|New To-do View (model/view)|tom_t@gmx.at|Thomas Thrainer}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Column-specific whatsthis-help| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Combined search and add task widget| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Drag&amp;amp;Drop| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|File management (file-&amp;gt;load)| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Managing history| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Tracking tasks by active applications| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Whatsthis-help dependent on if a task has been created| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureInProgress|KAlarm|New option to restrict alarms to working hours|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureInProgress|KMail|HTML  Signatures|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureInProgress|KNotes|Zeroconf support for sending notes on LAN|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Kontact|New Planner summary; combines Appointment+To-do+SpecialDates into 1 pretty summary|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureInProgress|KOrganizer|New Month View (qgraphicsitem)|bvirlet@kdemail.net|Bruno Virlet}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureTodo|Akregator|Basic support for enclosures (Displaying links, mimetype and size)|osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application| christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|Kleopatra|Konqueror and Dolphin Kleopatra plugins|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureTodo|KMail|Aggregated attachment view in the mail header area of the reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KMail|Improved error messages and audit log for cryptographic operations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Ability to jump to the right day in the agenda from invitation mails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Drag and drop in the free-busy view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for comments in replies to invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Blog-styled journal view|mike@mikearthur.co.uk|Mike Arthur}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Blogging KResource|mike@mikearthur.co.uk|Mike Arthur}}&lt;br /&gt;
{{FeatureTodo|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Cervisia|New context menu entry &amp;quot;Add to Ignore List&amp;quot;|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Lokalize|Move this application (formerly known as Kaider) from extragear|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Cervisia|A file view based on KDirModel|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|KBugBuster|Make it work|fabiolocati@gmail.com|Fabio Locati}}&lt;br /&gt;
{{FeatureInProgress|KCachegrind|Everything working again|josef.weidendorfer@gmx.de|Josef Weidendorfer}}&lt;br /&gt;
{{FeatureInProgress|Kate|Session plasmoid|montel@kde.org|Laurent Montel}}&lt;br /&gt;
{{FeatureDone|KAppTemplate|Make a GUI for it |annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|KAppTemplate|Add a PyQt4 template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|KAppTemplate|Add a Ruby template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|KAppTemplate|Add a Plasmoid template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KCachegrind|Better handling of huge symbols|josef.weidendorfer@gmx.de|Josef Weidendorfer}}&lt;br /&gt;
{{FeatureTodo|kioslave svn|Add Export/Import feature|montel@kde.org|Laurent Montel}}&lt;br /&gt;
{{FeatureTodo|Kate App|Improved session management|kwrite-devel@kde.org|Kate Developers}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|printer-applet|Add printer applet for viewing print jobs and printer auto-configuration.|jriddell@ubuntuFIXMEcom|Jonathan Riddell}}&lt;br /&gt;
{{FeatureDone|Okteta|binary/hex editor (successor to KHexEdit). Move from playground/utils.|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|enable extract-strings tool and add copy|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|add &amp;quot;Export as&amp;quot;|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|make printing support only selection|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|ask artists for own icon|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|more explicit titels for undo/redo actions, also from filters|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for blocking processes like printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KDiskFree|Use Solid API|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|KwikDisk|Replace it by a Plasmoid (in the desktop bar and on the desktop|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureDone|SuperKaramba|Integrate Kross and be able to write Karambas using Python, Ruby and JavaScript||The SuperKaramba Team}}&lt;br /&gt;
{{FeatureDone|SuperKaramba|Integrate into Plasma||The SuperKaramba Team}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevelop =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevplatform =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdewebdev =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kommander|Port the executor to KDE4.|amantia@kde.org|Andras Mantia}}&lt;br /&gt;
{{FeatureTodo|Kommander|Create Qt Designer plugins for the editor.|amantia@kde.org|Andras Mantia}}&lt;br /&gt;
{{FeatureInProgress|Quanta Plus|Create an upload plugin.| niko.sams@gmail.com|Niko Sams}}&lt;br /&gt;
{{FeatureInProgress|Quanta Plus|Create a new, state machine based parser.| amantia@kde.org|Andras Mantia}}&lt;br /&gt;
{{FeatureInProgress|Quanta Plus|Port existing functionality to KDevPlatform plugins. Only text mode is targeted.|amantia@kde.org|Andras Mantia}}&lt;br /&gt;
{{FeatureDone|KXslDbg|Port to KDE4.|keith@kdewebdev.org  | &lt;br /&gt;
Keith Isdale}}&lt;br /&gt;
{{FeatureTodo|KLinkStatus|Aided correction of broken links||}}&lt;br /&gt;
{{FeatureDone|KLinkStatus|Site check automation|moura@kdewebdev.org|Paulo Moura Guedes}}&lt;br /&gt;
{{FeatureInProgress|KLinkStatus|D-Bus/Scripting interfaces|moura@kdewebdev.org|Paulo Moura Guedes}}&lt;br /&gt;
{{FeatureInProgress|KLinkStatus|HTML validation|thesquib@gmail.com|Sam Ryan}}&lt;br /&gt;
{{FeatureDone|KLinkStatus|Ability to export only broken links|moura@kdewebdev.org|Paulo Moura Guedes}}&lt;br /&gt;
{{FeatureDone|KLinkStatus|Ability to do background search which only update the GUI when finished (much faster))|moura@kdewebdev.org|Paulo Moura Guedes}}&lt;br /&gt;
{{FeatureDone|KLinkStatus|Tray Icon and KUniqueApplication|Paulo Moura Guedes}}&lt;br /&gt;
{{FeatureDone|KLinkStatus|Scripting Plugin|Paulo Moura Guedes}}&lt;br /&gt;
{{FeatureDone|KLinkStatus|Get Hot New Stuff for HTML result stylesheets|Paulo Moura Guedes}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.2_Feature_Plan</id>
		<title>Schedules/KDE4/4.2 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.2_Feature_Plan"/>
				<updated>2008-06-05T00:11:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: moving my 4.1 planned features...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.2 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.2 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.1 Feature Plan]]&lt;br /&gt;
* [[Schedules/KDE4/Goals]]&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|System Settings|add Administrator mode button|?|?}}&lt;br /&gt;
{{FeatureInProgress|Eigen|Finish version 2.0 and move it to kdesupport|jacob@math.jussieu.fr|Benoît Jacob}}&lt;br /&gt;
{{FeatureTodo|Eigen|Port all Eigen-using code in KDE and KOffice to Eigen 2.0|jacob@math.jussieu.fr|Benoît Jacob}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|kross|Extend QtScript integration.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureInProgress|KDEPrint|Reintroduce KDEPrint in some form, depending on what Qt4.4 delivers.|john@layt.net|john Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter, modify to utilise new Qt4.4 features.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalenderSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian. (Note, not all may live in kdelibs or be available as a global calendar system)|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KLocale|Implement KLocale based methods to return weekend days and day of religious observance.  Currently KCalendarSystem provides dayOfPray(), but for Gregorian this is not correct in all locales where it is used.  Currently KDatePicker hardcodes Saturday and dayOfPray() as weekend days which may not be correct in all locales.  To be discussed first on k-c-d and with kdepim.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Phonon|add Port class for fine grained control over data flow between Phonon objects|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|make AbstractMediaStream/StreamInterface threadsafe|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|&amp;quot;low-level&amp;quot; PCM I/O with at least an ALSA implementation|kretz@kde.org|Matthias Kretz and Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Phonon|VideoWidget snapshot function|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KDEPrint|reintroduce KDEPrint Print Management tools, e.g. KCM, kprinter, kjobviewer, etc.  Depends upon progress of kdelibs side of KDEPrint and Qt4.4 feature set.|john@layt.net|john Layt}}&lt;br /&gt;
{{FeatureInProgress|Plasma|welcome plasmoid|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Plasmagik packaging (and package classes)|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Networkmanager Plasmoid and DataEngine|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureInProgress|Krunner|Configuration options for blacklisting, user ranking, runner ranking, learning|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Simple learning|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Simple GUI for above options|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runners able to share parsing|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Noun-Verb support|ryan.bitanga@gmail.com|Ryan P. Bitanga}}&lt;br /&gt;
{{FeatureTodo|Plasma|physics-based animator|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|Improve the base set of plasmoids|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|New wallpapers|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|New way of handling wallpapers and different sizes (package format, and so on...)|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|Top-level windows plasmoids|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add 'smart setting' of extended colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add KDE3 scheme import|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Query kwin for supported colors; add full set of kwin colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|MSNP15 implementation for MSN|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Kjots| Import notes from KNotes as KJots pages. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Power Manager|import either Guidance Power Manager or move kde4powersaver into kdeutils|?|?}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|refactor KByteArrayView|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|parameter dialog for &amp;quot;Copy as...&amp;quot;|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Smoke|Wrap some more APIs (at least Akanodi for all languages and Plasma for C#)|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|New highscore management system|milliams|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|kdiamond|Drag jewels|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|kdiamond|Optional OpenGL rendering|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureInProgress|ksirk|Map scrolling arrows|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|ksirk|KHotNewStuff skins|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|ksirk|Jabber based net game finding|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kate|Port and reenable the Snippets plugin.|jpetso@gmx.at|Jakob Petsovits}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Add a Open File action|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|New parser using QLALR|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Dragon Player|Make Dragon indipendent from Xine|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|File Manager|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|play media dialog|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|slider changes|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|show info while playing audio files|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KMagnifier|Refactor color menu, re-add invert, break current color blindness code into &amp;quot;daltonize&amp;quot; and &amp;quot;simulate&amp;quot;|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Add color-shift modes to help people with color blindness|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan</id>
		<title>Schedules/KDE4/4.1 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan"/>
				<updated>2008-03-21T17:44:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* kdebase-workspace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features. The deadline for adding entries here for the 4.1 release is '''31 March 2008'''.&lt;br /&gt;
&lt;br /&gt;
Entries added after that date will be scheduled for the 4.2 release.&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kdeui|Add KFadeWidgetEffect to easily add fading UI transitions to KDE applications|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|kross|Add QtScript support|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Phonon KCM|More UI feedback|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Goya, a framework for inserting controls into itemviews in a really easy and fast way|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Shortcut schemes for KDE applications|adymo@kdevelop.org|Alexander Dymo}}&lt;br /&gt;
{{FeatureInProgress|kmimetypetrader/kbuildsycoca|Replace use of profilerc for ordering applications with new mimeapps.list standard|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|knewstuff|Support caching, and speed up the interface through use of Models/Views and goya|jeremy@scitools.com|Jeremy Whiting}}&lt;br /&gt;
{{FeatureInProgress|Phonon KCM|Handle advanced devices|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|KDEPrint|Reintroduce KDEPrint in some form, depending on what Qt4.4 delivers.|john@layt.net|john Layt}}&lt;br /&gt;
{{FeatureInProgress|KIO|speed limits on KIO Transfers|nolis71cu@gmail.com|Manolo Valdes}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Printing of shortcuts from the shortcut dialog|apaku@gmx.de|Andreas Pakulat}}&lt;br /&gt;
{{FeatureTodo|KCalenderSystem|Complete migration of Jalali, Hijri, and Hebrew calendars to new code base.|john@layt.net|john Layt}}&lt;br /&gt;
{{FeatureTodo|KCalenderSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian. (Note, not all may live in kdelibs or be available as a global calendar system)|john@layt.net|john Layt}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Move the Akonadi development library from kdepim.|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
{{FeatureTodo|gpgme++2|newly designed gpgme++ (multithreaded, exceptions, less event loop integration: better for Windows)|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Dolphin|Details-view: Allow to open folders as tree (turned off per default).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Refactor view-action handling to a DolphinViewActionHandler to share more code with DolphinPart|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Simplify selecting of files in the single-click mode (based on http://aseigo.blogspot.com/2006/04/icons.html).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Raptor|The KDE4-Application-Menu}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Provide optional tooltips for files and directories.|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Konqueror|Session management (save/restore session/restore from crash).|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureInProgress|Konqueror|Support for undo closed window.|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureTodo|Konqueror|Allow to configure the Dolphin KPart within the Konquerors settings dialog.|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Plasma|Kickoff orientation dependent layout|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|Solid|Refactor Solid::Control networking|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|Solid|Backend for NetworkManager 0.7|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|System Settings|Filtering/Lazy load category modules|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|KCM autostart|Configure autostart desktop file|montel@kde.org|Laurent Montel}}&lt;br /&gt;
{{FeatureInProgress|KCM emoticons|Adding/editing/removing emoticons theme|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add 'smart setting' of extended colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add KDE3 scheme import|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Query kwin for supported colors; add full set of kwin colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|reintroduce KDEPrint Print Management tools, e.g. KCM, kprinter, kjobviewer, etc.  Depends upon progress of kdelibs side of KDEPrint and Qt4.4 feature set.|john@layt.net|john Layt}}&lt;br /&gt;
{{FeatureTodo|System Settings|Administrator mode support|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|krunner|Revamp GUI.|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|nepomuk|Service that monitors file rename and delete operations and updates the metadata accordingly. kded module already exists in playground. problem: depends on inotify.|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KMagnifier|Add color blindness simulation|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Refactor color menu, re-add invert, add color-shift modes to help people with color blindness|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KSystemLog|KSystemLog, a Log Viewer Tool. Move from kde-apps|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureDone|KCron|Do some refactoring in KCron|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureInProgress|KCron|Improve ergonomy and general interface|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureInProgress|KCron|Fix all existing bugs in KCron|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureDone|KCron|Convert KCron into a KCM Module, to use it in System Settings|nicolas.ternisien@gmail.com}}&lt;br /&gt;
{{FeatureTodo|Environment Variables|Create a environment variables KCM Module|nicolas.ternisien@gmail.com}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Smoke2|Move Smoke2 to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureTodo|PHP-Qt|Move PHP-Qt to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kalzium|Clean up the database. I am syncing with the BlueObelisk data repository again. There we decided to remove the density (not a element property but a compound property. I also removed the mean weight. We think it is better to provide correct data than a lot (but partly wrong) data.|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Calculator Plasmoid|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Vector support|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureInProgress|Parley|Redesigned main window|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|Parley|Vocabulary Plasmoid|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|KBruch and KPercentage|Merge in 1 app|pete@pmurdoch.com|Peter Murdoch}}&lt;br /&gt;
{{FeatureInProgress|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureInProgress|Step|A physics simulator, move from playground to kdeedu module (it is now in kdereview)|ks.vladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Variables share between calculations|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Export canvas as image|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Add command line|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Add a color picker|nielsslot@gmail.com|Niels Slot}}&lt;br /&gt;
{{FeatureTodo|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Parley|Rewrite of practice|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KDiamond|New game, move to kdegames|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KNetWalk|Better scoring system|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureDone|KNetWalk|Add support for loading new themes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureDone|Kollision|Move to kdereview/kdegames|p.capriotti@gmail.com|Paolo Capriotti}}&lt;br /&gt;
{{FeatureInProgress|KBlocks|Finish display of points and level and move to kdereview/kdegames|piacentini@kde.org}}&lt;br /&gt;
{{FeatureInProgress|KGoldRunner|Improved theming and animation|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureInProgress|KGoldRunner|Sound support and theming|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureInProgress|KSquares|Multiplayer support|josef}}&lt;br /&gt;
{{FeatureTodo|KBlocks|Add additional themes|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|KBreakout|Finish it, and move it from playground to kdegames|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KDiamond|Get themes with KNewStuff|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KGGZ|Add kggzcore and kggzdmod libraries|josef}}&lt;br /&gt;
{{FeatureTodo|KGGZ|Add new Qt4-based core client as successor to the old KDE3-based KGGZ|josef}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Also see kdegames/kgoldrunner/TODO|ianw}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Hot new stuff support for themes and levels|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Startup screen|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Reimplement the Board Editor|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|KMines|Add pause actions|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|New graphic system (port to QGraphicsView)|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KShisen|Port to KScoreDialog|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|Kubrick|New game, 3D OpenGL - move to playground|ianw}}&lt;br /&gt;
{{FeatureTodo|Kubrick|Polish up the features|ianw}}&lt;br /&gt;
{{FeatureTodo|Kubrick|Port to Qt4 and KDE4|ianw}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Gwenview|Undo system|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Okular|Better Text-To-Speech integration: speech the whole document, the current page or the selection.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Okular|Encryption support for ODF generator|bradh@kde.org}}&lt;br /&gt;
{{FeatureInProgress|Okular|Backward direction for text search.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Centralized text &amp;amp; graphics antialias configuration.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|EPub backend.|elylevy@cs.huji.ac.il|Ely Levy}}&lt;br /&gt;
{{FeatureInProgress|Okular|Improved form support (add missing types, handle the fields better).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Crop ratio|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|KIPI support|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Red eye correction|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Support for tagging with Nepomuk|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Thumbnail bar in view and fullscreen modes|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Okular|Support for document layers (mostly in PDF documents).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Dragon Player|A simple Phonon-based videoplayer application|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|Make Dragon indipendent from Xine|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|File Manager|David Edmunson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KGet|Group-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Torrent-Support|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Transfer-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Webinterface|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|Kopete|AIM offline messages|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|OTR Encryption support|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|Kopete|Status manager|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Bring back chat style and emoticon selection via knewstuff2|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Kopete|ICQ 6 status icons|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|Kopete|MSNP15 implementation for MSN|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Non-intrusive notification system|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|KGet|Nepomuk-Integration|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Global Speedlimits|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Copy libbtcore to kdenetwork/kget|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|Kopete|GroupWise chatroom support|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|[http://decibel.kde.org Decibel]|Decibel, a framework for real time communication services. Move from playground/pim|info@basyskom.de|Tobias Hunger}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KAddressbook|Ability to add LDAP search results to distribution lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Indication of which resource folder a contact belongs to|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Read-only view for contacts in read-only folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|copy/cut/paste context menu items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to easily create todos with reminders from emails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to open messages from search results when the reader is hidden|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better invitation update emails showing what changed|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better reminder visualization in very small events|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better, natural language search criteria names|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Clickable status columns|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Client side configurability of warnings in shared folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Colored ribbons for indication of signing and encryption status in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Configuration option for whether invitation emails are automatically deleted or not when having been acted upon|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Copy/paste and drag and drop from/to the mail composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Decryption on demand in reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Display of quota information in foldertree tooltips|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop and copy and paste support in the search result viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop from the mail reader window and mime-tree viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop of folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Editing of attachments from the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Export and import of filters|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Favorites Folder|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Folder quicksearch|m.koller@surfeu.at|Martin Koller}}&lt;br /&gt;
{{FeatureDone|KMail|Harmonization of actions in main and standalone mail reader windows|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|IMAP Server storage of non-standard flags|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved TNEF attachment handling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved quota warnings|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Initialize full search from quicksearch on request|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Override font and fontsize for standalone message viewers|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Per-folder identity configurability|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Recursive IMAP cache troubleshooting|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Resizable recipients area in composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for creating new mails based on received mails (Resend)|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for immediate sync of resource folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for soft line breaking|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Tab navigation through groups in the address completion|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Text snippets with shortcuts and variable expansion in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Warning about active out-of-office scripts|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|lost+found recovery of locally changed folders that lose access rights|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KNotes|Ability to print notes|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Ability to have both distribution lists and addresbook extension visible|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Aggregated reminders view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Better default resource colors|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Drag and drop of attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Faster initial loading of kolab resources|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Forwarding and delegation of invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved coloring of agenda view items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved event printing|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Merge of the attachment view in into the main page|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Merge of the free-busy and attendee views for easier scheduling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Month view scrolling, paging, mouse-wheeling|tom_t@gmx.at|Thomas Thrainer}}&lt;br /&gt;
{{FeatureDone|KOrganizer|More readable Kolab resource folder labels|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Redesigned incidence editor UI|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Side-by-side calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Support for by-value attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Timeline calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|Ability to search in internal and external certificates at the same time|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|General UI Server|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|Kleopatra|New, tabbed, mainwindow design|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KonsoleKalendar|Support &amp;quot;file&amp;quot; and &amp;quot;localdir&amp;quot; resources|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Kontact|Config option to close despite system tray|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Harmonization of component naming in sidebar, configuration, summary view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Right-aligned component navigation toolbar|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Ubiquitous sync actions|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Column-specific whatsthis-help| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Combined search and add task widget| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Drag&amp;amp;Drop| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|File management (file-&amp;gt;load)| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Managing history| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Tracking tasks by active applications| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Whatsthis-help dependant on if a task has been created| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureInProgress|KMail|HTML  Signatures|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureInProgress|Kontact|New Planner summary; combines Appointment+To-do+SpecialDates into 1 pretty summary|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|KAlarm|New option to specify reminder times in minutes|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Prevent multiple identical error messages accumulating for the same alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Remember main window show/hide options used when KAlarm closed instead of setting them in Preferences dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Remove alarm daemon and do all scheduling in kalarm itself|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Replace simple repetitions by recurrence sub-repetitions to reduce confusion|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Simplification and improvements to alarm edit dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KMail|Aggregated attachment view in the mail header area of the reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KMail|Improved error messages and audit log for cryptographic operations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Ability to jump to the right day in the agenda from invitation mails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Drag and drop in the free-busy view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for comments in replies to invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureTodo|Kleopatra|Konqueror and Dolphin Kleopatra plugins|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application| christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Cervisia|New context menu entry &amp;quot;Add to Ignore List&amp;quot;|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Lokalize|Move this application (formerly known as Kaider) from extragear|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Cervisia|A file view based on KDirModel|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|KBugBuster|Make it work|fabiolocati@gmail.com|Fabio Locati}}&lt;br /&gt;
{{FeatureInProgress|Kate|Session plasmoid|montel@kde.org|Laurent Montel}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a PyQt template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a Plasmoid template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a Ruby template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Make a GUI for it|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|kioslave svn|Add Export/Import feature|montel@kde.org|Laurent Montel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|bytelevel editor (successor to KHexEdit). Move from playground/utils.|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevelop =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevplatform =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdewebdev =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan</id>
		<title>Schedules/KDE4/4.1 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan"/>
				<updated>2008-02-16T02:30:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* kdebase-workspace */ color kcm features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Instructions =&lt;br /&gt;
&lt;br /&gt;
Deadline for adding entries here for the 4.1 release is '''31 March 2008'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Entries added after that date will be scheduled for the 4.2 release.&lt;br /&gt;
&lt;br /&gt;
todo =&amp;gt; not started yet&amp;lt;br&amp;gt;&lt;br /&gt;
in-progress =&amp;gt; started, but not completed yet&amp;lt;br&amp;gt;&lt;br /&gt;
done =&amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kdeui|Add KFadeWidgetEffect to easily add fading UI transitions to KDE applications|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|kross|Add QtScript support|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Phonon KCM|More UI feedback|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Goya, a framework for inserting controls into itemviews in a really easy and fast way|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureInProgress|kmimetypetrader/kbuildsycoca|Replace use of profilerc for ordering applications with new mimeapps.list standard|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|knewstuff|Support caching, and speed up the interface through use of Models/Views and goya|jeremy@scitools.com|Jeremy Whiting}}&lt;br /&gt;
{{FeatureInProgress|Phonon KCM|Handle advanced devices|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Move the Akonadi development library from kdepim.|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Dolphin|Refactor view-action handling to a DolphinViewActionHandler to share more code with DolphinPart|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Simplify selecting of files in the single-click mode (based on http://aseigo.blogspot.com/2006/04/icons.html).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Details-view: Allow to open folders as tree (turned off per default).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Raptor|The KDE4-Application-Menu}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Color KCM|Add 'smart setting' of extended colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add KDE3 scheme import|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KMagnifier|Add color blindness simulation|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Refactor color menu, re-add invert, add color-shift modes to help people with color blindness|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KSystemLog|KSystemLog, a Log Viewer Tool. Move from kde-apps|nicolas.ternisien@gmail.com}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Smoke2|Move Smoke2 to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureTodo|PHP-Qt|Move PHP-Qt to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Calculator Plasmoid|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Vector support|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureInProgress|Parley|Redesigned main window|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|Parley|Vocabulary Plasmoid|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Variables share between calculations|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KBruch and KPercentage|Merge in 1 app|pete@pmurdoch.com|Peter Murdoch}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Export canvas as image|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Parley|Declinations|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Parley|Rewrite of practice|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|A physics simulator, move from playground to kdeedu module|ks.vladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KBlocks|Finish display of points and level (waiting for Qt4.4 with WidgetsOnCanvas to land in qt-copy) and move to kdereview/kdegames|piacentini@kde.org}}&lt;br /&gt;
{{FeatureInProgress|KGoldRunner|Improved theming and animation|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureInProgress|Kollision|Move to kdereview/kdegames|p.capriotti@gmail.com|Paolo Capriotti}}&lt;br /&gt;
{{FeatureTodo|KBreakout|Finish it, and move it from playground to kdegames|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Also see kdegames/kgoldrunner/TODO|ianw}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Hot new stuff support for themes and levels|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Sound support and theming|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Startup screen|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Reimplement the Board Editor|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Add support for loading new themes|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Better scoring system|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|New graphic system|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KShisen|Port to KScoreDialog|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|Kubrick|New game, 3D OpenGL - move to playground|ianw}}&lt;br /&gt;
{{FeatureTodo|Kubrick|Polish up the features|ianw}}&lt;br /&gt;
{{FeatureTodo|Kubrick|Port to Qt4 and KDE4|ianw}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Okular|Encryption support for ODF generator|bradh@kde.org}}&lt;br /&gt;
{{FeatureInProgress|Okular|Improved form support (add missing types, handle the fields better).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Centralized text &amp;amp; graphics antialias configuration.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Dragon Player|A simple Phonon-based videoplayer application|ian.monroe@gmail.com}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KGet|Torrent-Support|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|Kopete|OTR Encryption support|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|KGet|Group-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Transfer-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KGet|Webinterface|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Bring back chat style and emoticon selection via knewstuff2|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Nepomuk-Integration|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Column-specific whatsthis-help| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Combined search and add task widget| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Drag&amp;amp;Drop| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|File management (file-&amp;gt;load)| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Managing history| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Tracking tasks by active applications| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Whatsthis-help dependant on if a task has been created| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Ability to add LDAP search results to distribution lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|copy/cut/paste context menu items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Indication of which resource folder a contact belongs to|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Read-only view for contacts in read-only folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|Ability to search in internal and external certificates at the same time|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to easily create todos with reminders from emails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to open messages from search results when the reader is hidden|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better invitation update emails showing what changed|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better, natural language search criteria names|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better reminder visualization in very small events|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Clickable status columns|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Client side configurability of warnings in shared folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Colored ribbons for indication of signing and encryption status in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Configuration option for whether invitation emails are automatically deleted or not when having been acted upon|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Copy/paste and drag and drop from/to the mail composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Display of quota information in foldertree tooltips|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop and copy and paste support in the search result viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop from the mail reader window and mime-tree viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop of folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Editing of attachments from the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Export and import of filters|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Favorites Folder|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Folder quicksearch|m.koller@surfeu.at|Martin Koller}}&lt;br /&gt;
{{FeatureDone|KMail|Harmonization of actions in main and standalone mail reader windows|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|IMAP Server storage of non-standard flags|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved quota warnings|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved TNEF attachment handling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Initialize full search from quicksearch on request|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|lost+found recovery of locally changed folders that lose access rights|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Override font and fontsize for standalone message viewers|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Per-folder identity configurability|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Recursive IMAP cache troubleshooting|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Resizable recipients area in composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for creating new mails based on received mails (Resend)|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for immediate sync of resource folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for soft line breaking|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Tab navigation through groups in the address completion|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Text snippets with shortcuts and variable expansion in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Warning about active out-of-office scripts|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KNotes|Ability to print notes|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KonsoleKalendar|Support &amp;quot;file&amp;quot; and &amp;quot;localdir&amp;quot; resources|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Kontact|Config option to close despite system tray|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Harmonization of component naming in sidebar, configuration, summary view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Right-aligned component navigation toolbar|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Ubiquitous sync actions|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Ability to have both distribution lists and addresbook extension visible|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Aggregated reminders view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Better default resource colors|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Faster initial loading of kolab resources|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Forwarding and delegation of invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved coloring of agenda view items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved event printing|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|More readable Kolab resource folder labels|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Side-by-side calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Support for by-value attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Timeline calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Month view scrolling, paging, mouse-wheeling|tom_t@gmx.at|Thomas Thrainer}}&lt;br /&gt;
{{FeatureInProgress|KMail|HTML  Signatures|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureInProgress|Kontact|New Planner summary; combines Appointment+To-do+SpecialDates into 1 pretty summary|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|[http://decibel.kde.org Decibel]|Decibel, a framework for real time communication services. Move from playground/pim|info@basyskom.de|Tobias Hunger}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application| christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KAlarm|New option to specify reminder times in minutes|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Prevent multiple identical error messages accumulating for the same alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Remember main window show/hide options used when KAlarm closed instead of setting them in Preferences dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Remove alarm daemon and do all scheduling in kalarm itself|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Replace simple repetitions by recurrence sub-repetitions to reduce confusion|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Simplification and improvements to alarm edit dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KMail|Aggregated attachment view in the mail header area of the reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KMail|Decryption on demand in reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KMail|Improved error messages and audit log for cryptographic operations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Ability to jump to the right day in the agenda from invitation mails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Drag and drop in the free-busy view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Drag and drop of attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Merge of the attachment view in into the main page|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Merge of the free-busy and attendee views for easier scheduling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Redesigned incidence editor UI|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for comments in replies to invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureTodo|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Cervisia|New context menu entry &amp;quot;Add to Ignore List&amp;quot;|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Lokalize|Move this application (formerly known as Kaider) from extragear|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Cervisia|A file view based on KDirModel|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a Plasmoid template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a PyQt template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a Ruby template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Make a GUI for it|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|bytelevel editor (successor to KHexEdit). Move from playground/utils.|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevelop =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevplatform =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdewebdev =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan</id>
		<title>Schedules/KDE4/4.1 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.1_Feature_Plan"/>
				<updated>2008-02-16T02:26:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* kdeaccessibility */ kmag features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= Instructions =&lt;br /&gt;
&lt;br /&gt;
Deadline for adding entries here for the 4.1 release is '''31 March 2008'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Entries added after that date will be scheduled for the 4.2 release.&lt;br /&gt;
&lt;br /&gt;
todo =&amp;gt; not started yet&amp;lt;br&amp;gt;&lt;br /&gt;
in-progress =&amp;gt; started, but not completed yet&amp;lt;br&amp;gt;&lt;br /&gt;
done =&amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kdeui|Add KFadeWidgetEffect to easily add fading UI transitions to KDE applications|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureDone|kross|Add QtScript support|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Phonon KCM|More UI feedback|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Goya, a framework for inserting controls into itemviews in a really easy and fast way|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureInProgress|kmimetypetrader/kbuildsycoca|Replace use of profilerc for ordering applications with new mimeapps.list standard|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|knewstuff|Support caching, and speed up the interface through use of Models/Views and goya|jeremy@scitools.com|Jeremy Whiting}}&lt;br /&gt;
{{FeatureInProgress|Phonon KCM|Handle advanced devices|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Move the Akonadi development library from kdepim.|vkrause@kde.org|Volker Krause}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Dolphin|Refactor view-action handling to a DolphinViewActionHandler to share more code with DolphinPart|faure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Simplify selecting of files in the single-click mode (based on http://aseigo.blogspot.com/2006/04/icons.html).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Details-view: Allow to open folders as tree (turned off per default).|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Raptor|The KDE4-Application-Menu}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KMagnifier|Add color blindness simulation|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Refactor color menu, re-add invert, add color-shift modes to help people with color blindness|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KSystemLog|KSystemLog, a Log Viewer Tool. Move from kde-apps|nicolas.ternisien@gmail.com}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Smoke2|Move Smoke2 to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureTodo|PHP-Qt|Move PHP-Qt to kdebindings-trunk.|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Calculator Plasmoid|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Vector support|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureInProgress|Parley|Redesigned main window|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|Parley|Vocabulary Plasmoid|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Variables share between calculations|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KBruch and KPercentage|Merge in 1 app|pete@pmurdoch.com|Peter Murdoch}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Export canvas as image|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Parley|Declinations|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Parley|Rewrite of practice|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|A physics simulator, move from playground to kdeedu module|ks.vladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KBlocks|Finish display of points and level (waiting for Qt4.4 with WidgetsOnCanvas to land in qt-copy) and move to kdereview/kdegames|piacentini@kde.org}}&lt;br /&gt;
{{FeatureInProgress|KGoldRunner|Improved theming and animation|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureInProgress|Kollision|Move to kdereview/kdegames|p.capriotti@gmail.com|Paolo Capriotti}}&lt;br /&gt;
{{FeatureTodo|KBreakout|Finish it, and move it from playground to kdegames|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Also see kdegames/kgoldrunner/TODO|ianw}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Hot new stuff support for themes and levels|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Sound support and theming|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KGoldRunner|Startup screen|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Reimplement the Board Editor|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Add support for loading new themes|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Better scoring system|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|New graphic system|fela.kde@gmail.com}}&lt;br /&gt;
{{FeatureTodo|KShisen|Port to KScoreDialog|piacentini@kde.org}}&lt;br /&gt;
{{FeatureTodo|Kubrick|New game, 3D OpenGL - move to playground|ianw}}&lt;br /&gt;
{{FeatureTodo|Kubrick|Polish up the features|ianw}}&lt;br /&gt;
{{FeatureTodo|Kubrick|Port to Qt4 and KDE4|ianw}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Okular|Encryption support for ODF generator|bradh@kde.org}}&lt;br /&gt;
{{FeatureInProgress|Okular|Improved form support (add missing types, handle the fields better).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Centralized text &amp;amp; graphics antialias configuration.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Dragon Player|A simple Phonon-based videoplayer application|ian.monroe@gmail.com}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KGet|Torrent-Support|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|Kopete|OTR Encryption support|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|KGet|Group-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureDone|KGet|Transfer-Settings|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KGet|Webinterface|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Bring back chat style and emoticon selection via knewstuff2|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Nepomuk-Integration|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Column-specific whatsthis-help| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Combined search and add task widget| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Drag&amp;amp;Drop| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|File management (file-&amp;gt;load)| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Managing history| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Tracking tasks by active applications| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|[http://wiki.kde.org/ktimetracker ktimetracker]|Whatsthis-help dependant on if a task has been created| |Thorsten St&amp;amp;auml;rk}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Ability to add LDAP search results to distribution lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|copy/cut/paste context menu items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Indication of which resource folder a contact belongs to|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KAddressbook|Read-only view for contacts in read-only folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|Ability to search in internal and external certificates at the same time|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to easily create todos with reminders from emails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Ability to open messages from search results when the reader is hidden|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better invitation update emails showing what changed|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better, natural language search criteria names|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Better reminder visualization in very small events|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Clickable status columns|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Client side configurability of warnings in shared folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Colored ribbons for indication of signing and encryption status in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Configuration option for whether invitation emails are automatically deleted or not when having been acted upon|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Copy/paste and drag and drop from/to the mail composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Display of quota information in foldertree tooltips|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop and copy and paste support in the search result viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop from the mail reader window and mime-tree viewer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Drag and drop of folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Editing of attachments from the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Export and import of filters|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Favorites Folder|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Folder quicksearch|m.koller@surfeu.at|Martin Koller}}&lt;br /&gt;
{{FeatureDone|KMail|Harmonization of actions in main and standalone mail reader windows|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|IMAP Server storage of non-standard flags|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved quota warnings|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Improved TNEF attachment handling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Initialize full search from quicksearch on request|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|lost+found recovery of locally changed folders that lose access rights|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Override font and fontsize for standalone message viewers|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Per-folder identity configurability|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Recursive IMAP cache troubleshooting|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Resizable recipients area in composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for creating new mails based on received mails (Resend)|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for immediate sync of resource folders|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Support for soft line breaking|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Tab navigation through groups in the address completion|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Text snippets with shortcuts and variable expansion in the composer|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Warning about active out-of-office scripts|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KNotes|Ability to print notes|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KonsoleKalendar|Support &amp;quot;file&amp;quot; and &amp;quot;localdir&amp;quot; resources|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Kontact|Config option to close despite system tray|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Harmonization of component naming in sidebar, configuration, summary view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Right-aligned component navigation toolbar|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kontact|Ubiquitous sync actions|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Ability to have both distribution lists and addresbook extension visible|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Aggregated reminders view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Better default resource colors|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Faster initial loading of kolab resources|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Forwarding and delegation of invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved coloring of agenda view items|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Improved event printing|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|More readable Kolab resource folder labels|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Side-by-side calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Support for by-value attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Timeline calendar view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Month view scrolling, paging, mouse-wheeling|tom_t@gmx.at|Thomas Thrainer}}&lt;br /&gt;
{{FeatureInProgress|KMail|HTML  Signatures|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureInProgress|Kontact|New Planner summary; combines Appointment+To-do+SpecialDates into 1 pretty summary|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|[http://decibel.kde.org Decibel]|Decibel, a framework for real time communication services. Move from playground/pim|info@basyskom.de|Tobias Hunger}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application| christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KAlarm|New option to specify reminder times in minutes|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Prevent multiple identical error messages accumulating for the same alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Remember main window show/hide options used when KAlarm closed instead of setting them in Preferences dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Remove alarm daemon and do all scheduling in kalarm itself|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Replace simple repetitions by recurrence sub-repetitions to reduce confusion|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KAlarm|Simplification and improvements to alarm edit dialog|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KMail|Aggregated attachment view in the mail header area of the reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KMail|Decryption on demand in reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KMail|Improved error messages and audit log for cryptographic operations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Ability to jump to the right day in the agenda from invitation mails|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Drag and drop in the free-busy view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Drag and drop of attachments|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Merge of the attachment view in into the main page|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Merge of the free-busy and attendee views for easier scheduling|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Redesigned incidence editor UI|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for comments in replies to invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureTodo|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Cervisia|New context menu entry &amp;quot;Add to Ignore List&amp;quot;|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Lokalize|Move this application (formerly known as Kaider) from extragear|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Cervisia|A file view based on KDirModel|christian.loose@hamburg.de|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a Plasmoid template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a PyQt template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add a Ruby template|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Make a GUI for it|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|bytelevel editor (successor to KHexEdit). Move from playground/utils.|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevelop =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdevplatform =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdewebdev =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/User_talk:Mwoehlke</id>
		<title>User talk:Mwoehlke</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/User_talk:Mwoehlke"/>
				<updated>2008-01-29T17:25:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* (I'll finish writing this when I get HAL built...)&lt;br /&gt;
[[Getting Started/Build/HAL|Who is I?]]. Can this page be deleted, it's not changed since 5 months. --[[User:Dhaumann|Dhaumann]] 23:27, 28 January 2008 (CET)&lt;br /&gt;
::Hmm... I did get HAL built (was a pain IIRC), but it's been so long I don't remember all the hoops :-(. So I guess the answer is &amp;quot;yes&amp;quot;, since apparently no one else cares. Deleted. --[[User:Mwoehlke|Mwoehlke]] 18:25, 29 January 2008 (CET)&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2008-01-22T21:38:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: add 'enhancements' section, clean up bugs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* The application icons on the kicker compete with K-button in taking attention. This will addle novice who isn't familiar with its appearance. I think, K-button should look as a part of kicker, not be just a simple icon, but there are maybe other solutions. See http://lh5.google.com/mmauder/R4DPHTrn_GI/AAAAAAAAAFU/fraQpZdQ0M4/krunner_disappearing.png?imgmax=912&lt;br /&gt;
* Plasma's button in right-top corner looks like spider web. It needs to have more respectable appearance. &lt;br /&gt;
* docked dockers might need a nicer frame&lt;br /&gt;
* Mouse handling in menus: When the mouse pointer goes below the visible selection decoration of the last item in a menu, the item does not get deselected but a click or release event will not trigger the item. The item does not get deselected until the pointer leaves the menu. The correct behavior would be to deselect the item once the pointer leaves its selection decoration and enters the bezel, as e.g. in similar KDE 3 styles (e.g. Domino). Or to trigger the item despite the pointer being outside its selection decoration, given that it is still shown as selected. As it stands, you can go to the last item in a menu, not notice that you overshoot it because it doesn't go deselected, and your click/release will do nothing, which is jarring.&lt;br /&gt;
* The arrow buttons (go back/go forward) don't fit at all with the others icons. They seem to have been taken from a bad GNOME icon set...&lt;br /&gt;
* The trash is not really usable, since it is just too hard to see if it empty or not. Furthermore, because the colors are exactly the same, it seems to be part of the hard drives (see this screenshot (http://picasaweb.google.com/mmauder/KDE400/photo#5152345685276228690) for example).&lt;br /&gt;
* Why are the hard drives inclined, and the usb key all vertical ? I mean, they are all volumes, so why not make them look similar ? It would be far more intuitive.&lt;br /&gt;
* A few comment about this screenshot (http://picasaweb.google.com/mmauder/KDE400/photo#5152342502705462338) :&lt;br /&gt;
** See the splashscreen window ? It has square black edges on the top coming out of the round white outline.&lt;br /&gt;
** The white outline suddenly disappear on the right side but continue on the left side&lt;br /&gt;
** Why are the bottom edges square while the top edges are round ?&lt;br /&gt;
&lt;br /&gt;
== Rejected Bugs ==&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible. We want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it &amp;lt;/b&amp;gt;&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
* KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&amp;lt;b&amp;gt;not a style bug report to kmenu maintainer - and don't ever add things to &amp;quot;accepted bugs&amp;quot; below again - this went unnoticed because of that &amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;b&amp;gt;we may not want flat buttons - considering&amp;lt;/b&amp;gt;&lt;br /&gt;
* With everything around it styled nicely, having just a plain colour for selected items, e.g. in the speedbar, looks a bit disconnect from the rest of the GUI. Thus any effect that polishes this bit is welcome, such as a frame or even translucency.&amp;lt;b&amp;gt;unfortunately that part of qt is not stylable&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accepted Bugs ==&lt;br /&gt;
* Window decoration&lt;br /&gt;
** icons are scaled resulting in blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** Titlebar buttons do not 'react' when mouse clicked. Only indication when the mouse moves over them. Need a 'depressed' look/state when actually clicked like other widgets. (spstarr) 14:40, 02 December 2007 (EST) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** Maximize/Restore Buttons on titlebar 'jump' and corrupt panel on redrawing. See http://rapidshare.de/files/37960220/oxygen-resize.ogg.html or http://video.tinypic.com/player.php?v=72vk3df&amp;amp;s=1 for example. (spstarr) 15:01, 02 December 2007 (EST) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Color problems (see also QA #3) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** wrong text colors: checkbox is button, should be window - groupbox is view, should be window -  combobox is view, should be button (non-editable only) - tab is button, should be window&lt;br /&gt;
** arrows: are all button, should be view in spins, window for scrollbars - might be better fixed in KStyle?&lt;br /&gt;
** progress bars: should use selection for filled, button(?) for not-filled... seems to be OK but using hover for fill bg? ...not sure if button is really the color we want, but that's releasable; the hover color OTOH is likely to break with even some shipped color schemes&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accepted Enhancements ==&lt;br /&gt;
* Rounded corners of floatables (windows,menus dockers) should be done with alpha&lt;br /&gt;
* Windeco should use alpha for corners (need kwin improvements?)&lt;br /&gt;
* groupboxes&lt;br /&gt;
** make flat more homogeneous in look with normal (very short regular?)&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
This is helpful checklist to use when looking for bugs in a style:&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* [http://pastebin.ca/803298 QA color scheme]&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-12-29T03:09:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: cleaner and slightly more detailed list of color glitches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* docked dockers might need a nicer frame&lt;br /&gt;
&lt;br /&gt;
== Rejected Bugs ==&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible. We want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it &amp;lt;/b&amp;gt;&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
* KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&amp;lt;b&amp;gt;not a style bug report to kmenu maintainer - and don't ever add things to &amp;quot;accepted bugs&amp;quot; below again - this went unnoticed because of that &amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;b&amp;gt;we may not want flat buttons - considering&amp;lt;/b&amp;gt;&lt;br /&gt;
* With everything around it styled nicely, having just a plain colour for selected items, e.g. in the speedbar, looks a bit disconnect from the rest of the GUI. Thus any effect that polishes this bit is welcome, such as a frame or even translucency.&amp;lt;b&amp;gt;unfortunately that part of qt is not stylable&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accepted Bugs ==&lt;br /&gt;
* Window decoration&lt;br /&gt;
** icons are scaled resulting in blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** Titlebar buttons do not 'react' when mouse clicked. Only indication when the mouse moves over them. Need a 'depressed' look/state when actually clicked like other widgets. (spstarr) 14:40, 02 December 2007 (EST) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** Maximize/Restore Buttons on titlebar 'jump' and corrupt panel on redrawing. See http://rapidshare.de/files/37960220/oxygen-resize.ogg.html or http://video.tinypic.com/player.php?v=72vk3df&amp;amp;s=1 for example. (spstarr) 15:01, 02 December 2007 (EST) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Color problems (see also QA #3) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** wrong text colors: checkbox is button, should be window - groupbox is view, should be window -  combobox is view, should be button (non-editable only) - tab is button, should be window&lt;br /&gt;
** arrows: are all button, should be view in spins, window for scrollbars - might be better fixed in KStyle?&lt;br /&gt;
** progress bars: should use selection for filled, button(?) for not-filled... seems to be OK but using hover for fill bg? ...not sure if button is really the color we want, but that's releasable; the hover color OTOH is likely to break with even some shipped color schemes&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Rounded corneres of floatables (windows,menus dockers) should be done with alpha &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*tabs&lt;br /&gt;
**inactive tabs using black and not shade colors (hard-coded color alert) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* [http://pastebin.ca/803298 QA color scheme]&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-12-29T02:09:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Accepted Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* docked dockers might need a nicer frame&lt;br /&gt;
&lt;br /&gt;
== Rejected Bugs ==&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible. We want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it &amp;lt;/b&amp;gt;&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
* KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&amp;lt;b&amp;gt;not a style bug report to kmenu maintainer - and don't ever add things to &amp;quot;accepted bugs&amp;quot; below again - this went unnoticed because of that &amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;b&amp;gt;we may not want flat buttons - considering&amp;lt;/b&amp;gt;&lt;br /&gt;
* With everything around it styled nicely, having just a plain colour for selected items, e.g. in the speedbar, looks a bit disconnect from the rest of the GUI. Thus any effect that polishes this bit is welcome, such as a frame or even translucency.&amp;lt;b&amp;gt;unfortunately that part of qt is not stylable&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accepted Bugs ==&lt;br /&gt;
* Window decoration&lt;br /&gt;
** icons are scaled resulting in blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** Titlebar buttons do not 'react' when mouse clicked. Only indication when the mouse moves over them. Need a 'depressed' look/state when actually clicked like other widgets. (spstarr) 14:40, 02 December 2007 (EST) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** Maximize/Restore Buttons on titlebar 'jump' and corrupt panel on redrawing. See http://rapidshare.de/files/37960220/oxygen-resize.ogg.html or http://video.tinypic.com/player.php?v=72vk3df&amp;amp;s=1 for example. (spstarr) 15:01, 02 December 2007 (EST) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Rounded corneres of floatables (windows,menus dockers) should be done with alpha &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*tabs&lt;br /&gt;
**inactive tabs using black and not shade colors (hard-coded color alert) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* [http://pastebin.ca/803298 QA color scheme]&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/ColorSchemes</id>
		<title>Projects/Oxygen/ColorSchemes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/ColorSchemes"/>
				<updated>2007-12-13T16:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: new Cherry Blossom scheme, remove killed schemes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;KDE4 introduces some major changes in color schemes. Here you will find an overview of some new color-related features, as well as a preview of the new color schemes.&lt;br /&gt;
&lt;br /&gt;
This should probably go somewhere better (like, &amp;quot;the documentation&amp;quot;?). For now techbase (with winterz' &amp;quot;highly-unofficial&amp;quot; permission) is being abused as a dumping ground for screenshots, in order to try to solicit feedback from kde-artists.&lt;br /&gt;
&lt;br /&gt;
= Colors =&lt;br /&gt;
* Inactive Text&lt;br /&gt;
** Used for text that should be subdued (e.g. comments, extended file information)&lt;br /&gt;
* Active Text&lt;br /&gt;
** Used for text that wants to draw attention to itself, or is &amp;quot;active&amp;quot; (e.g. hovered links)&lt;br /&gt;
* Link Text&lt;br /&gt;
* Visited Text&lt;br /&gt;
** This, and the previous one, should be obvious :-).&lt;br /&gt;
* Negative Text&lt;br /&gt;
** Used for errors, etc.&lt;br /&gt;
* Neutral Text&lt;br /&gt;
** Used for text that wishes to set itself apart, but does not belong to the other roles (e.g. warnings, secure content).&lt;br /&gt;
* Focus Decoration&lt;br /&gt;
** Used to indicate what control will respond to keyboard input. For example, default buttons use this, input widgets use this when they have focus, etc.&lt;br /&gt;
* Hover Decoration&lt;br /&gt;
** Used to draw 'hover' (mouseover) effects.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Common Colors&amp;quot; set allows setting the most important colors in one place. Note that &amp;quot;Selection Inactive Text&amp;quot; means &amp;quot;Inactive Text&amp;quot; belonging to the &amp;quot;Selection&amp;quot; set, and is not related to inactive effects in any way. Also note that currently no auto-calculation is performed, so you need to go to each set to specify the alternate background color.&lt;br /&gt;
&lt;br /&gt;
= Effects =&lt;br /&gt;
KDE4 introduces &amp;quot;state effects&amp;quot;; three effects that can be applied to inactive windows, and disabled widgets.&lt;br /&gt;
&lt;br /&gt;
* Intensity&lt;br /&gt;
** Allows adjusting the overall brightness. 'shade' adjusts luma by an absolute amount (-1.0 to 1.0), 'darken' and 'lighten' adjust by a percentage, where negative percentages are allowed (e.g. -50% results in new_luma = 1.5 * old_luma).&lt;br /&gt;
* Color&lt;br /&gt;
** Allows adjusting the overall color, either by multiplying the chrome ('desaturate' - again, negative values are allowed, which results in increasing the chroma), mixing with another color ('fade'), or tinting with another color ('tint'). Tinting tends to change hue/chroma much more rapidly while preserving luma.&lt;br /&gt;
* Contrast&lt;br /&gt;
** Allows adjusting only foreground colors, so that e.g. text becomes less prominent. The effects are 'fade' and 'tint'; the background color is used as the target.&lt;br /&gt;
&lt;br /&gt;
NOTE: Inactive effects cause additional window repaints that some people may find annoying, or may cause performance problems on older machines.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
* Apply inactive window color effects&lt;br /&gt;
** The built-in color schemes define inactive effects. If you do not wish to use them, this provides an easy way to turn them off. (default=off)&lt;br /&gt;
* Inactive selection changes color&lt;br /&gt;
** KDE4 strives to join the rest of the world by using a different color for selection in widgets that do not have focus, enhancing Usability. Due to performance concerns, the default is off until these can be addressed, hopefully in Qt 4.5, but if you have a good computer, you are strongly encouraged to try enabling this.&lt;br /&gt;
** Because inactive window effects incur the performance penalty anyway, checking 'apply inactive window color effects' will enable this option if it has not been manually clicked (similarly, unchecking said option will disable this one in the same situation).&lt;br /&gt;
* Shade sorted column in lists&lt;br /&gt;
** This is currently not implemented by listviews :-(.&lt;br /&gt;
* Contrast&lt;br /&gt;
** This controls the strength of 3D effects.&lt;br /&gt;
&lt;br /&gt;
= Schemes =&lt;br /&gt;
The author ([[User:mwoehlke|Matthew Woehlke]], also the creator of all of these color schemes, with varying levels of inspiration or blatant copying) apologizes for the marketing spiel you are about to be subjected to if you read this section ;-).&lt;br /&gt;
&lt;br /&gt;
== Blue Deep ==&lt;br /&gt;
[[Image:Blue-deep.png|thumbnail|Blue Deep]]&lt;br /&gt;
Rich blues, vibrant yet soothing, threaten to pull you into the watery depths of this scheme. This is a port of the KDE3 scheme Dark Blue.&lt;br /&gt;
&lt;br /&gt;
== Cherry Blossom ==&lt;br /&gt;
[[Image:SchemeCherryBlossom.png|thumbnail|Cherry Blossom]]&lt;br /&gt;
Soft, light pinks touched with green bring a gentle, eastern feel to this scheme reminiscent of the famous tree.&lt;br /&gt;
&lt;br /&gt;
== Chrome ==&lt;br /&gt;
[[Image:SchemeChrome.png|thumbnail|Chrome]]&lt;br /&gt;
Bright, shiny gray with just a touch of blue, combined with vibrant blue accents, conjures the feel of polished metal, as well as memories of Keramik and Plastik schemes from KDE3.&lt;br /&gt;
&lt;br /&gt;
== Desert ==&lt;br /&gt;
[[Image:SchemeDesert.png|thumbnail|Desert]]&lt;br /&gt;
Soft shades of sand are accented by rich red. This scheme is a port of the KDE3 scheme by the same name.&lt;br /&gt;
&lt;br /&gt;
== Evening Lilac ==&lt;br /&gt;
[[Image:SchemeEveningLilac.png|thumbnail|Evening Lilac]]&lt;br /&gt;
Dusty gray-purple with touches of green bring to mind a lilac bush on a warm summer night.&lt;br /&gt;
&lt;br /&gt;
== Highland Mist ==&lt;br /&gt;
[[Image:SchemeHighland-mist.png|thumbnail|Highland Mist]]&lt;br /&gt;
Pale shades of green with a touch of blue accents evoke images of grass-covered hills shrouded in fog.&lt;br /&gt;
&lt;br /&gt;
== Honeycomb ==&lt;br /&gt;
[[Image:SchemeHoneycomb.png|thumbnail|Honeycomb]]&lt;br /&gt;
Soft shades of gray touched by yellow mix with honey-colored highlights to give an impression of bees, or perhaps BeOS.&lt;br /&gt;
&lt;br /&gt;
== Midnight Meadow ==&lt;br /&gt;
[[Image:SchemeMidnightMeadow.png|thumbnail|Midnight Meadow]]&lt;br /&gt;
Dark shades of green shimmer with unearthly light in this scheme inspired by the glow of a sea of lush green grass in the deep of night.&lt;br /&gt;
&lt;br /&gt;
== Norway ==&lt;br /&gt;
[[Image:SchemeNorway.png|thumbnail|Norway]]&lt;br /&gt;
Kudos if you can figure out the reference here. Due to questionable content, it will not be posted ;-). This scheme added at the request of Eike Hein, and inspired by [http://members.shaw.ca/lucx/ Charamel for Firefox]&lt;br /&gt;
&lt;br /&gt;
== Obsidian Coast ==&lt;br /&gt;
[[Image:SchemeObsidianCoast.png|thumbnail|Obsidian Coast]]&lt;br /&gt;
Inspired by movies of dark waves breaking against tall, black cliffs, this scheme (a dark version of Whitewater) is perfect for those that love a sense of foreboding, or just the rich, natural look of volcanic glass.&lt;br /&gt;
&lt;br /&gt;
== Steel ==&lt;br /&gt;
[[Image:SchemeSteel.png|thumbnail|Steel]]&lt;br /&gt;
Warm gray, subtle gold, and striking cyan come together in a warm industrial tribute to classic skyscrapers in the late afternoon sun.&lt;br /&gt;
&lt;br /&gt;
== Stone Orchid ==&lt;br /&gt;
[[Image:SchemeStoneOrchid.png|thumbnail|Stone Orchid]]&lt;br /&gt;
Rich gray with a hint of floral meets soft cyan and vibrant royal-purple accents in this scheme inspired by orchids, and KDE3's Solaris.&lt;br /&gt;
&lt;br /&gt;
== Terra ==&lt;br /&gt;
[[Image:SchemeTerra.png|thumbnail|Terra]]&lt;br /&gt;
Gray mingled with green joins blue accents in this outdoor scheme inspired by grass and rocks against a clear sky.&lt;br /&gt;
&lt;br /&gt;
== White Peach ==&lt;br /&gt;
[[Image:SchemeWhitePeach.png|thumbnail|White Peach]]&lt;br /&gt;
Inspired by a juice label, this scheme brings vibrant, light peachy tones reminiscent of juice by the same name, and welds it with floral green accents.&lt;br /&gt;
&lt;br /&gt;
== Whitewater ==&lt;br /&gt;
[[Image:Whitewater.png|thumbnail|Whitewater]]&lt;br /&gt;
Calling to mind the river canyons of Colorado, this neutral scheme features a solid earthy/rocky gray base with blue accents. &lt;br /&gt;
&lt;br /&gt;
== Wonton Soup ==&lt;br /&gt;
[[Image:SchemeWontonSoup.png|thumbnail|Wonton Soup]]&lt;br /&gt;
Created from the KDE3-era wallpaper of the same name, this scheme was made by [[User:mwoehlke|Matthew Woehlke]], who uses (and has used, for about two years) it as his KDE3 scheme.&lt;br /&gt;
&lt;br /&gt;
== Zion ==&lt;br /&gt;
[[Image:SchemeZion.png|thumbnail|Zion]]&lt;br /&gt;
Reminiscent of the computers in the fictional city of the same name from the [http://en.wikipedia.org/wiki/The_Matrix_(series) Matrix trilogy], this scheme features mainly black foreground elements on a starkly white background. It is included in kdeaccessibility and is intended to aid users with visual difficulties.&lt;br /&gt;
&lt;br /&gt;
== Zion (Reversed) ==&lt;br /&gt;
[[Image:SchemeZionReversed.png|thumbnail|Zion (Reversed)]]&lt;br /&gt;
An inverse of the Zion scheme, this provides white-on-black elements, again maximizing contrast.&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeCherryBlossom.png</id>
		<title>File:SchemeCherryBlossom.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeCherryBlossom.png"/>
				<updated>2007-12-13T16:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals</id>
		<title>Schedules/KDE4/4.0 Release Beta Goals</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals"/>
				<updated>2007-12-13T03:09:32Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Color configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will list all the release goals for the beta cycle of KDE4. It will contain not only the goals, but also the current state and what YOU can do to help out.&lt;br /&gt;
&lt;br /&gt;
You can not add new items to this list. Only maintainers should edit their own section. If you wish to add new items, send a mail to [mailto:release-team@kde.org release-team@kde.org]&lt;br /&gt;
&lt;br /&gt;
=== Plasma ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:aseigo@kde.org Aaron J. Seigo]&lt;br /&gt;
*''goal:'' A basic panel is there; current work is to flesh it out into a more capable panel system. System tray and taskbar both need work as does a desktop containment with legacy support for the Desktop folder.&lt;br /&gt;
*''howto help:'' help is always welcome; there are a number of people contributing to plasma already but more help can make things go faster. If you want to help, join the irc channel #plasma or mail to [mailto:panel-devel@kde.org panel-devel@kde.org]&lt;br /&gt;
*''expected time of arrival:'' unknown, but close&lt;br /&gt;
&lt;br /&gt;
=== Color configuration ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;color list broken&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]]&lt;br /&gt;
*''goals:''&lt;br /&gt;
** fix size bug in color list (QTableView bug?) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** sort schemes in list &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;cosmetic&amp;lt;/span&amp;gt;&lt;br /&gt;
** don't save options in schemes &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;cosmetic&amp;lt;/span&amp;gt;&lt;br /&gt;
** confirmation when discarding changes to working scheme, [http://bugs.kde.org/show_bug.cgi?id=152883 bug 152883] &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''howto help:'' Polish and Usability review welcome.&lt;br /&gt;
&lt;br /&gt;
=== Oxygen style ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;releaseable if really needed&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]], [mailto:cbr@boemann.dkCasper Boemann], #oxygen&lt;br /&gt;
*''goal:'' no obvious glitches, fix all bugs on [[Projects/Oxygen/StyleWinDec]]&lt;br /&gt;
*''howto help:'' ask on #oxygen&lt;br /&gt;
*''expected time of arrival:'' unknown&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:faure@kde.org David Faure]&lt;br /&gt;
*''goal:'' Konqueror must be able to browse the web and to be used as a file manager again, I'm mostly aiming for &amp;quot;no regressions compared to KDE3&amp;quot;&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**Help is most welcome. [mailto:kfm-devel@kde.org kfm-devel@kde.org] is the place for discussion of both aspects of konqueror development. Web browsing seems in better shape than filemanagement right now, so small tasks are fixing regressions in the webbrowsing-related code in konqueror and its dependencies. For instance there is finally a patch now about fixing the non-working Return key in the location bar URL; I'm sure there's more like that.&lt;br /&gt;
**Bigger tasks include: &lt;br /&gt;
***defining a future for the sidebar code (*no showstopper if this is the last item on the list*) -- volunteer(s) needed! &lt;br /&gt;
***finishing the integration of the dolphin part for file management.&lt;br /&gt;
***open bugs are on [http://bugs.kde.org/buglist.cgi?product=konqueror&amp;amp;version=4.0&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;cmdtype=doit| this Bugzilla page]&lt;br /&gt;
*''expected time of arrival:'' november (if we leave out the sidebar changes), else december.&lt;br /&gt;
&lt;br /&gt;
=== Dolphin ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;some showstoppers&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:peter.penz@gmx.at Peter Penz]&lt;br /&gt;
*''goal:'' I think Dolphin is in a quite acceptable state now. David Faure and Rafael Fernández López also investigate a lot of time in Dolphin related things so I'm optimistic that Dolphin should be in a good shape for KDE 4.0.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**I'm concerned a little bit whether the Dolphin KPart is matured enough for getting Konqueror in shape.&lt;br /&gt;
***I'm not sure about the state of Nepomuk. Currently the performance is too  slow for sorting items by tags or rating. It would be possible to use an  internal cache in Dolphin for this, but this would only reduce the time from  O(n*log(n)) to O(n) and the problem is n: reading e. g. 30 items takes several seconds... Maybe Sebastian Trüg could need some support. In the worst case I'd suggest to remove the &amp;quot;sort by tags&amp;quot; and &amp;quot;sort by rating&amp;quot; feature in Dolphin for KDE 4.0.&lt;br /&gt;
*''expected time of arrival:'' Unknown,  dfaure is working on http://bugs.kde.org/show_bug.cgi?id=152902 and there also is http://bugs.kde.org/show_bug.cgi?id=152904 which is not dolphin related, but it affects this app.&lt;br /&gt;
&lt;br /&gt;
=== Kate ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;some missing features &amp;amp; bugs, but usable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kwrite-devel@kde.org Kate Team]&lt;br /&gt;
*''goal:'' The KDE 4 version of Kate should at least inlude the known KDE 3 features with additions. We have some new stuff around already but some old is lacking correct porting (beside new introduced bugs). There is a massive need for bugfixing and help getting old stuff back to work, like printing.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
** &amp;lt;s&amp;gt;fix printing&amp;lt;/s&amp;gt; Fixed by Anders, 2007-10-20 &lt;br /&gt;
** &amp;lt;s&amp;gt;fix shortcut settings&amp;lt;/s&amp;gt; Fixed by mstocker&lt;br /&gt;
** &amp;lt;s&amp;gt;rendering bugfixes&amp;lt;/s&amp;gt; seems to be ok (fixed everything I know), by mstocker&lt;br /&gt;
** config saving bugfixes&lt;br /&gt;
** testing&lt;br /&gt;
*''expected time of arrival:'' unknown, but very close&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;no showstopper any more&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:huntedhacker@tiscali.co.uk Alex Merry] (randomguy3)&lt;br /&gt;
*''goal:'' Printing support working in all applications that can currently print, with print preview and customisable dialogs; no applications depending on libkdeprint, except for the printing kcm&lt;br /&gt;
*help needed: API is in place: KPrintPreview in kutils and KdePrint::createPrintDialog() in kdeui.  Okular has support for printing PS files directly, although this will only work on *NIX platforms (it requires lpr or cups).  Basically, all that is left is test, test, test.&lt;br /&gt;
*''howto help:'' heavy testing required, send reports of problems to [mailto:kde-print-devel@kde.org kde-print-devel@kde.org] mailing list, preferably with a patch, or report problems on [http://bugs.kde.org Bugzilla].&lt;br /&gt;
*''expected time of arrival:'' All was done by 26th Nov.&lt;br /&gt;
&lt;br /&gt;
=== Sound ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;ready&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kretz@kde.org Matthias Kretz]&lt;br /&gt;
*''goal:''&lt;br /&gt;
*# no showstopper: do some more automatic tests that all sound devices work as expected&lt;br /&gt;
*''howto help:'' Mailinglists: [mailto:phonon-backends@kde.org phonon-backends@kde.org] or [mailto:kde-multimedia@kde.org kde-multimedia@kde.org], IRC: #phonon ping Vir&lt;br /&gt;
**Local audio playback is working quite OK, but there are some issues that are still open:&lt;br /&gt;
*** https://bugzilla.redhat.com/show_bug.cgi?id=284171 (should be fixed with libc 2.7)&lt;br /&gt;
*** Even though defaults.pcm.ipc_gid is set to audio and defaults.pcm.ipc_perm is set to 0660, dmix does not work for more than one user at the same time (both users are in the audio group). A workaround is to set ipc_perm to 0666, but a real fix would be nicer.&lt;br /&gt;
*** xine-lib behaves bad wrt. memory allocations. run e.g. mediaobjecttest in valgrind --tool=massif (this will hopefully get fixed with libxine 1.2)&lt;br /&gt;
&lt;br /&gt;
=== Co-installability ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;A state where packagers can work around the rest. &amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' k-c-d&lt;br /&gt;
*''goal:'' Distros should be able to coinstall packages in the same prefix in a way that makes it possible to use kde3 apps on a kde4 desktop or to use kde4 apps on a kde3 desktop.&lt;br /&gt;
*''how to help''&lt;br /&gt;
** fix kinfocenter &amp;amp;&amp;amp; khelpcenter in some magic way&lt;br /&gt;
*''details:'' &lt;br /&gt;
** kde3libs, kde4libs, kdepimlibs, kde4base(apps, runtime, workspace) should be coinstallable  =&amp;gt; kde3 apps in a kde4 desktop&lt;br /&gt;
** &amp;lt;b&amp;gt;AND&amp;lt;/b&amp;gt;&lt;br /&gt;
** kde3libs, kde3base, kde4libs, kdepimlibs, kde4base-runtime should be coinstallable =&amp;gt; kde4 apps in a kde3 desktop&lt;br /&gt;
** And only those with the -devel stuff stripped out.&lt;br /&gt;
*''list of conflicting files:'' [[Projects/KDE3_KDE4_coinstallability| KDE3/KDE4 coinstallability]]&lt;br /&gt;
*''NOTE''&lt;br /&gt;
** This does not cover apps like konsole, konqueror, kmail, ... There can of course only be one of each application installed in same prefix. It is only about the runtime parts of the other desktop.&lt;br /&gt;
*''expected time of arrival:'' Very soon&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/ColorSchemes</id>
		<title>Projects/Oxygen/ColorSchemes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/ColorSchemes"/>
				<updated>2007-12-11T16:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: Blue Deep - port of Dark Blue (name is not the same, my bad)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;KDE4 introduces some major changes in color schemes. Here you will find an overview of some new color-related features, as well as a preview of the new color schemes.&lt;br /&gt;
&lt;br /&gt;
This should probably go somewhere better (like, &amp;quot;the documentation&amp;quot;?). For now techbase (with winterz' &amp;quot;highly-unofficial&amp;quot; permission) is being abused as a dumping ground for screenshots, in order to try to solicit feedback from kde-artists.&lt;br /&gt;
&lt;br /&gt;
= Colors =&lt;br /&gt;
* Inactive Text&lt;br /&gt;
** Used for text that should be subdued (e.g. comments, extended file information)&lt;br /&gt;
* Active Text&lt;br /&gt;
** Used for text that wants to draw attention to itself, or is &amp;quot;active&amp;quot; (e.g. hovered links)&lt;br /&gt;
* Link Text&lt;br /&gt;
* Visited Text&lt;br /&gt;
** This, and the previous one, should be obvious :-).&lt;br /&gt;
* Negative Text&lt;br /&gt;
** Used for errors, etc.&lt;br /&gt;
* Neutral Text&lt;br /&gt;
** Used for text that wishes to set itself apart, but does not belong to the other roles (e.g. warnings, secure content).&lt;br /&gt;
* Focus Decoration&lt;br /&gt;
** Used to indicate what control will respond to keyboard input. For example, default buttons use this, input widgets use this when they have focus, etc.&lt;br /&gt;
* Hover Decoration&lt;br /&gt;
** Used to draw 'hover' (mouseover) effects.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Common Colors&amp;quot; set allows setting the most important colors in one place. Note that &amp;quot;Selection Inactive Text&amp;quot; means &amp;quot;Inactive Text&amp;quot; belonging to the &amp;quot;Selection&amp;quot; set, and is not related to inactive effects in any way. Also note that currently no auto-calculation is performed, so you need to go to each set to specify the alternate background color.&lt;br /&gt;
&lt;br /&gt;
= Effects =&lt;br /&gt;
KDE4 introduces &amp;quot;state effects&amp;quot;; three effects that can be applied to inactive windows, and disabled widgets.&lt;br /&gt;
&lt;br /&gt;
* Intensity&lt;br /&gt;
** Allows adjusting the overall brightness. 'shade' adjusts luma by an absolute amount (-1.0 to 1.0), 'darken' and 'lighten' adjust by a percentage, where negative percentages are allowed (e.g. -50% results in new_luma = 1.5 * old_luma).&lt;br /&gt;
* Color&lt;br /&gt;
** Allows adjusting the overall color, either by multiplying the chrome ('desaturate' - again, negative values are allowed, which results in increasing the chroma), mixing with another color ('fade'), or tinting with another color ('tint'). Tinting tends to change hue/chroma much more rapidly while preserving luma.&lt;br /&gt;
* Contrast&lt;br /&gt;
** Allows adjusting only foreground colors, so that e.g. text becomes less prominent. The effects are 'fade' and 'tint'; the background color is used as the target.&lt;br /&gt;
&lt;br /&gt;
NOTE: Inactive effects cause additional window repaints that some people may find annoying, or may cause performance problems on older machines.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
* Apply inactive window color effects&lt;br /&gt;
** The built-in color schemes define inactive effects. If you do not wish to use them, this provides an easy way to turn them off. (default=off)&lt;br /&gt;
* Inactive selection changes color&lt;br /&gt;
** KDE4 strives to join the rest of the world by using a different color for selection in widgets that do not have focus, enhancing Usability. Due to performance concerns, the default is off until these can be addressed, hopefully in Qt 4.5, but if you have a good computer, you are strongly encouraged to try enabling this.&lt;br /&gt;
** Because inactive window effects incur the performance penalty anyway, checking 'apply inactive window color effects' will enable this option if it has not been manually clicked (similarly, unchecking said option will disable this one in the same situation).&lt;br /&gt;
* Shade sorted column in lists&lt;br /&gt;
** This is currently not implemented by listviews :-(.&lt;br /&gt;
* Contrast&lt;br /&gt;
** This controls the strength of 3D effects.&lt;br /&gt;
&lt;br /&gt;
= Schemes =&lt;br /&gt;
The author ([[User:mwoehlke|Matthew Woehlke]], also the creator of all of these color schemes, with varying levels of inspiration or blatant copying) apologizes for the marketing spiel you are about to be subjected to if you read this section ;-).&lt;br /&gt;
&lt;br /&gt;
== Blue Deep ==&lt;br /&gt;
[[Image:Blue-deep.png|thumbnail|Blue Deep]]&lt;br /&gt;
Rich blues, vibrant yet soothing, threaten to pull you into the watery depths of this scheme. This is a port of the KDE3 scheme Dark Blue.&lt;br /&gt;
&lt;br /&gt;
== Chrome ==&lt;br /&gt;
[[Image:SchemeChrome.png|thumbnail|Chrome]]&lt;br /&gt;
Bright, shiny gray with just a touch of blue, combined with vibrant blue accents, conjures the feel of polished metal, as well as memories of Keramik and Plastik schemes from KDE3.&lt;br /&gt;
&lt;br /&gt;
== Desert ==&lt;br /&gt;
[[Image:SchemeDesert.png|thumbnail|Desert]]&lt;br /&gt;
Soft shades of sand are accented by rich red. This scheme is a port of the KDE3 scheme by the same name.&lt;br /&gt;
&lt;br /&gt;
== Desert Night ==&lt;br /&gt;
[[Image:DesertNight.png|thumbnail|Desert Night]]&lt;br /&gt;
Rich orange reflects moonlit dunes, while striking blue reflects the sky above, in this echo of a desert at night. (Brought to you by the same dubious idea that produced Water Orchid. Also likely to go.)&lt;br /&gt;
&lt;br /&gt;
== Evening Lilac ==&lt;br /&gt;
[[Image:SchemeEveningLilac.png|thumbnail|Evening Lilac]]&lt;br /&gt;
Dusty gray-purple with touches of green bring to mind a lilac bush on a warm summer night.&lt;br /&gt;
&lt;br /&gt;
== Highland Mist ==&lt;br /&gt;
[[Image:SchemeHighland-mist.png|thumbnail|Highland Mist]]&lt;br /&gt;
Pale shades of green with a touch of blue accents evoke images of grass-covered hills shrouded in fog.&lt;br /&gt;
&lt;br /&gt;
== Honeycomb ==&lt;br /&gt;
[[Image:SchemeHoneycomb.png|thumbnail|Honeycomb]]&lt;br /&gt;
Soft shades of gray touched by yellow mix with honey-colored highlights to give an impression of bees, or perhaps BeOS.&lt;br /&gt;
&lt;br /&gt;
== Midnight Meadow ==&lt;br /&gt;
[[Image:SchemeMidnightMeadow.png|thumbnail|Midnight Meadow]]&lt;br /&gt;
Dark shades of green shimmer with unearthly light in this scheme inspired by the glow of a sea of lush green grass in the deep of night.&lt;br /&gt;
&lt;br /&gt;
== Norway ==&lt;br /&gt;
[[Image:SchemeNorway.png|thumbnail|Norway]]&lt;br /&gt;
Kudos if you can figure out the reference here. Due to questionable content, it will not be posted ;-). This scheme added at the request of Eike Hein, and inspired by [http://members.shaw.ca/lucx/ Charamel for Firefox]&lt;br /&gt;
&lt;br /&gt;
== Obsidian Coast ==&lt;br /&gt;
[[Image:SchemeObsidianCoast.png|thumbnail|Obsidian Coast]]&lt;br /&gt;
Inspired by movies of dark waves breaking against tall, black cliffs, this scheme (a dark version of Whitewater) is perfect for those that love a sense of foreboding, or just the rich, natural look of volcanic glass.&lt;br /&gt;
&lt;br /&gt;
== Rose ==&lt;br /&gt;
[[Image:SchemeRose.png|thumbnail|Rose]]&lt;br /&gt;
Soft shades of red invoke feelings of muted passion.&lt;br /&gt;
&lt;br /&gt;
== Steel ==&lt;br /&gt;
[[Image:SchemeSteel.png|thumbnail|Steel]]&lt;br /&gt;
Warm gray, subtle gold, and striking cyan come together in a warm industrial tribute to classic skyscrapers in the late afternoon sun.&lt;br /&gt;
&lt;br /&gt;
== Stone Orchid ==&lt;br /&gt;
[[Image:SchemeStoneOrchid.png|thumbnail|Stone Orchid]]&lt;br /&gt;
Rich gray with a hint of floral meets soft cyan and vibrant royal-purple accents in this scheme inspired by orchids, and KDE3's Solaris.&lt;br /&gt;
&lt;br /&gt;
== Terra ==&lt;br /&gt;
[[Image:SchemeTerra.png|thumbnail|Terra]]&lt;br /&gt;
Gray mingled with green joins blue accents in this outdoor scheme inspired by grass and rocks against a clear sky.&lt;br /&gt;
&lt;br /&gt;
== Water Orchid ==&lt;br /&gt;
[[Image:SchemeWaterOrchid.png|thumbnail|Water Orchid]]&lt;br /&gt;
Attempting to bring to mind a beautiful purple flower against a turquoise background, this scheme instead looks like a mad candy store. (Here we see the peril of making color schemes from wallpapers, and a Microsoft one at that. This one is almost certain to get the axe before 4.0.)&lt;br /&gt;
&lt;br /&gt;
== White Peach ==&lt;br /&gt;
[[Image:SchemeWhitePeach.png|thumbnail|White Peach]]&lt;br /&gt;
Inspired by a juice label, this scheme brings pale-but-bright peachy reminiscent of juice by the same name and welds it with floral green accents.&lt;br /&gt;
&lt;br /&gt;
== Whitewater ==&lt;br /&gt;
[[Image:Whitewater.png|thumbnail|Whitewater]]&lt;br /&gt;
Calling to mind the river canyons of Colorado, this neutral scheme features a deep, earthy/rocky gray base with blue accents. &lt;br /&gt;
&lt;br /&gt;
== Wonton Soup ==&lt;br /&gt;
[[Image:SchemeWontonSoup.png|thumbnail|Wonton Soup]]&lt;br /&gt;
Created from the KDE3-era wallpaper of the same name, this scheme was made by [[User:mwoehlke|Matthew Woehlke]], who uses (and has used, for about two years) it as his KDE3 scheme.&lt;br /&gt;
&lt;br /&gt;
== Zion ==&lt;br /&gt;
[[Image:SchemeZion.png|thumbnail|Zion]]&lt;br /&gt;
Reminiscent of the computers in the fictional city of the same name from the [http://en.wikipedia.org/wiki/The_Matrix_(series) Matrix trilogy], this scheme features mainly black foreground elements on a starkly white background. It is included in kdeaccessibility and is intended to aid users with visual difficulties.&lt;br /&gt;
&lt;br /&gt;
== Zion (Reversed) ==&lt;br /&gt;
[[Image:SchemeZionReversed.png|thumbnail|Zion (Reversed)]]&lt;br /&gt;
An inverse of the Zion scheme, this provides white-on-black elements, again maximizing contrast.&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/ColorSchemes</id>
		<title>Projects/Oxygen/ColorSchemes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/ColorSchemes"/>
				<updated>2007-12-11T03:17:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: add scheme thumbnails&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;KDE4 introduces some major changes in color schemes. Here you will find an overview of some new color-related features, as well as a preview of the new color schemes.&lt;br /&gt;
&lt;br /&gt;
This should probably go somewhere better (like, &amp;quot;the documentation&amp;quot;?). For now techbase (with winterz' &amp;quot;highly-unofficial&amp;quot; permission) is being abused as a dumping ground for screenshots, in order to try to solicit feedback from kde-artists.&lt;br /&gt;
&lt;br /&gt;
= Colors =&lt;br /&gt;
* Inactive Text&lt;br /&gt;
** Used for text that should be subdued (e.g. comments, extended file information)&lt;br /&gt;
* Active Text&lt;br /&gt;
** Used for text that wants to draw attention to itself, or is &amp;quot;active&amp;quot; (e.g. hovered links)&lt;br /&gt;
* Link Text&lt;br /&gt;
* Visited Text&lt;br /&gt;
** This, and the previous one, should be obvious :-).&lt;br /&gt;
* Negative Text&lt;br /&gt;
** Used for errors, etc.&lt;br /&gt;
* Neutral Text&lt;br /&gt;
** Used for text that wishes to set itself apart, but does not belong to the other roles (e.g. warnings, secure content).&lt;br /&gt;
* Focus Decoration&lt;br /&gt;
** Used to indicate what control will respond to keyboard input. For example, default buttons use this, input widgets use this when they have focus, etc.&lt;br /&gt;
* Hover Decoration&lt;br /&gt;
** Used to draw 'hover' (mouseover) effects.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Common Colors&amp;quot; set allows setting the most important colors in one place. Note that &amp;quot;Selection Inactive Text&amp;quot; means &amp;quot;Inactive Text&amp;quot; belonging to the &amp;quot;Selection&amp;quot; set, and is not related to inactive effects in any way. Also note that currently no auto-calculation is performed, so you need to go to each set to specify the alternate background color.&lt;br /&gt;
&lt;br /&gt;
= Effects =&lt;br /&gt;
KDE4 introduces &amp;quot;state effects&amp;quot;; three effects that can be applied to inactive windows, and disabled widgets.&lt;br /&gt;
&lt;br /&gt;
* Intensity&lt;br /&gt;
** Allows adjusting the overall brightness. 'shade' adjusts luma by an absolute amount (-1.0 to 1.0), 'darken' and 'lighten' adjust by a percentage, where negative percentages are allowed (e.g. -50% results in new_luma = 1.5 * old_luma).&lt;br /&gt;
* Color&lt;br /&gt;
** Allows adjusting the overall color, either by multiplying the chrome ('desaturate' - again, negative values are allowed, which results in increasing the chroma), mixing with another color ('fade'), or tinting with another color ('tint'). Tinting tends to change hue/chroma much more rapidly while preserving luma.&lt;br /&gt;
* Contrast&lt;br /&gt;
** Allows adjusting only foreground colors, so that e.g. text becomes less prominent. The effects are 'fade' and 'tint'; the background color is used as the target.&lt;br /&gt;
&lt;br /&gt;
NOTE: Inactive effects cause additional window repaints that some people may find annoying, or may cause performance problems on older machines.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
* Apply inactive window color effects&lt;br /&gt;
** The built-in color schemes define inactive effects. If you do not wish to use them, this provides an easy way to turn them off. (default=off)&lt;br /&gt;
* Inactive selection changes color&lt;br /&gt;
** KDE4 strives to join the rest of the world by using a different color for selection in widgets that do not have focus, enhancing Usability. Due to performance concerns, the default is off until these can be addressed, hopefully in Qt 4.5, but if you have a good computer, you are strongly encouraged to try enabling this.&lt;br /&gt;
** Because inactive window effects incur the performance penalty anyway, checking 'apply inactive window color effects' will enable this option if it has not been manually clicked (similarly, unchecking said option will disable this one in the same situation).&lt;br /&gt;
* Shade sorted column in lists&lt;br /&gt;
** This is currently not implemented by listviews :-(.&lt;br /&gt;
* Contrast&lt;br /&gt;
** This controls the strength of 3D effects.&lt;br /&gt;
&lt;br /&gt;
= Schemes =&lt;br /&gt;
The author ([[User:mwoehlke|Matthew Woehlke]], also the creator of all of these color schemes, with varying levels of inspiration or blatant copying) apologizes for the marketing spiel you are about to be subjected to if you read this section ;-).&lt;br /&gt;
&lt;br /&gt;
== Blue Deep ==&lt;br /&gt;
[[Image:Blue-deep.png|thumbnail|Blue Deep]]&lt;br /&gt;
Rich blues, vibrant yet soothing, threaten to pull you into the watery depths of this scheme. This is a port of the KDE3 scheme by the same name.&lt;br /&gt;
&lt;br /&gt;
== Chrome ==&lt;br /&gt;
[[Image:SchemeChrome.png|thumbnail|Chrome]]&lt;br /&gt;
Bright, shiny gray with just a touch of blue, combined with vibrant blue accents, conjures the feel of polished metal, as well as memories of Keramik and Plastik schemes from KDE3.&lt;br /&gt;
&lt;br /&gt;
== Desert ==&lt;br /&gt;
[[Image:SchemeDesert.png|thumbnail|Desert]]&lt;br /&gt;
Soft shades of sand are accented by rich red. This scheme is a port of the KDE3 scheme by the same name.&lt;br /&gt;
&lt;br /&gt;
== Desert Night ==&lt;br /&gt;
[[Image:DesertNight.png|thumbnail|Desert Night]]&lt;br /&gt;
Rich orange reflects moonlit dunes, while striking blue reflects the sky above, in this echo of a desert at night. (Brought to you by the same dubious idea that produced Water Orchid. Also likely to go.)&lt;br /&gt;
&lt;br /&gt;
== Evening Lilac ==&lt;br /&gt;
[[Image:SchemeEveningLilac.png|thumbnail|Evening Lilac]]&lt;br /&gt;
Dusty gray-purple with touches of green bring to mind a lilac bush on a warm summer night.&lt;br /&gt;
&lt;br /&gt;
== Highland Mist ==&lt;br /&gt;
[[Image:SchemeHighland-mist.png|thumbnail|Highland Mist]]&lt;br /&gt;
Pale shades of green with a touch of blue accents evoke images of grass-covered hills shrouded in fog.&lt;br /&gt;
&lt;br /&gt;
== Honeycomb ==&lt;br /&gt;
[[Image:SchemeHoneycomb.png|thumbnail|Honeycomb]]&lt;br /&gt;
Soft shades of gray touched by yellow mix with honey-colored highlights to give an impression of bees, or perhaps BeOS.&lt;br /&gt;
&lt;br /&gt;
== Midnight Meadow ==&lt;br /&gt;
[[Image:SchemeMidnightMeadow.png|thumbnail|Midnight Meadow]]&lt;br /&gt;
Dark shades of green shimmer with unearthly light in this scheme inspired by the glow of a sea of lush green grass in the deep of night.&lt;br /&gt;
&lt;br /&gt;
== Norway ==&lt;br /&gt;
[[Image:SchemeNorway.png|thumbnail|Norway]]&lt;br /&gt;
Kudos if you can figure out the reference here. Due to questionable content, it will not be posted ;-). This scheme added at the request of Eike Hein, and inspired by [http://members.shaw.ca/lucx/ Charamel for Firefox]&lt;br /&gt;
&lt;br /&gt;
== Obsidian Coast ==&lt;br /&gt;
[[Image:SchemeObsidianCoast.png|thumbnail|Obsidian Coast]]&lt;br /&gt;
Inspired by movies of dark waves breaking against tall, black cliffs, this scheme (a dark version of Whitewater) is perfect for those that love a sense of foreboding, or just the rich, natural look of volcanic glass.&lt;br /&gt;
&lt;br /&gt;
== Rose ==&lt;br /&gt;
[[Image:SchemeRose.png|thumbnail|Rose]]&lt;br /&gt;
Soft shades of red invoke feelings of muted passion.&lt;br /&gt;
&lt;br /&gt;
== Steel ==&lt;br /&gt;
[[Image:SchemeSteel.png|thumbnail|Steel]]&lt;br /&gt;
Warm gray, subtle gold, and striking cyan come together in a warm industrial tribute to classic skyscrapers in the late afternoon sun.&lt;br /&gt;
&lt;br /&gt;
== Stone Orchid ==&lt;br /&gt;
[[Image:SchemeStoneOrchid.png|thumbnail|Stone Orchid]]&lt;br /&gt;
Rich gray with a hint of floral meets soft cyan and vibrant royal-purple accents in this scheme inspired by orchids, and KDE3's Solaris.&lt;br /&gt;
&lt;br /&gt;
== Terra ==&lt;br /&gt;
[[Image:SchemeTerra.png|thumbnail|Terra]]&lt;br /&gt;
Gray mingled with green joins blue accents in this outdoor scheme inspired by grass and rocks against a clear sky.&lt;br /&gt;
&lt;br /&gt;
== Water Orchid ==&lt;br /&gt;
[[Image:SchemeWaterOrchid.png|thumbnail|Water Orchid]]&lt;br /&gt;
Attempting to bring to mind a beautiful purple flower against a turquoise background, this scheme instead looks like a mad candy store. (Here we see the peril of making color schemes from wallpapers, and a Microsoft one at that. This one is almost certain to get the axe before 4.0.)&lt;br /&gt;
&lt;br /&gt;
== White Peach ==&lt;br /&gt;
[[Image:SchemeWhitePeach.png|thumbnail|White Peach]]&lt;br /&gt;
Inspired by a juice label, this scheme brings pale-but-bright peachy reminiscent of juice by the same name and welds it with floral green accents.&lt;br /&gt;
&lt;br /&gt;
== Whitewater ==&lt;br /&gt;
[[Image:Whitewater.png|thumbnail|Whitewater]]&lt;br /&gt;
Calling to mind the river canyons of Colorado, this neutral scheme features a deep, earthy/rocky gray base with blue accents. &lt;br /&gt;
&lt;br /&gt;
== Wonton Soup ==&lt;br /&gt;
[[Image:SchemeWontonSoup.png|thumbnail|Wonton Soup]]&lt;br /&gt;
Created from the KDE3-era wallpaper of the same name, this scheme was made by [[User:mwoehlke|Matthew Woehlke]], who uses (and has used, for about two years) it as his KDE3 scheme.&lt;br /&gt;
&lt;br /&gt;
== Zion ==&lt;br /&gt;
[[Image:SchemeZion.png|thumbnail|Zion]]&lt;br /&gt;
Reminiscent of the computers in the fictional city of the same name from the [http://en.wikipedia.org/wiki/The_Matrix_(series) Matrix trilogy], this scheme features mainly black foreground elements on a starkly white background. It is included in kdeaccessibility and is intended to aid users with visual difficulties.&lt;br /&gt;
&lt;br /&gt;
== Zion (Reversed) ==&lt;br /&gt;
[[Image:SchemeZionReversed.png|thumbnail|Zion (Reversed)]]&lt;br /&gt;
An inverse of the Zion scheme, this provides white-on-black elements, again maximizing contrast.&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeDesert.png</id>
		<title>File:SchemeDesert.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeDesert.png"/>
				<updated>2007-12-11T03:15:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeEveningLilac.png</id>
		<title>File:SchemeEveningLilac.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeEveningLilac.png"/>
				<updated>2007-12-11T03:14:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeHighland-mist.png</id>
		<title>File:SchemeHighland-mist.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeHighland-mist.png"/>
				<updated>2007-12-11T03:13:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeHoneycomb.png</id>
		<title>File:SchemeHoneycomb.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeHoneycomb.png"/>
				<updated>2007-12-11T03:10:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeMidnightMeadow.png</id>
		<title>File:SchemeMidnightMeadow.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeMidnightMeadow.png"/>
				<updated>2007-12-11T03:09:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeNorway.png</id>
		<title>File:SchemeNorway.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeNorway.png"/>
				<updated>2007-12-11T03:09:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:Whitewater.png</id>
		<title>File:Whitewater.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:Whitewater.png"/>
				<updated>2007-12-11T03:08:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeObsidianCoast.png</id>
		<title>File:SchemeObsidianCoast.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeObsidianCoast.png"/>
				<updated>2007-12-11T03:07:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeSteel.png</id>
		<title>File:SchemeSteel.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeSteel.png"/>
				<updated>2007-12-11T03:06:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeStoneOrchid.png</id>
		<title>File:SchemeStoneOrchid.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeStoneOrchid.png"/>
				<updated>2007-12-11T03:05:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeTerra.png</id>
		<title>File:SchemeTerra.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeTerra.png"/>
				<updated>2007-12-11T03:04:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeWhitePeach.png</id>
		<title>File:SchemeWhitePeach.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeWhitePeach.png"/>
				<updated>2007-12-11T03:02:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeWontonSoup.png</id>
		<title>File:SchemeWontonSoup.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeWontonSoup.png"/>
				<updated>2007-12-11T02:59:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeZion.png</id>
		<title>File:SchemeZion.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeZion.png"/>
				<updated>2007-12-11T02:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeZionReversed.png</id>
		<title>File:SchemeZionReversed.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeZionReversed.png"/>
				<updated>2007-12-11T02:55:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:SchemeChrome.png</id>
		<title>File:SchemeChrome.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:SchemeChrome.png"/>
				<updated>2007-12-11T02:43:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/File:Blue-deep.png</id>
		<title>File:Blue-deep.png</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/File:Blue-deep.png"/>
				<updated>2007-12-11T02:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/ColorSchemes</id>
		<title>Projects/Oxygen/ColorSchemes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/ColorSchemes"/>
				<updated>2007-12-11T02:22:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: Create article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;KDE4 introduces some major changes in color schemes. Here you will find an overview of some new color-related features, as well as a preview of the new color schemes.&lt;br /&gt;
&lt;br /&gt;
This should probably go somewhere better (like, &amp;quot;the documentation&amp;quot;?). For now techbase (with winterz' &amp;quot;highly-unofficial&amp;quot; permission) is being abused as a dumping ground for screenshots, in order to try to solicit feedback from kde-artists.&lt;br /&gt;
&lt;br /&gt;
= Colors =&lt;br /&gt;
* Inactive Text&lt;br /&gt;
** Used for text that should be subdued (e.g. comments, extended file information)&lt;br /&gt;
* Active Text&lt;br /&gt;
** Used for text that wants to draw attention to itself, or is &amp;quot;active&amp;quot; (e.g. hovered links)&lt;br /&gt;
* Link Text&lt;br /&gt;
* Visited Text&lt;br /&gt;
** This, and the previous one, should be obvious :-).&lt;br /&gt;
* Negative Text&lt;br /&gt;
** Used for errors, etc.&lt;br /&gt;
* Neutral Text&lt;br /&gt;
** Used for text that wishes to set itself apart, but does not belong to the other roles (e.g. warnings, secure content).&lt;br /&gt;
* Focus Decoration&lt;br /&gt;
** Used to indicate what control will respond to keyboard input. For example, default buttons use this, input widgets use this when they have focus, etc.&lt;br /&gt;
* Hover Decoration&lt;br /&gt;
** Used to draw 'hover' (mouseover) effects.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Common Colors&amp;quot; set allows setting the most important colors in one place. Note that &amp;quot;Selection Inactive Text&amp;quot; means &amp;quot;Inactive Text&amp;quot; belonging to the &amp;quot;Selection&amp;quot; set, and is not related to inactive effects in any way. Also note that currently no auto-calculation is performed, so you need to go to each set to specify the alternate background color.&lt;br /&gt;
&lt;br /&gt;
= Effects =&lt;br /&gt;
KDE4 introduces &amp;quot;state effects&amp;quot;; three effects that can be applied to inactive windows, and disabled widgets.&lt;br /&gt;
&lt;br /&gt;
* Intensity&lt;br /&gt;
** Allows adjusting the overall brightness. 'shade' adjusts luma by an absolute amount (-1.0 to 1.0), 'darken' and 'lighten' adjust by a percentage, where negative percentages are allowed (e.g. -50% results in new_luma = 1.5 * old_luma).&lt;br /&gt;
* Color&lt;br /&gt;
** Allows adjusting the overall color, either by multiplying the chrome ('desaturate' - again, negative values are allowed, which results in increasing the chroma), mixing with another color ('fade'), or tinting with another color ('tint'). Tinting tends to change hue/chroma much more rapidly while preserving luma.&lt;br /&gt;
* Contrast&lt;br /&gt;
** Allows adjusting only foreground colors, so that e.g. text becomes less prominent. The effects are 'fade' and 'tint'; the background color is used as the target.&lt;br /&gt;
&lt;br /&gt;
NOTE: Inactive effects cause additional window repaints that some people may find annoying, or may cause performance problems on older machines.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
* Apply inactive window color effects&lt;br /&gt;
** The built-in color schemes define inactive effects. If you do not wish to use them, this provides an easy way to turn them off. (default=off)&lt;br /&gt;
* Inactive selection changes color&lt;br /&gt;
** KDE4 strives to join the rest of the world by using a different color for selection in widgets that do not have focus, enhancing Usability. Due to performance concerns, the default is off until these can be addressed, hopefully in Qt 4.5, but if you have a good computer, you are strongly encouraged to try enabling this.&lt;br /&gt;
** Because inactive window effects incur the performance penalty anyway, checking 'apply inactive window color effects' will enable this option if it has not been manually clicked (similarly, unchecking said option will disable this one in the same situation).&lt;br /&gt;
* Shade sorted column in lists&lt;br /&gt;
** This is currently not implemented by listviews :-(.&lt;br /&gt;
* Contrast&lt;br /&gt;
** This controls the strength of 3D effects.&lt;br /&gt;
&lt;br /&gt;
= Schemes =&lt;br /&gt;
The author ([[User:mwoehlke|Matthew Woehlke]], also the creator of all of these color schemes, with varying levels of inspiration or blatant copying) apologizes for the marketing spiel you are about to be subjected to if you read this section ;-).&lt;br /&gt;
&lt;br /&gt;
Screenshots are coming.&lt;br /&gt;
&lt;br /&gt;
== Blue Deep ==&lt;br /&gt;
Rich blues, vibrant yet soothing, threaten to pull you into the watery depths of this scheme. This is a port of the KDE3 scheme by the same name.&lt;br /&gt;
== Chrome ==&lt;br /&gt;
Bright, shiny gray with just a touch of blue, combined with vibrant blue accents, conjures the feel of polished metal, as well as memories of Keramik and Plastik schemes from KDE3.&lt;br /&gt;
== Desert ==&lt;br /&gt;
Soft shades of sand are accented by rich red. This scheme is a port of the KDE3 scheme by the same name.&lt;br /&gt;
== Desert Night ==&lt;br /&gt;
Rich orange reflects moonlit dunes, while striking blue reflects the sky above, in this echo of a desert at night. (Brought to you by the same dubious idea that produced Water Orchid. Also likely to go.)&lt;br /&gt;
== Evening Lilac ==&lt;br /&gt;
Dusty gray-purple with touches of green bring to mind a lilac bush on a warm summer night.&lt;br /&gt;
== Highland Mist ==&lt;br /&gt;
Pale shades of green with a touch of blue accents evoke images of grass-covered hills shrouded in fog.&lt;br /&gt;
== Honeycomb ==&lt;br /&gt;
Soft shades of gray touched by yellow mix with honey-colored highlights to give an impression of bees, or perhaps BeOS.&lt;br /&gt;
== Midnight Meadow ==&lt;br /&gt;
Dark shades of green shimmer with unearthly light in this scheme inspired by the glow of a sea of lush green grass in the deep of night.&lt;br /&gt;
== Norway ==&lt;br /&gt;
Kudos if you can figure out the reference here. Due to questionable content, it will not be posted ;-). This scheme added at the request of Eike Hein, and inspired by [http://members.shaw.ca/lucx/ Charamel for Firefox]&lt;br /&gt;
== Obsidian Coast ==&lt;br /&gt;
Inspired by movies of dark waves breaking against tall, black cliffs, this scheme (a dark version of Whitewater) is perfect for those that love a sense of foreboding, or just the rich, natural look of volcanic glass.&lt;br /&gt;
== Rose ==&lt;br /&gt;
Soft shades of red invoke feelings of muted passion.&lt;br /&gt;
== Steel ==&lt;br /&gt;
Warm gray, subtle gold, and striking cyan come together in a warm industrial tribute to classic skyscrapers in the late afternoon sun.&lt;br /&gt;
== Stone Orchid ==&lt;br /&gt;
Rich gray with a hint of floral meets soft cyan and vibrant royal-purple accents in this scheme inspired by orchids, and KDE3's Solaris.&lt;br /&gt;
== Terra ==&lt;br /&gt;
Gray mingled with green joins blue accents in this outdoor scheme inspired by grass and rocks against a clear sky.&lt;br /&gt;
== Water Orchid ==&lt;br /&gt;
Attempting to bring to mind a beautiful purple flower against a turquoise background, this scheme instead looks like a mad candy store. (Here we see the peril of making color schemes from wallpapers, and a Microsoft one at that. This one is almost certain to get the axe before 4.0.)&lt;br /&gt;
== White Peach ==&lt;br /&gt;
Inspired by a juice label, this scheme brings pale-but-bright peachy reminiscent of juice by the same name and welds it with floral green accents.&lt;br /&gt;
== Whitewater ==&lt;br /&gt;
Calling to mind the river canyons of Colorado, this neutral scheme features a deep, earthy/rocky gray base with blue accents. &lt;br /&gt;
== Wonton Soup ==&lt;br /&gt;
Created from the KDE3-era wallpaper of the same name, this scheme was made by [[User:mwoehlke|Matthew Woehlke]], who uses (and has used, for about two years) it as his KDE3 scheme.&lt;br /&gt;
== Zion ==&lt;br /&gt;
Reminiscent of the computers in the fictional city of the same name from the [http://en.wikipedia.org/wiki/The_Matrix_(series) Matrix trilogy], this scheme features mainly black foreground elements on a starkly white background. It is included in kdeaccessibility and is intended to aid users with visual difficulties.&lt;br /&gt;
== Zion (Reversed) ==&lt;br /&gt;
An inverse of the Zion scheme, this provides white-on-black elements, again maximizing contrast.&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals</id>
		<title>Schedules/KDE4/4.0 Release Beta Goals</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals"/>
				<updated>2007-12-07T19:42:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: Color configuration - is now releasable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will list all the release goals for the beta cycle of KDE4. It will contain not only the goals, but also the current state and what YOU can do to help out.&lt;br /&gt;
&lt;br /&gt;
You can not add new items to this list. Only maintainers should edit their own section. If you wish to add new items, send a mail to [mailto:release-team@kde.org release-team@kde.org]&lt;br /&gt;
&lt;br /&gt;
=== Plasma ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:aseigo@kde.org Aaron J. Seigo]&lt;br /&gt;
*''goal:'' A basic panel is there; current work is to flesh it out into a more capable panel system. System tray and taskbar both need work as does a desktop containment with legacy support for the Desktop folder.&lt;br /&gt;
*''howto help:'' help is always welcome; there are a number of people contributing to plasma already but more help can make things go faster. If you want to help, join the irc channel #plasma or mail to [mailto:panel-devel@kde.org panel-devel@kde.org]&lt;br /&gt;
*''expected time of arrival:'' unknown, but close&lt;br /&gt;
&lt;br /&gt;
=== Color configuration ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]]&lt;br /&gt;
*''goals:''&lt;br /&gt;
** sort schemes in list &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;cosmetic&amp;lt;/span&amp;gt;&lt;br /&gt;
** don't save options in schemes &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;cosmetic&amp;lt;/span&amp;gt;&lt;br /&gt;
** confirmation when discarding changes to working scheme, [http://bugs.kde.org/show_bug.cgi?id=152883 bug 152883] &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''howto help:'' Polish and Usability review welcome.&lt;br /&gt;
&lt;br /&gt;
=== Oxygen style ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;releaseable if really needed&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]], [mailto:cbr@boemann.dkCasper Boemann], #oxygen&lt;br /&gt;
*''goal:'' no obvious glitches, fix all bugs on [[Projects/Oxygen/StyleWinDec]]&lt;br /&gt;
*''howto help:'' ask on #oxygen&lt;br /&gt;
*''expected time of arrival:'' unknown&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:faure@kde.org David Faure]&lt;br /&gt;
*''goal:'' Konqueror must be able to browse the web and to be used as a file manager again, I'm mostly aiming for &amp;quot;no regressions compared to KDE3&amp;quot;&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**Help is most welcome. [mailto:kfm-devel@kde.org kfm-devel@kde.org] is the place for discussion of both aspects of konqueror development. Web browsing seems in better shape than filemanagement right now, so small tasks are fixing regressions in the webbrowsing-related code in konqueror and its dependencies. For instance there is finally a patch now about fixing the non-working Return key in the location bar URL; I'm sure there's more like that.&lt;br /&gt;
**Bigger tasks include: &lt;br /&gt;
***defining a future for the sidebar code (*no showstopper if this is the last item on the list*) -- volunteer(s) needed! &lt;br /&gt;
***finishing the integration of the dolphin part for file management.&lt;br /&gt;
***open bugs are on [http://bugs.kde.org/buglist.cgi?product=konqueror&amp;amp;version=4.0&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;cmdtype=doit| this Bugzilla page]&lt;br /&gt;
*''expected time of arrival:'' november (if we leave out the sidebar changes), else december.&lt;br /&gt;
&lt;br /&gt;
=== Dolphin ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;some showstoppers&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:peter.penz@gmx.at Peter Penz]&lt;br /&gt;
*''goal:'' I think Dolphin is in a quite acceptable state now. David Faure and Rafael Fernández López also investigate a lot of time in Dolphin related things so I'm optimistic that Dolphin should be in a good shape for KDE 4.0.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**I'm concerned a little bit whether the Dolphin KPart is matured enough for getting Konqueror in shape.&lt;br /&gt;
***I'm not sure about the state of Nepomuk. Currently the performance is too  slow for sorting items by tags or rating. It would be possible to use an  internal cache in Dolphin for this, but this would only reduce the time from  O(n*log(n)) to O(n) and the problem is n: reading e. g. 30 items takes several seconds... Maybe Sebastian Trüg could need some support. In the worst case I'd suggest to remove the &amp;quot;sort by tags&amp;quot; and &amp;quot;sort by rating&amp;quot; feature in Dolphin for KDE 4.0.&lt;br /&gt;
*''expected time of arrival:'' Unknown,  dfaure is working on http://bugs.kde.org/show_bug.cgi?id=152902 and there also is http://bugs.kde.org/show_bug.cgi?id=152904 which is not dolphin related, but it affects this app.&lt;br /&gt;
&lt;br /&gt;
=== Kate ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;some missing features &amp;amp; bugs, but usable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kwrite-devel@kde.org Kate Team]&lt;br /&gt;
*''goal:'' The KDE 4 version of Kate should at least inlude the known KDE 3 features with additions. We have some new stuff around already but some old is lacking correct porting (beside new introduced bugs). There is a massive need for bugfixing and help getting old stuff back to work, like printing.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
** &amp;lt;s&amp;gt;fix printing&amp;lt;/s&amp;gt; Fixed by Anders, 2007-10-20 &lt;br /&gt;
** &amp;lt;s&amp;gt;fix shortcut settings&amp;lt;/s&amp;gt; Fixed by mstocker&lt;br /&gt;
** &amp;lt;s&amp;gt;rendering bugfixes&amp;lt;/s&amp;gt; seems to be ok (fixed everything I know), by mstocker&lt;br /&gt;
** config saving bugfixes&lt;br /&gt;
** testing&lt;br /&gt;
*''expected time of arrival:'' unknown, but very close&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;no showstopper any more&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:huntedhacker@tiscali.co.uk Alex Merry] (randomguy3)&lt;br /&gt;
*''goal:'' Printing support working in all applications that can currently print, with print preview and customisable dialogs; no applications depending on libkdeprint, except for the printing kcm&lt;br /&gt;
*help needed: API is in place: KPrintPreview in kutils and KdePrint::createPrintDialog() in kdeui.  Okular has support for printing PS files directly, although this will only work on *NIX platforms (it requires lpr or cups).  Basically, all that is left is test, test, test.&lt;br /&gt;
*''howto help:'' heavy testing required, send reports of problems to [mailto:kde-print-devel@kde.org kde-print-devel@kde.org] mailing list, preferably with a patch, or report problems on [http://bugs.kde.org Bugzilla].&lt;br /&gt;
*''expected time of arrival:'' All was done by 26th Nov.&lt;br /&gt;
&lt;br /&gt;
=== Sound ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;ready&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kretz@kde.org Matthias Kretz]&lt;br /&gt;
*''goal:''&lt;br /&gt;
*# no showstopper: do some more automatic tests that all sound devices work as expected&lt;br /&gt;
*''howto help:'' Mailinglists: [mailto:phonon-backends@kde.org phonon-backends@kde.org] or [mailto:kde-multimedia@kde.org kde-multimedia@kde.org], IRC: #phonon ping Vir&lt;br /&gt;
**Local audio playback is working quite OK, but there are some issues that are still open:&lt;br /&gt;
*** https://bugzilla.redhat.com/show_bug.cgi?id=284171 (should be fixed with libc 2.7)&lt;br /&gt;
*** Even though defaults.pcm.ipc_gid is set to audio and defaults.pcm.ipc_perm is set to 0660, dmix does not work for more than one user at the same time (both users are in the audio group). A workaround is to set ipc_perm to 0666, but a real fix would be nicer.&lt;br /&gt;
*** xine-lib behaves bad wrt. memory allocations. run e.g. mediaobjecttest in valgrind --tool=massif (this will hopefully get fixed with libxine 1.2)&lt;br /&gt;
&lt;br /&gt;
=== Co-installability ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;A state where packagers can work around the rest. &amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' k-c-d&lt;br /&gt;
*''goal:'' Distros should be able to coinstall packages in the same prefix in a way that makes it possible to use kde3 apps on a kde4 desktop or to use kde4 apps on a kde3 desktop.&lt;br /&gt;
*''how to help''&lt;br /&gt;
** fix kinfocenter &amp;amp;&amp;amp; khelpcenter in some magic way&lt;br /&gt;
*''details:'' &lt;br /&gt;
** kde3libs, kde4libs, kdepimlibs, kde4base(apps, runtime, workspace) should be coinstallable  =&amp;gt; kde3 apps in a kde4 desktop&lt;br /&gt;
** &amp;lt;b&amp;gt;AND&amp;lt;/b&amp;gt;&lt;br /&gt;
** kde3libs, kde3base, kde4libs, kdepimlibs, kde4base-runtime should be coinstallable =&amp;gt; kde4 apps in a kde3 desktop&lt;br /&gt;
** And only those with the -devel stuff stripped out.&lt;br /&gt;
*''list of conflicting files:'' [[Projects/KDE3_KDE4_coinstallability| KDE3/KDE4 coinstallability]]&lt;br /&gt;
*''NOTE''&lt;br /&gt;
** This does not cover apps like konsole, konqueror, kmail, ... There can of course only be one of each application installed in same prefix. It is only about the runtime parts of the other desktop.&lt;br /&gt;
*''expected time of arrival:'' Very soon&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-12-04T16:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: link to QA color scheme&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* When the tabbar has many tabs, so that not all of them can be shown at once, arrow buttons are drawn to navigate to the other tabs. These arrows are painted incorrectly, see [http://bugs.kde.org/show_bug.cgi?id=152327 this bug report].&lt;br /&gt;
* An icon set on a [Q]PushButton is not drawn respecting QAbstractButton::abstractSize() - look at the user pic selector in kcmshell4 kdm-&amp;gt;Users.&lt;br /&gt;
* On a menu, it is not possible to see which menu is actually active.&lt;br /&gt;
::See [http://bugs.kde.org/show_bug.cgi?id=152123 this bug report]&lt;br /&gt;
* In Beta4, it seems that the WinDeco doesn't yet get the color scheme from the kcm color module. i.e., changing the active/inactive window colors doesn't seem to actually work.&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
* Window decoration scales the menu icons down resulting in the icons blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET)&lt;br /&gt;
* Dockers; the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
* Window titlebar buttons do not 'react' when mouse clicked. Only indication when the mouse moves over them. Need a 'depressed' look/state when actually clicked like other widgets. (spstarr) 14:40, 02 December 2007 (EST)&lt;br /&gt;
* Maximize/Restore Buttons on task bar 'jump' and corrupt panel on redrawing. See http://rapidshare.de/files/37960220/oxygen-resize.ogg.html or http://video.tinypic.com/player.php?v=72vk3df&amp;amp;s=1 for example. (spstarr) 15:01, 02 December 2007 (EST)&lt;br /&gt;
* Disabled menu items are drawn with the disabled background colour and probably should not, to keep the menu looking consistent.  To reproduce, open a new Konsole and look at the disabled Scrollback-&amp;gt;Find Next menu item. [[User:Bille]]&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** tab bar edge should extend full length of widget &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn like artists want &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* [http://pastebin.ca/803298 QA color scheme]&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals</id>
		<title>Schedules/KDE4/4.0 Release Beta Goals</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals"/>
				<updated>2007-11-22T00:30:26Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Color configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will list all the release goals for the beta cycle of KDE4. It will contain not only the goals, but also the current state and what YOU can do to help out.&lt;br /&gt;
&lt;br /&gt;
You can not add new items to this list. Only maintainers should edit their own section. If you wish to add new items, send a mail to [mailto:release-team@kde.org release-team@kde.org]&lt;br /&gt;
&lt;br /&gt;
=== Plasma ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:aseigo@kde.org Aaron J. Seigo]&lt;br /&gt;
*''goal:'' A basic panel is there; current work is to flesh it out into a more capable panel system. System tray and taskbar both need work as does a desktop containment with legacy support for the Desktop folder.&lt;br /&gt;
*''howto help:'' help is always welcome; there are a number of people contributing to plasma already but more help can make things go faster. If you want to help, join the irc channel #plasma or mail to [mailto:panel-devel@kde.org panel-devel@kde.org]&lt;br /&gt;
*''expected time of arrival:'' By Nov 18&lt;br /&gt;
&lt;br /&gt;
=== Color configuration ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;very, very close&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]]&lt;br /&gt;
*''goals:''&lt;br /&gt;
** missing current and default pseudo-schemes &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;important&amp;lt;/span&amp;gt;&lt;br /&gt;
** effects not configurable &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;now working&amp;lt;/span&amp;gt;&lt;br /&gt;
*''howto help:'' Polish, Usability review, and &amp;lt;em&amp;gt;help with the pseudo-schemes&amp;lt;/em&amp;gt; would be nice.&lt;br /&gt;
*''expected time of arrival:'' unknown?&lt;br /&gt;
&lt;br /&gt;
=== Oxygen style ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]], [mailto:cbr@boemann.dkCasper Boemann], #oxygen&lt;br /&gt;
*''goal:'' no obvious glitches, fix all bugs on [[Projects/Oxygen/StyleWinDec]]&lt;br /&gt;
*''howto help:'' ask on #oxygen, help needed for the corners of the windec.&lt;br /&gt;
*''expected time of arrival:'' end of October or early November&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:faure@kde.org David Faure]&lt;br /&gt;
*''goal:'' Konqueror must be able to browse the web and to be used as a file manager again, I'm mostly aiming for &amp;quot;no regressions compared to KDE3&amp;quot;&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**Help is most welcome. [mailto:kfm-devel@kde.org kfm-devel@kde.org] is the place for discussion of both aspects of konqueror development. Web browsing seems in better shape than filemanagement right now, so small tasks are fixing regressions in the webbrowsing-related code in konqueror and its dependencies. For instance there is finally a patch now about fixing the non-working Return key in the location bar URL; I'm sure there's more like that.&lt;br /&gt;
**Bigger tasks include: &lt;br /&gt;
***defining a future for the sidebar code (*no showstopper if this is the last item on the list*) -- volunteer(s) needed! &lt;br /&gt;
***finishing the integration of the dolphin part for file management.&lt;br /&gt;
*''expected time of arrival:'' november (if we leave out the sidebar changes), else december.&lt;br /&gt;
&lt;br /&gt;
=== Dolphin ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;no showstopper anymore&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:peter.penz@gmx.at Peter Penz]&lt;br /&gt;
*''goal:'' I think Dolphin is in a quite acceptable state now and I'll have a lot of time during the next week to fix the most serious bugs. David Faure and Rafael Fernández López also investigate a lot of time in Dolphin related things so I'm optimistic that Dolphin should be in a good shape for KDE 4.0.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**I'm concerned a little bit whether the Dolphin KPart is matured enough for getting Konqueror in shape. Maybe David can comment whether some help is  needed in this area (I've set David to CC).&lt;br /&gt;
***I'm not sure about the state of Nepomuk. Currently the performance is too  slow for sorting items by tags or rating. It would be possible to use an  internal cache in Dolphin for this, but this would only reduce the time from  O(n*log(n)) to O(n) and the problem is n: reading e. g. 30 items takes several seconds... Maybe Sebastian Trüg could need some support. In the worst case I'd suggest to remove the &amp;quot;sort by tags&amp;quot; and &amp;quot;sort by rating&amp;quot; feature in Dolphin for KDE 4.0.&lt;br /&gt;
*''expected time of arrival:'' My plan is that all serious bugs get closed until the end of September. No known showstoppers are left :-)&lt;br /&gt;
 &lt;br /&gt;
=== Kate ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;some missing features &amp;amp; bugs, but usable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kwrite-devel@kde.org Kate Team]&lt;br /&gt;
*''goal:'' The KDE 4 version of Kate should at least inlude the known KDE 3 features with additions. We have some new stuff around already but some old is lacking correct porting (beside new introduced bugs). There is a massive need for bugfixing and help getting old stuff back to work, like printing.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
** &amp;lt;s&amp;gt;fix printing&amp;lt;/s&amp;gt; Fixed by Anders, 2007-10-20 &lt;br /&gt;
** &amp;lt;s&amp;gt;fix shortcut settings&amp;lt;/s&amp;gt; Fixed by mstocker&lt;br /&gt;
** &amp;lt;s&amp;gt;rendering bugfixes&amp;lt;/s&amp;gt; seems to be ok (fixed everything I know), by mstocker&lt;br /&gt;
** config saving bugfixes&lt;br /&gt;
** testing&lt;br /&gt;
*''expected time of arrival:''&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper, but only for certain applications&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:huntedhacker@tiscali.co.uk Alex Merry] (randomguy3)&lt;br /&gt;
*''goal:'' Printing support working in all applications that can currently print, with print preview and customisable dialogs; no applications depending on libkdeprint, except for the printing kcm&lt;br /&gt;
*help needed: Most of the necessary API is in place: KPrintPreview in kutils and KdePrint::createPrintDialog() in kdeui.  We currently have no way to print pdf or ps files directly (as used by Okular, for example), but this is being worked on by John Layt.  Almost complete.&lt;br /&gt;
*''howto help:'' heavy testing required, send reports of problems to [mailto:kde-print-devel@kde.org kde-print-devel@kde.org] mailing list, preferably with a patch, or report problems on [http://bugs.kde.org Bugzilla].&lt;br /&gt;
*''expected time of arrival:'' Printing in final few apps (Okular in particular) hopefully by 19th Nov.&lt;br /&gt;
&lt;br /&gt;
=== Sound ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kretz@kde.org Matthias Kretz]&lt;br /&gt;
*''goal:''&lt;br /&gt;
*# no showstopper: do some more automatic tests that all sound devices work as expected&lt;br /&gt;
*# done.&lt;br /&gt;
*# done.&lt;br /&gt;
*#Playing short ogg files only plays the start of the sound (which can be nothing at times). This is a showstopper for notification sounds. Apparently xine's ogg demuxer discards some data if the last read buffer is too small.&lt;br /&gt;
*''howto help:'' I certainly want help. But I don't know how I could label any of the tasks as small because for most things you need quite a good overview... :-( Mailinglists: [mailto:phonon-backends@kde.org phonon-backends@kde.org] or [mailto:kde-multimedia@kde.org kde-multimedia@kde.org], IRC: #phonon ping Vir&lt;br /&gt;
**Local audio playback is working quite OK, but there are some issues that are still open:&lt;br /&gt;
*** https://bugzilla.redhat.com/show_bug.cgi?id=284171&lt;br /&gt;
*** Sound hardware/ALSA setup&lt;br /&gt;
**** There's a report that outputting to a dmix: ALSA device using a hardware mixing capable soundcard made mixing not work at all (don't ask me why), so the ALSA device name choosing algorithm might need to become a bit smarter. I think the safest bet for now is to use the default:CARD=... device string, but with that you can only choose what card you want, not what device on that card (I don't have hardware where this would make a difference, so no idea if it's needed).&lt;br /&gt;
****  Even though defaults.pcm.ipc_gid is set to audio and defaults.pcm.ipc_perm is set to 0660, dmix does not work for more than one user at the same time (both users are in the audio group). A workaround is to set ipc_perm to 0666, but a real fix would be nicer.&lt;br /&gt;
*** xine-lib behaves bad wrt. memory allocations. run e.g. mediaobjecttest in valgrind --tool=massif&lt;br /&gt;
*''expected time of arrival:'' one week + the time it takes for libxine to release a version with the bugfix.&lt;br /&gt;
&lt;br /&gt;
=== Co-installability ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;A state where packagers can work around the rest. &amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' k-c-d&lt;br /&gt;
*''goal:'' Distros should be able to coinstall packages in the same prefix in a way that makes it possible to use kde3 apps on a kde4 desktop or to use kde4 apps on a kde3 desktop.&lt;br /&gt;
*''how to help''&lt;br /&gt;
** fix kinfocenter &amp;amp;&amp;amp; khelpcenter in some magic way&lt;br /&gt;
*''details:'' &lt;br /&gt;
** kde3libs, kde4libs, kdepimlibs, kde4base(apps, runtime, workspace) should be coinstallable  =&amp;gt; kde3 apps in a kde4 desktop&lt;br /&gt;
** &amp;lt;b&amp;gt;AND&amp;lt;/b&amp;gt;&lt;br /&gt;
** kde3libs, kde3base, kde4libs, kdepimlibs, kde4base-runtime should be coinstallable =&amp;gt; kde4 apps in a kde3 desktop&lt;br /&gt;
** And only those with the -devel stuff stripped out.&lt;br /&gt;
*''list of conflicting files:'' [[Projects/KDE3_KDE4_coinstallability| KDE3/KDE4 coinstallability]]&lt;br /&gt;
*''NOTE''&lt;br /&gt;
** This does not cover apps like konsole, konqueror, kmail, ... There can of course only be one of each application installed in same prefix. It is only about the runtime parts of the other desktop.&lt;br /&gt;
*''expected time of arrival:'' Very soon&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-11-19T23:00:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: konqeror bug fixed (sans bug now in main list), thanks fredrikh!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* When the tabbar has many tabs, so that not all of them can be shown at once, arrow buttons are drawn to navigate to the other tabs. These arrows are painted incorrectly, see [http://bugs.kde.org/show_bug.cgi?id=152327 this bug report].&lt;br /&gt;
&lt;br /&gt;
* An icon set on a [Q]PushButton is not drawn respecting QAbstractButton::abstractSize() - look at the user pic selector in kcmshell4 kdm-&amp;gt;Users.&lt;br /&gt;
 &lt;br /&gt;
* On a menu, it is not possible to see which menu is actually active.&lt;br /&gt;
::See [http://bugs.kde.org/show_bug.cgi?id=152123 this bug report]&lt;br /&gt;
* In Beta4, it seems that the WinDeco doesn't yet get the color scheme from the kcm color module. i.e., changing the active/inactive window colors doesn't seem to actually work.&lt;br /&gt;
&lt;br /&gt;
* The bouncing icon (the launch feedback) is black. This &amp;lt;b&amp;gt;was&amp;lt;/b&amp;gt; also happening with drag-n-drop icons from Plasma Applet Browser, but is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
* Window decoration scales the menu icons down resulting in the icons blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
* Qt Dockwidgets that have vertical titles (i.e. the titlebar is on the left instead of the top) don't have properly rotated text&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** tab bar edge should extend full length of widget &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** metrics for checkable groupboxes broken (see discussion for screenshot) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-11-19T20:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Known Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* When the tabbar has many tabs, so that not all of them can be shown at once, arrow buttons are drawn to navigate to the other tabs. These arrows are painted incorrectly, see [http://bugs.kde.org/show_bug.cgi?id=152327 this bug report].&lt;br /&gt;
&lt;br /&gt;
* The tabbar is shown above the contents in konqueror(!). Can't see how that's possible; doesn't happen with plastique style so it has to be oxygen... (David Faure)&lt;br /&gt;
&lt;br /&gt;
* An icon set on a [Q]PushButton is not drawn respecting QAbstractButton::abstractSize() - look at the user pic selector in kcmshell4 kdm-&amp;gt;Users.&lt;br /&gt;
 &lt;br /&gt;
* On a menu, it is not possible to see which menu is actually active.&lt;br /&gt;
::See [http://bugs.kde.org/show_bug.cgi?id=152123 this bug report]&lt;br /&gt;
* In Beta4, it seems that the WinDeco doesn't yet get the color scheme from the kcm color module. i.e., changing the active/inactive window colors doesn't seem to actually work.&lt;br /&gt;
&lt;br /&gt;
* The bouncing icon (the launch feedback) is black. This &amp;lt;b&amp;gt;was&amp;lt;/b&amp;gt; also happening with drag-n-drop icons from Plasma Applet Browser, but is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
* Window decoration scales the menu icons down resulting in the icons blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
* Qt Dockwidgets that have vertical titles (i.e. the titlebar is on the left instead of the top) don't have properly rotated text&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** tab bar edge should extend full length of widget &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** metrics for checkable groupboxes broken (see discussion for screenshot) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-11-01T18:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: confirm 'flat buttons' bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* The bouncing icon (the launch feedback) is black. This &amp;lt;b&amp;gt;was&amp;lt;/b&amp;gt; also happening with drag-n-drop icons from Plasma Applet Browser, but is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
* Window decoration scales the menu icons down resulting in the icons blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;quot;flat&amp;quot; buttons drawn same as regular buttons &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** metrics for checkable groupboxes broken (see discussion for screenshot) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-11-01T15:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: undo unauthorized changes, new notes about changing this page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Visitors ==&lt;br /&gt;
Add new bugs to [[#Incoming_New_Bugs|Incoming New Bugs]], and we (the developers) will move it down and prioritize.&lt;br /&gt;
&lt;br /&gt;
Note: we may move invalid bugs may be moved to the discussion page, along with a reason why they won't be fixed [by us].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DO NOT EDIT OTHER SECTIONS WITHOUT PERMISSION&amp;lt;/b&amp;gt;. This page has now been protected due to unauthorized edits. If you need to leave a comment anonymously, do it on the discussion page and/or talk to us on #oxygen.&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* The bouncing icon (the launch feedback) is black. This &amp;lt;b&amp;gt;was&amp;lt;/b&amp;gt; also happening with drag-n-drop icons from Plasma Applet Browser, but is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
* Window decoration scales the menu icons down resulting in the icons blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
* QPushButton::setFlat() is not honored&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** metrics for checkable groupboxes broken (see discussion for screenshot) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-11-01T15:10:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: Protected &amp;quot;Projects/Oxygen/StyleWinDec&amp;quot;: no more anonymous changes, we have unauthorized edits happening... [edit=autoconfirmed:move=autoconfirmed]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* add your entry here and we (the developers) will move it down and prioritize&lt;br /&gt;
&lt;br /&gt;
* The bouncing icon (the launch feedback) is black. This &amp;lt;b&amp;gt;was&amp;lt;/b&amp;gt; also happening with drag-n-drop icons from Plasma Applet Browser, but is now fixed.&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
* Window decoration scales the menu icons down resulting in the icons blurring. Interestingly in the kwindecoration kcmshell the preview shows the 16x16/mimetypes/unknown.png icon at its correct 16x16 size, but as soon as the use the deco for real, it starts blurring them. (This is also true for KDE4's Plastik deco). [[User:Djmdave|Djmdave]] 22:26, 28 October 2007 (CET)&lt;br /&gt;
&lt;br /&gt;
* QPushButton::setFlat() is not honored&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** metrics for checkable groupboxes broken (see discussion for screenshot) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals</id>
		<title>Schedules/KDE4/4.0 Release Beta Goals</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals"/>
				<updated>2007-10-31T21:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Color configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will list all the release goals for the beta cycle of KDE4. It will contain not only the goals, but also the current state and what YOU can do to help out.&lt;br /&gt;
&lt;br /&gt;
You can not add new items to this list. Only maintainers should edit their own section. If you wish to add new items, send a mail to [mailto:release-team@kde.org release-team@kde.org]&lt;br /&gt;
&lt;br /&gt;
=== Plasma ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:aseigo@kde.org Aaron J. Seigo]&lt;br /&gt;
*''goal:'' A basic panel is there; current work is to flesh it out into a more capable panel system. System tray and taskbar both need work as does a desktop containment with legacy support for the Desktop folder.&lt;br /&gt;
*''howto help:'' help is always welcome; there are a number of people contributing to plasma already but more help can make things go faster. If you want to help, join the irc channel #plasma or mail to [mailto:panel-devel@kde.org panel-devel@kde.org]&lt;br /&gt;
*''expected time of arrival:'' By the rc's.&lt;br /&gt;
&lt;br /&gt;
=== Color configuration ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;nearly there&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]]&lt;br /&gt;
*''goals:''&lt;br /&gt;
** missing current and default pseudo-schemes &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;important&amp;lt;/span&amp;gt;&lt;br /&gt;
** multiple schemes of same name (e.g. in $KDEDIR and $KDEHOME) cause duplicate entries, should only show first one in config search path &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;important&amp;lt;/span&amp;gt;&lt;br /&gt;
** effects not configurable &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority, but could live without&amp;lt;/span&amp;gt;&lt;br /&gt;
*''howto help:'' We have this pretty well under control. Polish, Usability review, possibly help with the pseudo-schemes and/or effects tab would be nice, but if we have to, we can probably live with it as-is.&lt;br /&gt;
*''expected time of arrival:'' early November, but usable as-is.&lt;br /&gt;
&lt;br /&gt;
=== Oxygen style ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]], [mailto:cbr@boemann.dkCasper Boemann], #oxygen&lt;br /&gt;
*''goal:'' no obvious glitches, fix all bugs on [[Projects/Oxygen/StyleWinDec]]&lt;br /&gt;
*''howto help:'' ask on #oxygen, help needed for the corners of the windec.&lt;br /&gt;
*''expected time of arrival:'' end of October or early November&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:faure@kde.org David Faure]&lt;br /&gt;
*''goal:'' Konqueror must be able to browse the web and to be used as a file manager again, I'm mostly aiming for &amp;quot;no regressions compared to KDE3&amp;quot;&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**Help is most welcome. [mailto:kfm-devel@kde.org kfm-devel@kde.org] is the place for discussion of both aspects of konqueror development. Web browsing seems in better shape than filemanagement right now, so small tasks are fixing regressions in the webbrowsing-related code in konqueror and its dependencies. For instance there is finally a patch now about fixing the non-working Return key in the location bar URL; I'm sure there's more like that.&lt;br /&gt;
**Bigger tasks include: &lt;br /&gt;
***defining a future for the sidebar code (*no showstopper if this is the last item on the list*) -- volunteer(s) needed! &lt;br /&gt;
***finishing the integration of the dolphin part for file management.&lt;br /&gt;
*''expected time of arrival:'' november (if we leave out the sidebar changes), else december.&lt;br /&gt;
&lt;br /&gt;
=== Dolphin ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;no showstopper anymore&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:peter.penz@gmx.at Peter Penz]&lt;br /&gt;
*''goal:'' I think Dolphin is in a quite acceptable state now and I'll have a lot of time during the next week to fix the most serious bugs. David Faure and Rafael Fernández López also investigate a lot of time in Dolphin related things so I'm optimistic that Dolphin should be in a good shape for KDE 4.0.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**I'm concerned a little bit whether the Dolphin KPart is matured enough for getting Konqueror in shape. Maybe David can comment whether some help is  needed in this area (I've set David to CC).&lt;br /&gt;
***I'm not sure about the state of Nepomuk. Currently the performance is too  slow for sorting items by tags or rating. It would be possible to use an  internal cache in Dolphin for this, but this would only reduce the time from  O(n*log(n)) to O(n) and the problem is n: reading e. g. 30 items takes several seconds... Maybe Sebastian Trüg could need some support. In the worst case I'd suggest to remove the &amp;quot;sort by tags&amp;quot; and &amp;quot;sort by rating&amp;quot; feature in Dolphin for KDE 4.0.&lt;br /&gt;
*''expected time of arrival:'' My plan is that all serious bugs get closed until the end of September. No known showstoppers are left :-)&lt;br /&gt;
 &lt;br /&gt;
=== Kate ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;some missing features &amp;amp; bugs, but usable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kwrite-devel@kde.org Kate Team]&lt;br /&gt;
*''goal:'' The KDE 4 version of Kate should at least inlude the known KDE 3 features with additions. We have some new stuff around already but some old is lacking correct porting (beside new introduced bugs). There is a massive need for bugfixing and help getting old stuff back to work, like printing.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
** &amp;lt;s&amp;gt;fix printing&amp;lt;/s&amp;gt; Fixed by Anders, 2007-10-20 &lt;br /&gt;
** &amp;lt;s&amp;gt;fix shortcut settings&amp;lt;/s&amp;gt; Fixed by mstocker&lt;br /&gt;
** &amp;lt;s&amp;gt;rendering bugfixes&amp;lt;/s&amp;gt; seems to be ok (fixed everything I know), by mstocker&lt;br /&gt;
** config saving bugfixes&lt;br /&gt;
** testing&lt;br /&gt;
*''expected time of arrival:''&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:huntedhacker@tiscali.co.uk Alex Merry] (randomguy3)&lt;br /&gt;
*''goal:'' Printing support working in all applications that can currently print, with print preview and customisable dialogs; no applications depending on libkdeprint, except for the printing kcm&lt;br /&gt;
*help needed: Most of the necessary API is in place: KPrintPreview in kutils and KdePrint::createPrintDialog() in kdeui.  We currently have no way to print pdf or ps files directly (as used by Okular, for example), but this is being worked on by John Layt.&lt;br /&gt;
*''howto help:'' send e-mail to the [mailto:kde-print-devel@kde.org kde-print-devel@kde.org] mailing list, or email the maintainer of a program volunteering to port its printing support.&lt;br /&gt;
*''expected time of arrival:'' API by 3rd Nov?&lt;br /&gt;
&lt;br /&gt;
=== Sound ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kretz@kde.org Matthias Kretz]&lt;br /&gt;
*''goal:''&lt;br /&gt;
*# no showstopper: do some more automatic tests that all sound devices work as expected&lt;br /&gt;
*# done.&lt;br /&gt;
*#usable KMix&lt;br /&gt;
*#Playing short sound files sometimes only plays the start of the sound (which can be almost nothing). This is a showstopper for notification sounds. Some reported that this is a bug in xine-lib, but I have not looked into the issue.&lt;br /&gt;
*''howto help:'' I certainly want help. But I don't know how I could label any of the tasks as small because for most things you need quite a good overview... :-( Mailinglists: [mailto:phonon-backends@kde.org phonon-backends@kde.org] or [mailto:kde-multimedia@kde.org kde-multimedia@kde.org], IRC: #phonon ping Vir&lt;br /&gt;
**Local audio playback is working quite OK, but there are some issues that are still open:&lt;br /&gt;
*** https://bugzilla.redhat.com/show_bug.cgi?id=284171&lt;br /&gt;
*** Sound hardware/ALSA setup&lt;br /&gt;
**** There's a report that outputting to a dmix: ALSA device using a hardware mixing capable soundcard made mixing not work at all (don't ask me why), so the ALSA device name choosing algorithm might need to become a bit smarter. I think the safest bet for now is to use the default:CARD=... device string, but with that you can only choose what card you want, not what device on that card (I don't have hardware where this would make a difference, so no idea if it's needed).&lt;br /&gt;
****  Even though defaults.pcm.ipc_gid is set to audio and defaults.pcm.ipc_perm is set to 0660, dmix does not work for more than one user at the same time (both users are in the audio group). A workaround is to set ipc_perm to 0666, but a real fix would be nicer.&lt;br /&gt;
*** kmix is not in a good state (yet). Also it still does not react on plugged/unplugged soundcard or new/removed software control.&lt;br /&gt;
*** Playing short sound files sometimes only plays the start of the sound (which can be almost nothing). This is a big problem for notifications. Some reported that this is a bug in xine-lib, but I have not looked into the issue.&lt;br /&gt;
*** xine-lib behaves bad wrt. memory allocations. run e.g. mediaobjecttest in valgrind --tool=massif&lt;br /&gt;
*''expected time of arrival:'' For 4. I have no idea because I don't know the cause. 3. is a bit out of my scope, though I might come up with a test app that does what I want soon...&lt;br /&gt;
&lt;br /&gt;
=== Co-installability ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;A state where packagers can work around the rest. &amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' k-c-d&lt;br /&gt;
*''goal:'' Distros should be able to coinstall packages in the same prefix in a way that makes it possible to use kde3 apps on a kde4 desktop or to use kde4 apps on a kde3 desktop.&lt;br /&gt;
*''how to help''&lt;br /&gt;
** fix kinfocenter &amp;amp;&amp;amp; khelpcenter in some magic way&lt;br /&gt;
*''details:'' &lt;br /&gt;
** kde3libs, kde4libs, kdepimlibs, kde4base(apps, runtime, workspace) should be coinstallable  =&amp;gt; kde3 apps in a kde4 desktop&lt;br /&gt;
** &amp;lt;b&amp;gt;AND&amp;lt;/b&amp;gt;&lt;br /&gt;
** kde3libs, kde3base, kde4libs, kdepimlibs, kde4base-runtime should be coinstallable =&amp;gt; kde4 apps in a kde3 desktop&lt;br /&gt;
** And only those with the -devel stuff stripped out.&lt;br /&gt;
*''NOTE''&lt;br /&gt;
** This does not cover apps like konsole, konqueror, kmail, ... There can of course only be one of each application installed in same prefix. It is only about the runtime parts of the other desktop.&lt;br /&gt;
*''expected time of arrival:'' Very soon&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-10-25T17:09:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: new groupbox bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* add your entry here and we (the developers) will move it down and prioritize&lt;br /&gt;
&lt;br /&gt;
* The colors of QToolBox is wrong, one can not read anything. This is used in KMail (Settings-&amp;gt;Composer-&amp;gt;Standart Templates). The captions are unreadable, as they have the same color as the rest of the widget (gray).&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Groupboxes&lt;br /&gt;
** does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** metrics for checkable groupboxes broken (see discussion for screenshot) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
* no obvious glitches in uidemo&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-10-25T16:43:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: scrollbars are fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* add your entry here and we (the developers) will move it down and prioritize&lt;br /&gt;
&lt;br /&gt;
* The colors of QToolBox is wrong, one can not read anything. This is used in KMail (Settings-&amp;gt;Composer-&amp;gt;Standart Templates). The captions are unreadable, as they have the same color as the rest of the widget (gray).&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Centered group titles pose several problems. Left align group titles instead. See Discussion for more details.&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* A groupbox does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals</id>
		<title>Schedules/KDE4/4.0 Release Beta Goals</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.0_Release_Beta_Goals"/>
				<updated>2007-10-25T16:41:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: color kcm, oxygen updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page will list all the release goals for the beta cycle of KDE4. It will contain not only the goals, but also the current state and what YOU can do to help out.&lt;br /&gt;
&lt;br /&gt;
You can not add new items to this list. Only maintainers should edit their own section. If you wish to add new items, send a mail to [mailto:release-team@kde.org release-team@kde.org]&lt;br /&gt;
&lt;br /&gt;
=== Plasma ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:aseigo@kde.org Aaron J. Seigo]&lt;br /&gt;
*''goal:'' panels need to be finished, application launch menu&lt;br /&gt;
*''howto help:'' help is always welcome; there are a number of people contributing to plasma already, however. Unfortunately most are either working on peripheral pieces or find the core pieces too difficult. If you want to help, join the irc channel #plasma or mail to [mailto:panel-devel@kde.org panel-devel@kde.org]&lt;br /&gt;
*''expected time of arrival:'' The plan is for a panel and menu to arrive in the next couple of weeks. Polishing will take a bit longer.&lt;br /&gt;
&lt;br /&gt;
=== Color configuration ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;nearly there&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]]&lt;br /&gt;
*''goals:''&lt;br /&gt;
** missing current and default pseudo-schemes &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;important&amp;lt;/span&amp;gt;&lt;br /&gt;
** effects not configurable &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority, but could live without&amp;lt;/span&amp;gt;&lt;br /&gt;
*''howto help:'' We have this pretty well under control. Polish, Usability review, possibly help with the pseudo-schemes and/or effects tab would be nice, but if we have to, we can probably live with it as-is.&lt;br /&gt;
*''expected time of arrival:'' early November, but usable as-is.&lt;br /&gt;
&lt;br /&gt;
=== Oxygen style ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [[User:mwoehlke| Matthew Woehlke]], [mailto:cbr@boemann.dkCasper Boemann], #oxygen&lt;br /&gt;
*''goal:'' no obvious glitches, fix all bugs on [[Projects/Oxygen/StyleWinDec]]&lt;br /&gt;
*''howto help:'' ask on #oxygen, help needed for the corners of the windec.&lt;br /&gt;
*''expected time of arrival:'' end of October or early November&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:faure@kde.org David Faure]&lt;br /&gt;
*''goal:'' Konqueror must be able to browse the web and to be used as a file manager again, I'm mostly aiming for &amp;quot;no regressions compared to KDE3&amp;quot;&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**Help is most welcome. [mailto:kfm-devel@kde.org kfm-devel@kde.org] is the place for discussion of both aspects of konqueror development. Web browsing seems in better shape than filemanagement right now, so small tasks are fixing regressions in the webbrowsing-related code in konqueror and its dependencies. For instance there is finally a patch now about fixing the non-working Return key in the location bar URL; I'm sure there's more like that.&lt;br /&gt;
**Bigger tasks include: &lt;br /&gt;
***defining a future for the sidebar code (*no showstopper if this is the last item on the list*) -- volunteer(s) needed! &lt;br /&gt;
***finishing the integration of the dolphin part for file management.&lt;br /&gt;
*''expected time of arrival:'' november (if we leave out the sidebar changes), else december.&lt;br /&gt;
&lt;br /&gt;
=== Dolphin ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;no showstopper anymore&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:peter.penz@gmx.at Peter Penz]&lt;br /&gt;
*''goal:'' I think Dolphin is in a quite acceptable state now and I'll have a lot of time during the next week to fix the most serious bugs. David Faure and Rafael Fernández López also investigate a lot of time in Dolphin related things so I'm optimistic that Dolphin should be in a good shape for KDE 4.0.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
**I'm concerned a little bit whether the Dolphin KPart is matured enough for getting Konqueror in shape. Maybe David can comment whether some help is  needed in this area (I've set David to CC).&lt;br /&gt;
***I'm not sure about the state of Nepomuk. Currently the performance is too  slow for sorting items by tags or rating. It would be possible to use an  internal cache in Dolphin for this, but this would only reduce the time from  O(n*log(n)) to O(n) and the problem is n: reading e. g. 30 items takes several seconds... Maybe Sebastian Trüg could need some support. In the worst case I'd suggest to remove the &amp;quot;sort by tags&amp;quot; and &amp;quot;sort by rating&amp;quot; feature in Dolphin for KDE 4.0.&lt;br /&gt;
*''expected time of arrival:'' My plan is that all serious bugs get closed until the end of September. No known showstoppers are left :-)&lt;br /&gt;
 &lt;br /&gt;
=== Kate ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;some missing features &amp;amp; bugs, but usable&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kwrite-devel@kde.org Kate Team]&lt;br /&gt;
*''goal:'' The KDE 4 version of Kate should at least inlude the known KDE 3 features with additions. We have some new stuff around already but some old is lacking correct porting (beside new introduced bugs). There is a massive need for bugfixing and help getting old stuff back to work, like printing.&lt;br /&gt;
*''howto help:'' &lt;br /&gt;
** &amp;lt;s&amp;gt;fix printing&amp;lt;/s&amp;gt; Fixed by Anders, 2007-10-20 &lt;br /&gt;
** fix shortcut settings&lt;br /&gt;
** rendering bugfixes&lt;br /&gt;
** config saving bugfixes&lt;br /&gt;
** testing&lt;br /&gt;
*''expected time of arrival:''&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:huntedhacker@tiscali.co.uk Alex Merry]&lt;br /&gt;
*''goal:'' Printing support working in all applications that can currently print, with print preview and customisable dialogs; no applications depending on libkdeprint, except for the printing kcm&lt;br /&gt;
*help needed: Most of the necessary API is in place: KPrintPreview in kutils and KdePrint::createPrintDialog() in kdeui.  All current users of libkdeprint (ie: KPrinter) need porting to QPrinter/QPrintDialog/KPrintPreview.  We currently have no way to print pdf or ps files directly (as used by Okular, for example).  See [http://techbase.kde.org/Projects/KDEPrint/KDE4#Porting the kdeprint porting page]&lt;br /&gt;
*''howto help:'' send e-mail to the [mailto:kde-print-devel@kde.org kde-print-devel@kde.org] mailing list, or email the maintainer of a program volunteering to port its printing support.&lt;br /&gt;
*''expected time of arrival:'' Waiting on API decisions&lt;br /&gt;
&lt;br /&gt;
=== Sound ===&lt;br /&gt;
*''current state:'' &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
*''contact:'' [mailto:kretz@kde.org Matthias Kretz]&lt;br /&gt;
*''goal:''&lt;br /&gt;
*# no showstopper: do some more automatic tests that all sound devices work as expected&lt;br /&gt;
*# done.&lt;br /&gt;
*#usable KMix&lt;br /&gt;
*#Playing short sound files sometimes only plays the start of the sound (which can be almost nothing). This is a showstopper for notification sounds. Some reported that this is a bug in xine-lib, but I have not looked into the issue.&lt;br /&gt;
*''howto help:'' I certainly want help. But I don't know how I could label any of the tasks as small because for most things you need quite a good overview... :-( Mailinglists: [mailto:phonon-backends@kde.org phonon-backends@kde.org] or [mailto:kde-multimedia@kde.org kde-multimedia@kde.org], IRC: #phonon ping Vir&lt;br /&gt;
**Local audio playback is working quite OK, but there are some issues that are still open:&lt;br /&gt;
*** https://bugzilla.redhat.com/show_bug.cgi?id=284171&lt;br /&gt;
*** Sound hardware/ALSA setup&lt;br /&gt;
**** Currently the default list of audio devices to use is in arbitrary order. This needs to be fixed otherwise esd, artsd, jack or S/PDIF output can turn up as most preferred device and make it look like nothing is working. This might need something along the lines of a &amp;quot;hardware database&amp;quot;.&lt;br /&gt;
**** There's a report that outputting to a dmix: ALSA device using a hardware mixing capable soundcard made mixing not work at all (don't ask me why), so the ALSA device name choosing algorithm might need to become a bit smarter. I think the safest bet for now is to use the default:CARD=... device string, but with that you can only choose what card you want, not what device on that card (I don't have hardware where this would make a difference, so no idea if it's needed).&lt;br /&gt;
****  Even though defaults.pcm.ipc_gid is set to audio and defaults.pcm.ipc_perm is set to 0660, dmix does not work for more than one user at the same time (both users are in the audio group). A workaround is to set ipc_perm to 0666, but a real fix would be nicer.&lt;br /&gt;
*** kmix is not in a good state (yet). Also it still does not react on plugged/unplugged soundcard or new/removed software control.&lt;br /&gt;
*** Playing short sound files sometimes only plays the start of the sound (which can be almost nothing). This is a big problem for notifications. Some reported that this is a bug in xine-lib, but I have not looked into the issue.&lt;br /&gt;
*** xine-lib behaves bad wrt. memory allocations. run e.g. mediaobjecttest in valgrind --tool=massif&lt;br /&gt;
*''expected time of arrival:'' For 4. I have no idea because I don't know the cause. 3. is a bit out of my scope, though I might come up with a test app that does what I want soon...&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-10-24T02:38:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: /* Known Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* add your entry here and we (the developers) will move it down and prioritize&lt;br /&gt;
&lt;br /&gt;
* The colors of QToolBox is wrong, one can not read anything. This is used in KMail (Settings-&amp;gt;Composer-&amp;gt;Standart Templates). The captions are unreadable, as they have the same color as the rest of the widget (gray).&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** need bigger margins so shadow/glow are not lost?&lt;br /&gt;
** fix non-rounded corners when filling (at least) lineedits &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Scrollbars&lt;br /&gt;
** holes need to be 1px bigger relative to sliders &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* A groupbox does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-10-23T20:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: (new) qtoolbox not drawn -&amp;gt; showstopper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* add your entry here and we (the developers) will move it down and prioritize&lt;br /&gt;
&lt;br /&gt;
* The colors of QToolBox is wrong, one can not read anything. This is used in KMail (Settings-&amp;gt;Composer-&amp;gt;Standart Templates). The captions are unreadable, as they have the same color as the rest of the widget (gray).&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** top color doesn't go around curves &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** [assigned: mwoehlke] color choice needs to be reviewed &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* QToolBox not drawn &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* A groupbox does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-10-22T20:20:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: qa=thing to make sure we don't break, please don't remove :-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Incoming New Bugs ==&lt;br /&gt;
* add your entry here and we (the developers) will move it down and prioritize&lt;br /&gt;
&lt;br /&gt;
* The colors of QToolBox is wrong, one can not read anything. This is used in KMail (Settings-&amp;gt;Composer-&amp;gt;Standart Templates). The captions are unreadable, as they have the same color as the rest of the widget (gray).&lt;br /&gt;
&lt;br /&gt;
* Dockers;  the title is positioned too far to the left and it runs into the rounded-border&lt;br /&gt;
&lt;br /&gt;
* In (double) spinboxes the font is positioned one pixel too high. Lowering it one makes it baseline-aligned with labels in front. &amp;lt;b&amp;gt;Unfortunately not possible &amp;lt;/b&amp;gt;&lt;br /&gt;
: what about altering the size hints so the whole widget moves down? Trouble is we want them to be the same size as editable comboboxes and lineedits and buttons so those line up. The 1px wrong placement of text is a qt weirdness that gives visual bugs when we try to work around it - believe me - I've spent several hours on this.&lt;br /&gt;
&lt;br /&gt;
* The ok and cancel buttons on dialogs (so called 'control buttons') don't have the same width. &amp;lt;b&amp;gt;Not a style problem &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** small glitches in filling inactive tabs &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* Dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* KHTML integration&lt;br /&gt;
** khtml makes illegal assumptions about buttons. Awaits patch review by Maxim &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* KLineEdit&lt;br /&gt;
** stylesheets ruin the look. Aseigo says to wait for qt fix &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Holes in general&lt;br /&gt;
** top color doesn't go around curves &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** [assigned: mwoehlke] color choice needs to be reviewed &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* Reverse layout is broken&lt;br /&gt;
** listview,tablevies paint the frame in LTR place Qt issue 137304 &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars still not like the artist wants &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** KMenu::addTitle() adds a widget action to display a title in a popup menu. This is not specific to Oxygen, but the widget it creates could use some polishing. (to see this, right click any icon in the system tray)&lt;br /&gt;
* windeco&lt;br /&gt;
** corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
*headers in tables&lt;br /&gt;
**not really done - but the plain color look is acceptable for now &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* checkboxes in Q3ListView (Kontact-ToDo) are broken &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* A groupbox does not report a minimum size that allows it to show the text on the box. I.e. a groupbox with no contents, the groupbox-title is clipped. &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* Buttons on KNewStuff download dialog do not appear&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* no gray space between scrollbar and the text area it controls.&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Oxygen/StyleWinDec</id>
		<title>Projects/Oxygen/StyleWinDec</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Oxygen/StyleWinDec"/>
				<updated>2007-10-11T19:23:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: globalChange -&amp;gt; releasable (plus notes)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current Oxygen style and window decoration for KDE4 can be found in SVN under http://websvn.kde.org/trunk/KDE/kdebase/runtime/kstyles/oxygen and http://websvn.kde.org/trunk/KDE/kdebase/workspace/kwin/clients/oxygen&lt;br /&gt;
&lt;br /&gt;
== Known Bugs ==&lt;br /&gt;
* tabs&lt;br /&gt;
** east and west aren't done at all &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
** no drawing of inactive tabs - only their text &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* dockers&lt;br /&gt;
** frame when docked can be overwritten &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** frame when floating should have rounded corners &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* holes&lt;br /&gt;
** top color doesn't go around curves &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** [assigned: mwoehlke] color choice needs to be reviewed &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** with autoFillBackground, corners are overpainted (how to fix this??) &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* toolbuttons&lt;br /&gt;
** glow color are not removed &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* need to audit color role use (see QA #3) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* reverse layout is broken&lt;br /&gt;
** listview,tablevies etc paint the frame in LTR place &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
** groupboxes draw the heading too far to the right &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
** scrollbars draw the grove with wrong round ends &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* progress bars not done &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
* menus not done &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* horizontal scrollbar looking a bit weird &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* arrows in eg spinboxes not sharp enough &amp;lt;span style=&amp;quot;color: orange&amp;quot;&amp;gt;priority&amp;lt;/span&amp;gt;&lt;br /&gt;
* windeco - corners should really be alpha transparent &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
* should repaint on globalChange signal (how?) &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;releasable&amp;lt;/span&amp;gt;&lt;br /&gt;
** this seems to only be a problem for the colors kcm, may not even be a style bug&lt;br /&gt;
* content padding in combo boxes too small (text/arrow touches left/right border) &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;showstopper&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
* reverse layout&lt;br /&gt;
* high-contrast color schemes (i.e. all fg/bg black or white)&lt;br /&gt;
* reverse-light/dark color schemes (e.g. light-on-dark buttons with dark-on-light views, etc.)&lt;br /&gt;
* tabs, in all directions&lt;br /&gt;
* sliders, scrollbars, progress - in all orientations and good cross section of values&lt;br /&gt;
* content padding works for all controls, does not break sizeToContents functionality&lt;br /&gt;
* controls align nicely and controls that should be the same size, are&lt;br /&gt;
&lt;br /&gt;
[[Category:Artwork]][[Category:Oxygen]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/KDE4</id>
		<title>Getting Started/Build/KDE4</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/KDE4"/>
				<updated>2007-10-03T15:24:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: cs is not a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 From Source|&lt;br /&gt;
&lt;br /&gt;
pre=[[../../Sources/Anonymous_SVN|Anonymous SVN Quickstart Guide]]|&lt;br /&gt;
&lt;br /&gt;
next=[[../../Set_up_KDE_4_for_development|Set up KDE 4 for development]]|&lt;br /&gt;
&lt;br /&gt;
reading=[http://kdesvn-build.kde.org/ kdesvn-build: The KDE From Subversion Build Tool]&amp;lt;br&amp;gt;[[../../Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]&amp;lt;br&amp;gt;[[Development/Tutorials/CMake |Introduction to CMake]]&amp;lt;br&amp;gt;[[../KDE4/FreeBSD|FreeBSD notes]]&amp;lt;br&amp;gt;[[../KDE4/Mac OS X|Instructions for Mac OS X]]&amp;lt;br&amp;gt;[[../KDE4/Windows|Instructions for MS Windows]]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
This tutorial shows one way to get KDE from trunk running on Linux/BSD systems. There are also tutorials for [[/FreeBSD|FreeBSD]], [http://www.kdelibs.com/ Windows], [[/Mac OS X|Mac OS X]] and [http://solaris.kde.org/ Solaris]. Throughout the tutorial the bash shell is used.&lt;br /&gt;
&lt;br /&gt;
{{warning|Expect a higher risk of build failure '''on Mondays''' when most kdelibs changes are committed. [http://developer.kde.org/~dirk/dashboard/ Dashboard] reports unexpected breakages. You are encouraged to fix failing modules.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Required Software ==&lt;br /&gt;
&lt;br /&gt;
The following must be installed first before you can successfully complete this tutorial:&lt;br /&gt;
* gcc and g++, preferably version 4.1 or higher&lt;br /&gt;
* svn, the subversion revision control client&lt;br /&gt;
* pkg-config&lt;br /&gt;
* development libraries and headers for X11, OpenGL (mesa-common-dev and libglu1-mesa-dev), libjpeg, libpng, libungif, [http://clucene.sourceforge.net/index.php/Downloads libclucene], [http://download.librdf.org/source/ librdf], libxml2 and libxslt&lt;br /&gt;
* the &amp;lt;tt&amp;gt;makeobj&amp;lt;/tt&amp;gt; script, which is part of kdesdk. You can install it as part of kdesdk (kdesdk-scripts on Debian) or similar package, or just download it itself from [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj WebSVN]&lt;br /&gt;
* the [http://freedesktop.org/wiki/Software/shared-mime-info shared-mime-info package], which is the freedesktop MIME standard KDE is using now&lt;br /&gt;
* [http://boost.org/ boost], needed by kdebase; after compiling and/or installing boost, in order to make cmake aware about its location (FindBoost),  add boost directory (the one containing include subdirectory) to CMAKE_INCLUDE_PATH or set an environment variable called BOOST_ROOT pointing to boost directory.&lt;br /&gt;
&lt;br /&gt;
=== Ark Linux ===&lt;br /&gt;
In Ark Linux, the build dependencies you need are installed with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
apt-get install devel-core libxml-devel libxslt-devel bzip2-devel \&lt;br /&gt;
clucene-core-devel librdf-devel shared-mime-info xorg-Mesa-libGL-devel \&lt;br /&gt;
subversion boost-devel doxygen giflib-devel dbus-devel openssl-devel \&lt;br /&gt;
alsa-lib-devel kdesdk-scripts qt4-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you prefer a graphical interface, select the packages listed above in the &amp;quot;Install Software&amp;quot; tool in Mission Control.&lt;br /&gt;
&lt;br /&gt;
This includes installation of CMake, DBus and Qt - you can skip steps 5, 6 and 7.&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
Some of the required packages for building KDE4 on Fedora 7 or higher:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
yum install clucene-core-devel libxml libxml-devel libxslt-devel \&lt;br /&gt;
dbus-devel boost-devel bzip2-devel openssl-devel alsa-lib-devel \&lt;br /&gt;
redland-devel rasqal-devel raptor-devel hspell-devel aspell-devel \&lt;br /&gt;
cups-devel xine-lib-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubuntu and Debian ===&lt;br /&gt;
&lt;br /&gt;
In Kubuntu 7.04 (Feisty) and Debian (Testing/Unstable) the build dependencies you need are installed with:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo aptitude install build-essential cdbs debhelper cmake \&lt;br /&gt;
libxml2-dev libxslt1-dev libbz2-dev libclucene-dev librdf-dev \&lt;br /&gt;
shared-mime-info libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev \&lt;br /&gt;
libxext-dev libjpeg-dev libpng-dev subversion libsm-dev libxinerama-dev \&lt;br /&gt;
libxrender-dev libfontconfig-dev libboost-dev libxcursor-dev doxygen \&lt;br /&gt;
libungif4-dev libdbus-1-dev libgpgme11-dev libssl-dev libgpgme11-dev \&lt;br /&gt;
libasound2-dev kdesdk-scripts libpth-dev libjasper-dev \&lt;br /&gt;
ssh libxine-dev libqimageblitz-dev libqimageblitz4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Kubuntu 7.10 (Gutsy) you have to add:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo aptitude install dbus-x11&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a fully functional API documentation framework you also need:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo aptitude install graphviz&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&lt;br /&gt;
In openSUSE 10.2 and newer, you can install packages using [http://en.opensuse.org/Zypper Zypper]:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo zypper install &amp;lt;package-name&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In older releases of SUSE, you can use YaST:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
su&lt;br /&gt;
yast -i &amp;lt;packagename&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Required Packages'''&lt;br /&gt;
&lt;br /&gt;
The packages you will need to install are:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
xorg-x11-devel&lt;br /&gt;
libxml2-devel &lt;br /&gt;
kdesdk3 &lt;br /&gt;
clucene-core-devel &lt;br /&gt;
boost-devel&lt;br /&gt;
libjpeg-devel &lt;br /&gt;
liblrdf-devel &lt;br /&gt;
libpng-devel &lt;br /&gt;
libxslt-devel &lt;br /&gt;
libredland-devel&lt;br /&gt;
Mesa-devel &lt;br /&gt;
giflib-devel &lt;br /&gt;
subversion &lt;br /&gt;
gcc &lt;br /&gt;
gcc-c++&lt;br /&gt;
gmp-devel (needed to build kdesupport)&lt;br /&gt;
strigi-devel (needed to build kdelibs)&lt;br /&gt;
gpgme-devel (needed to build kdepimlibs)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Optional Packages'''&lt;br /&gt;
&lt;br /&gt;
You can skip the manual installation of Qt 4.3, CMake 2.4.6 and DBus by installing the adding the openSUSE Build Service KDE4 Repository to your installation sources.&lt;br /&gt;
&lt;br /&gt;
For openSUSE 10.2 and newer do:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo zypper service-add http://software.opensuse.org/download/KDE:/KDE4/openSUSE_10.2 KDE4-102&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For older versions of SUSE Linux do:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
su&lt;br /&gt;
installation_sources -a http://software.opensuse.org/download/KDE:/KDE4/[YOUR SUSE LINUX VERSION]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now install the following packages (and their dependencies):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
cmake&lt;br /&gt;
dbus-1-devel&lt;br /&gt;
libqt4-devel&lt;br /&gt;
libqca2-devel (needed for building kdesupport)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And for fully functional apidox framework you also need:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
graphviz&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CMake binary packages for openSUSE are available from [http://software.opensuse.org/download/devel:/tools:/building/ openSUSE build service].&lt;br /&gt;
&lt;br /&gt;
=== Gentoo ===&lt;br /&gt;
&lt;br /&gt;
==== Install by hand ====&lt;br /&gt;
&lt;br /&gt;
You can use stable ebuilds just remember to sync your portage before you begin.&lt;br /&gt;
&lt;br /&gt;
Remember: All commands are executed as root.&lt;br /&gt;
&lt;br /&gt;
Required:&lt;br /&gt;
&lt;br /&gt;
We need to allow the following keyword masked ebuilds.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
echo 'dev-util/cmake' &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
echo 'dev-cpp/clucene' &amp;gt;&amp;gt; /etc/portage/package.keywords&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And now need to mask any Clucene versions above 0.9.16a.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
echo '&amp;gt;dev-cpp/clucene-0.9.16a' &amp;gt;&amp;gt; /etc/portage/package.mask&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure you have set the berkdb USE flag for redland, otherwise nepomuk won't work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
echo 'dev-libs/redland berkdb' &amp;gt;&amp;gt; /etc/portage/package.use&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are the packages you will need to emerge, I included the update option into the emerge command so you will not re-emerge anything that you might already have installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
emerge -avu 'sys-devel/gcc' \&lt;br /&gt;
  'dev-util/subversion' \&lt;br /&gt;
  'dev-util/pkgconfig'  \&lt;br /&gt;
  'x11-base/xorg-x11' \&lt;br /&gt;
  'virtual/glut' \&lt;br /&gt;
  'media-libs/mesa' \&lt;br /&gt;
  'media-libs/jpeg' \&lt;br /&gt;
  'media-libs/libpng' \&lt;br /&gt;
  'media-libs/giflib' \&lt;br /&gt;
  'dev-cpp/clucene' \&lt;br /&gt;
  'dev-util/cppunit' \&lt;br /&gt;
  'media-libs/liblrdf' \&lt;br /&gt;
  'dev-libs/libxml2' \&lt;br /&gt;
  'dev-libs/libxslt' \&lt;br /&gt;
  'x11-misc/shared-mime-info' \&lt;br /&gt;
  'dev-libs/boost' \&lt;br /&gt;
  'dev-util/cmake' \&lt;br /&gt;
  'dev-libs/redland' \&lt;br /&gt;
  'sys-apps/dbus' \&lt;br /&gt;
  'sys-apps/hal' \&lt;br /&gt;
  'x11-libs/qt'&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You will also need to emerge either 'kde-base/kdesdk' or kde-base/kdesdk-scripts'.&lt;br /&gt;
&lt;br /&gt;
If you emerged DBUS, CMAKE, QT or HAL you may skip those sections respectively.&lt;br /&gt;
Good luck!&lt;br /&gt;
&lt;br /&gt;
==== Install via portage ====&lt;br /&gt;
&lt;br /&gt;
Also you can install the KDE 4 packages directly via &lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
emerge -a &amp;lt;packagename&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get the things you need, [http://gentoo-wiki.com/TIP_Overlays#Layman install layman] and then pull in the KDE overlay (which contains experimental KDE ebuilds): &lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
layman -a kde&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
After this you need to adjust some USE-flags for KDE 4 and tell portage to use the testing KDE 4 ebuilds instead of the stable KDE 3 ones. &lt;br /&gt;
&lt;br /&gt;
That way portage will do the dependency tracking for you. &lt;br /&gt;
&lt;br /&gt;
Detailed instructions on building KDE 4 in Gentoo via portage can be found in the [http://overlays.gentoo.org/proj/kde/wiki KDE overlay wiki]. They are discussed in the thread [http://forums.gentoo.org/viewtopic-t-530111-postdays-0-postorder-asc-start-0.html KDE 4 monolithic ebuilds].&lt;br /&gt;
&lt;br /&gt;
== Create a user account for KDE4 development ==&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
Some people like to have a separate user account for KDE 4 (for instance an old bug deleted files by mistake), and the instructions below were written with that approach.&lt;br /&gt;
&lt;br /&gt;
However it is much more efficient to do everything with a single user account, see [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]&lt;br /&gt;
for more details. &lt;br /&gt;
&lt;br /&gt;
You can still follow the instructions below, but don't put the environment variables in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;, put them in a separate file that you source to switch to the KDE 4 environment.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Command Line ===&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
useradd -m kde-devel&lt;br /&gt;
passwd kde-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Option 2: Using KControl ===&lt;br /&gt;
&lt;br /&gt;
Instead of using the commands above, you can also use the User module in the KDE Control Center if you already have KDE3 installed.&lt;br /&gt;
&lt;br /&gt;
=== Setting up the environment ===&lt;br /&gt;
&lt;br /&gt;
Copy the {{path|~/.bashrc}} from your normal user account to the new kde-devel account. Next, copy and paste the contents of the [[Getting Started/Increased Productivity in KDE4 with Scripts/.bashrc|example .bashrc]] into {{path|~kde-devel/.bashrc}}. Be sure to comment out the line &amp;lt;tt&amp;gt;alias make=makeobj&amp;lt;/tt&amp;gt; if you do not have the &amp;lt;tt&amp;gt;[[Getting Started/Build/KDE4#Required Software|makeobj]]&amp;lt;/tt&amp;gt; command available. You will probably also want to modify the path to make sure it doesn't include your kde3 paths. Also if you want to use KDevelop to develop KDE 4 applications you may pass the ''-GKDevelop3'' flag to the ''cmake'' command (to make CMake generate KDevelop project files, it will help to avoid rebuilding in the future, see [[Getting_Started/Set_up_KDE_4_for_development#Setting_up_the_environment|this]]).  &lt;br /&gt;
To make it run, you have to open a new bash or to execute &lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
source ~/.bashrc&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will provide access to commands such as &amp;lt;tt&amp;gt;cmakekde&amp;lt;/tt&amp;gt; that are used in this tutorial as well as ensure that the proper paths are in place for Qt, KDE and CMake binaries.&lt;br /&gt;
&lt;br /&gt;
For more information, please read the [[Getting Started/Increased Productivity in KDE4 with Scripts]] tutorial.&lt;br /&gt;
&lt;br /&gt;
=== Switching to the New User ===&lt;br /&gt;
Switch to the user kde-devel: (don't forget the dash)&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
ssh -X kde-devel@localhost&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
If the ssh command fails, check out the &amp;quot;Launching KDE 4 apps&amp;quot; section of this KDE4 development guide:&lt;br /&gt;
&lt;br /&gt;
http://techbase.kde.org/Getting_Started/Set_up_KDE_4_for_development#Launching_KDE_4_apps&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== The development user's shell ==&lt;br /&gt;
&lt;br /&gt;
On some systems a new user is configured by default to use {{path|/bin/sh}}. If this is not the case on your system, you can skip this section. Using {{path|/bin/sh}} can be very inconvenient to work with and you may want to change it to {{path|/bin/bash}} or another shell.&lt;br /&gt;
On Ark Linux, you can skip this step - {{path|/bin/sh}} is {{path|bash}} on Ark Linux.&lt;br /&gt;
&lt;br /&gt;
=== Option 1: As the kde-devel user ===&lt;br /&gt;
&lt;br /&gt;
If you don't have root privileges and your system supports the changing of your own shell with the &amp;lt;tt&amp;gt;chsh&amp;lt;/tt&amp;gt; application, then you could try to change your shell to {{path|/bin/bash}} by using:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
chsh -s /bin/bash kde-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Option 2: As the root user ===&lt;br /&gt;
&lt;br /&gt;
If your system comes with the &amp;lt;tt&amp;gt;usermod&amp;lt;/tt&amp;gt; application you can run the following command as root: &amp;lt;tt&amp;gt;usermod -s /bin/bash&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Another option is to use the &amp;lt;tt&amp;gt;vipw&amp;lt;/tt&amp;gt; application as root to safely edit your {{path|/etc/passwd}}. Locate 'kde-devel' in the the file. Change '{{path|/bin/sh}}' at the end of the line to read '{{path|/bin/bash}}', save your changes and exit.&lt;br /&gt;
&lt;br /&gt;
The new shell will be started automatically when you log in as the kde-devel user again.&lt;br /&gt;
&lt;br /&gt;
== D-Bus ==&lt;br /&gt;
QtDBus and KDE are known to work with D-Bus versions 0.62, as well as 0.92 and upwards. Versions 0.60 and 0.61 may work too but are not tested. Versions 0.90 and 0.91 are known not to work. We recommend using post-1.0 release versions (at least 0.94), so consider upgrading if you haven't done so.&lt;br /&gt;
&lt;br /&gt;
You may skip this section if you have a recent D-Bus version or if you don't want to upgrade. You probably want to skip building the bindings until/unless you know you will be building HAL (see below).&lt;br /&gt;
&lt;br /&gt;
Before running these steps in the recipe, make sure your X11 headers and libraries are available. The configure script run on line 5 of the following instructions should output:&lt;br /&gt;
 Building X11 code:        yes&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&lt;br /&gt;
{{tip|Make sure you did set up your environment correctly as described [[Getting_Started/Build/KDE4#Setting_up_the_environment|above]]. This is necessary for the &amp;lt;tt&amp;gt;cs&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;cb&amp;lt;/tt&amp;gt; functions to work.}}&lt;br /&gt;
&lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]] &lt;br /&gt;
 wget http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz&lt;br /&gt;
 tar -xvzf dbus-1.0.2.tar.gz&lt;br /&gt;
 cd dbus-1.0.2/&lt;br /&gt;
 ./configure --prefix=$DBUSDIR --localstatedir=/var&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo dbus-uuidgen --ensure&lt;br /&gt;
&lt;br /&gt;
 cs # see above&lt;br /&gt;
 wget http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.74.tar.gz&lt;br /&gt;
 tar -xvzf dbus-glib-0.74.tar.gz&lt;br /&gt;
 cd dbus-glib-0.74/&lt;br /&gt;
 ./configure --prefix=$DBUSDIR&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== What's Happening === &lt;br /&gt;
After changing into the source directory (line 1), D-Bus source code is downloaded from freedesktop.org (line 2) and unpacked (line 3). After going into the newly created D-Bus directory (line 4), the build is set up using the supplied {{path|configure}} script (line 5). After building (line 6) and installing (line 7) D-Bus, we use the &amp;lt;tt&amp;gt;dbus-uuidgen&amp;lt;/tt&amp;gt; tool to install a machine identification file that allows the bus to start automatically when the desktop session starts (line 8).&lt;br /&gt;
&lt;br /&gt;
Note that you need write access to {{path|/var}} for the last two steps. If your system does not have the sudo command, you can use the &amp;lt;tt&amp;gt;su&amp;lt;/tt&amp;gt; command instead, e.g. &amp;lt;tt&amp;gt;su -c &amp;quot;make install&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The steps for building the glib bindings are similar to the above.&lt;br /&gt;
&lt;br /&gt;
== CMake ==&lt;br /&gt;
Skip this if you have [http://cmake.org/ CMake] &amp;gt;=2.4.5 installed. &lt;br /&gt;
You should be able to directly use the binary packages available on the [http://www.cmake.org/HTML/Download.html CMake site]. There are also distribution specific packages available.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click Here to learn more]] &lt;br /&gt;
 wget http://www.cmake.org/files/v2.4/cmake-2.4.6.tar.gz&lt;br /&gt;
 tar -zxf cmake-2.4.6.tar.gz&lt;br /&gt;
 mkdir cmake-build&lt;br /&gt;
 cd cmake-build &lt;br /&gt;
 ../cmake-2.4.6/bootstrap&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
First, we go back to the &amp;lt;tt&amp;gt;kde-devel&amp;lt;/tt&amp;gt; user's source directory (line 1), get the CMake sources (line 2) and unpack them (line 3). We create a directory to build CMake in (line 4) and go into it (line 5). We then run the CMake bootstrap script to set up the CMake build (line 6), then make (line 7) and install it (line 8) using the root user.&lt;br /&gt;
&lt;br /&gt;
If your system does not have the &amp;lt;tt&amp;gt;sudo&amp;lt;/tt&amp;gt; command, you can instead do &amp;lt;tt&amp;gt;su -c &amp;quot;make install&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Qt ==&lt;br /&gt;
Next we need to get the Qt4 that is in KDE's source repository. KDE is guaranteed to build against any Qt 4.3. Qt 4.2 and earlier are not supported and will not work. You should use the copy in the KDE Subversion servers. (note: some distros, like Debian, tend to supply Qt with patches from KDE svn applied, so you may want to cheat and use precompiled Qt from your distro)&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
 cs # cs is not a typo&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/qt-copy&lt;br /&gt;
 cd qt-copy&lt;br /&gt;
 ./apply_patches&lt;br /&gt;
 ./configure -qt-gif -no-exceptions -debug -fast \&lt;br /&gt;
  -prefix $QTDIR -nomake examples -nomake demos&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
 # if we don't install, we'll just clear obj files to&lt;br /&gt;
 # save disk space&lt;br /&gt;
 if [ $QTDIR = `pwd` ]; then \&lt;br /&gt;
 find . -name '*.o' -delete ; \&lt;br /&gt;
 else make install; fi;&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We switch back to the &amp;lt;tt&amp;gt;kde-devel&amp;lt;/tt&amp;gt; user's home directory (line 1) and download the source code using subversion (svn) from KDE's repository (line 2). After changing into the resulting {{path|qt-copy}} directory (line 3), we run a script that manages the patches that come with &amp;lt;tt&amp;gt;qt-copy&amp;lt;/tt&amp;gt; (line 4). &lt;br /&gt;
&lt;br /&gt;
Once the patches have been applied, we then set up the build using the &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; script (line 5-6). The various command line options used are explained in the {{path|qt-copy/README.qt-copy}} file. Finally, we build the minimal requirements for KDE (line 7) and install (line 10) Qt. If install dir is the same as the current dir (line 8), then we just free some space (line 9) instead. If you want all the example and demo applications, you can either build them individually or simply do a &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt; from the {{path|qt-copy}} directory. &lt;br /&gt;
&lt;br /&gt;
Note that the installation does not require root as it installs Qt locally into {{path|$QTDIR}}. Anyway, installation is only needed if {{path|$QTDIR}} differs from {{path|$HOME/qt-copy}}, which is not the case if you have exactly followed the instructions.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get &amp;quot;error: X11/Xlib.h: No such file or directory&amp;quot;, install the devel package of &amp;lt;tt&amp;gt;xorg&amp;lt;/tt&amp;gt; (the actual name may vary between operating systems, for example it is &amp;lt;tt&amp;gt;xorg-dev&amp;lt;/tt&amp;gt; on Ubuntu based systems such as Kubuntu). &lt;br /&gt;
&lt;br /&gt;
If you get an error in the configure step about missing defines, check the value of &amp;lt;tt&amp;gt;$QMAKESPEC&amp;lt;/tt&amp;gt;.  Some distributions set this to point directly to the system-installed Qt.  If &amp;lt;tt&amp;gt;unset QMAKESPEC&amp;lt;/tt&amp;gt; solves the problem, you probably want to add it to the &amp;lt;tt&amp;gt;~/.bashrc&amp;lt;/tt&amp;gt; script.&lt;br /&gt;
&lt;br /&gt;
If you get an error &amp;quot;.pch/debug-shared/QtCore&amp;quot;, this is because Qt-4.3 enables precompiled headers if your gcc supports it, but for some reason it doesn't work for you. If you use distcc, configure qt with -no-pch. If you use icecream, update to the latest icecream from svn trunk.&lt;br /&gt;
&lt;br /&gt;
Try running any Qt program, like {{program|assistant}}. '''Note:''' You may need to run &amp;lt;tt&amp;gt;xhost +local:kde-devel&amp;lt;/tt&amp;gt; as your regular kde3 user to run this application.  If it crashes in QSpanData::adjustSpanMethods, then your problem is the oxygen style. Try removing {{path|lib/kde4/plugins/styles/kstyle-oxygen.so}} and {{path|lib/kde4/plugins/styles/oxygen.so}} if they exist in the KDE install prefix.&lt;br /&gt;
&lt;br /&gt;
== HAL ==&lt;br /&gt;
&lt;br /&gt;
{{tip|You can use qdbusviewer to see if you have org.freedesktop.hal. If not, you might need a newer version of hal. If you have org.freedesktop.hal, you probably don't need to, and don't ''want'' to, roll your own HAL.}}&lt;br /&gt;
&lt;br /&gt;
If your system requires you to build a newer version of HAL, there's a decent chance you'll need to build other stuff as well, some of which may not be straight forward. Since this should only be required for older distros, instructions are on [[Getting_Started/Build/HAL| a separate page]].&lt;br /&gt;
&lt;br /&gt;
== kdesupport ==&lt;br /&gt;
&lt;br /&gt;
{{warning|Don't forget to read the [[Getting_Started/Build/KDE4#Setting_up_the_environment|Setting Up The Environment]] section first.}}&lt;br /&gt;
&lt;br /&gt;
There are several libraries that KDE applications rely on in the kdesupport module. This includes Strigi and Soprano for file metadata and search, QImageBlitz for image manipulation needed in kdebase, eigen for visual effects in applications such as Kalzium, taglib for music players and qca for some cryptographic needs. &lt;br /&gt;
&lt;br /&gt;
Strigi itself has a few dependencies as well: you will need the libraries and headers for libz, libbz2, openssl (libcrypto or libssl), libclucene (&amp;gt;=0.9.16a but watch out: version 0.9.17 does '''not''' work), and either libxml2 or libexpat.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/&lt;br /&gt;
 cd kdesupport&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We change to the base source directory (line 1). We download the sources in kdesupport using subversion (line 2), go into the new {{path|~/kde/src/kdesupport}} directory (line 3), and commence the build (line 4). This will leave us in the kdesupport build directory after the build is completed.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you get &lt;br /&gt;
   cmakekde: command not found&lt;br /&gt;
then you have to go manualy into the kdesupport directory in ~ and execute the command cmakekde. if this still doesnt work, then something is wrong with your bashrc.&lt;br /&gt;
&lt;br /&gt;
If you get &lt;br /&gt;
 CMake Error: This project requires some variables to be set,&lt;br /&gt;
 and cmake can not find them.&lt;br /&gt;
 Please set the following variables:&lt;br /&gt;
 LIBXML2_INCLUDE_DIR (ADVANCED)&lt;br /&gt;
you should install the development package for libxml2.&lt;br /&gt;
&lt;br /&gt;
If you get &lt;br /&gt;
 CMake Error: Could NOT find REDLAND&lt;br /&gt;
then you need librdf from the Redland.&lt;br /&gt;
If your distribution does not provide the librdf package, you can download the source there: [http://download.librdf.org/source/ http://download.librdf.org/source/] and build it.&lt;br /&gt;
(Gentoo users: The ebuild for librdf is named dev-libs/redland)&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
 Fetching external item into 'kdesupport/admin'&lt;br /&gt;
 Error validating server certificate for 'https://...'&lt;br /&gt;
see [http://techbase.kde.org/Getting_Started/Sources/Using_Subversion_with_KDE Using Subversion with KDE]&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
 FILE cannot create directory: /usr/lib[64]/qt4/plugins/crypto. Maybe need administrative privileges.&lt;br /&gt;
 - - -&lt;br /&gt;
 make: *** [install] Error 255&lt;br /&gt;
take a second look in the .bashrc file described above, are paths correct?  Alternatively, you may see this error if you decided to use a distribution installed version of qt4 and skipped the Qt install above.  Either install qt-copy as describe above, or &amp;quot;sudo make install&amp;quot;. If you use &amp;quot;sudo make install&amp;quot;, make sure you that you change the ownership back to your user for some of the ~/kde subdirectories that were effected by using sudo (ie. &amp;quot;&amp;lt;tt&amp;gt;sudo chown -R kde-devel:kde-devel ~/kde&amp;lt;/tt&amp;gt;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== kdelibs ==&lt;br /&gt;
&lt;br /&gt;
We can now move on to building KDE's base libraries.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
 cd   &lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 mkdir KDE &amp;amp;&amp;amp; cd KDE&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We change to the base source directory (line 1) then make and go into the KDE directory (line 2). We download the sources for kdelibs using subversion (line 3), go into the new {{path|~/kde/src/KDE/kdelibs}} directory (line 4), and commence the build (line 5). This will leave us in the &amp;lt;tt&amp;gt;kdelibs&amp;lt;/tt&amp;gt; build directory after the build is completed.&lt;br /&gt;
&lt;br /&gt;
{{tip|There might be missing dependencies on your system! They are easily overlooked in the output of &amp;lt;tt&amp;gt;cmakekde&amp;lt;/tt&amp;gt;.&lt;br /&gt;
You might want to do a &amp;lt;tt&amp;gt;cmake $KDE_SRC/KDE/MODULE_NAME&amp;lt;/tt&amp;gt; prior to compiling any kde modules (like kdelibs, kdepimlibs etc.)}}&lt;br /&gt;
&lt;br /&gt;
=== Additional KDE-specific CMake modules ===&lt;br /&gt;
There are additional CMake modules in {{path|kdelibs/cmake/modules/}} that are necessary for building KDE4 applications. These will be installed for you when  kdelibs itself is installed.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you have problems compiling kdelibs, first make sure the software in the [[Getting_Started/Build/KDE4#Required_Software|Required Software]] section above is installed and works. Other possible hints include:&lt;br /&gt;
* If the &amp;lt;tt&amp;gt;cmakekde&amp;lt;/tt&amp;gt; command fails stating that CMake requires an out of source build directory, remove {{path|~/kde/src/KDE/kdelibs/CMakeCache.txt}}, and try again.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;tt&amp;gt;cmakekde&amp;lt;/tt&amp;gt; still gives the same error then try this &lt;br /&gt;
 cd&lt;br /&gt;
 cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \&lt;br /&gt;
 -DCMAKE_BUILD_TYPE=debugfull \&lt;br /&gt;
 -DKDE4_BUILD_TESTS=ON \&lt;br /&gt;
 ~/kde/src/KDE/kdelibs&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
* If you received an error stating &amp;quot;Please create a separate build directory and run 'cmake path_to_kdelibs [options]' there.&amp;quot;, then you need to change to your build directory before running cmakekde. (e.g &amp;lt;tt&amp;gt;cs KDE/kdelibs &amp;amp;&amp;amp; cb &amp;amp;&amp;amp; cmakekde&amp;lt;/tt&amp;gt;) If the message stays, run 'svn status' in the kdelibs directory and remove all files labeled with '?'.&lt;br /&gt;
* If Qt wasn't found or the wrong version of Qt was found, make sure that the qmake from the Qt you need is the first qmake in the path.&lt;br /&gt;
* If the problems persist, try the CMake make-option &amp;lt;tt&amp;gt;--keep-going&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Here you need the libungif library, otherwise you will get an error message like &amp;quot;&amp;lt;tt&amp;gt;Could NOT find GIF&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
* Qt-4.3 upgrade: if you get a link error in kjsembed talking about QScriptEngine, edit CMakeCache.txt in kdelibs and remove the lines that talk about QT_QTUITOOLS_LIBRARY, then type make again (that static library has a new dependency, and the cmake code that adds it needs to run).&lt;br /&gt;
* if you get &amp;lt;code&amp;gt;CMake Error: KDE Requires Qt to be built with SSL support&lt;br /&gt;
&amp;lt;/code&amp;gt;, install openssl-devel, remove CMakeCache.txt and re-compile QT.&lt;br /&gt;
* if you get &amp;lt;code&amp;gt;kdelibs/kimgio/ico.cpp:188: undefined reference to `QImage::jumpTable()'&amp;lt;/code&amp;gt; it means you compiled QT without QT3 support(no, linking to a true QT3 install won't work)&lt;br /&gt;
&lt;br /&gt;
== kdepimlibs ==&lt;br /&gt;
After &amp;lt;tt&amp;gt;kdelibs&amp;lt;/tt&amp;gt;, but before ''kdebase'', you need to build and install ''kdepimlibs''.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 cs KDE # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs&lt;br /&gt;
 cd kdepimlibs&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== What's Happening ===&lt;br /&gt;
We go into the KDE source directory (line 1), download the source code for kdepimlibs using subversion (line 2) and then go into the new {{path|~/kde/src/KDE/kdepimlibs}} directory (line 3). We then commence the build (line 4). This will leave us in the &amp;lt;tt&amp;gt;kdepimlibs&amp;lt;/tt&amp;gt; build directory after the build is completed.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you have trouble compiling kdepimlibs:&lt;br /&gt;
* the cmakekde command may require a later version of the gpgme library.  This is available from the project's web site: http://www.gnupg.org/(en)/download/index.html - please note that the build of gpgme also requires libgpg-error, also available from the same location.  Both libraries are installed by the &amp;quot;./configure&amp;quot;, &amp;quot;make&amp;quot; and &amp;quot;sudo make install&amp;quot; sequence, with the gpgme library configured with the additional &amp;quot;--with-gpg-error-prefix&amp;quot; parameter.  You may need to overwrite your existing &amp;quot;/usr/bin/gpgme-config&amp;quot; file with the newer version for the kdepimlibs to pick up the new install.&lt;br /&gt;
&lt;br /&gt;
== kdebase ==&lt;br /&gt;
kdebase is divided into three parts:&lt;br /&gt;
* '''apps'''&lt;br /&gt;
:This contains applications like Dolphin or KWrite.&lt;br /&gt;
* '''runtime'''&lt;br /&gt;
:This contains things needed by every application at runtime, like icons. It is a required dependency for each KDE application, so you have to compile and install this.&lt;br /&gt;
* '''workspace'''&lt;br /&gt;
:This contains things specific to the KDE desktop, like Plasma or the window manager. Most stuff here depends on X11. You only need it if you want to build a full KDE desktop.&lt;br /&gt;
&lt;br /&gt;
You can build all of kdebase at once, which is described in the recipe below. If you only want to build kdebase-runtime, which is the only requirement, you can replace &amp;lt;code bash&amp;gt;cd kdebase&amp;lt;/code&amp;gt; with &amp;lt;code bash&amp;gt;cd kdebase/runtime&amp;lt;/code&amp;gt; in the recipe below.&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 cs KDE # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase&lt;br /&gt;
 cd kdebase&lt;br /&gt;
 cmakekde&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you have troubles compiling kdebase:&lt;br /&gt;
* Make sure you have the &amp;lt;tt&amp;gt;libxss headers&amp;lt;/tt&amp;gt; installed. (Usually you got undefined references on xscreensaver objects if you do not have those headers)&lt;br /&gt;
* &amp;lt;tt&amp;gt;which meinproc&amp;lt;/tt&amp;gt; has to deliver {{path|/home/kde-devel/kde/bin/meinproc}}&lt;br /&gt;
* if cmakekde can not find the path of kdepimlibs, edit the file {{path|$KDE_BUILD/KDE/kdebase/CMakeCache.txt}} and manually set &amp;lt;tt&amp;gt;KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs&amp;lt;/tt&amp;gt;&lt;br /&gt;
* if you get an error saying &amp;quot;Please set the following variables: X11_XTest_LIB (ADVANCED)&amp;quot;, install the devel package of &amp;lt;tt&amp;gt;Xtst&amp;lt;/tt&amp;gt;. On some systems, this is packaged separately from &amp;lt;tt&amp;gt;xext&amp;lt;/tt&amp;gt; and called &amp;lt;tt&amp;gt;x11proto-xext-dev&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;libxtst-dev&amp;lt;/tt&amp;gt;. You may also need to remove the CMakeCache.txt file in the build dir after installing the package.&lt;br /&gt;
* the same for &amp;quot;X11_Xinerama_LIB (ADVANCED)&amp;quot; where you will need the devel package for &amp;lt;tt&amp;gt;xinerama&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* if you get an error complaining about a missing variable X11_Xrandr_LIB, you need the devel package for libxrandr (libxrandr-devel on ubuntu-systems)&lt;br /&gt;
* if you get the error &amp;quot;Please set the following variables: FONTCONFIG_INCLUDE_DIR, FONTCONFIG_LIBRARIES (ADVANCED)&amp;quot;, then you need to install  the libfontconfig headers&lt;br /&gt;
* if you get the error &amp;quot;CMake Error: This project requires some variables to be set, and cmake can not find them. Please set the following variables: KMETADATA_LIBRARIES&amp;quot;, you need to install soprano from kdesupport and to rebuild kdelibs&lt;br /&gt;
* if you get the error &amp;quot;‘XserverRegion’ does not name a type&amp;quot; make sure you have libxcomposite headers installed (&amp;lt;tt&amp;gt;libxcomposite-dev&amp;lt;/tt&amp;gt; in ubuntu)&lt;br /&gt;
* if you get the error &amp;quot;CMake Error: This project requires some variables to be set, and cmake can not find them. Please set the following variables: QT_QTOPENGL_LIBRARY (ADVANCED) &amp;quot;, try editing CMakeCache.txt and setting QT_QTOPENGL_LIBRARY:FILEPATH=/home/kde-devel/qt-copy/lib/libQtOpenGL.so&lt;br /&gt;
&lt;br /&gt;
* if you get messages as &amp;quot;KDE4_INSTALL_HANDBOOK() is deprecated. Remove it please. Now all is done in KDE4_CREATE_HANDBOOK.&amp;quot; then, either find the files containing the offending line and comment it out manually, or run the following script in ~/kde/src/KDE/kdebase: [http://www.plamadeala.com/files/macros_corrector.sh macros_corrector.sh]. It will just REMOVE the line that has &amp;quot;kde4_create_handbook&amp;quot; in it from all the found files.&lt;br /&gt;
&lt;br /&gt;
== Running KDE 4 programs ==&lt;br /&gt;
&lt;br /&gt;
You can now run KDE 4 programs (e.g. kwrite) by typing:&lt;br /&gt;
 ssh -X kde-devel@localhost&lt;br /&gt;
 kwrite &lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
* If you get &lt;br /&gt;
 KUniqueApplication: Cannot find the D-Bus session server&lt;br /&gt;
check if you can access the display, e.g. type&lt;br /&gt;
 xclock&lt;br /&gt;
and see if a clock appears on the screen.&lt;br /&gt;
&lt;br /&gt;
* If you get something like&lt;br /&gt;
 Error: standard icon theme &amp;quot;oxygen&amp;quot; not found!&lt;br /&gt;
 &lt;br /&gt;
 ASSERT: &amp;quot;!isEmpty()&amp;quot; in file /home/kde-devel/qt-copy/include/QtCore/../../src/corelib/tools/qlist.h, line 245&lt;br /&gt;
 Aborted (core dumped)&lt;br /&gt;
You need to install kdebase - see above. It is enough to install the &amp;quot;runtime&amp;quot; directory from kdebase.&lt;br /&gt;
&lt;br /&gt;
== Generating local API documentation ==&lt;br /&gt;
Although the API documentation for KDE is available online at [http://api.kde.org api.kde.org], it is sometimes useful to have it on your own disk, for example when you want to use [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|KDevelop]] for browsing the documentation or when you are not able to be online all the time.&lt;br /&gt;
&lt;br /&gt;
Be aware that generating the API documentation can take several hours and takes almost half a gigabyte of diskspace.&lt;br /&gt;
The generation is handled by a script in {{path|kdelibs/doc/api}}, you need &amp;lt;tt&amp;gt;doxygen&amp;lt;/tt&amp;gt; to be able to run it. &lt;br /&gt;
&lt;br /&gt;
To build the API documentation for kdelibs, type the following:&lt;br /&gt;
&amp;lt;!--'cs' and 'cb' are NOT typos!--&amp;gt;&lt;br /&gt;
 cs KDE/kdelibs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|'cs' is a bash function, click here to learn more]]&lt;br /&gt;
 $KDE_SRC/KDE/kdelibs/doc/api/doxygen.sh \&lt;br /&gt;
 --doxdatadir=$KDE_SRC/KDE/kdelibs/doc/common .&lt;br /&gt;
&lt;br /&gt;
Repeat for other modules as desired.&amp;lt;br&amp;gt;&lt;br /&gt;
 cd &amp;lt;module home&amp;gt;&lt;br /&gt;
 $KDE_SRC/KDE/kdelibs/doc/api/doxygen.sh \&lt;br /&gt;
 --doxdatadir=$KDE_SRC/KDE/kdelibs/doc/common .&lt;br /&gt;
&lt;br /&gt;
Another, even easier method involves downloading this [[Doxyfile]] to your local system. Then simply change directory to where you want to create the documentation and run&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
% doxygen /path/to/Doxyfile&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then review the file {{path|doxygen.log}} to see the doxygen errors and warnings. You'll find the actual documentation in the {{path|apidocs}} subdirectory.&lt;br /&gt;
&lt;br /&gt;
== Staying up to date ==&lt;br /&gt;
&lt;br /&gt;
In order to keep the kde4 installation up to date, each of the modules installed should be updated periodically. As Monday is the day for big changes in kdelibs, Tuesday may be the best day to do this. For each module checked out, run &amp;lt;tt&amp;gt;svn up&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
cs kdesupport # cs is not a typo&lt;br /&gt;
svn up&lt;br /&gt;
cb # cb is not a typo&lt;br /&gt;
make -j2 VERBOSE=1 &amp;amp;&amp;amp; make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing a subset of a module ==&lt;br /&gt;
&lt;br /&gt;
Many modules in KDE contain a large number of programs which could take a long time to download and compile. In cases where you want to work only on a particular program or programs in a module, it is possible to download and compile particular folders. In some cases, certain folders are required for any build of the module. This is determined in the CMakeLists.txt file of the module. For example the [http://websvn.kde.org/trunk/KDE/kdegames/CMakeLists.txt?view=markup kdegames CMakeLists.txt file] lists:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_subdirectory(libkdegames)&lt;br /&gt;
add_subdirectory(libkmahjongg)&lt;br /&gt;
&lt;br /&gt;
macro_optional_add_subdirectory(doc)&lt;br /&gt;
macro_optional_add_subdirectory(lskat)&lt;br /&gt;
macro_optional_add_subdirectory(katomic)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, the libkdegames and libkmahjongg directories are required to build any of kdegames. The cmake directory will also usually be required. All the other directories (doc, katomic etc) are optional. They will be built if present on your machine. In this example, we build kmahjongg and kbattleship:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
cs KDE&lt;br /&gt;
svn co -N kdegames # The -N switch performs a non-recursive checkout&lt;br /&gt;
cd kdegames&lt;br /&gt;
svn up libkdegames # Get required directories&lt;br /&gt;
svn up libkmahjongg&lt;br /&gt;
svn up cmake&lt;br /&gt;
svn up kbattleship # Get optional directories&lt;br /&gt;
svn up kmahjongg&lt;br /&gt;
cmakekde &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== General troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
What can happen over time, after some &amp;lt;tt&amp;gt;svn up&amp;lt;/tt&amp;gt; commands, is that some of the tools used in the KDE build chain change their output format. For example, &amp;lt;tt&amp;gt;kcfg&amp;lt;/tt&amp;gt; files are read by &amp;lt;tt&amp;gt;kconfig_compiler&amp;lt;/tt&amp;gt; to produce configuration dialogs. CMake cannot detect those changes, and the compilation might fail. A workaround is to always force a re-generation of all such files:&lt;br /&gt;
 find $KDE_SRC/KDE/kdebase -name &amp;quot;*.kcfg&amp;quot; | xargs touch&lt;br /&gt;
The same applies to &amp;lt;tt&amp;gt;ui&amp;lt;/tt&amp;gt; files as produced by Qt designer.&lt;br /&gt;
&lt;br /&gt;
== Success! ==&lt;br /&gt;
&lt;br /&gt;
You are now ready to start building other svn modules in the same fashion as you built kdebase, running and testing KDE4 or writing your own patches and applications.&lt;br /&gt;
&lt;br /&gt;
See the [[Getting Started/Set up KDE 4 for development|Set up KDE 4 for development]] tutorial for how to start KDE 4 applications and how to use KDevelop to work on them.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build KDE]]&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Mwoehlke</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/KDE4</id>
		<title>Getting Started/Build/KDE4</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/KDE4"/>
				<updated>2007-10-03T15:22:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mwoehlke: Reverted edits by 60.243.234.190 (Talk); changed back to last version by Lcorbasson&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 From Source|&lt;br /&gt;
&lt;br /&gt;
pre=[[../../Sources/Anonymous_SVN|Anonymous SVN Quickstart Guide]]|&lt;br /&gt;
&lt;br /&gt;
next=[[../../Set_up_KDE_4_for_development|Set up KDE 4 for development]]|&lt;br /&gt;
&lt;br /&gt;
reading=[http://kdesvn-build.kde.org/ kdesvn-build: The KDE From Subversion Build Tool]&amp;lt;br&amp;gt;[[../../Increased_Productivity_in_KDE4_with_Scripts|Increased Productivity in KDE4 with Scripts]]&amp;lt;br&amp;gt;[[Development/Tutorials/CMake |Introduction to CMake]]&amp;lt;br&amp;gt;[[../KDE4/FreeBSD|FreeBSD notes]]&amp;lt;br&amp;gt;[[../KDE4/Mac OS X|Instructions for Mac OS X]]&amp;lt;br&amp;gt;[[../KDE4/Windows|Instructions for MS Windows]]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
This tutorial shows one way to get KDE from trunk running on Linux/BSD systems. There are also tutorials for [[/FreeBSD|FreeBSD]], [http://www.kdelibs.com/ Windows], [[/Mac OS X|Mac OS X]] and [http://solaris.kde.org/ Solaris]. Throughout the tutorial the bash shell is used.&lt;br /&gt;
&lt;br /&gt;
{{warning|Expect a higher risk of build failure '''on Mondays''' when most kdelibs changes are committed. [http://developer.kde.org/~dirk/dashboard/ Dashboard] reports unexpected breakages. You are encouraged to fix failing modules.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Required Software ==&lt;br /&gt;
&lt;br /&gt;
The following must be installed first before you can successfully complete this tutorial:&lt;br /&gt;
* gcc and g++, preferably version 4.1 or higher&lt;br /&gt;
* svn, the subversion revision control client&lt;br /&gt;
* pkg-config&lt;br /&gt;
* development libraries and headers for X11, OpenGL (mesa-common-dev and libglu1-mesa-dev), libjpeg, libpng, libungif, [http://clucene.sourceforge.net/index.php/Downloads libclucene], [http://download.librdf.org/source/ librdf], libxml2 and libxslt&lt;br /&gt;
* the &amp;lt;tt&amp;gt;makeobj&amp;lt;/tt&amp;gt; script, which is part of kdesdk. You can install it as part of kdesdk (kdesdk-scripts on Debian) or similar package, or just download it itself from [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj WebSVN]&lt;br /&gt;
* the [http://freedesktop.org/wiki/Software/shared-mime-info shared-mime-info package], which is the freedesktop MIME standard KDE is using now&lt;br /&gt;
* [http://boost.org/ boost], needed by kdebase; after compiling and/or installing boost, in order to make cmake aware about its location (FindBoost),  add boost directory (the one containing include subdirectory) to CMAKE_INCLUDE_PATH or set an environment variable called BOOST_ROOT pointing to boost directory.&lt;br /&gt;
&lt;br /&gt;
=== Ark Linux ===&lt;br /&gt;
In Ark Linux, the build dependencies you need are installed with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
apt-get install devel-core libxml-devel libxslt-devel bzip2-devel \&lt;br /&gt;
clucene-core-devel librdf-devel shared-mime-info xorg-Mesa-libGL-devel \&lt;br /&gt;
subversion boost-devel doxygen giflib-devel dbus-devel openssl-devel \&lt;br /&gt;
alsa-lib-devel kdesdk-scripts qt4-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you prefer a graphical interface, select the packages listed above in the &amp;quot;Install Software&amp;quot; tool in Mission Control.&lt;br /&gt;
&lt;br /&gt;
This includes installation of CMake, DBus and Qt - you can skip steps 5, 6 and 7.&lt;br /&gt;
&lt;br /&gt;
=== Fedora ===&lt;br /&gt;
&lt;br /&gt;
Some of the required packages for building KDE4 on Fedora 7 or higher:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
yum install clucene-core-devel libxml libxml-devel libxslt-devel \&lt;br /&gt;
dbus-devel boost-devel bzip2-devel openssl-devel alsa-lib-devel \&lt;br /&gt;
redland-devel rasqal-devel raptor-devel hspell-devel aspell-devel \&lt;br /&gt;
cups-devel xine-lib-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubuntu and Debian ===&lt;br /&gt;
&lt;br /&gt;
In Kubuntu 7.04 (Feisty) and Debian (Testing/Unstable) the build dependencies you need are installed with:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo aptitude install build-essential cdbs debhelper cmake \&lt;br /&gt;
libxml2-dev libxslt1-dev libbz2-dev libclucene-dev librdf-dev \&lt;br /&gt;
shared-mime-info libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev \&lt;br /&gt;
libxext-dev libjpeg-dev libpng-dev subversion libsm-dev libxinerama-dev \&lt;br /&gt;
libxrender-dev libfontconfig-dev libboost-dev libxcursor-dev doxygen \&lt;br /&gt;
libungif4-dev libdbus-1-dev libgpgme11-dev libssl-dev libgpgme11-dev \&lt;br /&gt;
libasound2-dev kdesdk-scripts libpth-dev libjasper-dev \&lt;br /&gt;
ssh libxine-dev libqimageblitz-dev libqimageblitz4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Kubuntu 7.10 (Gutsy) you have to add:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo aptitude install dbus-x11&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a fully functional API documentation framework you also need:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo aptitude install graphviz&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openSUSE ===&lt;br /&gt;
&lt;br /&gt;
In openSUSE 10.2 and newer, you can install packages using [http://en.opensuse.org/Zypper Zypper]:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
sudo zypper install &amp;lt;package-name&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In older releases of SUSE, you can use YaST:&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
su&lt;br /&gt;
yast