<?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=Broulik&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=Broulik&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Broulik"/>
		<updated>2013-06-19T12:15:08Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/ThemeDetails</id>
		<title>Development/Tutorials/Plasma/ThemeDetails</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/ThemeDetails"/>
				<updated>2013-06-05T14:39:34Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* Theme Location, Structure and Definition */ Added line about versioning and cache refresh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tt&amp;gt;libplasma&amp;lt;/tt&amp;gt; provides the Theme class so Plasma elements and other applications, such as KRunner, that need to graphically hint or theme interface elements. This is not a replacement for {{qt|qstyle}}, but rather provides standard elements for things such as box backgrounds.&lt;br /&gt;
&lt;br /&gt;
This allows for easy re-theming of the desktop while also keeping elements on the desktop more consistent with each other.&lt;br /&gt;
&lt;br /&gt;
See also [[Development/Tutorials/Plasma/Theme|Creating a Plasma Theme]].&lt;br /&gt;
&lt;br /&gt;
== Theme Location, Structure and Definition ==&lt;br /&gt;
Themes are stored in {{path|share/apps/desktoptheme}}. A theme is described by a .desktop file in {{path|share/apps/desktoptheme}}. The contents of which might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Oxygen&lt;br /&gt;
Comment=Theme done in the Oxygen style&lt;br /&gt;
&lt;br /&gt;
X-KDE-PluginInfo-Author=The Oxygen Project&lt;br /&gt;
X-KDE-PluginInfo-Email=kde-artists@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=default&lt;br /&gt;
X-KDE-PluginInfo-Version=pre0.1&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The X-KDE-PluginInfo-Name entry must contain the name of the subdirectory in {{path|share/apps/desktoptheme}} where the SVG files for this theme exist.&lt;br /&gt;
&lt;br /&gt;
If you do changes to SVG files in your theme, make sure to '''update the version number''' so Plasma can properly refresh its cache.&lt;br /&gt;
&lt;br /&gt;
Beneath this directory one will find the following file structure:&lt;br /&gt;
&lt;br /&gt;
* '''colors''': optional a configuration file defining a colorscheme that blends well with the images&lt;br /&gt;
* '''dialogs/''': images for dialogs&lt;br /&gt;
* '''wallpapers/''': wallpaper packages&lt;br /&gt;
* '''widgets/''': images for widgets&lt;br /&gt;
* '''opaque/''': optional directory containing images appropriate for non-compositing environments&lt;br /&gt;
* '''locolor/''': optional directory containing images appropraite for locolor (e.g. 8 bit color) environments&lt;br /&gt;
&lt;br /&gt;
== Image Access ==&lt;br /&gt;
Theme elements are accessed by path. Whether this maps to literal paths on disk or not is not guaranteed and considered an implementation detail of Plasma::Theme.&lt;br /&gt;
&lt;br /&gt;
Therefore, to access the dialog background, one might create an svg in this manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Plasma::Theme theme;&lt;br /&gt;
QSvgRenderer svg(theme.image(&amp;quot;dialogs/background&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It '''is generally recommended''' to use Plasma::Svg instead of QSvgRenderer directly, however. This is because Plasma::Svg uses caching where it can. Remember to call resize() on the Plasma::Svg before painting with it!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Plasma::Svg svg(&amp;quot;dialogs/background&amp;quot;);&lt;br /&gt;
svg.resize(size());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wallpaper Access ==&lt;br /&gt;
&lt;br /&gt;
Themes may optionally provide wallpapers to be used with the theme. These wallpapers must appear in the {{path|wallpapers/}} directory within the theme.&lt;br /&gt;
&lt;br /&gt;
A theme may also define a default wallpaper, wallpaper size and wallpaper file extension to be used in conjunction with the theme. The default wallpaper may either be installed in the standard location for wallpapers or may be shipped with the theme itself. The default wallpaper settings should appear in the theme's metadata.desktop file and contain the following entries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Wallpaper]&lt;br /&gt;
defaultWallpaperTheme=&amp;lt;name of default wallpaper package&amp;gt;&lt;br /&gt;
defaultFileSuffix=&amp;lt;wallpaper file suffix, e.g. .jpg&amp;gt;&lt;br /&gt;
defaultWidth=&amp;lt;width in pixels of default wallpaper file&amp;gt;&lt;br /&gt;
defaultHeight=&amp;lt;height in pixels of default wallpaper file&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Animations written in Javascript can be included in the {{path|animations}} directory within the theme. To learn how to create such animations and expose them in your theme, visit the [[Development/Tutorials/Plasma/JavaScript/Animations|Javascript Animations tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Reaction to Theme Changes ==&lt;br /&gt;
If you use Plasma::Svg, changes to the theme are automatically picked up. Otherwise, you can connect to the &amp;lt;tt&amp;gt;changed()&amp;lt;/tt&amp;gt; signal in the Plasma::Theme class. This signal is emitted whenever the theme is changed, which may be triggered by the user switching the theme used or system changes such as a composite manager becoming available.&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
&lt;br /&gt;
The colors file follows the standard KDE colorscheme file format and allows a theme to define what colors work best with its theme elements. The colors in this file can be edited with the default color scheme module. &lt;br /&gt;
*Make a new colorscheme using the editor in SystemSettings&amp;gt;&amp;gt;Appearance&amp;gt;&amp;gt;Colors.&lt;br /&gt;
*Save it with a unique name.&lt;br /&gt;
*Open the colorscheme in kate.&lt;br /&gt;
**Saved at /home/[user]/.kde/share/apps/color-schemes/[unique name].colors&lt;br /&gt;
*Copy everything to your plasma colors file except the &amp;quot;[ColorEffects:Disabled]&amp;quot; and &amp;quot;[ColorEffects:Inactive]&amp;quot; sections.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The most common use of the colors file is to ensure that text is readable on various backgrounds.&lt;br /&gt;
&lt;br /&gt;
Here is a list of color entries in the colors file that are currently actively used in a Plasma theme:&lt;br /&gt;
&lt;br /&gt;
* '''[Colors:Window]'''&lt;br /&gt;
** '''ForegroundNormal''' the text color applied to text on the standard background elements; maps to Theme::TextColor&lt;br /&gt;
** '''DecorationHover''' the color used for text highlighting; maps to Theme::HighlightCoor&lt;br /&gt;
** '''BackgroundNormal''' the default background color, for items that paint a background themselves, allowing them to blend in with the theme; maps to Theme::BackgroundColor&lt;br /&gt;
* '''[Colors:Button]'''&lt;br /&gt;
** '''ForegroundNormal''' the text color to use on push buttons; maps to Theme::ButtonTextColor&lt;br /&gt;
** '''BackgroundNormal''' used for hinting buttons; maps to Theme::ButtonBackgroundColor&lt;br /&gt;
** '''ForegroundActive''' color used to tint BackgroundNormal for final button hinting color&lt;br /&gt;
* '''[Colors:View]'''&lt;br /&gt;
** '''ForegroundLink''' clickable text link font color&lt;br /&gt;
** '''ForegroundVisited''' visited clickable text link font color&lt;br /&gt;
&lt;br /&gt;
Other colors in the file may be used by individual widgets or used in the future, so it doesn't hurt to provide a complete colorscheme file and is probably a safer strategy.&lt;br /&gt;
&lt;br /&gt;
Currently also used by individual widgets, which should give a good idea of additional usage patterns:&lt;br /&gt;
&lt;br /&gt;
* '''[Colors:View]'''&lt;br /&gt;
** '''ForegroundActive''' used by the digital and fuzzy clocks for the default text color, dictionary widget for results text, microblog for status update text&lt;br /&gt;
** '''ForegroundInactive''' used by the pager to draw non-active windows and frames, microblog for user names&lt;br /&gt;
** '''ForegroundNormal''' used by microblog for status update entry area background&lt;br /&gt;
&lt;br /&gt;
Note that some of these may end up folded back into Plasma::Theme properly at some point.&lt;br /&gt;
&lt;br /&gt;
== Backgrounds format==&lt;br /&gt;
All background svg's (except for desktop wallpapers) must have the following named elements, all of which will be painted at the ''native'' size (and can therefore be bitmaps), except for the center which will be scaled:&lt;br /&gt;
* '''topleft''': the top left corner&lt;br /&gt;
* '''topright''': the top right corner&lt;br /&gt;
* '''bottomleft''': the bottom left corner&lt;br /&gt;
* '''bottomright''': the bottom right corner&lt;br /&gt;
* '''top''': the top bar between the two top corners&lt;br /&gt;
* '''left''': the left bar between the two left corners&lt;br /&gt;
* '''right''': the right bar between the two right corners&lt;br /&gt;
* '''bottom''': the bottom bar between the two bottom corners&lt;br /&gt;
* '''center''': the center fill; will be scaled so should be an actual SVG element&lt;br /&gt;
&lt;br /&gt;
Some plasma components may use the above named elements with prefixes.  For example the panel placed on the left side of the screen uses the &amp;quot;west&amp;quot; prefix ('''west-topleft''', '''west-topright''', etc.).&lt;br /&gt;
&lt;br /&gt;
Additionally, the following elements can be used to control the rendering of the backgrounds:&lt;br /&gt;
&lt;br /&gt;
* '''hint-stretch-borders''': if it exists, the borders will not be tiled but rather will be stretched to fit&lt;br /&gt;
* '''hint-tile-center''': if it exists, the center will not be scaled but rather will be tiled to fit. (Optional, from 4.1 and later)&lt;br /&gt;
* '''hint-no-border-padding''':  If this element exists, padding will not be added for the borders, and content will therefore be able to use the entire area (inclusive borders).&lt;br /&gt;
* '''hint-apply-color-scheme''':  If this element exists, the svg will be colorized using the color scheme colors.  Colorization is applied at 100%, and tapers off on either side, of an HSV color value/intensity of 127. (Optional, From KDE 4.1 and later)&lt;br /&gt;
* '''current-color-scheme''': If a style element with this id exists it is replaced by a css-style with colors of the current colorscheme. See below for details. (Optional, From KDE 4.6 and later)&lt;br /&gt;
* '''[prefix]-hint-[direction]-margin''': Use this optional hints if you want different margins than the borders size. The [prefix]- part is optional and identifies the prefix of the panel you want to specify the margins. [direction] can be either top, bottom, left or right and indicates the border you want to configure. For top and bottom margins the height of these hints are used, for left and right margins the width. (Optional, From KDE 4.2 and later)&lt;br /&gt;
* '''[prefix]-hint-compose-over-border''': if this element is resent, the center element will be drawn with the same size as the total image, composed under the borders and shaped with the alpha mask frame, that has to be present in order to make work this hint(Optional, from KDE 4.5)&lt;br /&gt;
&lt;br /&gt;
From KDE 4.3 can exists an element called overlay (or prefix-overlay if to be appled to a frame with a different prefix) it will be rendered over the frame as a filigrane effects, with the rules given from the following mutually exclusive hints:&lt;br /&gt;
* '''hint-overlay-random-pos''' it will be put at a random position, this works just for applet backgrounds&lt;br /&gt;
* '''hint-overlay-tile''' tile the overlay&lt;br /&gt;
* '''hint-overlay-stretch''' the overlay will be stretched&lt;br /&gt;
* '''hint-overlay-pos-right''' align the overlay at right of the background rather than to the left (from KDE 4.4)&lt;br /&gt;
* '''hint-overlay-pos-bottom''' align the overlay at bottom of the background rather than to the top (from KDE 4.4)&lt;br /&gt;
&lt;br /&gt;
=== Using system colors ===&lt;br /&gt;
It is possible to apply colors from the color scheme to a graphic. A very easy way to reach this is by adding an element with the id '''hint-apply-color-scheme''' to the svg. In this case the rendered graphic gets converted to monochrome and colorized by the window background color.&lt;br /&gt;
&lt;br /&gt;
A more flexible solution is available since KDE 4.6 by using css-styling. For this to work the svg must have a style-element with the id '''current-color-scheme'''. Before the graphic is rendered this element gets replaced by a style containing classes where the color attribute is set to the corresponding system color. Currently the following classes are defined:&lt;br /&gt;
* ColorScheme-Text&lt;br /&gt;
* ColorScheme-Background&lt;br /&gt;
* ColorScheme-ViewText&lt;br /&gt;
* ColorScheme-ViewBackground&lt;br /&gt;
* ColorScheme-ViewHover&lt;br /&gt;
* ColorScheme-ViewFocus&lt;br /&gt;
* ColorScheme-ButtonText&lt;br /&gt;
* ColorScheme-ButtonBackground&lt;br /&gt;
* ColorScheme-ButtonHover&lt;br /&gt;
* ColorScheme-ButtonFocus&lt;br /&gt;
&lt;br /&gt;
In order to apply a color from a class to an element, its fill or stroke attribute must be '''currentColor''' and of course the name of the wanted class has to be in the class-attribute. Special attention is needed on gradients, as neither the gradient-tags themself nor the stop-tags accept classes. To still get the wanted result one can put a g-tag around them and apply the class to this.&lt;br /&gt;
&lt;br /&gt;
'''Hint:''' If you want to use this new feature and still be able to use the graphics on older versions, you can set the color for ColorScheme-Background to #7f7f7f and place a &amp;lt;tt&amp;gt;&amp;lt;rect id=&amp;quot;hint-apply-color-scheme&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; fill=&amp;quot;none&amp;quot; /&amp;gt;&amp;lt;/tt&amp;gt; below your css-code but before the closing &amp;lt;tt&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't want to bother with the source code of your graphics, you can use the tool svgmod for easily applying system colors. See  [https://projects.kde.org/projects/playground/devtools/svgmod here].&lt;br /&gt;
&lt;br /&gt;
== Current Theme Elements ==&lt;br /&gt;
&lt;br /&gt;
Themes get installed to {{path|share/apps/desktoptheme}}. Each theme is stored in a subdirectory with the following file structure&lt;br /&gt;
&lt;br /&gt;
*'''/dialogs''': elements for dialogs&lt;br /&gt;
**'''/background.svg''': generic dialog background used by the sceensaver password dialog, etc. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
*** '''hint-left-shadow''': from KDE 4.10: optional hints that say how big the shadow is&lt;br /&gt;
*** '''hint-top-shadow'''&lt;br /&gt;
*** '''hint-right-shadow'''&lt;br /&gt;
*** '''hint-bottom-shadow'''&lt;br /&gt;
**'''/krunner.svg''': dialog background, used by the Run Command. Please note, that this is used only when &amp;lt;menuchoice&amp;gt;Positioning&amp;lt;/menuchoice&amp;gt; is set to &amp;lt;menuchoice&amp;gt;Free floating window&amp;lt;/menuchoice&amp;gt;, '''not''' &amp;lt;menuchoice&amp;gt;Top edge of screen&amp;lt;/menuchoice&amp;gt; (which is default). See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
**'''/shutdowndlg.svg''': background and buttons for the log out dialog&lt;br /&gt;
***''background'': background for the logout dialog&lt;br /&gt;
***''button-normal'': button background&lt;br /&gt;
***''button-hover'': button background on cursor hover&lt;br /&gt;
***''button-small-normal'': small button background&lt;br /&gt;
***''button-small-hover'': small button background on cursor hover&lt;br /&gt;
** '''/kickoff.svgz''' : background for the kickoff launcher, needs a frame, with the prefix 'plain'&lt;br /&gt;
*'''/widgets''': generic desktop widget background&lt;br /&gt;
** '''/action-overlays.svgz''': overlays for icons to indicate actions (since KDE 4.4)&lt;br /&gt;
*** ''add-normal'': icon used to add the parent icon to a selection of elements (used for instance in folderview), normal state, there are also ''add-hover'' and ''add-pressed''&lt;br /&gt;
*** ''remove-normal'': icon used to remove the parent icon to a selection of elements, normal state, there are also ''remove-hover'' and ''remove-pressed''&lt;br /&gt;
*** ''open-normal'': icon used to initialize tooltip on folderview widget, there are also ''open-hover'' and ''open-pressed''&lt;br /&gt;
** '''/analog_meter.svg''': an analog gauge widget.&lt;br /&gt;
***''background'': the body of the analog instrument&lt;br /&gt;
***''foreground'': the pin where the hand rotates&lt;br /&gt;
***''pointer'': the hand of the instrument&lt;br /&gt;
***''rotateminmax'': how much the hand can rotate, the width is the maximum angle in degrees the height the minimum angle&lt;br /&gt;
***''label0'': the rect for the first label&lt;br /&gt;
***''label1'': the rect for the second label&lt;br /&gt;
**'''/arrows.svg''': arrows that match the theme. Four elements should exist in this svg: up-arrow, down-arrow, left-arrow, right-arrow.&lt;br /&gt;
**'''/background.svg''': a background image for plasmoids. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
*** '''hint-left-shadow''': from KDE 4.10: optional hints that say how big the shadow is&lt;br /&gt;
*** '''hint-top-shadow'''&lt;br /&gt;
*** '''hint-right-shadow'''&lt;br /&gt;
*** '''hint-bottom-shadow'''&lt;br /&gt;
** '''/bar_meter_horizontal.svg''': an horizontal meter like a progressbar&lt;br /&gt;
***''background'': background of the progressbar&lt;br /&gt;
***''foreground'': overlay in the foreground of the progressbar&lt;br /&gt;
***''bar'': the progressbar itself&lt;br /&gt;
***''background'': a 9 pieces svg with the ''background'' prefix, it replaces the background element if available (KDE 4.2 and later)&lt;br /&gt;
***''hint-stretched-bar'': make the progressbar background element stretched rather than tiled (KDE 4.2 and later)&lt;br /&gt;
***''bar-active'' and ''bar-inactive'': 9 pieces svgs with the ''bar-active'' and ''bar-inactive'' prefixes, they replace the bar element when available, they will be drawn tiled (KDE4.2 and later)&lt;br /&gt;
***''label0'', ''label1'' and ''label2'': rects for 3 labels to be placed around&lt;br /&gt;
** '''/bar_meter_vertical.svg''': a vertical meter like a vertical progressbar. It has the same format of ''/bar_meter_horizontal.svg''&lt;br /&gt;
** '''/branding.svgz''': a little KDE logo that can be customized by distributors as a branding element. Contains a single element called ''brilliant''&lt;br /&gt;
** '''/busywidget.svgz''': Used to indicate a busy state, it's a circular image that will be animated with a rotation.&lt;br /&gt;
*** ''busywidget'': the main spinner&lt;br /&gt;
*** ''paused'': the paused state&lt;br /&gt;
** '''/button.svg''': graphics elements for a button widget (KDE 4.2 and later), it needs the followin prefixes:&lt;br /&gt;
*** ''normal'' normal button&lt;br /&gt;
*** ''pressed'' pressed button &lt;br /&gt;
*** ''active'' button under mouse. Active can have ticker borders that would be rendered outside the widget. It's useful to do a glowing effect DEPRECATED: use ''hover'' instead&lt;br /&gt;
*** ''hover'' element that will be in the background of the widget, will act as a border (useful for glow effects) since KDE 4.5&lt;br /&gt;
*** ''shadow'' a shadow for the button, can be bigger than the button itself since KDE 4.5&lt;br /&gt;
*** ''focus'' keyboard focus rectangle superimposed to the button graphics&lt;br /&gt;
** '''/calendar.svg''': graphics for a calendar widget, since 4.3&lt;br /&gt;
*** ''weeksColumn'': background for the vertical column with week numbers in it.&lt;br /&gt;
*** ''weekDayHeader'': background for the row with week day names in it.&lt;br /&gt;
*** ''active'': background for the day numbers of the current month.&lt;br /&gt;
*** ''inactive'': background for the day numbers of the next and previous months.&lt;br /&gt;
*** ''hoverHighlight'': background for the day under the mouse cursor.&lt;br /&gt;
*** ''today'': border for the current day cell.&lt;br /&gt;
*** ''selected'': border for the selected day cell.&lt;br /&gt;
*** ''red'': border for holidays on sundays&lt;br /&gt;
*** ''green'': border for holidays during week days &lt;br /&gt;
**'''/clock.svg''': an analog clock face. it must have the following named elements:&lt;br /&gt;
*** ''ClockFace'': the background of the clock, usually containing the numbers, etc&lt;br /&gt;
*** ''HourHand'': the hour hand, pointing down in the svg&lt;br /&gt;
*** ''MinuteHand'': the minute hand, pointing down in the svg&lt;br /&gt;
*** ''SecondHand'': the second hand, pointing down in the svg&lt;br /&gt;
*** ''HourHandShadow'', ''MinuteHandShadow'' and ''SecondHandShadow'': drop shadows for the hands (optional, KDE 4.1 and later) &lt;br /&gt;
*** ''HandCenterScrew'': the &amp;quot;pin&amp;quot; that holds the hands together in the center&lt;br /&gt;
*** ''Glass'': a final overlay which allows for things such as the appearance of glass&lt;br /&gt;
*** ''hint-square-clock'': if present the shape of the clock will be square rather than round&lt;br /&gt;
*** Note: In the svg, the Hand elements must be placed in a position that indicates the time 6:30:30. The y-axis position of the Hand elements with respect to the center of ClockFace is the one they will have in the rendered applet. The x-axis position of the Hand elements does not matter. The Shadow elements should have the same y-axis position as their Hand element counterpart.&lt;br /&gt;
** '''/configuration-icons''': it's a set of simple icons that are meant to be shortcuts for configuration actions (KDE 4.2 and later). Must contain the following elements:&lt;br /&gt;
*** ''close'': a close icon&lt;br /&gt;
*** ''configure'': a setup action&lt;br /&gt;
*** ''move''&lt;br /&gt;
*** ''resize-vertical'': resize in the y axis&lt;br /&gt;
*** ''resize-horizontal'': resize in the x axis&lt;br /&gt;
*** ''size-diagonal-tl2br'': resize diagonal, usually an arrow from top-left to bottom-right&lt;br /&gt;
*** ''size-diagonal-tr2bl'': resize diagonal, usually an arrow from top-right to bottom-left&lt;br /&gt;
*** ''rotate''&lt;br /&gt;
*** ''help''&lt;br /&gt;
*** ''maximize''&lt;br /&gt;
*** ''unmaximize''&lt;br /&gt;
*** ''collapse'': set something in a minimized, collapsed status&lt;br /&gt;
*** ''restore'': restore from ''collapse'' status&lt;br /&gt;
*** ''status'': refers to a status of something, logging or system monitoring in general&lt;br /&gt;
*** ''retourn-to-source'': make detached extender items return to their owner applet&lt;br /&gt;
*** ''add'' and ''remove'': specular actions, adding and removing for instance an item from a list&lt;br /&gt;
*** ''delete'': the (potentially dangerous) action of deleting something&lt;br /&gt;
** '''/containment-controls.svg''': handles for the control used to resize the panel (KDE 4.1 and later).   The following elements are required.&lt;br /&gt;
*** ''maxslider'' maximum size slider, south position&lt;br /&gt;
*** ''minslider'' minimum size slider, south position&lt;br /&gt;
*** ''offsetslider'' positioning slider, south position&lt;br /&gt;
*** Each of the above elements must be present with ''north'', ''south'', ''east'' and ''west'' prefixes for each panel position.&lt;br /&gt;
*** There are also four backgrounds (north, south, east and west orientations) for the ruler widget itself in the &amp;quot;Backgrounds format&amp;quot;, since the width of the widget is 100% the elements of left and right (or north and bottom if vertical) are not needed&lt;br /&gt;
** '''/dragger.svgz''': meant to be a generic drag handle (not currently used but available). It needs to contain the same elements as other backgrounds, see the section about backgrounds above. In addition it needs the following element:&lt;br /&gt;
*** ''hint-preferred-icon-size'': the size icons within the drag handle should get. The vertical size of the dragger is also derived from this: this size hint + the dragger's margins.&lt;br /&gt;
** '''/extender-background.svgz''': background for extenders. It needs the same elements as other backgrounds.&lt;br /&gt;
** '''/extender-dragger.svgz''': Same as dragger.svgz. Drag handle for extenders (like the notification applet, KDE 4.2 and later). It needs to contain the same elements as other backgrounds, see the section about backgrounds above. In addition it needs the following element:&lt;br /&gt;
*** ''hint-preferred-icon-size'': the size icons within the drag handle should get. The vertical size of the dragger is also derived from this: this size hint + the dragger's margins.&lt;br /&gt;
*** Since KDE 4.6 it contains two optional prefixes: ''grouped'' for extender items contained in extender groups and ''root'' for root extender items. The version without prefix must still exist and is still used for extenders that don't have a stacked appearance.&lt;br /&gt;
** '''/frame.svgz''' : a generic frame, used mostly for widget containers, to visually group widgets together. It must contain the following prefixes, for different 3d looks:&lt;br /&gt;
*** ''sunken''&lt;br /&gt;
*** ''plain''&lt;br /&gt;
*** ''raised''&lt;br /&gt;
** '''/glowbar.svgz''' : a frame without a prefix, it represents a glow, it's used for instance in Plasma Desktop for the panel autohide unhide hint.&lt;br /&gt;
** '''/identiconshapes.svgz''' : shapes for the auto-generation of the  activity icons, they must be named from ''Shape1'' to ''Shape32''. Since KDE SC 4.5&lt;br /&gt;
** '''/line.svgz''' : a simple line use to separate items in layouts, containe ''vertical-line'' and ''horizzontal-line'' elements (since KDE 4.3)&lt;br /&gt;
** '''/lineedit.svgz''': it's a framesvg, used to style line edits, spinboxes and other similar fields (since KDE 4.4) it must have the following prefixes&lt;br /&gt;
*** ''base'': the background of the line edit&lt;br /&gt;
*** ''focus'': will be drawn outside base, when the line edit has input focus&lt;br /&gt;
*** ''hover'': will be drawn outside base, when the line edit is under the mouse&lt;br /&gt;
** '''/listitem.svgz''': used for &amp;quot;opened&amp;quot;/clicked notifications (since KDE 4.10)  &lt;br /&gt;
** '''/monitor.svgz''' : represents a screen, it's used in places such as the wallpaper config dialog. It contains a frame without prefixes and the following extra elements:&lt;br /&gt;
*** ''glass'' : glass reflection effect over the screen&lt;br /&gt;
*** ''base'' : a stand for the monitor&lt;br /&gt;
** '''/pager.svgz''' : graphic elements for the little screens of the pager, it must have 3 frames with the following prefixes:&lt;br /&gt;
*** ''normal'' : all virtual desktops&lt;br /&gt;
*** ''active'' : active virtual desktop&lt;br /&gt;
*** ''hover'' : virtual desktop under mouse&lt;br /&gt;
**'''/panel-background.svg''': the background image for panels.&lt;br /&gt;
*** If you want to create different background for panels located at the top, bottom, left or right, then also create sets of background elements with the following prefixes: ''north'', ''south'', ''west'' and ''east'' respectively. For example the center element of the left positioned panel's background should be named ''west-center''. (KDE 4.1 and later)&lt;br /&gt;
*** When the panel is not 100% wide/tall the north, south etc. prefixes becomes ''north-mini'', ''south-mini'' etc. (KDE 4.2 and later). Please note that if KRunner &amp;lt;menuchoice&amp;gt;Positioning&amp;lt;/menuchoice&amp;gt; is set to &amp;lt;menuchoice&amp;gt;Top edge of screen&amp;lt;/menuchoice&amp;gt; (which is default), then KDE treats it as not 100% wide north panel.&lt;br /&gt;
*** All prefixes fallback to a no prefix version when not available&lt;br /&gt;
*** if a prefix called ''shadow'' is available, it will be used as a drop shadow for the panel when compositing is available.&lt;br /&gt;
** '''/plot-background.svg''': a background for plotter (graph) widgets, such as the plots in ksysguard&lt;br /&gt;
** '''/scrollbar.svgz''' : the classical ''elevator'' scrollbar, must have the following elemens : ''arrow-up'', ''mouseover-arrow-up'', ''sunken-arrow-up'', same 3 elements for ''arrow-left'', ''arrow-right'' and ''arrow-bottom''. From KDE 4.10 it can have an element called ''hint-scrollbar-size'' that says at what size the scrollbar should be rendered (width if vertical, height if horizontal). It must also have frames with the following prefixes:&lt;br /&gt;
*** ''slider''&lt;br /&gt;
*** ''mouseover-slider''&lt;br /&gt;
*** ''sunken-slider''&lt;br /&gt;
*** ''background-vertical''&lt;br /&gt;
*** ''background-horizontal''&lt;br /&gt;
** '''/scrollwidget''': used by Plasma::ScrollWidget, it has a single prefix (KDE4.4 and later)&lt;br /&gt;
*** ''border'': a border used when the scrollbar is enabled&lt;br /&gt;
** '''/slider.svgz''': used to theme sliders (since KDE 4.3) it must have the following elements:&lt;br /&gt;
*** ''vertical-slider-line'': the background for vertical sliders, it indicates how much the indicator can scroll&lt;br /&gt;
*** ''vertical-slider-handle'': the handle for vertical sliders&lt;br /&gt;
*** ''vertical-slider-focus'': background for the handle when it has input focus (since KDE 4.4)&lt;br /&gt;
*** ''vertical-slider-hover'': background for the handle when it is under the mouse (since KDE 4.4)&lt;br /&gt;
*** ''groove'': groove for the slider (since KDE 4.8 replaces *-slider-line)&lt;br /&gt;
*** ''groove-highlight'': highlight part of the groove (since KDE 4.8 replaces *-slider-line)&lt;br /&gt;
*** ''horizontal-slider-line'': the background for horizontal sliders&lt;br /&gt;
*** ''horizontal-slider-handle'': the handle for horizontal sliders&lt;br /&gt;
*** ''horizontal-slider-focus'': background for the handle when it has input focus (since KDE 4.4)&lt;br /&gt;
*** ''horizontal-slider-hover'': background for the handle when it is under the mouse (since KDE 4.4)&lt;br /&gt;
** '''/systemtray.svg''': a background for the system tray (KDE 4.1 and later). See the section on backgrounds above for information on the required elements in this file. Since KDE 4.2 it contains also the '''lastelements''' prefix, used for elements in the last position of the systray and the four elements '''expander-right''' up, left and bottom, used for the icon that shows/hides the other systray icons. Since KDE 4.3 there are the '''horizontal-separator''' and '''vertical-separator''' used as a border to separe the last elements.&lt;br /&gt;
**'''/tasks.svg''': task item backgrounds for tasks (KDE 4.1 and later). See the section on backgrounds above for information on the required elements in this file.  The following element prefixes are required:&lt;br /&gt;
*** ''focus'': background of focused task item&lt;br /&gt;
*** ''hover'': background when the pointer hovers the task item. From KDE 4.2 focus and hover can have ticker borders that will be painted outside the task button, useful to make a glow effect.&lt;br /&gt;
*** ''attention'': background when tasks item is trying to get attention&lt;br /&gt;
*** ''normal'': background of normal, unfocused task item&lt;br /&gt;
*** ''minimized'': background for minimized tasks&lt;br /&gt;
*** The svg should contain elements of all five prefixes, if a prefix is missing that element will be not be drawn.&lt;br /&gt;
** '''/toolbox.svgz''' : graphical elements for the desktop toolbox, it must have a frame without prefixes plus those following elements:&lt;br /&gt;
*** ''desktop-northwest'', ''desktop-northeast'', ''desktop-southwest'', ''desktop-southeast'': the 4 corners for the desktop toolbox.&lt;br /&gt;
*** ''panel-north'', ''panel-south'', ''panel-west'', ''panel-east'' : elements for the panel toolbox.&lt;br /&gt;
** '''/tooltip.svg''': background for tooltips used for instance in the taskbar and with icons. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
** '''/translucentbackground.svg''': a standard background image for plasmoids that for their nature are bigger and with not much text. In this case a translucent background looks better. It needs the same elements of background.svg in it. If this file is not present, the plasmoids that uses this will use background.svg instead.&lt;br /&gt;
** '''/media-delegate.svgz''': intended to be used as delegate for media types: as KDE 4.7 contains a single prefix: picture.&lt;br /&gt;
** '''/viewitem.svgz''': controls the background look of selections (results in KRunner, networks in network applet), it can have 4 elements of 9 parts each with prefix ''normal'', ''hover'', ''selected'', ''selected+hover''.&lt;br /&gt;
** '''/toolbar.svgz''': used in the ToolBar QML component, can be used in custom applications in a similar way, contains a single frame without prefix. Since KDE 4.8.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Opaque&amp;quot; folder==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/opaque}} the same hierarchy can be found: when compositing is disabled files in this folder are preferred over the corresponding ones listed above. Only background for top level windows are appropriate to go in this folder.&lt;br /&gt;
&lt;br /&gt;
Since top-level windows will be shaped according to the transparency of the svg and window shapes don't support alpha-blending, if the svg has rounded borders they should have a shape that don't require antialiasing, like the following example.&lt;br /&gt;
&lt;br /&gt;
[[Image:No_composite_plasma_svg.jpg]]&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;translucent&amp;quot; folder ==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/translucent}} the same hierarchy is used: when the KWin ''blurbehind'' effect is enabled the file under this folder will be used if found. As the opaque folder, only elements that will be rendered as window backgrounds should be present in this folder, so the dialogs folder, plus the panel and tooltip backgrounds. When is possible to blur the background of the window, the graphics can be more transparent, keeping the window text readable.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;icons&amp;quot; folder==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/icons}}, SVG files that contain scalable icons for use with application status items (e.g. icons in the system tray) are contained.&lt;br /&gt;
&lt;br /&gt;
The default theme contains the following SVGs:&lt;br /&gt;
&lt;br /&gt;
* audio.svgz&lt;br /&gt;
* battery.svgz&lt;br /&gt;
* device.svgz&lt;br /&gt;
* klipper.svgz&lt;br /&gt;
* kwalletmanager.svgz&lt;br /&gt;
* nepomuk.svgz&lt;br /&gt;
* network.svgz&lt;br /&gt;
* notification.svgz&lt;br /&gt;
* preferences.svgz&lt;br /&gt;
* wallet.svgz&lt;br /&gt;
&lt;br /&gt;
The files are named the same as the matching icon theme names or their prefix (both work, which is why &amp;quot;audio&amp;quot; matches for mixers, e.g.). Other icons can be added as long as they match the names of requested icons by the application status items.&lt;br /&gt;
&lt;br /&gt;
== Theming Application Icons in the Systemtray ==&lt;br /&gt;
&lt;br /&gt;
Applications that use a function called setIconByName can have their icon in the system tray themed. Applications can have more than one icon (for example Konversation flashes between two different icons to hilight when your username is mentioned and Kpackagekit changes it's icon depending on the status of it's upgrade / installs). Theming these icons requires firstly that an application has been coded to use setIconByName, and secondly that you call your svg object by the same name (use ctrl+shift+o in Inkscape). Then you can just put your .svgz in {{path|share/apps/desktoptheme/default/icons}} (changing default to your theme folder name).&lt;br /&gt;
&lt;br /&gt;
The following is an attempt to list known icon names that may be themed by this method. Please add any other known icon names and the object ID here to help other people making themes:&lt;br /&gt;
&lt;br /&gt;
* Amarok&lt;br /&gt;
** filename: '''amarok.svgz'''&lt;br /&gt;
*** ID: '''amarok'''&lt;br /&gt;
* audio (for kmix, veromix, a.o.)&lt;br /&gt;
** filename: '''audio.svgz'''&lt;br /&gt;
*** volume muted ID: '''audio-volume-muted'''&lt;br /&gt;
*** volume low ID: '''audio-volume-low'''&lt;br /&gt;
*** volume medium ID: '''audio-volume-medium'''&lt;br /&gt;
*** volume high ID: '''audio-volume-high'''&lt;br /&gt;
* battery&lt;br /&gt;
** filename: '''battery.svgz'''&lt;br /&gt;
*** battery (always shown object) ID: '''Battery'''&lt;br /&gt;
*** on powerline ID: '''AcAdapter'''&lt;br /&gt;
*** no battery found ID: '''Unavailable'''&lt;br /&gt;
*** battery on 10% ID: '''Fill10''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 20% ID: '''Fill20'''&lt;br /&gt;
*** battery on 30% ID: '''Fill30''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 40% ID: '''Fill40'''&lt;br /&gt;
*** battery on 50% ID: '''Fill50''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 60% ID: '''Fill60'''&lt;br /&gt;
*** battery on 70% ID: '''Fill70''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 80% ID: '''Fill80'''&lt;br /&gt;
*** battery on 90% ID: '''Fill90''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 100% ID: '''Fill100'''&lt;br /&gt;
* device (the device-notifier)&lt;br /&gt;
** filename: '''device.svgz'''&lt;br /&gt;
*** ID: '''device-notifier'''&lt;br /&gt;
* juk&lt;br /&gt;
** filename: '''juk.svgz'''&lt;br /&gt;
*** ID: '''juk'''&lt;br /&gt;
* KGet&lt;br /&gt;
** filename: '''kget.svgz'''&lt;br /&gt;
*** ID: '''kget'''&lt;br /&gt;
* Klipper&lt;br /&gt;
** filename: '''klipper.svgz'''&lt;br /&gt;
*** ID: '''klipper'''&lt;br /&gt;
* Konversation&lt;br /&gt;
** filename: '''konversation'''&lt;br /&gt;
*** ID: '''konversation'''&lt;br /&gt;
** filename: '''konv_message.svgz''' (new incomming message)&lt;br /&gt;
*** ID: '''konv_message'''&lt;br /&gt;
* Kopete&lt;br /&gt;
** filename: '''kopete.svgz'''&lt;br /&gt;
*** öffline ID: '''kopete-offline'''&lt;br /&gt;
*** online ID: '''kopete'''&lt;br /&gt;
*** other statuses are not supported atm&lt;br /&gt;
* Korgac&lt;br /&gt;
** filename: '''korgac.svgz'''&lt;br /&gt;
*** ID: '''korgac'''&lt;br /&gt;
* Ktorrent&lt;br /&gt;
** filename: '''ktorrent.svgz'''&lt;br /&gt;
*** ID: '''ktorrent'''&lt;br /&gt;
* message-indicator&lt;br /&gt;
** filename: '''message-indicator.svgz'''&lt;br /&gt;
*** standard ID: '''normal'''&lt;br /&gt;
*** new message ID: '''new'''&lt;br /&gt;
* Nepomuk&lt;br /&gt;
** filename: '''nepomuk.svgz'''&lt;br /&gt;
*** ID: '''nepomuk'''&lt;br /&gt;
* Network-management-plasmoid&lt;br /&gt;
** filename: '''network.svgz'''&lt;br /&gt;
*** wired online ID: '''network-wired-activated'''&lt;br /&gt;
*** wired offline ID: '''network-wired'''&lt;br /&gt;
*** wless offline ID: '''network-wireless-0'''&lt;br /&gt;
*** wless on 20% ID: '''network-wireless-20'''&lt;br /&gt;
*** wless on 25% ID: '''network-wireless-25'''&lt;br /&gt;
*** wless on 40% ID: '''network-wireless-40'''&lt;br /&gt;
*** wless on 50% ID: '''network-wireless-50'''&lt;br /&gt;
*** wless on 60% ID: '''network-wireless-60'''&lt;br /&gt;
*** wless on 75% ID: '''network-wireless-75'''&lt;br /&gt;
*** wless on 80% ID: '''network-wireless-80'''&lt;br /&gt;
*** wless on 100% ID: '''network-wireless-100'''&lt;br /&gt;
*** mobile broadband on 0% ID: '''network-mobile-0'''&lt;br /&gt;
*** mobile broadband on 20% ID: '''network-mobile-20'''&lt;br /&gt;
*** mobile broadband on 40% ID: '''network-mobile-40'''&lt;br /&gt;
*** mobile broadband on 60% ID: '''network-mobile-60'''&lt;br /&gt;
*** mobile broadband on 80% ID: '''network-mobile-80'''&lt;br /&gt;
*** mobile broadband on 100% ID: '''network-mobile-100'''&lt;br /&gt;
*** mobile broadband with access technology on 0% ID: '''network-mobile-0-technology''' (''technology'' can be: ''none, gprs, edge, umts, hsdpa, hsupa, hspa, lte'')&lt;br /&gt;
* preferences (some apps like bluedevil, krandrtray, text-to-speech)&lt;br /&gt;
** filename: '''preferences.svgz'''&lt;br /&gt;
*** bluedevil online ID: '''preferences-system-bluetooth'''&lt;br /&gt;
*** bluedevil offline ID: '''preferences-system-bluetooth-inactive'''&lt;br /&gt;
*** text-to-speech ID: '''preferences-desktop-text-to-speech'''&lt;br /&gt;
*** krandrtray ID: '''preferences-desktop-display-randr'''&lt;br /&gt;
*** activity manager ID: '''preferences-activities'''&lt;br /&gt;
* Printer applet&lt;br /&gt;
** filename: '''printer.svgz'''&lt;br /&gt;
*** ID: '''printer'''&lt;br /&gt;
* Quassel IRC&lt;br /&gt;
** filename: '''quassel.svgz'''&lt;br /&gt;
*** quassel öffline ID: '''quassel_inactive'''  (&amp;quot;quassel-inactive&amp;quot; in kde 4.10)&lt;br /&gt;
*** quassel online ID: '''quassel'''&lt;br /&gt;
*** quassel new message ID: '''quassel_message''' (&amp;quot;quassel-message&amp;quot; in kde 4.10)&lt;br /&gt;
* KWallet&lt;br /&gt;
** filename: '''wallet.svgz'''&lt;br /&gt;
*** open ID: '''wallet-open'''&lt;br /&gt;
*** closed ID: '''wallet-closed'''&lt;br /&gt;
&lt;br /&gt;
At the time of writing, KDE-PIM (Kmail, Akregator etc) do not yet use setIconByName and thus aren't able to be themed this way. Reportedly, this is is coming in Kontact 2.&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/ThemeDetails</id>
		<title>Development/Tutorials/Plasma/ThemeDetails</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/ThemeDetails"/>
				<updated>2013-06-04T21:04:56Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* Theming Application Icons in the Systemtray */ Added theming for mobile broadband icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tt&amp;gt;libplasma&amp;lt;/tt&amp;gt; provides the Theme class so Plasma elements and other applications, such as KRunner, that need to graphically hint or theme interface elements. This is not a replacement for {{qt|qstyle}}, but rather provides standard elements for things such as box backgrounds.&lt;br /&gt;
&lt;br /&gt;
This allows for easy re-theming of the desktop while also keeping elements on the desktop more consistent with each other.&lt;br /&gt;
&lt;br /&gt;
See also [[Development/Tutorials/Plasma/Theme|Creating a Plasma Theme]].&lt;br /&gt;
&lt;br /&gt;
== Theme Location, Structure and Definition ==&lt;br /&gt;
Themes are stored in {{path|share/apps/desktoptheme}}. A theme is described by a .desktop file in {{path|share/apps/desktoptheme}}. The contents of which might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Oxygen&lt;br /&gt;
Comment=Theme done in the Oxygen style&lt;br /&gt;
&lt;br /&gt;
X-KDE-PluginInfo-Author=The Oxygen Project&lt;br /&gt;
X-KDE-PluginInfo-Email=kde-artists@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=default&lt;br /&gt;
X-KDE-PluginInfo-Version=pre0.1&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The X-KDE-PluginInfo-Name entry must contain the name of the subdirectory in {{path|share/apps/desktoptheme}} where the SVG files for this theme exist.&lt;br /&gt;
&lt;br /&gt;
Beneath this directory one will find the following file structure:&lt;br /&gt;
&lt;br /&gt;
* '''colors''': optional a configuration file defining a colorscheme that blends well with the images&lt;br /&gt;
* '''dialogs/''': images for dialogs&lt;br /&gt;
* '''wallpapers/''': wallpaper packages&lt;br /&gt;
* '''widgets/''': images for widgets&lt;br /&gt;
* '''opaque/''': optional directory containing images appropriate for non-compositing environments&lt;br /&gt;
* '''locolor/''': optional directory containing images appropraite for locolor (e.g. 8 bit color) environments&lt;br /&gt;
&lt;br /&gt;
== Image Access ==&lt;br /&gt;
Theme elements are accessed by path. Whether this maps to literal paths on disk or not is not guaranteed and considered an implementation detail of Plasma::Theme.&lt;br /&gt;
&lt;br /&gt;
Therefore, to access the dialog background, one might create an svg in this manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Plasma::Theme theme;&lt;br /&gt;
QSvgRenderer svg(theme.image(&amp;quot;dialogs/background&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It '''is generally recommended''' to use Plasma::Svg instead of QSvgRenderer directly, however. This is because Plasma::Svg uses caching where it can. Remember to call resize() on the Plasma::Svg before painting with it!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Plasma::Svg svg(&amp;quot;dialogs/background&amp;quot;);&lt;br /&gt;
svg.resize(size());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wallpaper Access ==&lt;br /&gt;
&lt;br /&gt;
Themes may optionally provide wallpapers to be used with the theme. These wallpapers must appear in the {{path|wallpapers/}} directory within the theme.&lt;br /&gt;
&lt;br /&gt;
A theme may also define a default wallpaper, wallpaper size and wallpaper file extension to be used in conjunction with the theme. The default wallpaper may either be installed in the standard location for wallpapers or may be shipped with the theme itself. The default wallpaper settings should appear in the theme's metadata.desktop file and contain the following entries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Wallpaper]&lt;br /&gt;
defaultWallpaperTheme=&amp;lt;name of default wallpaper package&amp;gt;&lt;br /&gt;
defaultFileSuffix=&amp;lt;wallpaper file suffix, e.g. .jpg&amp;gt;&lt;br /&gt;
defaultWidth=&amp;lt;width in pixels of default wallpaper file&amp;gt;&lt;br /&gt;
defaultHeight=&amp;lt;height in pixels of default wallpaper file&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Animations written in Javascript can be included in the {{path|animations}} directory within the theme. To learn how to create such animations and expose them in your theme, visit the [[Development/Tutorials/Plasma/JavaScript/Animations|Javascript Animations tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Reaction to Theme Changes ==&lt;br /&gt;
If you use Plasma::Svg, changes to the theme are automatically picked up. Otherwise, you can connect to the &amp;lt;tt&amp;gt;changed()&amp;lt;/tt&amp;gt; signal in the Plasma::Theme class. This signal is emitted whenever the theme is changed, which may be triggered by the user switching the theme used or system changes such as a composite manager becoming available.&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
&lt;br /&gt;
The colors file follows the standard KDE colorscheme file format and allows a theme to define what colors work best with its theme elements. The colors in this file can be edited with the default color scheme module. &lt;br /&gt;
*Make a new colorscheme using the editor in SystemSettings&amp;gt;&amp;gt;Appearance&amp;gt;&amp;gt;Colors.&lt;br /&gt;
*Save it with a unique name.&lt;br /&gt;
*Open the colorscheme in kate.&lt;br /&gt;
**Saved at /home/[user]/.kde/share/apps/color-schemes/[unique name].colors&lt;br /&gt;
*Copy everything to your plasma colors file except the &amp;quot;[ColorEffects:Disabled]&amp;quot; and &amp;quot;[ColorEffects:Inactive]&amp;quot; sections.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The most common use of the colors file is to ensure that text is readable on various backgrounds.&lt;br /&gt;
&lt;br /&gt;
Here is a list of color entries in the colors file that are currently actively used in a Plasma theme:&lt;br /&gt;
&lt;br /&gt;
* '''[Colors:Window]'''&lt;br /&gt;
** '''ForegroundNormal''' the text color applied to text on the standard background elements; maps to Theme::TextColor&lt;br /&gt;
** '''DecorationHover''' the color used for text highlighting; maps to Theme::HighlightCoor&lt;br /&gt;
** '''BackgroundNormal''' the default background color, for items that paint a background themselves, allowing them to blend in with the theme; maps to Theme::BackgroundColor&lt;br /&gt;
* '''[Colors:Button]'''&lt;br /&gt;
** '''ForegroundNormal''' the text color to use on push buttons; maps to Theme::ButtonTextColor&lt;br /&gt;
** '''BackgroundNormal''' used for hinting buttons; maps to Theme::ButtonBackgroundColor&lt;br /&gt;
** '''ForegroundActive''' color used to tint BackgroundNormal for final button hinting color&lt;br /&gt;
* '''[Colors:View]'''&lt;br /&gt;
** '''ForegroundLink''' clickable text link font color&lt;br /&gt;
** '''ForegroundVisited''' visited clickable text link font color&lt;br /&gt;
&lt;br /&gt;
Other colors in the file may be used by individual widgets or used in the future, so it doesn't hurt to provide a complete colorscheme file and is probably a safer strategy.&lt;br /&gt;
&lt;br /&gt;
Currently also used by individual widgets, which should give a good idea of additional usage patterns:&lt;br /&gt;
&lt;br /&gt;
* '''[Colors:View]'''&lt;br /&gt;
** '''ForegroundActive''' used by the digital and fuzzy clocks for the default text color, dictionary widget for results text, microblog for status update text&lt;br /&gt;
** '''ForegroundInactive''' used by the pager to draw non-active windows and frames, microblog for user names&lt;br /&gt;
** '''ForegroundNormal''' used by microblog for status update entry area background&lt;br /&gt;
&lt;br /&gt;
Note that some of these may end up folded back into Plasma::Theme properly at some point.&lt;br /&gt;
&lt;br /&gt;
== Backgrounds format==&lt;br /&gt;
All background svg's (except for desktop wallpapers) must have the following named elements, all of which will be painted at the ''native'' size (and can therefore be bitmaps), except for the center which will be scaled:&lt;br /&gt;
* '''topleft''': the top left corner&lt;br /&gt;
* '''topright''': the top right corner&lt;br /&gt;
* '''bottomleft''': the bottom left corner&lt;br /&gt;
* '''bottomright''': the bottom right corner&lt;br /&gt;
* '''top''': the top bar between the two top corners&lt;br /&gt;
* '''left''': the left bar between the two left corners&lt;br /&gt;
* '''right''': the right bar between the two right corners&lt;br /&gt;
* '''bottom''': the bottom bar between the two bottom corners&lt;br /&gt;
* '''center''': the center fill; will be scaled so should be an actual SVG element&lt;br /&gt;
&lt;br /&gt;
Some plasma components may use the above named elements with prefixes.  For example the panel placed on the left side of the screen uses the &amp;quot;west&amp;quot; prefix ('''west-topleft''', '''west-topright''', etc.).&lt;br /&gt;
&lt;br /&gt;
Additionally, the following elements can be used to control the rendering of the backgrounds:&lt;br /&gt;
&lt;br /&gt;
* '''hint-stretch-borders''': if it exists, the borders will not be tiled but rather will be stretched to fit&lt;br /&gt;
* '''hint-tile-center''': if it exists, the center will not be scaled but rather will be tiled to fit. (Optional, from 4.1 and later)&lt;br /&gt;
* '''hint-no-border-padding''':  If this element exists, padding will not be added for the borders, and content will therefore be able to use the entire area (inclusive borders).&lt;br /&gt;
* '''hint-apply-color-scheme''':  If this element exists, the svg will be colorized using the color scheme colors.  Colorization is applied at 100%, and tapers off on either side, of an HSV color value/intensity of 127. (Optional, From KDE 4.1 and later)&lt;br /&gt;
* '''current-color-scheme''': If a style element with this id exists it is replaced by a css-style with colors of the current colorscheme. See below for details. (Optional, From KDE 4.6 and later)&lt;br /&gt;
* '''[prefix]-hint-[direction]-margin''': Use this optional hints if you want different margins than the borders size. The [prefix]- part is optional and identifies the prefix of the panel you want to specify the margins. [direction] can be either top, bottom, left or right and indicates the border you want to configure. For top and bottom margins the height of these hints are used, for left and right margins the width. (Optional, From KDE 4.2 and later)&lt;br /&gt;
* '''[prefix]-hint-compose-over-border''': if this element is resent, the center element will be drawn with the same size as the total image, composed under the borders and shaped with the alpha mask frame, that has to be present in order to make work this hint(Optional, from KDE 4.5)&lt;br /&gt;
&lt;br /&gt;
From KDE 4.3 can exists an element called overlay (or prefix-overlay if to be appled to a frame with a different prefix) it will be rendered over the frame as a filigrane effects, with the rules given from the following mutually exclusive hints:&lt;br /&gt;
* '''hint-overlay-random-pos''' it will be put at a random position, this works just for applet backgrounds&lt;br /&gt;
* '''hint-overlay-tile''' tile the overlay&lt;br /&gt;
* '''hint-overlay-stretch''' the overlay will be stretched&lt;br /&gt;
* '''hint-overlay-pos-right''' align the overlay at right of the background rather than to the left (from KDE 4.4)&lt;br /&gt;
* '''hint-overlay-pos-bottom''' align the overlay at bottom of the background rather than to the top (from KDE 4.4)&lt;br /&gt;
&lt;br /&gt;
=== Using system colors ===&lt;br /&gt;
It is possible to apply colors from the color scheme to a graphic. A very easy way to reach this is by adding an element with the id '''hint-apply-color-scheme''' to the svg. In this case the rendered graphic gets converted to monochrome and colorized by the window background color.&lt;br /&gt;
&lt;br /&gt;
A more flexible solution is available since KDE 4.6 by using css-styling. For this to work the svg must have a style-element with the id '''current-color-scheme'''. Before the graphic is rendered this element gets replaced by a style containing classes where the color attribute is set to the corresponding system color. Currently the following classes are defined:&lt;br /&gt;
* ColorScheme-Text&lt;br /&gt;
* ColorScheme-Background&lt;br /&gt;
* ColorScheme-ViewText&lt;br /&gt;
* ColorScheme-ViewBackground&lt;br /&gt;
* ColorScheme-ViewHover&lt;br /&gt;
* ColorScheme-ViewFocus&lt;br /&gt;
* ColorScheme-ButtonText&lt;br /&gt;
* ColorScheme-ButtonBackground&lt;br /&gt;
* ColorScheme-ButtonHover&lt;br /&gt;
* ColorScheme-ButtonFocus&lt;br /&gt;
&lt;br /&gt;
In order to apply a color from a class to an element, its fill or stroke attribute must be '''currentColor''' and of course the name of the wanted class has to be in the class-attribute. Special attention is needed on gradients, as neither the gradient-tags themself nor the stop-tags accept classes. To still get the wanted result one can put a g-tag around them and apply the class to this.&lt;br /&gt;
&lt;br /&gt;
'''Hint:''' If you want to use this new feature and still be able to use the graphics on older versions, you can set the color for ColorScheme-Background to #7f7f7f and place a &amp;lt;tt&amp;gt;&amp;lt;rect id=&amp;quot;hint-apply-color-scheme&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; fill=&amp;quot;none&amp;quot; /&amp;gt;&amp;lt;/tt&amp;gt; below your css-code but before the closing &amp;lt;tt&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't want to bother with the source code of your graphics, you can use the tool svgmod for easily applying system colors. See  [https://projects.kde.org/projects/playground/devtools/svgmod here].&lt;br /&gt;
&lt;br /&gt;
== Current Theme Elements ==&lt;br /&gt;
&lt;br /&gt;
Themes get installed to {{path|share/apps/desktoptheme}}. Each theme is stored in a subdirectory with the following file structure&lt;br /&gt;
&lt;br /&gt;
*'''/dialogs''': elements for dialogs&lt;br /&gt;
**'''/background.svg''': generic dialog background used by the sceensaver password dialog, etc. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
*** '''hint-left-shadow''': from KDE 4.10: optional hints that say how big the shadow is&lt;br /&gt;
*** '''hint-top-shadow'''&lt;br /&gt;
*** '''hint-right-shadow'''&lt;br /&gt;
*** '''hint-bottom-shadow'''&lt;br /&gt;
**'''/krunner.svg''': dialog background, used by the Run Command. Please note, that this is used only when &amp;lt;menuchoice&amp;gt;Positioning&amp;lt;/menuchoice&amp;gt; is set to &amp;lt;menuchoice&amp;gt;Free floating window&amp;lt;/menuchoice&amp;gt;, '''not''' &amp;lt;menuchoice&amp;gt;Top edge of screen&amp;lt;/menuchoice&amp;gt; (which is default). See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
**'''/shutdowndlg.svg''': background and buttons for the log out dialog&lt;br /&gt;
***''background'': background for the logout dialog&lt;br /&gt;
***''button-normal'': button background&lt;br /&gt;
***''button-hover'': button background on cursor hover&lt;br /&gt;
***''button-small-normal'': small button background&lt;br /&gt;
***''button-small-hover'': small button background on cursor hover&lt;br /&gt;
** '''/kickoff.svgz''' : background for the kickoff launcher, needs a frame, with the prefix 'plain'&lt;br /&gt;
*'''/widgets''': generic desktop widget background&lt;br /&gt;
** '''/action-overlays.svgz''': overlays for icons to indicate actions (since KDE 4.4)&lt;br /&gt;
*** ''add-normal'': icon used to add the parent icon to a selection of elements (used for instance in folderview), normal state, there are also ''add-hover'' and ''add-pressed''&lt;br /&gt;
*** ''remove-normal'': icon used to remove the parent icon to a selection of elements, normal state, there are also ''remove-hover'' and ''remove-pressed''&lt;br /&gt;
*** ''open-normal'': icon used to initialize tooltip on folderview widget, there are also ''open-hover'' and ''open-pressed''&lt;br /&gt;
** '''/analog_meter.svg''': an analog gauge widget.&lt;br /&gt;
***''background'': the body of the analog instrument&lt;br /&gt;
***''foreground'': the pin where the hand rotates&lt;br /&gt;
***''pointer'': the hand of the instrument&lt;br /&gt;
***''rotateminmax'': how much the hand can rotate, the width is the maximum angle in degrees the height the minimum angle&lt;br /&gt;
***''label0'': the rect for the first label&lt;br /&gt;
***''label1'': the rect for the second label&lt;br /&gt;
**'''/arrows.svg''': arrows that match the theme. Four elements should exist in this svg: up-arrow, down-arrow, left-arrow, right-arrow.&lt;br /&gt;
**'''/background.svg''': a background image for plasmoids. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
*** '''hint-left-shadow''': from KDE 4.10: optional hints that say how big the shadow is&lt;br /&gt;
*** '''hint-top-shadow'''&lt;br /&gt;
*** '''hint-right-shadow'''&lt;br /&gt;
*** '''hint-bottom-shadow'''&lt;br /&gt;
** '''/bar_meter_horizontal.svg''': an horizontal meter like a progressbar&lt;br /&gt;
***''background'': background of the progressbar&lt;br /&gt;
***''foreground'': overlay in the foreground of the progressbar&lt;br /&gt;
***''bar'': the progressbar itself&lt;br /&gt;
***''background'': a 9 pieces svg with the ''background'' prefix, it replaces the background element if available (KDE 4.2 and later)&lt;br /&gt;
***''hint-stretched-bar'': make the progressbar background element stretched rather than tiled (KDE 4.2 and later)&lt;br /&gt;
***''bar-active'' and ''bar-inactive'': 9 pieces svgs with the ''bar-active'' and ''bar-inactive'' prefixes, they replace the bar element when available, they will be drawn tiled (KDE4.2 and later)&lt;br /&gt;
***''label0'', ''label1'' and ''label2'': rects for 3 labels to be placed around&lt;br /&gt;
** '''/bar_meter_vertical.svg''': a vertical meter like a vertical progressbar. It has the same format of ''/bar_meter_horizontal.svg''&lt;br /&gt;
** '''/branding.svgz''': a little KDE logo that can be customized by distributors as a branding element. Contains a single element called ''brilliant''&lt;br /&gt;
** '''/busywidget.svgz''': Used to indicate a busy state, it's a circular image that will be animated with a rotation.&lt;br /&gt;
*** ''busywidget'': the main spinner&lt;br /&gt;
*** ''paused'': the paused state&lt;br /&gt;
** '''/button.svg''': graphics elements for a button widget (KDE 4.2 and later), it needs the followin prefixes:&lt;br /&gt;
*** ''normal'' normal button&lt;br /&gt;
*** ''pressed'' pressed button &lt;br /&gt;
*** ''active'' button under mouse. Active can have ticker borders that would be rendered outside the widget. It's useful to do a glowing effect DEPRECATED: use ''hover'' instead&lt;br /&gt;
*** ''hover'' element that will be in the background of the widget, will act as a border (useful for glow effects) since KDE 4.5&lt;br /&gt;
*** ''shadow'' a shadow for the button, can be bigger than the button itself since KDE 4.5&lt;br /&gt;
*** ''focus'' keyboard focus rectangle superimposed to the button graphics&lt;br /&gt;
** '''/calendar.svg''': graphics for a calendar widget, since 4.3&lt;br /&gt;
*** ''weeksColumn'': background for the vertical column with week numbers in it.&lt;br /&gt;
*** ''weekDayHeader'': background for the row with week day names in it.&lt;br /&gt;
*** ''active'': background for the day numbers of the current month.&lt;br /&gt;
*** ''inactive'': background for the day numbers of the next and previous months.&lt;br /&gt;
*** ''hoverHighlight'': background for the day under the mouse cursor.&lt;br /&gt;
*** ''today'': border for the current day cell.&lt;br /&gt;
*** ''selected'': border for the selected day cell.&lt;br /&gt;
*** ''red'': border for holidays on sundays&lt;br /&gt;
*** ''green'': border for holidays during week days &lt;br /&gt;
**'''/clock.svg''': an analog clock face. it must have the following named elements:&lt;br /&gt;
*** ''ClockFace'': the background of the clock, usually containing the numbers, etc&lt;br /&gt;
*** ''HourHand'': the hour hand, pointing down in the svg&lt;br /&gt;
*** ''MinuteHand'': the minute hand, pointing down in the svg&lt;br /&gt;
*** ''SecondHand'': the second hand, pointing down in the svg&lt;br /&gt;
*** ''HourHandShadow'', ''MinuteHandShadow'' and ''SecondHandShadow'': drop shadows for the hands (optional, KDE 4.1 and later) &lt;br /&gt;
*** ''HandCenterScrew'': the &amp;quot;pin&amp;quot; that holds the hands together in the center&lt;br /&gt;
*** ''Glass'': a final overlay which allows for things such as the appearance of glass&lt;br /&gt;
*** ''hint-square-clock'': if present the shape of the clock will be square rather than round&lt;br /&gt;
*** Note: In the svg, the Hand elements must be placed in a position that indicates the time 6:30:30. The y-axis position of the Hand elements with respect to the center of ClockFace is the one they will have in the rendered applet. The x-axis position of the Hand elements does not matter. The Shadow elements should have the same y-axis position as their Hand element counterpart.&lt;br /&gt;
** '''/configuration-icons''': it's a set of simple icons that are meant to be shortcuts for configuration actions (KDE 4.2 and later). Must contain the following elements:&lt;br /&gt;
*** ''close'': a close icon&lt;br /&gt;
*** ''configure'': a setup action&lt;br /&gt;
*** ''move''&lt;br /&gt;
*** ''resize-vertical'': resize in the y axis&lt;br /&gt;
*** ''resize-horizontal'': resize in the x axis&lt;br /&gt;
*** ''size-diagonal-tl2br'': resize diagonal, usually an arrow from top-left to bottom-right&lt;br /&gt;
*** ''size-diagonal-tr2bl'': resize diagonal, usually an arrow from top-right to bottom-left&lt;br /&gt;
*** ''rotate''&lt;br /&gt;
*** ''help''&lt;br /&gt;
*** ''maximize''&lt;br /&gt;
*** ''unmaximize''&lt;br /&gt;
*** ''collapse'': set something in a minimized, collapsed status&lt;br /&gt;
*** ''restore'': restore from ''collapse'' status&lt;br /&gt;
*** ''status'': refers to a status of something, logging or system monitoring in general&lt;br /&gt;
*** ''retourn-to-source'': make detached extender items return to their owner applet&lt;br /&gt;
*** ''add'' and ''remove'': specular actions, adding and removing for instance an item from a list&lt;br /&gt;
*** ''delete'': the (potentially dangerous) action of deleting something&lt;br /&gt;
** '''/containment-controls.svg''': handles for the control used to resize the panel (KDE 4.1 and later).   The following elements are required.&lt;br /&gt;
*** ''maxslider'' maximum size slider, south position&lt;br /&gt;
*** ''minslider'' minimum size slider, south position&lt;br /&gt;
*** ''offsetslider'' positioning slider, south position&lt;br /&gt;
*** Each of the above elements must be present with ''north'', ''south'', ''east'' and ''west'' prefixes for each panel position.&lt;br /&gt;
*** There are also four backgrounds (north, south, east and west orientations) for the ruler widget itself in the &amp;quot;Backgrounds format&amp;quot;, since the width of the widget is 100% the elements of left and right (or north and bottom if vertical) are not needed&lt;br /&gt;
** '''/dragger.svgz''': meant to be a generic drag handle (not currently used but available). It needs to contain the same elements as other backgrounds, see the section about backgrounds above. In addition it needs the following element:&lt;br /&gt;
*** ''hint-preferred-icon-size'': the size icons within the drag handle should get. The vertical size of the dragger is also derived from this: this size hint + the dragger's margins.&lt;br /&gt;
** '''/extender-background.svgz''': background for extenders. It needs the same elements as other backgrounds.&lt;br /&gt;
** '''/extender-dragger.svgz''': Same as dragger.svgz. Drag handle for extenders (like the notification applet, KDE 4.2 and later). It needs to contain the same elements as other backgrounds, see the section about backgrounds above. In addition it needs the following element:&lt;br /&gt;
*** ''hint-preferred-icon-size'': the size icons within the drag handle should get. The vertical size of the dragger is also derived from this: this size hint + the dragger's margins.&lt;br /&gt;
*** Since KDE 4.6 it contains two optional prefixes: ''grouped'' for extender items contained in extender groups and ''root'' for root extender items. The version without prefix must still exist and is still used for extenders that don't have a stacked appearance.&lt;br /&gt;
** '''/frame.svgz''' : a generic frame, used mostly for widget containers, to visually group widgets together. It must contain the following prefixes, for different 3d looks:&lt;br /&gt;
*** ''sunken''&lt;br /&gt;
*** ''plain''&lt;br /&gt;
*** ''raised''&lt;br /&gt;
** '''/glowbar.svgz''' : a frame without a prefix, it represents a glow, it's used for instance in Plasma Desktop for the panel autohide unhide hint.&lt;br /&gt;
** '''/identiconshapes.svgz''' : shapes for the auto-generation of the  activity icons, they must be named from ''Shape1'' to ''Shape32''. Since KDE SC 4.5&lt;br /&gt;
** '''/line.svgz''' : a simple line use to separate items in layouts, containe ''vertical-line'' and ''horizzontal-line'' elements (since KDE 4.3)&lt;br /&gt;
** '''/lineedit.svgz''': it's a framesvg, used to style line edits, spinboxes and other similar fields (since KDE 4.4) it must have the following prefixes&lt;br /&gt;
*** ''base'': the background of the line edit&lt;br /&gt;
*** ''focus'': will be drawn outside base, when the line edit has input focus&lt;br /&gt;
*** ''hover'': will be drawn outside base, when the line edit is under the mouse&lt;br /&gt;
** '''/listitem.svgz''': used for &amp;quot;opened&amp;quot;/clicked notifications (since KDE 4.10)  &lt;br /&gt;
** '''/monitor.svgz''' : represents a screen, it's used in places such as the wallpaper config dialog. It contains a frame without prefixes and the following extra elements:&lt;br /&gt;
*** ''glass'' : glass reflection effect over the screen&lt;br /&gt;
*** ''base'' : a stand for the monitor&lt;br /&gt;
** '''/pager.svgz''' : graphic elements for the little screens of the pager, it must have 3 frames with the following prefixes:&lt;br /&gt;
*** ''normal'' : all virtual desktops&lt;br /&gt;
*** ''active'' : active virtual desktop&lt;br /&gt;
*** ''hover'' : virtual desktop under mouse&lt;br /&gt;
**'''/panel-background.svg''': the background image for panels.&lt;br /&gt;
*** If you want to create different background for panels located at the top, bottom, left or right, then also create sets of background elements with the following prefixes: ''north'', ''south'', ''west'' and ''east'' respectively. For example the center element of the left positioned panel's background should be named ''west-center''. (KDE 4.1 and later)&lt;br /&gt;
*** When the panel is not 100% wide/tall the north, south etc. prefixes becomes ''north-mini'', ''south-mini'' etc. (KDE 4.2 and later). Please note that if KRunner &amp;lt;menuchoice&amp;gt;Positioning&amp;lt;/menuchoice&amp;gt; is set to &amp;lt;menuchoice&amp;gt;Top edge of screen&amp;lt;/menuchoice&amp;gt; (which is default), then KDE treats it as not 100% wide north panel.&lt;br /&gt;
*** All prefixes fallback to a no prefix version when not available&lt;br /&gt;
*** if a prefix called ''shadow'' is available, it will be used as a drop shadow for the panel when compositing is available.&lt;br /&gt;
** '''/plot-background.svg''': a background for plotter (graph) widgets, such as the plots in ksysguard&lt;br /&gt;
** '''/scrollbar.svgz''' : the classical ''elevator'' scrollbar, must have the following elemens : ''arrow-up'', ''mouseover-arrow-up'', ''sunken-arrow-up'', same 3 elements for ''arrow-left'', ''arrow-right'' and ''arrow-bottom''. From KDE 4.10 it can have an element called ''hint-scrollbar-size'' that says at what size the scrollbar should be rendered (width if vertical, height if horizontal). It must also have frames with the following prefixes:&lt;br /&gt;
*** ''slider''&lt;br /&gt;
*** ''mouseover-slider''&lt;br /&gt;
*** ''sunken-slider''&lt;br /&gt;
*** ''background-vertical''&lt;br /&gt;
*** ''background-horizontal''&lt;br /&gt;
** '''/scrollwidget''': used by Plasma::ScrollWidget, it has a single prefix (KDE4.4 and later)&lt;br /&gt;
*** ''border'': a border used when the scrollbar is enabled&lt;br /&gt;
** '''/slider.svgz''': used to theme sliders (since KDE 4.3) it must have the following elements:&lt;br /&gt;
*** ''vertical-slider-line'': the background for vertical sliders, it indicates how much the indicator can scroll&lt;br /&gt;
*** ''vertical-slider-handle'': the handle for vertical sliders&lt;br /&gt;
*** ''vertical-slider-focus'': background for the handle when it has input focus (since KDE 4.4)&lt;br /&gt;
*** ''vertical-slider-hover'': background for the handle when it is under the mouse (since KDE 4.4)&lt;br /&gt;
*** ''groove'': groove for the slider (since KDE 4.8 replaces *-slider-line)&lt;br /&gt;
*** ''groove-highlight'': highlight part of the groove (since KDE 4.8 replaces *-slider-line)&lt;br /&gt;
*** ''horizontal-slider-line'': the background for horizontal sliders&lt;br /&gt;
*** ''horizontal-slider-handle'': the handle for horizontal sliders&lt;br /&gt;
*** ''horizontal-slider-focus'': background for the handle when it has input focus (since KDE 4.4)&lt;br /&gt;
*** ''horizontal-slider-hover'': background for the handle when it is under the mouse (since KDE 4.4)&lt;br /&gt;
** '''/systemtray.svg''': a background for the system tray (KDE 4.1 and later). See the section on backgrounds above for information on the required elements in this file. Since KDE 4.2 it contains also the '''lastelements''' prefix, used for elements in the last position of the systray and the four elements '''expander-right''' up, left and bottom, used for the icon that shows/hides the other systray icons. Since KDE 4.3 there are the '''horizontal-separator''' and '''vertical-separator''' used as a border to separe the last elements.&lt;br /&gt;
**'''/tasks.svg''': task item backgrounds for tasks (KDE 4.1 and later). See the section on backgrounds above for information on the required elements in this file.  The following element prefixes are required:&lt;br /&gt;
*** ''focus'': background of focused task item&lt;br /&gt;
*** ''hover'': background when the pointer hovers the task item. From KDE 4.2 focus and hover can have ticker borders that will be painted outside the task button, useful to make a glow effect.&lt;br /&gt;
*** ''attention'': background when tasks item is trying to get attention&lt;br /&gt;
*** ''normal'': background of normal, unfocused task item&lt;br /&gt;
*** ''minimized'': background for minimized tasks&lt;br /&gt;
*** The svg should contain elements of all five prefixes, if a prefix is missing that element will be not be drawn.&lt;br /&gt;
** '''/toolbox.svgz''' : graphical elements for the desktop toolbox, it must have a frame without prefixes plus those following elements:&lt;br /&gt;
*** ''desktop-northwest'', ''desktop-northeast'', ''desktop-southwest'', ''desktop-southeast'': the 4 corners for the desktop toolbox.&lt;br /&gt;
*** ''panel-north'', ''panel-south'', ''panel-west'', ''panel-east'' : elements for the panel toolbox.&lt;br /&gt;
** '''/tooltip.svg''': background for tooltips used for instance in the taskbar and with icons. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
** '''/translucentbackground.svg''': a standard background image for plasmoids that for their nature are bigger and with not much text. In this case a translucent background looks better. It needs the same elements of background.svg in it. If this file is not present, the plasmoids that uses this will use background.svg instead.&lt;br /&gt;
** '''/media-delegate.svgz''': intended to be used as delegate for media types: as KDE 4.7 contains a single prefix: picture.&lt;br /&gt;
** '''/viewitem.svgz''': controls the background look of selections (results in KRunner, networks in network applet), it can have 4 elements of 9 parts each with prefix ''normal'', ''hover'', ''selected'', ''selected+hover''.&lt;br /&gt;
** '''/toolbar.svgz''': used in the ToolBar QML component, can be used in custom applications in a similar way, contains a single frame without prefix. Since KDE 4.8.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Opaque&amp;quot; folder==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/opaque}} the same hierarchy can be found: when compositing is disabled files in this folder are preferred over the corresponding ones listed above. Only background for top level windows are appropriate to go in this folder.&lt;br /&gt;
&lt;br /&gt;
Since top-level windows will be shaped according to the transparency of the svg and window shapes don't support alpha-blending, if the svg has rounded borders they should have a shape that don't require antialiasing, like the following example.&lt;br /&gt;
&lt;br /&gt;
[[Image:No_composite_plasma_svg.jpg]]&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;translucent&amp;quot; folder ==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/translucent}} the same hierarchy is used: when the KWin ''blurbehind'' effect is enabled the file under this folder will be used if found. As the opaque folder, only elements that will be rendered as window backgrounds should be present in this folder, so the dialogs folder, plus the panel and tooltip backgrounds. When is possible to blur the background of the window, the graphics can be more transparent, keeping the window text readable.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;icons&amp;quot; folder==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/icons}}, SVG files that contain scalable icons for use with application status items (e.g. icons in the system tray) are contained.&lt;br /&gt;
&lt;br /&gt;
The default theme contains the following SVGs:&lt;br /&gt;
&lt;br /&gt;
* audio.svgz&lt;br /&gt;
* battery.svgz&lt;br /&gt;
* device.svgz&lt;br /&gt;
* klipper.svgz&lt;br /&gt;
* kwalletmanager.svgz&lt;br /&gt;
* nepomuk.svgz&lt;br /&gt;
* network.svgz&lt;br /&gt;
* notification.svgz&lt;br /&gt;
* preferences.svgz&lt;br /&gt;
* wallet.svgz&lt;br /&gt;
&lt;br /&gt;
The files are named the same as the matching icon theme names or their prefix (both work, which is why &amp;quot;audio&amp;quot; matches for mixers, e.g.). Other icons can be added as long as they match the names of requested icons by the application status items.&lt;br /&gt;
&lt;br /&gt;
== Theming Application Icons in the Systemtray ==&lt;br /&gt;
&lt;br /&gt;
Applications that use a function called setIconByName can have their icon in the system tray themed. Applications can have more than one icon (for example Konversation flashes between two different icons to hilight when your username is mentioned and Kpackagekit changes it's icon depending on the status of it's upgrade / installs). Theming these icons requires firstly that an application has been coded to use setIconByName, and secondly that you call your svg object by the same name (use ctrl+shift+o in Inkscape). Then you can just put your .svgz in {{path|share/apps/desktoptheme/default/icons}} (changing default to your theme folder name).&lt;br /&gt;
&lt;br /&gt;
The following is an attempt to list known icon names that may be themed by this method. Please add any other known icon names and the object ID here to help other people making themes:&lt;br /&gt;
&lt;br /&gt;
* Amarok&lt;br /&gt;
** filename: '''amarok.svgz'''&lt;br /&gt;
*** ID: '''amarok'''&lt;br /&gt;
* audio (for kmix, veromix, a.o.)&lt;br /&gt;
** filename: '''audio.svgz'''&lt;br /&gt;
*** volume muted ID: '''audio-volume-muted'''&lt;br /&gt;
*** volume low ID: '''audio-volume-low'''&lt;br /&gt;
*** volume medium ID: '''audio-volume-medium'''&lt;br /&gt;
*** volume high ID: '''audio-volume-high'''&lt;br /&gt;
* battery&lt;br /&gt;
** filename: '''battery.svgz'''&lt;br /&gt;
*** battery (always shown object) ID: '''Battery'''&lt;br /&gt;
*** on powerline ID: '''AcAdapter'''&lt;br /&gt;
*** no battery found ID: '''Unavailable'''&lt;br /&gt;
*** battery on 10% ID: '''Fill10''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 20% ID: '''Fill20'''&lt;br /&gt;
*** battery on 30% ID: '''Fill30''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 40% ID: '''Fill40'''&lt;br /&gt;
*** battery on 50% ID: '''Fill50''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 60% ID: '''Fill60'''&lt;br /&gt;
*** battery on 70% ID: '''Fill70''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 80% ID: '''Fill80'''&lt;br /&gt;
*** battery on 90% ID: '''Fill90''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 100% ID: '''Fill100'''&lt;br /&gt;
* device (the device-notifier)&lt;br /&gt;
** filename: '''device.svgz'''&lt;br /&gt;
*** ID: '''device-notifier'''&lt;br /&gt;
* juk&lt;br /&gt;
** filename: '''juk.svgz'''&lt;br /&gt;
*** ID: '''juk'''&lt;br /&gt;
* KGet&lt;br /&gt;
** filename: '''kget.svgz'''&lt;br /&gt;
*** ID: '''kget'''&lt;br /&gt;
* Klipper&lt;br /&gt;
** filename: '''klipper.svgz'''&lt;br /&gt;
*** ID: '''klipper'''&lt;br /&gt;
* Konversation&lt;br /&gt;
** filename: '''konversation'''&lt;br /&gt;
*** ID: '''konversation'''&lt;br /&gt;
** filename: '''konv_message.svgz''' (new incomming message)&lt;br /&gt;
*** ID: '''konv_message'''&lt;br /&gt;
* Kopete&lt;br /&gt;
** filename: '''kopete.svgz'''&lt;br /&gt;
*** öffline ID: '''kopete-offline'''&lt;br /&gt;
*** online ID: '''kopete'''&lt;br /&gt;
*** other statuses are not supported atm&lt;br /&gt;
* Korgac&lt;br /&gt;
** filename: '''korgac.svgz'''&lt;br /&gt;
*** ID: '''korgac'''&lt;br /&gt;
* Ktorrent&lt;br /&gt;
** filename: '''ktorrent.svgz'''&lt;br /&gt;
*** ID: '''ktorrent'''&lt;br /&gt;
* message-indicator&lt;br /&gt;
** filename: '''message-indicator.svgz'''&lt;br /&gt;
*** standard ID: '''normal'''&lt;br /&gt;
*** new message ID: '''new'''&lt;br /&gt;
* Nepomuk&lt;br /&gt;
** filename: '''nepomuk.svgz'''&lt;br /&gt;
*** ID: '''nepomuk'''&lt;br /&gt;
* Network-management-plasmoid&lt;br /&gt;
** filename: '''network.svgz'''&lt;br /&gt;
*** wired online ID: '''network-wired-activated'''&lt;br /&gt;
*** wired offline ID: '''network-wired'''&lt;br /&gt;
*** wless offline ID: '''network-wireless-0'''&lt;br /&gt;
*** wless on 20% ID: '''network-wireless-20'''&lt;br /&gt;
*** wless on 25% ID: '''network-wireless-25'''&lt;br /&gt;
*** wless on 40% ID: '''network-wireless-40'''&lt;br /&gt;
*** wless on 50% ID: '''network-wireless-50'''&lt;br /&gt;
*** wless on 60% ID: '''network-wireless-60'''&lt;br /&gt;
*** wless on 75% ID: '''network-wireless-75'''&lt;br /&gt;
*** wless on 80% ID: '''network-wireless-80'''&lt;br /&gt;
*** wless on 100% ID: '''network-wireless-100'''&lt;br /&gt;
*** mobile broadband on 0% ID: '''network-mobile-0'''&lt;br /&gt;
*** mobile broadband on 20% ID: '''network-mobile-20'''&lt;br /&gt;
*** mobile broadband on 40% ID: '''network-mobile-40'''&lt;br /&gt;
*** mobile broadband on 60% ID: '''network-mobile-60'''&lt;br /&gt;
*** mobile broadband on 80% ID: '''network-mobile-80'''&lt;br /&gt;
*** mobile broadband on 100% ID: '''network-mobile-100'''&lt;br /&gt;
*** mobile broadband with access technology on 0% ID: '''network-mobile-0-technology''' (''technology'' can be: ''none, gprs, edge, umts, hsdpa, hsupa, hspa, lte'')&lt;br /&gt;
* preferences (some apps like bluedevil, krandrtray, text-to-speech)&lt;br /&gt;
** filename: '''preferences.svgz'''&lt;br /&gt;
*** bluedevil online ID: '''preferences-system-bluetooth'''&lt;br /&gt;
*** bluedevil offline ID: '''preferences-system-bluetooth-inactive'''&lt;br /&gt;
*** text-to-speech ID: '''preferences-desktop-text-to-speech'''&lt;br /&gt;
*** krandrtray ID: '''preferences-desktop-display-randr'''&lt;br /&gt;
*** activity manager ID: '''preferences-activities'''&lt;br /&gt;
* Printer applet&lt;br /&gt;
** filename: '''printer.svgz'''&lt;br /&gt;
*** ID: '''printer'''&lt;br /&gt;
* Quassel IRC&lt;br /&gt;
** filename: '''quassel.svgz'''&lt;br /&gt;
*** quassel öffline ID: '''quassel_inactive'''  (&amp;quot;quassel-inactive&amp;quot; in kde 4.10)&lt;br /&gt;
*** quassel online ID: '''quassel'''&lt;br /&gt;
*** quassel new message ID: '''quassel_message''' (&amp;quot;quassel-message&amp;quot; in kde 4.10)&lt;br /&gt;
* KWallet&lt;br /&gt;
** filename: '''wallet.svgz'''&lt;br /&gt;
*** open ID: '''wallet-open'''&lt;br /&gt;
*** closed ID: '''wallet-closed'''&lt;br /&gt;
&lt;br /&gt;
At the time of writing, KDE-PIM (Kmail, Akregator etc) do not yet use setIconByName and thus aren't able to be themed this way. Reportedly, this is is coming in Kontact 2.&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/ThemeDetails</id>
		<title>Development/Tutorials/Plasma/ThemeDetails</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/ThemeDetails"/>
				<updated>2013-06-04T20:59:20Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* Theming Application Icons in the Systemtray */ Added more finegrained battery icon theming to battery&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;tt&amp;gt;libplasma&amp;lt;/tt&amp;gt; provides the Theme class so Plasma elements and other applications, such as KRunner, that need to graphically hint or theme interface elements. This is not a replacement for {{qt|qstyle}}, but rather provides standard elements for things such as box backgrounds.&lt;br /&gt;
&lt;br /&gt;
This allows for easy re-theming of the desktop while also keeping elements on the desktop more consistent with each other.&lt;br /&gt;
&lt;br /&gt;
See also [[Development/Tutorials/Plasma/Theme|Creating a Plasma Theme]].&lt;br /&gt;
&lt;br /&gt;
== Theme Location, Structure and Definition ==&lt;br /&gt;
Themes are stored in {{path|share/apps/desktoptheme}}. A theme is described by a .desktop file in {{path|share/apps/desktoptheme}}. The contents of which might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Oxygen&lt;br /&gt;
Comment=Theme done in the Oxygen style&lt;br /&gt;
&lt;br /&gt;
X-KDE-PluginInfo-Author=The Oxygen Project&lt;br /&gt;
X-KDE-PluginInfo-Email=kde-artists@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=default&lt;br /&gt;
X-KDE-PluginInfo-Version=pre0.1&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The X-KDE-PluginInfo-Name entry must contain the name of the subdirectory in {{path|share/apps/desktoptheme}} where the SVG files for this theme exist.&lt;br /&gt;
&lt;br /&gt;
Beneath this directory one will find the following file structure:&lt;br /&gt;
&lt;br /&gt;
* '''colors''': optional a configuration file defining a colorscheme that blends well with the images&lt;br /&gt;
* '''dialogs/''': images for dialogs&lt;br /&gt;
* '''wallpapers/''': wallpaper packages&lt;br /&gt;
* '''widgets/''': images for widgets&lt;br /&gt;
* '''opaque/''': optional directory containing images appropriate for non-compositing environments&lt;br /&gt;
* '''locolor/''': optional directory containing images appropraite for locolor (e.g. 8 bit color) environments&lt;br /&gt;
&lt;br /&gt;
== Image Access ==&lt;br /&gt;
Theme elements are accessed by path. Whether this maps to literal paths on disk or not is not guaranteed and considered an implementation detail of Plasma::Theme.&lt;br /&gt;
&lt;br /&gt;
Therefore, to access the dialog background, one might create an svg in this manner:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Plasma::Theme theme;&lt;br /&gt;
QSvgRenderer svg(theme.image(&amp;quot;dialogs/background&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It '''is generally recommended''' to use Plasma::Svg instead of QSvgRenderer directly, however. This is because Plasma::Svg uses caching where it can. Remember to call resize() on the Plasma::Svg before painting with it!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
Plasma::Svg svg(&amp;quot;dialogs/background&amp;quot;);&lt;br /&gt;
svg.resize(size());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wallpaper Access ==&lt;br /&gt;
&lt;br /&gt;
Themes may optionally provide wallpapers to be used with the theme. These wallpapers must appear in the {{path|wallpapers/}} directory within the theme.&lt;br /&gt;
&lt;br /&gt;
A theme may also define a default wallpaper, wallpaper size and wallpaper file extension to be used in conjunction with the theme. The default wallpaper may either be installed in the standard location for wallpapers or may be shipped with the theme itself. The default wallpaper settings should appear in the theme's metadata.desktop file and contain the following entries:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Wallpaper]&lt;br /&gt;
defaultWallpaperTheme=&amp;lt;name of default wallpaper package&amp;gt;&lt;br /&gt;
defaultFileSuffix=&amp;lt;wallpaper file suffix, e.g. .jpg&amp;gt;&lt;br /&gt;
defaultWidth=&amp;lt;width in pixels of default wallpaper file&amp;gt;&lt;br /&gt;
defaultHeight=&amp;lt;height in pixels of default wallpaper file&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
Animations written in Javascript can be included in the {{path|animations}} directory within the theme. To learn how to create such animations and expose them in your theme, visit the [[Development/Tutorials/Plasma/JavaScript/Animations|Javascript Animations tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Reaction to Theme Changes ==&lt;br /&gt;
If you use Plasma::Svg, changes to the theme are automatically picked up. Otherwise, you can connect to the &amp;lt;tt&amp;gt;changed()&amp;lt;/tt&amp;gt; signal in the Plasma::Theme class. This signal is emitted whenever the theme is changed, which may be triggered by the user switching the theme used or system changes such as a composite manager becoming available.&lt;br /&gt;
&lt;br /&gt;
== Colors ==&lt;br /&gt;
&lt;br /&gt;
The colors file follows the standard KDE colorscheme file format and allows a theme to define what colors work best with its theme elements. The colors in this file can be edited with the default color scheme module. &lt;br /&gt;
*Make a new colorscheme using the editor in SystemSettings&amp;gt;&amp;gt;Appearance&amp;gt;&amp;gt;Colors.&lt;br /&gt;
*Save it with a unique name.&lt;br /&gt;
*Open the colorscheme in kate.&lt;br /&gt;
**Saved at /home/[user]/.kde/share/apps/color-schemes/[unique name].colors&lt;br /&gt;
*Copy everything to your plasma colors file except the &amp;quot;[ColorEffects:Disabled]&amp;quot; and &amp;quot;[ColorEffects:Inactive]&amp;quot; sections.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The most common use of the colors file is to ensure that text is readable on various backgrounds.&lt;br /&gt;
&lt;br /&gt;
Here is a list of color entries in the colors file that are currently actively used in a Plasma theme:&lt;br /&gt;
&lt;br /&gt;
* '''[Colors:Window]'''&lt;br /&gt;
** '''ForegroundNormal''' the text color applied to text on the standard background elements; maps to Theme::TextColor&lt;br /&gt;
** '''DecorationHover''' the color used for text highlighting; maps to Theme::HighlightCoor&lt;br /&gt;
** '''BackgroundNormal''' the default background color, for items that paint a background themselves, allowing them to blend in with the theme; maps to Theme::BackgroundColor&lt;br /&gt;
* '''[Colors:Button]'''&lt;br /&gt;
** '''ForegroundNormal''' the text color to use on push buttons; maps to Theme::ButtonTextColor&lt;br /&gt;
** '''BackgroundNormal''' used for hinting buttons; maps to Theme::ButtonBackgroundColor&lt;br /&gt;
** '''ForegroundActive''' color used to tint BackgroundNormal for final button hinting color&lt;br /&gt;
* '''[Colors:View]'''&lt;br /&gt;
** '''ForegroundLink''' clickable text link font color&lt;br /&gt;
** '''ForegroundVisited''' visited clickable text link font color&lt;br /&gt;
&lt;br /&gt;
Other colors in the file may be used by individual widgets or used in the future, so it doesn't hurt to provide a complete colorscheme file and is probably a safer strategy.&lt;br /&gt;
&lt;br /&gt;
Currently also used by individual widgets, which should give a good idea of additional usage patterns:&lt;br /&gt;
&lt;br /&gt;
* '''[Colors:View]'''&lt;br /&gt;
** '''ForegroundActive''' used by the digital and fuzzy clocks for the default text color, dictionary widget for results text, microblog for status update text&lt;br /&gt;
** '''ForegroundInactive''' used by the pager to draw non-active windows and frames, microblog for user names&lt;br /&gt;
** '''ForegroundNormal''' used by microblog for status update entry area background&lt;br /&gt;
&lt;br /&gt;
Note that some of these may end up folded back into Plasma::Theme properly at some point.&lt;br /&gt;
&lt;br /&gt;
== Backgrounds format==&lt;br /&gt;
All background svg's (except for desktop wallpapers) must have the following named elements, all of which will be painted at the ''native'' size (and can therefore be bitmaps), except for the center which will be scaled:&lt;br /&gt;
* '''topleft''': the top left corner&lt;br /&gt;
* '''topright''': the top right corner&lt;br /&gt;
* '''bottomleft''': the bottom left corner&lt;br /&gt;
* '''bottomright''': the bottom right corner&lt;br /&gt;
* '''top''': the top bar between the two top corners&lt;br /&gt;
* '''left''': the left bar between the two left corners&lt;br /&gt;
* '''right''': the right bar between the two right corners&lt;br /&gt;
* '''bottom''': the bottom bar between the two bottom corners&lt;br /&gt;
* '''center''': the center fill; will be scaled so should be an actual SVG element&lt;br /&gt;
&lt;br /&gt;
Some plasma components may use the above named elements with prefixes.  For example the panel placed on the left side of the screen uses the &amp;quot;west&amp;quot; prefix ('''west-topleft''', '''west-topright''', etc.).&lt;br /&gt;
&lt;br /&gt;
Additionally, the following elements can be used to control the rendering of the backgrounds:&lt;br /&gt;
&lt;br /&gt;
* '''hint-stretch-borders''': if it exists, the borders will not be tiled but rather will be stretched to fit&lt;br /&gt;
* '''hint-tile-center''': if it exists, the center will not be scaled but rather will be tiled to fit. (Optional, from 4.1 and later)&lt;br /&gt;
* '''hint-no-border-padding''':  If this element exists, padding will not be added for the borders, and content will therefore be able to use the entire area (inclusive borders).&lt;br /&gt;
* '''hint-apply-color-scheme''':  If this element exists, the svg will be colorized using the color scheme colors.  Colorization is applied at 100%, and tapers off on either side, of an HSV color value/intensity of 127. (Optional, From KDE 4.1 and later)&lt;br /&gt;
* '''current-color-scheme''': If a style element with this id exists it is replaced by a css-style with colors of the current colorscheme. See below for details. (Optional, From KDE 4.6 and later)&lt;br /&gt;
* '''[prefix]-hint-[direction]-margin''': Use this optional hints if you want different margins than the borders size. The [prefix]- part is optional and identifies the prefix of the panel you want to specify the margins. [direction] can be either top, bottom, left or right and indicates the border you want to configure. For top and bottom margins the height of these hints are used, for left and right margins the width. (Optional, From KDE 4.2 and later)&lt;br /&gt;
* '''[prefix]-hint-compose-over-border''': if this element is resent, the center element will be drawn with the same size as the total image, composed under the borders and shaped with the alpha mask frame, that has to be present in order to make work this hint(Optional, from KDE 4.5)&lt;br /&gt;
&lt;br /&gt;
From KDE 4.3 can exists an element called overlay (or prefix-overlay if to be appled to a frame with a different prefix) it will be rendered over the frame as a filigrane effects, with the rules given from the following mutually exclusive hints:&lt;br /&gt;
* '''hint-overlay-random-pos''' it will be put at a random position, this works just for applet backgrounds&lt;br /&gt;
* '''hint-overlay-tile''' tile the overlay&lt;br /&gt;
* '''hint-overlay-stretch''' the overlay will be stretched&lt;br /&gt;
* '''hint-overlay-pos-right''' align the overlay at right of the background rather than to the left (from KDE 4.4)&lt;br /&gt;
* '''hint-overlay-pos-bottom''' align the overlay at bottom of the background rather than to the top (from KDE 4.4)&lt;br /&gt;
&lt;br /&gt;
=== Using system colors ===&lt;br /&gt;
It is possible to apply colors from the color scheme to a graphic. A very easy way to reach this is by adding an element with the id '''hint-apply-color-scheme''' to the svg. In this case the rendered graphic gets converted to monochrome and colorized by the window background color.&lt;br /&gt;
&lt;br /&gt;
A more flexible solution is available since KDE 4.6 by using css-styling. For this to work the svg must have a style-element with the id '''current-color-scheme'''. Before the graphic is rendered this element gets replaced by a style containing classes where the color attribute is set to the corresponding system color. Currently the following classes are defined:&lt;br /&gt;
* ColorScheme-Text&lt;br /&gt;
* ColorScheme-Background&lt;br /&gt;
* ColorScheme-ViewText&lt;br /&gt;
* ColorScheme-ViewBackground&lt;br /&gt;
* ColorScheme-ViewHover&lt;br /&gt;
* ColorScheme-ViewFocus&lt;br /&gt;
* ColorScheme-ButtonText&lt;br /&gt;
* ColorScheme-ButtonBackground&lt;br /&gt;
* ColorScheme-ButtonHover&lt;br /&gt;
* ColorScheme-ButtonFocus&lt;br /&gt;
&lt;br /&gt;
In order to apply a color from a class to an element, its fill or stroke attribute must be '''currentColor''' and of course the name of the wanted class has to be in the class-attribute. Special attention is needed on gradients, as neither the gradient-tags themself nor the stop-tags accept classes. To still get the wanted result one can put a g-tag around them and apply the class to this.&lt;br /&gt;
&lt;br /&gt;
'''Hint:''' If you want to use this new feature and still be able to use the graphics on older versions, you can set the color for ColorScheme-Background to #7f7f7f and place a &amp;lt;tt&amp;gt;&amp;lt;rect id=&amp;quot;hint-apply-color-scheme&amp;quot; width=&amp;quot;1&amp;quot; height=&amp;quot;1&amp;quot; fill=&amp;quot;none&amp;quot; /&amp;gt;&amp;lt;/tt&amp;gt; below your css-code but before the closing &amp;lt;tt&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you don't want to bother with the source code of your graphics, you can use the tool svgmod for easily applying system colors. See  [https://projects.kde.org/projects/playground/devtools/svgmod here].&lt;br /&gt;
&lt;br /&gt;
== Current Theme Elements ==&lt;br /&gt;
&lt;br /&gt;
Themes get installed to {{path|share/apps/desktoptheme}}. Each theme is stored in a subdirectory with the following file structure&lt;br /&gt;
&lt;br /&gt;
*'''/dialogs''': elements for dialogs&lt;br /&gt;
**'''/background.svg''': generic dialog background used by the sceensaver password dialog, etc. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
*** '''hint-left-shadow''': from KDE 4.10: optional hints that say how big the shadow is&lt;br /&gt;
*** '''hint-top-shadow'''&lt;br /&gt;
*** '''hint-right-shadow'''&lt;br /&gt;
*** '''hint-bottom-shadow'''&lt;br /&gt;
**'''/krunner.svg''': dialog background, used by the Run Command. Please note, that this is used only when &amp;lt;menuchoice&amp;gt;Positioning&amp;lt;/menuchoice&amp;gt; is set to &amp;lt;menuchoice&amp;gt;Free floating window&amp;lt;/menuchoice&amp;gt;, '''not''' &amp;lt;menuchoice&amp;gt;Top edge of screen&amp;lt;/menuchoice&amp;gt; (which is default). See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
**'''/shutdowndlg.svg''': background and buttons for the log out dialog&lt;br /&gt;
***''background'': background for the logout dialog&lt;br /&gt;
***''button-normal'': button background&lt;br /&gt;
***''button-hover'': button background on cursor hover&lt;br /&gt;
***''button-small-normal'': small button background&lt;br /&gt;
***''button-small-hover'': small button background on cursor hover&lt;br /&gt;
** '''/kickoff.svgz''' : background for the kickoff launcher, needs a frame, with the prefix 'plain'&lt;br /&gt;
*'''/widgets''': generic desktop widget background&lt;br /&gt;
** '''/action-overlays.svgz''': overlays for icons to indicate actions (since KDE 4.4)&lt;br /&gt;
*** ''add-normal'': icon used to add the parent icon to a selection of elements (used for instance in folderview), normal state, there are also ''add-hover'' and ''add-pressed''&lt;br /&gt;
*** ''remove-normal'': icon used to remove the parent icon to a selection of elements, normal state, there are also ''remove-hover'' and ''remove-pressed''&lt;br /&gt;
*** ''open-normal'': icon used to initialize tooltip on folderview widget, there are also ''open-hover'' and ''open-pressed''&lt;br /&gt;
** '''/analog_meter.svg''': an analog gauge widget.&lt;br /&gt;
***''background'': the body of the analog instrument&lt;br /&gt;
***''foreground'': the pin where the hand rotates&lt;br /&gt;
***''pointer'': the hand of the instrument&lt;br /&gt;
***''rotateminmax'': how much the hand can rotate, the width is the maximum angle in degrees the height the minimum angle&lt;br /&gt;
***''label0'': the rect for the first label&lt;br /&gt;
***''label1'': the rect for the second label&lt;br /&gt;
**'''/arrows.svg''': arrows that match the theme. Four elements should exist in this svg: up-arrow, down-arrow, left-arrow, right-arrow.&lt;br /&gt;
**'''/background.svg''': a background image for plasmoids. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
*** '''hint-left-shadow''': from KDE 4.10: optional hints that say how big the shadow is&lt;br /&gt;
*** '''hint-top-shadow'''&lt;br /&gt;
*** '''hint-right-shadow'''&lt;br /&gt;
*** '''hint-bottom-shadow'''&lt;br /&gt;
** '''/bar_meter_horizontal.svg''': an horizontal meter like a progressbar&lt;br /&gt;
***''background'': background of the progressbar&lt;br /&gt;
***''foreground'': overlay in the foreground of the progressbar&lt;br /&gt;
***''bar'': the progressbar itself&lt;br /&gt;
***''background'': a 9 pieces svg with the ''background'' prefix, it replaces the background element if available (KDE 4.2 and later)&lt;br /&gt;
***''hint-stretched-bar'': make the progressbar background element stretched rather than tiled (KDE 4.2 and later)&lt;br /&gt;
***''bar-active'' and ''bar-inactive'': 9 pieces svgs with the ''bar-active'' and ''bar-inactive'' prefixes, they replace the bar element when available, they will be drawn tiled (KDE4.2 and later)&lt;br /&gt;
***''label0'', ''label1'' and ''label2'': rects for 3 labels to be placed around&lt;br /&gt;
** '''/bar_meter_vertical.svg''': a vertical meter like a vertical progressbar. It has the same format of ''/bar_meter_horizontal.svg''&lt;br /&gt;
** '''/branding.svgz''': a little KDE logo that can be customized by distributors as a branding element. Contains a single element called ''brilliant''&lt;br /&gt;
** '''/busywidget.svgz''': Used to indicate a busy state, it's a circular image that will be animated with a rotation.&lt;br /&gt;
*** ''busywidget'': the main spinner&lt;br /&gt;
*** ''paused'': the paused state&lt;br /&gt;
** '''/button.svg''': graphics elements for a button widget (KDE 4.2 and later), it needs the followin prefixes:&lt;br /&gt;
*** ''normal'' normal button&lt;br /&gt;
*** ''pressed'' pressed button &lt;br /&gt;
*** ''active'' button under mouse. Active can have ticker borders that would be rendered outside the widget. It's useful to do a glowing effect DEPRECATED: use ''hover'' instead&lt;br /&gt;
*** ''hover'' element that will be in the background of the widget, will act as a border (useful for glow effects) since KDE 4.5&lt;br /&gt;
*** ''shadow'' a shadow for the button, can be bigger than the button itself since KDE 4.5&lt;br /&gt;
*** ''focus'' keyboard focus rectangle superimposed to the button graphics&lt;br /&gt;
** '''/calendar.svg''': graphics for a calendar widget, since 4.3&lt;br /&gt;
*** ''weeksColumn'': background for the vertical column with week numbers in it.&lt;br /&gt;
*** ''weekDayHeader'': background for the row with week day names in it.&lt;br /&gt;
*** ''active'': background for the day numbers of the current month.&lt;br /&gt;
*** ''inactive'': background for the day numbers of the next and previous months.&lt;br /&gt;
*** ''hoverHighlight'': background for the day under the mouse cursor.&lt;br /&gt;
*** ''today'': border for the current day cell.&lt;br /&gt;
*** ''selected'': border for the selected day cell.&lt;br /&gt;
*** ''red'': border for holidays on sundays&lt;br /&gt;
*** ''green'': border for holidays during week days &lt;br /&gt;
**'''/clock.svg''': an analog clock face. it must have the following named elements:&lt;br /&gt;
*** ''ClockFace'': the background of the clock, usually containing the numbers, etc&lt;br /&gt;
*** ''HourHand'': the hour hand, pointing down in the svg&lt;br /&gt;
*** ''MinuteHand'': the minute hand, pointing down in the svg&lt;br /&gt;
*** ''SecondHand'': the second hand, pointing down in the svg&lt;br /&gt;
*** ''HourHandShadow'', ''MinuteHandShadow'' and ''SecondHandShadow'': drop shadows for the hands (optional, KDE 4.1 and later) &lt;br /&gt;
*** ''HandCenterScrew'': the &amp;quot;pin&amp;quot; that holds the hands together in the center&lt;br /&gt;
*** ''Glass'': a final overlay which allows for things such as the appearance of glass&lt;br /&gt;
*** ''hint-square-clock'': if present the shape of the clock will be square rather than round&lt;br /&gt;
*** Note: In the svg, the Hand elements must be placed in a position that indicates the time 6:30:30. The y-axis position of the Hand elements with respect to the center of ClockFace is the one they will have in the rendered applet. The x-axis position of the Hand elements does not matter. The Shadow elements should have the same y-axis position as their Hand element counterpart.&lt;br /&gt;
** '''/configuration-icons''': it's a set of simple icons that are meant to be shortcuts for configuration actions (KDE 4.2 and later). Must contain the following elements:&lt;br /&gt;
*** ''close'': a close icon&lt;br /&gt;
*** ''configure'': a setup action&lt;br /&gt;
*** ''move''&lt;br /&gt;
*** ''resize-vertical'': resize in the y axis&lt;br /&gt;
*** ''resize-horizontal'': resize in the x axis&lt;br /&gt;
*** ''size-diagonal-tl2br'': resize diagonal, usually an arrow from top-left to bottom-right&lt;br /&gt;
*** ''size-diagonal-tr2bl'': resize diagonal, usually an arrow from top-right to bottom-left&lt;br /&gt;
*** ''rotate''&lt;br /&gt;
*** ''help''&lt;br /&gt;
*** ''maximize''&lt;br /&gt;
*** ''unmaximize''&lt;br /&gt;
*** ''collapse'': set something in a minimized, collapsed status&lt;br /&gt;
*** ''restore'': restore from ''collapse'' status&lt;br /&gt;
*** ''status'': refers to a status of something, logging or system monitoring in general&lt;br /&gt;
*** ''retourn-to-source'': make detached extender items return to their owner applet&lt;br /&gt;
*** ''add'' and ''remove'': specular actions, adding and removing for instance an item from a list&lt;br /&gt;
*** ''delete'': the (potentially dangerous) action of deleting something&lt;br /&gt;
** '''/containment-controls.svg''': handles for the control used to resize the panel (KDE 4.1 and later).   The following elements are required.&lt;br /&gt;
*** ''maxslider'' maximum size slider, south position&lt;br /&gt;
*** ''minslider'' minimum size slider, south position&lt;br /&gt;
*** ''offsetslider'' positioning slider, south position&lt;br /&gt;
*** Each of the above elements must be present with ''north'', ''south'', ''east'' and ''west'' prefixes for each panel position.&lt;br /&gt;
*** There are also four backgrounds (north, south, east and west orientations) for the ruler widget itself in the &amp;quot;Backgrounds format&amp;quot;, since the width of the widget is 100% the elements of left and right (or north and bottom if vertical) are not needed&lt;br /&gt;
** '''/dragger.svgz''': meant to be a generic drag handle (not currently used but available). It needs to contain the same elements as other backgrounds, see the section about backgrounds above. In addition it needs the following element:&lt;br /&gt;
*** ''hint-preferred-icon-size'': the size icons within the drag handle should get. The vertical size of the dragger is also derived from this: this size hint + the dragger's margins.&lt;br /&gt;
** '''/extender-background.svgz''': background for extenders. It needs the same elements as other backgrounds.&lt;br /&gt;
** '''/extender-dragger.svgz''': Same as dragger.svgz. Drag handle for extenders (like the notification applet, KDE 4.2 and later). It needs to contain the same elements as other backgrounds, see the section about backgrounds above. In addition it needs the following element:&lt;br /&gt;
*** ''hint-preferred-icon-size'': the size icons within the drag handle should get. The vertical size of the dragger is also derived from this: this size hint + the dragger's margins.&lt;br /&gt;
*** Since KDE 4.6 it contains two optional prefixes: ''grouped'' for extender items contained in extender groups and ''root'' for root extender items. The version without prefix must still exist and is still used for extenders that don't have a stacked appearance.&lt;br /&gt;
** '''/frame.svgz''' : a generic frame, used mostly for widget containers, to visually group widgets together. It must contain the following prefixes, for different 3d looks:&lt;br /&gt;
*** ''sunken''&lt;br /&gt;
*** ''plain''&lt;br /&gt;
*** ''raised''&lt;br /&gt;
** '''/glowbar.svgz''' : a frame without a prefix, it represents a glow, it's used for instance in Plasma Desktop for the panel autohide unhide hint.&lt;br /&gt;
** '''/identiconshapes.svgz''' : shapes for the auto-generation of the  activity icons, they must be named from ''Shape1'' to ''Shape32''. Since KDE SC 4.5&lt;br /&gt;
** '''/line.svgz''' : a simple line use to separate items in layouts, containe ''vertical-line'' and ''horizzontal-line'' elements (since KDE 4.3)&lt;br /&gt;
** '''/lineedit.svgz''': it's a framesvg, used to style line edits, spinboxes and other similar fields (since KDE 4.4) it must have the following prefixes&lt;br /&gt;
*** ''base'': the background of the line edit&lt;br /&gt;
*** ''focus'': will be drawn outside base, when the line edit has input focus&lt;br /&gt;
*** ''hover'': will be drawn outside base, when the line edit is under the mouse&lt;br /&gt;
** '''/listitem.svgz''': used for &amp;quot;opened&amp;quot;/clicked notifications (since KDE 4.10)  &lt;br /&gt;
** '''/monitor.svgz''' : represents a screen, it's used in places such as the wallpaper config dialog. It contains a frame without prefixes and the following extra elements:&lt;br /&gt;
*** ''glass'' : glass reflection effect over the screen&lt;br /&gt;
*** ''base'' : a stand for the monitor&lt;br /&gt;
** '''/pager.svgz''' : graphic elements for the little screens of the pager, it must have 3 frames with the following prefixes:&lt;br /&gt;
*** ''normal'' : all virtual desktops&lt;br /&gt;
*** ''active'' : active virtual desktop&lt;br /&gt;
*** ''hover'' : virtual desktop under mouse&lt;br /&gt;
**'''/panel-background.svg''': the background image for panels.&lt;br /&gt;
*** If you want to create different background for panels located at the top, bottom, left or right, then also create sets of background elements with the following prefixes: ''north'', ''south'', ''west'' and ''east'' respectively. For example the center element of the left positioned panel's background should be named ''west-center''. (KDE 4.1 and later)&lt;br /&gt;
*** When the panel is not 100% wide/tall the north, south etc. prefixes becomes ''north-mini'', ''south-mini'' etc. (KDE 4.2 and later). Please note that if KRunner &amp;lt;menuchoice&amp;gt;Positioning&amp;lt;/menuchoice&amp;gt; is set to &amp;lt;menuchoice&amp;gt;Top edge of screen&amp;lt;/menuchoice&amp;gt; (which is default), then KDE treats it as not 100% wide north panel.&lt;br /&gt;
*** All prefixes fallback to a no prefix version when not available&lt;br /&gt;
*** if a prefix called ''shadow'' is available, it will be used as a drop shadow for the panel when compositing is available.&lt;br /&gt;
** '''/plot-background.svg''': a background for plotter (graph) widgets, such as the plots in ksysguard&lt;br /&gt;
** '''/scrollbar.svgz''' : the classical ''elevator'' scrollbar, must have the following elemens : ''arrow-up'', ''mouseover-arrow-up'', ''sunken-arrow-up'', same 3 elements for ''arrow-left'', ''arrow-right'' and ''arrow-bottom''. From KDE 4.10 it can have an element called ''hint-scrollbar-size'' that says at what size the scrollbar should be rendered (width if vertical, height if horizontal). It must also have frames with the following prefixes:&lt;br /&gt;
*** ''slider''&lt;br /&gt;
*** ''mouseover-slider''&lt;br /&gt;
*** ''sunken-slider''&lt;br /&gt;
*** ''background-vertical''&lt;br /&gt;
*** ''background-horizontal''&lt;br /&gt;
** '''/scrollwidget''': used by Plasma::ScrollWidget, it has a single prefix (KDE4.4 and later)&lt;br /&gt;
*** ''border'': a border used when the scrollbar is enabled&lt;br /&gt;
** '''/slider.svgz''': used to theme sliders (since KDE 4.3) it must have the following elements:&lt;br /&gt;
*** ''vertical-slider-line'': the background for vertical sliders, it indicates how much the indicator can scroll&lt;br /&gt;
*** ''vertical-slider-handle'': the handle for vertical sliders&lt;br /&gt;
*** ''vertical-slider-focus'': background for the handle when it has input focus (since KDE 4.4)&lt;br /&gt;
*** ''vertical-slider-hover'': background for the handle when it is under the mouse (since KDE 4.4)&lt;br /&gt;
*** ''groove'': groove for the slider (since KDE 4.8 replaces *-slider-line)&lt;br /&gt;
*** ''groove-highlight'': highlight part of the groove (since KDE 4.8 replaces *-slider-line)&lt;br /&gt;
*** ''horizontal-slider-line'': the background for horizontal sliders&lt;br /&gt;
*** ''horizontal-slider-handle'': the handle for horizontal sliders&lt;br /&gt;
*** ''horizontal-slider-focus'': background for the handle when it has input focus (since KDE 4.4)&lt;br /&gt;
*** ''horizontal-slider-hover'': background for the handle when it is under the mouse (since KDE 4.4)&lt;br /&gt;
** '''/systemtray.svg''': a background for the system tray (KDE 4.1 and later). See the section on backgrounds above for information on the required elements in this file. Since KDE 4.2 it contains also the '''lastelements''' prefix, used for elements in the last position of the systray and the four elements '''expander-right''' up, left and bottom, used for the icon that shows/hides the other systray icons. Since KDE 4.3 there are the '''horizontal-separator''' and '''vertical-separator''' used as a border to separe the last elements.&lt;br /&gt;
**'''/tasks.svg''': task item backgrounds for tasks (KDE 4.1 and later). See the section on backgrounds above for information on the required elements in this file.  The following element prefixes are required:&lt;br /&gt;
*** ''focus'': background of focused task item&lt;br /&gt;
*** ''hover'': background when the pointer hovers the task item. From KDE 4.2 focus and hover can have ticker borders that will be painted outside the task button, useful to make a glow effect.&lt;br /&gt;
*** ''attention'': background when tasks item is trying to get attention&lt;br /&gt;
*** ''normal'': background of normal, unfocused task item&lt;br /&gt;
*** ''minimized'': background for minimized tasks&lt;br /&gt;
*** The svg should contain elements of all five prefixes, if a prefix is missing that element will be not be drawn.&lt;br /&gt;
** '''/toolbox.svgz''' : graphical elements for the desktop toolbox, it must have a frame without prefixes plus those following elements:&lt;br /&gt;
*** ''desktop-northwest'', ''desktop-northeast'', ''desktop-southwest'', ''desktop-southeast'': the 4 corners for the desktop toolbox.&lt;br /&gt;
*** ''panel-north'', ''panel-south'', ''panel-west'', ''panel-east'' : elements for the panel toolbox.&lt;br /&gt;
** '''/tooltip.svg''': background for tooltips used for instance in the taskbar and with icons. See the section on backgrounds above for information on the required elements in this file.&lt;br /&gt;
** '''/translucentbackground.svg''': a standard background image for plasmoids that for their nature are bigger and with not much text. In this case a translucent background looks better. It needs the same elements of background.svg in it. If this file is not present, the plasmoids that uses this will use background.svg instead.&lt;br /&gt;
** '''/media-delegate.svgz''': intended to be used as delegate for media types: as KDE 4.7 contains a single prefix: picture.&lt;br /&gt;
** '''/viewitem.svgz''': controls the background look of selections (results in KRunner, networks in network applet), it can have 4 elements of 9 parts each with prefix ''normal'', ''hover'', ''selected'', ''selected+hover''.&lt;br /&gt;
** '''/toolbar.svgz''': used in the ToolBar QML component, can be used in custom applications in a similar way, contains a single frame without prefix. Since KDE 4.8.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Opaque&amp;quot; folder==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/opaque}} the same hierarchy can be found: when compositing is disabled files in this folder are preferred over the corresponding ones listed above. Only background for top level windows are appropriate to go in this folder.&lt;br /&gt;
&lt;br /&gt;
Since top-level windows will be shaped according to the transparency of the svg and window shapes don't support alpha-blending, if the svg has rounded borders they should have a shape that don't require antialiasing, like the following example.&lt;br /&gt;
&lt;br /&gt;
[[Image:No_composite_plasma_svg.jpg]]&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;translucent&amp;quot; folder ==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/translucent}} the same hierarchy is used: when the KWin ''blurbehind'' effect is enabled the file under this folder will be used if found. As the opaque folder, only elements that will be rendered as window backgrounds should be present in this folder, so the dialogs folder, plus the panel and tooltip backgrounds. When is possible to blur the background of the window, the graphics can be more transparent, keeping the window text readable.&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;icons&amp;quot; folder==&lt;br /&gt;
&lt;br /&gt;
In the folder {{path|share/apps/desktoptheme/icons}}, SVG files that contain scalable icons for use with application status items (e.g. icons in the system tray) are contained.&lt;br /&gt;
&lt;br /&gt;
The default theme contains the following SVGs:&lt;br /&gt;
&lt;br /&gt;
* audio.svgz&lt;br /&gt;
* battery.svgz&lt;br /&gt;
* device.svgz&lt;br /&gt;
* klipper.svgz&lt;br /&gt;
* kwalletmanager.svgz&lt;br /&gt;
* nepomuk.svgz&lt;br /&gt;
* network.svgz&lt;br /&gt;
* notification.svgz&lt;br /&gt;
* preferences.svgz&lt;br /&gt;
* wallet.svgz&lt;br /&gt;
&lt;br /&gt;
The files are named the same as the matching icon theme names or their prefix (both work, which is why &amp;quot;audio&amp;quot; matches for mixers, e.g.). Other icons can be added as long as they match the names of requested icons by the application status items.&lt;br /&gt;
&lt;br /&gt;
== Theming Application Icons in the Systemtray ==&lt;br /&gt;
&lt;br /&gt;
Applications that use a function called setIconByName can have their icon in the system tray themed. Applications can have more than one icon (for example Konversation flashes between two different icons to hilight when your username is mentioned and Kpackagekit changes it's icon depending on the status of it's upgrade / installs). Theming these icons requires firstly that an application has been coded to use setIconByName, and secondly that you call your svg object by the same name (use ctrl+shift+o in Inkscape). Then you can just put your .svgz in {{path|share/apps/desktoptheme/default/icons}} (changing default to your theme folder name).&lt;br /&gt;
&lt;br /&gt;
The following is an attempt to list known icon names that may be themed by this method. Please add any other known icon names and the object ID here to help other people making themes:&lt;br /&gt;
&lt;br /&gt;
* Amarok&lt;br /&gt;
** filename: '''amarok.svgz'''&lt;br /&gt;
*** ID: '''amarok'''&lt;br /&gt;
* audio (for kmix, veromix, a.o.)&lt;br /&gt;
** filename: '''audio.svgz'''&lt;br /&gt;
*** volume muted ID: '''audio-volume-muted'''&lt;br /&gt;
*** volume low ID: '''audio-volume-low'''&lt;br /&gt;
*** volume medium ID: '''audio-volume-medium'''&lt;br /&gt;
*** volume high ID: '''audio-volume-high'''&lt;br /&gt;
* battery&lt;br /&gt;
** filename: '''battery.svgz'''&lt;br /&gt;
*** battery (always shown object) ID: '''Battery'''&lt;br /&gt;
*** on powerline ID: '''AcAdapter'''&lt;br /&gt;
*** no battery found ID: '''Unavailable'''&lt;br /&gt;
*** battery on 10% ID: '''Fill10''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 20% ID: '''Fill20'''&lt;br /&gt;
*** battery on 30% ID: '''Fill30''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 40% ID: '''Fill40'''&lt;br /&gt;
*** battery on 50% ID: '''Fill50''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 60% ID: '''Fill60'''&lt;br /&gt;
*** battery on 70% ID: '''Fill70''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 80% ID: '''Fill80'''&lt;br /&gt;
*** battery on 90% ID: '''Fill90''' ''(new in 4.11)''&lt;br /&gt;
*** battery on 100% ID: '''Fill100'''&lt;br /&gt;
* device (the device-notifier)&lt;br /&gt;
** filename: '''device.svgz'''&lt;br /&gt;
*** ID: '''device-notifier'''&lt;br /&gt;
* juk&lt;br /&gt;
** filename: '''juk.svgz'''&lt;br /&gt;
*** ID: '''juk'''&lt;br /&gt;
* KGet&lt;br /&gt;
** filename: '''kget.svgz'''&lt;br /&gt;
*** ID: '''kget'''&lt;br /&gt;
* Klipper&lt;br /&gt;
** filename: '''klipper.svgz'''&lt;br /&gt;
*** ID: '''klipper'''&lt;br /&gt;
* Konversation&lt;br /&gt;
** filename: '''konversation'''&lt;br /&gt;
*** ID: '''konversation'''&lt;br /&gt;
** filename: '''konv_message.svgz''' (new incomming message)&lt;br /&gt;
*** ID: '''konv_message'''&lt;br /&gt;
* Kopete&lt;br /&gt;
** filename: '''kopete.svgz'''&lt;br /&gt;
*** öffline ID: '''kopete-offline'''&lt;br /&gt;
*** online ID: '''kopete'''&lt;br /&gt;
*** other statuses are not supported atm&lt;br /&gt;
* Korgac&lt;br /&gt;
** filename: '''korgac.svgz'''&lt;br /&gt;
*** ID: '''korgac'''&lt;br /&gt;
* Ktorrent&lt;br /&gt;
** filename: '''ktorrent.svgz'''&lt;br /&gt;
*** ID: '''ktorrent'''&lt;br /&gt;
* message-indicator&lt;br /&gt;
** filename: '''message-indicator.svgz'''&lt;br /&gt;
*** standard ID: '''normal'''&lt;br /&gt;
*** new message ID: '''new'''&lt;br /&gt;
* Nepomuk&lt;br /&gt;
** filename: '''nepomuk.svgz'''&lt;br /&gt;
*** ID: '''nepomuk'''&lt;br /&gt;
* Network-management-plasmoid&lt;br /&gt;
** filename: '''network.svgz'''&lt;br /&gt;
*** wired online ID: '''network-wired-activated'''&lt;br /&gt;
*** wired offline ID: '''network-wired'''&lt;br /&gt;
*** wless offline ID: '''network-wireless-0'''&lt;br /&gt;
*** wless on 20% ID: '''network-wireless-20'''&lt;br /&gt;
*** wless on 25% ID: '''network-wireless-25'''&lt;br /&gt;
*** wless on 40% ID: '''network-wireless-40'''&lt;br /&gt;
*** wless on 50% ID: '''network-wireless-50'''&lt;br /&gt;
*** wless on 60% ID: '''network-wireless-60'''&lt;br /&gt;
*** wless on 75% ID: '''network-wireless-75'''&lt;br /&gt;
*** wless on 80% ID: '''network-wireless-80'''&lt;br /&gt;
*** wless on 100% ID: '''network-wireless-100'''&lt;br /&gt;
* preferences (some apps like bluedevil, krandrtray, text-to-speech)&lt;br /&gt;
** filename: '''preferences.svgz'''&lt;br /&gt;
*** bluedevil online ID: '''preferences-system-bluetooth'''&lt;br /&gt;
*** bluedevil offline ID: '''preferences-system-bluetooth-inactive'''&lt;br /&gt;
*** text-to-speech ID: '''preferences-desktop-text-to-speech'''&lt;br /&gt;
*** krandrtray ID: '''preferences-desktop-display-randr'''&lt;br /&gt;
*** activity manager ID: '''preferences-activities'''&lt;br /&gt;
* Printer applet&lt;br /&gt;
** filename: '''printer.svgz'''&lt;br /&gt;
*** ID: '''printer'''&lt;br /&gt;
* Quassel IRC&lt;br /&gt;
** filename: '''quassel.svgz'''&lt;br /&gt;
*** quassel öffline ID: '''quassel_inactive'''  (&amp;quot;quassel-inactive&amp;quot; in kde 4.10)&lt;br /&gt;
*** quassel online ID: '''quassel'''&lt;br /&gt;
*** quassel new message ID: '''quassel_message''' (&amp;quot;quassel-message&amp;quot; in kde 4.10)&lt;br /&gt;
* KWallet&lt;br /&gt;
** filename: '''wallet.svgz'''&lt;br /&gt;
*** open ID: '''wallet-open'''&lt;br /&gt;
*** closed ID: '''wallet-closed'''&lt;br /&gt;
&lt;br /&gt;
At the time of writing, KDE-PIM (Kmail, Akregator etc) do not yet use setIconByName and thus aren't able to be themed this way. Reportedly, this is is coming in Kontact 2.&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-06-04T16:52:04Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Battery monitor merged. And the other stuff I didn't have time for unfortunately&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
*[[Schedules/KDE4/4.12 Feature Plan]] (next major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk|Better Scheduling for Nepomuk indexing - File and Email|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk|Configurable KIO Backend for FileWatcher|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureTodo|nepomuk|Indexers for ebook formats|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureTodo|nepomuk|Indexers for original msoffice formats|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcontroller-qml|QML version of the current Nepomuk controller. |joerg.ehrichs@gmx.de|Jörg Ehrichs}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Update old shortcuts.|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Use https where possible. ({{bug |308029}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Look for url on clipboard when creating new shortcut. ({{bug |146880}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Insert query placeholder button. ({{bug |146879}}) |de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureInProgress|DrKonqi| Detect and inform users they are using outdated and unsupported versions. ({{bug |315073}})|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Integration with KScreen ({{bug |319994}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Support for buffer age extensions ({{bug |319995}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Egl backend using Wayland Surfaces ({{bug |319996}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KWin keybindings is missing a shortcut for move window to previous screen ({{bug |303083}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureTodo|kwin|There should be a shortcut to close window group ({{bug |238233}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|JJ: Use a bit of Wobbly effect while closing a window also. ({{bug |250856}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Highlight/shadow of application on screen 1 displayed on screen 0 ({{bug |278697}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Allow Effects to Temporarily Grab All Screen Edges ({{bug |283397}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Translucency Effect needs to be rewritten on top of AnimationEffect ({{bug |294856}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Broken Desktop Switch On-Screen Display Animation ({{bug |316372}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows with no border (decoration) are visible on all activities ({{bug |274931}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Thumbnail Aside&amp;quot; effect visible when screen is locked -- privacy issue ({{bug |255712}}, Review 108670)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Quick Tile shortcuts should be toggle buttons ({{bug |263755}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Shaded windows are not considered in ::checkWorkspacePosition ({{bug |268660}}, Review 109679)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|build fails - getdomainname ({{bug |270586}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings for Disabling Screen Edges ({{bug |271607}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add fade in/fade out for outline effect ({{bug |274474}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Compositing not possible on each screen with multi head ({{bug |282677}}, Review 107853)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Remove &amp;quot;Move TBLR&amp;quot; from Zoom or at least pass the shortcuts reasonable names ({{bug |288903}}, Review 108290)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Hot Screen Corners do not work properly in multiscreen setup with different resolutions ({{bug |290887}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|When &amp;quot;dim inactive&amp;quot; is used, and &amp;quot;apply effect to groups&amp;quot; is disabled, blocky shadows appear everywhere ({{bug |293236}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin does not honor disableMultihead true and causes window focus problems ({{bug |293734}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|DesktopThumbnailItem for QML ({{bug |296067}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Packages for Desktop Switching Layouts ({{bug |296068}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Walk Through Desktop layout rendering desktop previews ({{bug |296069}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch ({{bug |296070}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Drop BoxSwitch effect ({{bug |296071}}, Review 104454)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}}, Review 109572)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|New Window Decoration for Thin Clients ({{bug |299143}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}}, Review 110402)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Maximized windows should be moved and maximized to second screen if they are moved with shortcut ({{bug |304506}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window shortcut containing space: &amp;quot;Launch Mail&amp;quot; doesn't work ({{bug |305434}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}}, Review 108445)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|The &amp;quot;walk through desktop&amp;quot; shortcuts don't show up in the desktop kcm ({{bug |306404}}, Review 108287)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Upper part of windows tears when moving it left/right ONLY in upper part of display ({{bug |307965}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin uses getdomainname() to obtain the hostname, should use getaddrinfo() ({{bug |308391}}, Review 108235)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Use Resize Area in Aurorae ({{bug |308992}}, Review 107936)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Configurable quick tile area config GUI ({{bug |308993}}, Review 109683)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Crash in KWin::Screenedge::unreserve on deactivating Actos script ({{bug |309695}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] GHNS button displays icon, even if disabled in style settings ({{bug |309724}}, Review 108286)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|ScreenEdge::raisePanelProxies() is slow due to sync XLib communication ({{bug |311592}}, Review 108513)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|add rule to disobey configure requests ({{bug |311720}}, Review 109691)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Drop explosion effect ({{bug |312176}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Windows wider/taller than screen are cut off/partially mirrored when doing a screenshot of them using ksnapshot ({{bug |312851}}, Review 108258)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Effects - Zoom: Mouse Tracking &amp;quot;Push&amp;quot; laggy, inprecise and/or not working ({{bug |312956}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Login&amp;quot; effect does not fade in on secondary monitor(s) with a multi screen setup ({{bug |313061}}, Review 108362)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Overlap factor of keepAbove windows in placeSmart should be infinite ({{bug |313379}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|XReconfigureWMWindow fails to stack (lower) a window using an Above CWSibling combination ({{bug |313909}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Position rule conflicts with maximization rule ({{bug |314392}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|String representation of KWin::Client should include caption, not name. ({{bug |314402}}, Review 108959)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Please explain the meaning of vsync in the config gui ({{bug |314998}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when switching windows ({{bug |315528}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|kwin crash when clicking kickoff widget (&amp;quot;K menu&amp;quot;) ({{bug |315951}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dual screen issue caused by d6b3f6983efebc42abd6028ece9c3ec7facea2d0 ({{bug |316040}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Description text for the Slide Back effect is incorrect ({{bug |316877}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Java Swing Apps do not receive Deiconify event if window is shaded ({{bug |317025}}, Review 109593)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Snapping: Can no longer move window to occupy full screen width ({{bug |317845}}, Review 109864)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|when using flip switch to switch virtual desktop, activating hot corner trigger becomes difficult ({{bug |318294}}, Review 110013)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|rickstockton@reno-computerhelp.com}}&lt;br /&gt;
{{FeatureDone|kwin|'Slide back' effect should react on stacking order changes ({{bug |294490}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureDone|kwin|Track mouse effect generates graphics artifacts ({{bug |304435}})|thomas.luebking@gmail.com}}&lt;br /&gt;
{{FeatureDone|kwin|vertical maximization doesn't work as expected ({{bug |91703}}, Review 103948)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Slide Back: Sometimes the Inactive window pops to the font for apprx. one frame when it is activated. ({{bug |294865}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex buffer object handling, vertex uploading, and the window and decoration painting code|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|window manager|Add support for creating an OpenGL 3.1 core context|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|window manager|GL_ARB_robustness support|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|window manager|Support for detecting GPU resets, and restarting the compositor|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Order and group tasks by activity|fid@gpul.org|José Millán Soto}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|UI overhaul for battery monitor|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|powerdevil|Remember action settings when action is disabled|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|klipper|Allow to keep items in clipboard history|fid@gpul.org|José Millán Soto}}&lt;br /&gt;
{{FeatureTodo|plasma weather data engine|Add search query (based on code from libplasmaweather)|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureTodo|plasma weather data engine|Allow to sort search results by relevance score|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureTodo|powerdevil|Asynchronous fallable actions|oliver.henshaw@gmail.com|Oliver Henshaw}}&lt;br /&gt;
{{FeatureTodo|powerdevil|Further asynchronicity in powerdevil|oliver.henshaw@gmail.com|Oliver Henshaw}}&lt;br /&gt;
{{FeatureTodo|screenlocker|inhibitions/idle tracking in ksmserver ({{bug |318461}})|oliver.henshaw@gmail.com|Oliver Henshaw}}&lt;br /&gt;
{{FeatureTodo|screenlocker|Fixes for legacy screensaver that are too invasive for bugfix releases|oliver.henshaw@gmail.com|Oliver Henshaw}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Clean up Places panel context menus|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Permit to disable certain context menu plugins by default if they jeopardize the stability of the application|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|Dolphin|KFileItemModelRolesUpdater: only perform expensive operations for items inside (or close to the) visible area|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|Dolphin|KFileItemModel: reduce memory usage by making use of implicit sharing|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Middle clicking on archive files in dolphin does not open them in a new tab. ({{bug |196035}})|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|&amp;quot;Create new folder&amp;quot; in the folder panel (Maybe use DolphinContextMenu). ({{bug |270360}})|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Factor out the tabbing code from DolphinMainWindow into different classes + Implement tab-bar drag and drop (with drop indicator). ({{bug |216433}})|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|TimSort + Sorting Benchmarks|emmanuelpescosta099@gmail.com|Emmanuel Pescosta}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Search-plugin: Add &amp;quot;Current file mode&amp;quot;|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: As-you-type search in current file|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Multi line search &amp;amp; replace|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Replace &amp;quot;\&amp;lt;number&amp;gt;&amp;quot; with corresponding regexp-captures in the replace string|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Unify the stack trace and local variables to one ToolView|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Do not update stack/locals view if not visible|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Marble|GHNS Map Installation In Marble Qt|earthwings@gentoo.org|Dennis Nienhüser}}{{FeatureInProgress|Marble|Support GPX-tracks in elevationProfile|roman.karlstetter@googlemail.com|Roman Karlstetter}}&lt;br /&gt;
{{FeatureInProgress|Marble|Spherical Projection Panning|void@void|Paul Nader}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KTouch|Right-to-Left Training|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureInProgress|KTouch|Support for Custom Lessons|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|KStars|User data and Custom Catalog SQLite Databases|ra.rishab@gmail.com|Rishab Arora}}&lt;br /&gt;
{{FeatureDone|KStars|What's Interesting Tool|samikshan@gmail.com|Samikshan Bairagya}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide five skill levels (previously three)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide board size up to 15x15 (previously 10x10)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add multi-move undo and redo (previously one move only)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Improve the algorithm for computer opponent Newton|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make a new toolbar layout with a general-purpose stop-start button|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add optional pauses after computer moves or animation steps, to help new players understand how the game works|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Major internal restructure and rewrite: involving separation of model, view, control and AI classes, new classes for Game and AI_Box and executing AI code on a separate thread|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|okular|Configurable review tools {{bug |159601}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureDone|okular|Undo/Redo support in forms and annotations {{bug |177501}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Support excluding directories from a recursive search [https://git.reviewboard.kde.org/r/110273/ Review Request 110273]|biergaizi2009@gmail.com|Tom Li}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureTodo|kcalcore|Support for ical UID property in kdepim (kcalcore and gui)|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureTodo|Akonadi Client Libraries|GID Fetch Support|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|KABC|use uid's for references in ContactGroups|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Ark|Merge Basyskom's contributions|rakuco@FreeBSD.org|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Usability/HIG/Notifications</id>
		<title>Projects/Usability/HIG/Notifications</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Usability/HIG/Notifications"/>
				<updated>2013-06-01T18:45:38Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* Guidelines */ Added my 2cents to notification configurability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
A ''notification'' is an information that is not directly relevant to the user's current task. It is displayed via a certain [[Projects/Usability/HIG/NotificationMechanism|notification mechanism]] on a panel above/below the taskbar notification area. Notifications inform users about non-critical problems, but they don't prevent them.&lt;br /&gt;
&lt;br /&gt;
Notifications pop up and overlay all other windows. Multiple notifications are stacked vertically. Notifications disappear after a short period automatically (unless the cursor hovers over them), but can be closed by the user at any point. Each notification has its own [[Projects/Usability/HIG/CentralConfiguration|central configuration]] which can be reached by a button next to the close button.&lt;br /&gt;
== Examples ==&lt;br /&gt;
(remark: pictures only?)&lt;br /&gt;
=== Positive ===&lt;br /&gt;
* Email received&lt;br /&gt;
* New update available&lt;br /&gt;
* Download completed&lt;br /&gt;
* Low battery power&lt;br /&gt;
todo: picture&lt;br /&gt;
=== Negative ===&lt;br /&gt;
* Low space on medium (this information becomes relevant for file managers and invoked as modal message in this case)&lt;br /&gt;
todo: picture&lt;br /&gt;
== Guidelines ==&lt;br /&gt;
* Do not use notifications for user assistance (consider to use [[Projects/Usability/HIG/Tooltip|tool-tips]] or [[Projects/Usability/HIG/Balloon|balloons]] for short information, or refer to [[Projects/Usability/HIG/HelpSystem|help system]] for extended text.&lt;br /&gt;
* Do not use notifications for context relevant information that might interfere with the actual workflow (consider to use a [[Projects/Usability/HIG/MessageDialog|message dialog]].&lt;br /&gt;
* Do not add controls to notification. &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Thomas: I would remove this. Adding action buttons is allowed in the API and has reasonable use cases, other controls simply cannot be added technically)&amp;lt;/span&amp;gt;&lt;br /&gt;
* Do not override system settings. (remark: more specific)  &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Thomas: Which settings do you mean here?&amp;lt;/span&amp;gt;&lt;br /&gt;
* Provide title and content text (remark: not precise enough) &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Thomas: guidelines regarding the wording of title and content are indeed very important. Maybe celeste can help here.&amp;lt;/span&amp;gt;&lt;br /&gt;
* Make sure to make the origin of the notification clear from the notification title. For instance: &amp;quot;Amarok: Now playing&amp;quot; or &amp;quot;Konsole: Event&amp;quot;&lt;br /&gt;
* Keep the notification content concise (no more than about three simple sentences).&lt;br /&gt;
* Customize notification with the origin's icon.  &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Heiko: (remark: word &amp;quot;origin&amp;quot; needs to be replaced; &amp;quot;icon&amp;quot; might be replaced by technical term) &amp;lt;/span&amp;gt;&lt;br /&gt;
* Provide actionable information (e.g. &amp;quot;Low battery power&amp;quot; &amp;quot;Only 13 min (2%) capacity remaining. Please save your stuff now. Your system will get shut down soon.&amp;quot;) &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Heiko: (remark: should be according actual text)&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Heiko: to be defined: Are all notifications configured in KCM? If not, how to separate? -- Kai Uwe: All notifications emitted through KNotify (ie. application has a notifyrc file) can be configured. Using the FDO notification dbus iface directly is discouraged. In 4.11 there's a configure button on notifications.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code snippets ==&lt;br /&gt;
to be done&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-21T14:54:29Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* kde-workspace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
*[[Schedules/KDE4/4.12 Feature Plan]] (next major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcontroller-qml|QML version of the current Nepomuk controller. |joerg.ehrichs@gmx.de|Jörg Ehrichs}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Update old shortcuts.|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Use https where possible. ({{bug |308029}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureDone|Web Shortcuts|Look for url on clipboard when creating new shortcut. ({{bug |146880}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
{{FeatureInProgress|Web Shortcuts|Insert query placeholder button. ({{bug |146879}})|de.meyer.maarten@gmail.com|Maarten De Meyer}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma batterymonitor|UI overhaul for battery monitor|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Remember action settings when action is disabled|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Clean up Places panel context menus|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Search-plugin: Add &amp;quot;Current file mode&amp;quot;|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: As-you-type search in current file|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Multi line search &amp;amp; replace|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Replace &amp;quot;\&amp;lt;number&amp;gt;&amp;quot; with corresponding regexp-captures in the replace string|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Unify the stack trace and local variables to one ToolView|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Do not update stack/locals view if not visible|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Marble|GHNS Map Installation In Marble Qt|earthwings@gentoo.org|Dennis Nienhüser}}{{FeatureInProgress|Marble|Support GPX-tracks in elevationProfile|roman.karlstetter@googlemail.com|Roman Karlstetter}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide five skill levels (previously three)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide board size up to 15x15 (previously 10x10)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add multi-move undo and redo (previously one move only)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Improve the algorithm for computer opponent Newton|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Make a new toolbar layout with a general-purpose stop-start button|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add optional pauses after computer moves or animation steps, to help new players understand how the game works|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Major internal restructure and rewrite: involving separation of model, view, control and AI classes, new classes for Game and AI_Box and executing AI code on a separate thread|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|okular|Configurable review tools {{bug |159601}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|okular|Undo/Redo support in PDF forms {{bug |177501}}|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureInProgress|Juk|Support excluding directories from a recursive search [https://git.reviewboard.kde.org/r/110273/ Review Request 110273]|biergaizi2009@gmail.com|Tom Li}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureTodo|KABC Contact groups|use uid's for references|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-18T12:09:18Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* kde-baseapps */ Just in case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcontroller-qml|QML version of the current Nepomuk controller. |joerg.ehrichs@gmx.de|Jörg Ehrichs}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Clean up Places panel context menus|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Search-plugin: Add &amp;quot;Current file mode&amp;quot;|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: As-you-type search in current file|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Multi line search &amp;amp; replace|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Search-plugin: Replace &amp;quot;\&amp;lt;number&amp;gt;&amp;quot; with corresponding regexp-captures in the replace string|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Unify the stack trace and local variables to one ToolView|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|gdb-plugin: Do not update stack/locals view if not visible|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Provide five skill levels (previously three)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Provide board size up to 15x15 (previously 10x10)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Add multi-move undo and redo (previously one move only)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Improve the algorithm for computer opponent Newton|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Make computer think-times shorter and responses faster|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Make a new toolbar layout with a general-purpose stop-start button|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Add optional pauses after computer moves or animation steps, to help new players understand how the game works|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KJumpingCube|Major internal restructure and rewrite: involving separation of model, view, control and AI classes, new classes for Game and AI_Box and executing AI code on a separate thread|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureTodo|KABC Contact groups|use uid's for references|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-16T18:43:31Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* kdeutils */ Let's hope the best for the Ark rewrite ;)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-16T18:42:48Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* kde-workspace */ battery monitor done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|SendLaterAgent|Agent for allow to send later mails|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|PimActivity|Create a library to support activity in pim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|headerthemeeditor|Program to edit kmail header theme based on Grantlee|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Sieve|Add support for autogenerate sieve script|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|Blogilo|Use new widget component based on qtwebkit for html editor|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureDone|ImportWizard|Allow to import settings/data for trojita and improve all others importer|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-14T21:35:41Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Configure button for notifications done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-13T21:22:35Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* kde-baseapps */ Don't need it anymore. Sorry :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureInProgress|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-05-13T21:14:09Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Added the stuff I'm planning for 4.11 (plasma notifications configuring, improve multiple batteries situation)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureInProgress|plasma notifications|Add button to notifications that allow configuring them|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|plasma batterymonitor|Improve situtation with multiple batteries (show battery names, dont just sum up _all_ the percentages etc)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Implement notifications for non-internal batteries (aka &amp;quot;Your mouse is running low&amp;quot;)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté plugin now supports Python2 or Python3 as a build-time option|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté GID plugin now supports autocompletion based on the contents of the ID file|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Many generic functions and generic classes, likely the more outstanding are the autocompletations. Now you can create a code completion model with very few lines from Python&lt;br /&gt;
|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté python utils plugin. Utils to Python: Checker Parse, Checker Pep8, Checker Pyflakes, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté javascript utils plugin. Utils to JavaScript: Autocomplete, Autocomplete jQuery, Checker JSLint, Pretty JSON, Snippets|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté XML pretty plugin. A simple XML pretty printer. XML formatter which a good indents|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Django utils plugin. Utils to Django: Snippets, and template utils|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|Pâté Python autocomplete plugin.|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
{{FeatureDone|Kate|[http://kate-editor.org/2013/04/23/a-rich-python-console-and-more-in-kate-editor/ Integration of the python_autocomplete and python_console_ipython plugins with the project plugin] .|goinnn@gmail.com|Pablo Martín}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|kolourpaint|WebP image format plugin|kollix@aon.at|Martin Koller}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Thread:Talk:KDE_System_Administration/PlasmaDesktopScripting/Writing_an_example_for_setting_widget%27s_geometry/reply</id>
		<title>Thread:Talk:KDE System Administration/PlasmaDesktopScripting/Writing an example for setting widget's geometry/reply</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Thread:Talk:KDE_System_Administration/PlasmaDesktopScripting/Writing_an_example_for_setting_widget%27s_geometry/reply"/>
				<updated>2013-01-10T01:36:21Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Reply to Writing an example for setting widget's geometry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sorry, I just saw this message :D&lt;br /&gt;
Go ahead :-)&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

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

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

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/API</id>
		<title>Development/Tutorials/Plasma/JavaScript/API</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Plasma/JavaScript/API"/>
				<updated>2011-05-17T23:48:47Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* LinearLayout */ Did not get the QtOrientation thing, so I added the parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction to the Plasmoid JavaScript API  =&lt;br /&gt;
&lt;br /&gt;
This document provides an overview/reference of the Simplified JavaScript API for Plasmoids. The &amp;quot;Simplified&amp;quot; refers to the fact that it isn't a full binding to all of Qt or KDE's libraries, but a highly focused set of bindings designed to make writing Plasmoids fast and easy, while remaining powerful.&lt;br /&gt;
&lt;br /&gt;
The API in this documentation covers the JavaScript API as it appears in the KDE Software Compilation as of version 4.4, unless otherwise noted. This API ships as part of the KDE Base Runtime package, so can be relied on being there by any application that is Powered By KDE.&lt;br /&gt;
&lt;br /&gt;
If you have not done so already, please read the [http://websvn.kde.org/trunk/KDE/kdebase/workspace/plasma/design/plasmoids &amp;quot;plasmoid&amp;quot; design document] first. &lt;br /&gt;
&lt;br /&gt;
== What Is A Simplified JavaScript Plasmoid?  ==&lt;br /&gt;
&lt;br /&gt;
This document describes the native Plasma API available to Simplified JavaScript Plasmoids. What makes them &amp;quot;Simplified&amp;quot; is that they do not have access to the entire C++ API in the Plasma, KDE and Qt libraries (let alone things lower in the API stack). This helps ensure that these Plasmoids are more likely to work properly between releases as changes in underlying API don't affect them as well as allowing Plasma to offer stronger security guarantees around them. &lt;br /&gt;
&lt;br /&gt;
To denote that this Plasmoid is a Simplified JavaScript widget, ensure that in the metadata.desktop file there is this line: &lt;br /&gt;
&lt;br /&gt;
X-Plasma-API=javascript &lt;br /&gt;
&lt;br /&gt;
What follows is a description of the runtime environment available to a Simplified JavaScript Plasmoid. &lt;br /&gt;
&lt;br /&gt;
== QtScript  ==&lt;br /&gt;
&lt;br /&gt;
The Simplified JavaScript API is powered by Qt's QtScript system which provides access to a full featured ECMA Script interpreter. If it works in ECMA Script, it will work in a Simplified JavaScript Plasmoid. As an interesting implementation note, QtScript uses the high performance ECMA Script interpreter from WebKit and shares this code with QtWebKit. &lt;br /&gt;
&lt;br /&gt;
On top of the ECMA Script language, QtScript provides Qt integration features. Probably the most useful one in this context is the use of signals and slots which is Qt's callback mechanism. Signals may be emitted in QtScript by calling the signal method in question, a signal can be connected to a slot by using the connect() method (and disconnected with disconnect()) and any function defined in the Plasmoid may be used as a slot. For example: &amp;lt;code javascript=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function onClick()&lt;br /&gt;
{&lt;br /&gt;
    print(&amp;quot;We got clicked!&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function onFirstClick()&lt;br /&gt;
{&lt;br /&gt;
    print(&amp;quot;First click!&amp;quot;)&lt;br /&gt;
    button.clicked.disconnect(onFirstClick)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
button = new PushButton&lt;br /&gt;
button.clicked.connect(onClick)&lt;br /&gt;
button.clicked.connect(onFirstClick)&lt;br /&gt;
button.clicked()&lt;br /&gt;
&amp;lt;/code&amp;gt; This will print out: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
We got clicked!&lt;br /&gt;
First click!&lt;br /&gt;
&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
on the console when the Plasmoid starts, and the &amp;quot;We got clicked!&amp;quot; again whenever the button is clicked by the user.&lt;br /&gt;
&lt;br /&gt;
The object that emitted the signal that caused a slot to be called can be retrieved using the ''QObject'' '''sender''' read-only property of the global '''plasmoid''' object.&lt;br /&gt;
&lt;br /&gt;
== Events (API v2) ==&lt;br /&gt;
&lt;br /&gt;
Starting in API v2, it is possible register functions as event handlers. To register an event handler, use:&lt;br /&gt;
&lt;br /&gt;
* '''addEventListener(String event, Function listener)'''&lt;br /&gt;
&lt;br /&gt;
The event parameter is the name of the event (see list at end of section for known events) and the handler parameter is the function that will be called whenever the event occurs. Event names are not case sensitive. An event object will be passed into the handler, and the type and behavior of that object is event specific.&lt;br /&gt;
&lt;br /&gt;
Any number of event handlers may be added to a given event, and one handler may be registered to any number of events. The order of execution of event handlers is not guaranteed.&lt;br /&gt;
&lt;br /&gt;
To remove an event handler, use:&lt;br /&gt;
&lt;br /&gt;
* '''removeEventListener(String event, Function listener)'''&lt;br /&gt;
&lt;br /&gt;
The function passed in will no longer be called as a result of the event occurring. Any currently pending calls to the listener are still made, however.&lt;br /&gt;
&lt;br /&gt;
If an event handler is registered using addEventListener, then any callback in the global plasmoid object that may be related to the same event will be suppressed. For instance, if an event handler is registered using addEventListener for the paintInterface event, then plasmoid.paintInterface will not be called.&lt;br /&gt;
&lt;br /&gt;
=== Input Events (API v2) ===&lt;br /&gt;
&lt;br /&gt;
Following are the input events which are recognized on the Plasmoid along with the type of event object passed in to registered event listeners:&lt;br /&gt;
&lt;br /&gt;
* HoverEnter: HoverEvent Object&lt;br /&gt;
* HoverLeave: HoverEvent Object&lt;br /&gt;
* HoverMove: HoverEvent Object&lt;br /&gt;
* KeyPress: KeyEvent Object&lt;br /&gt;
* KeyRelease: KeyEvent Object&lt;br /&gt;
* MouseDoubleClick: MouseEvent Object&lt;br /&gt;
* MouseMove: MouseEvent Object&lt;br /&gt;
* MousePress: MouseEvent Object&lt;br /&gt;
* MouseRelease: MouseEvent Object&lt;br /&gt;
* Wheel: WheelEvent Object&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
// anonymous function as a listener on KeyPress&lt;br /&gt;
plasmoid.addEventListener('KeyPress', function(a) { print(a.key) })&lt;br /&gt;
&lt;br /&gt;
function output()&lt;br /&gt;
{&lt;br /&gt;
    print('Hover Event!')&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function hovered(event)&lt;br /&gt;
{&lt;br /&gt;
    plasmoid.busy = true&lt;br /&gt;
    plasmoid.removeEventListener('HoverEnter', output)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function unhovered(event)&lt;br /&gt;
{&lt;br /&gt;
    plasmoid.busy = false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
plasmoid.addEventListener('HoverEnter', hovered)&lt;br /&gt;
plasmoid.addEventListener('HoverLeave', unhovered)&lt;br /&gt;
plasmoid.addEventListener('HoverEnter', output)&lt;br /&gt;
plasmoid.addEventListener('HoverLeave', output)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HoverEvent (API v2) ====&lt;br /&gt;
&lt;br /&gt;
==== KeyEvent (API v2) ====&lt;br /&gt;
&lt;br /&gt;
==== MouseEvent (API v2) ====&lt;br /&gt;
&lt;br /&gt;
==== WheelEvent (API v2) ====&lt;br /&gt;
&lt;br /&gt;
=== Addon Events (API v3) ===&lt;br /&gt;
&lt;br /&gt;
The following two events are used in conjuction with Addons. See the Addons section for more information on Addons.&lt;br /&gt;
&lt;br /&gt;
* addonCreated: Object addOn&lt;br /&gt;
* newAddonsAvailable&lt;br /&gt;
&lt;br /&gt;
== The Global plasmoid Object  ==&lt;br /&gt;
&lt;br /&gt;
There is a global object available to the Plasmoid called, appropriately, &amp;quot;plasmoid&amp;quot;. It has a number of useful properties (some of which are read only, but many of which are read/write), functions, constant values and callbacks. Each are enumerated below. &lt;br /&gt;
&lt;br /&gt;
=== Callbacks  ===&lt;br /&gt;
&lt;br /&gt;
See the section on Events above.&lt;br /&gt;
&lt;br /&gt;
There are some events that are generated by Plasma for the Plasmoid. These can often be caught by providing a function assigned to a specific name in the plasmoid object. For instance, to get notified of form factor changes, one would provide a formFactorChanged method as follows: &amp;lt;code javascript=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
plasmoid.formFactorChanged = function() { &lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;the form factor has changed to: &amp;quot; + plasmoid.formFactor())&lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following callbacks are used to notify the Plasmoid of changes in its running environment:&lt;br /&gt;
&lt;br /&gt;
* '''configChanged()'''&lt;br /&gt;
* '''currentActivityChanged()'''&lt;br /&gt;
* '''formFactorChanged()'''&lt;br /&gt;
* '''immutabilityChanged()'''&lt;br /&gt;
* '''locationChanged()'''&lt;br /&gt;
* '''sizeChanged()'''&lt;br /&gt;
&lt;br /&gt;
Other callbacks include:&lt;br /&gt;
* '''dataUpdated(String source, Map[String, Any] data)''': used to pass in DataEngine updates&lt;br /&gt;
* '''activate()''': called when the widget is activated by the user, e.g. by a keyboard shortcut. Useful for setting the focus on a specific input widget, for instance. (API v2)&lt;br /&gt;
* '''initExtenderItem(Extender extender)''': Called when an Extender should be set up. (API v2)&lt;br /&gt;
* '''popupEvent(boolean shown)''': called on PopupApplets when the popup is shown or hidden. (API v2)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In API v2, all of these callbacks can also be used as events. So, for instance, instead of implementing plasmoid.popupEvent, one could also write:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;plasmoid.addEventListener('popupEvent', function(shown) { print('shown? ' + shown) } )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would also suppress any calls to plasmoid.popupEvent.&lt;br /&gt;
&lt;br /&gt;
Further documentation on these callbacks can be found in the relevant sections below.&lt;br /&gt;
&lt;br /&gt;
=== Environment  ===&lt;br /&gt;
&lt;br /&gt;
A set of read-only properties (and in most cases notification functions) that tell the Plasmoid about its current environment: &lt;br /&gt;
&lt;br /&gt;
* '''apiVersion''': the integer version of the Simplified JavaScript API in the current execution environment; can be used to change behaviour or usage of functions depending on the version number.&lt;br /&gt;
&lt;br /&gt;
* '''formFactor''': one of Planar (e.g. on a desktop or in an application main view), Horizontal, Vertical or MediaCenter. When the form factor changes, the plasmoid.formFactorChanged function, if defined in the Plasmoid, is called.&lt;br /&gt;
&lt;br /&gt;
* '''size''': the size of the Plasmoid, expressed in QSizeF (explained below). when it changes, plasmoid.sizeChanged() will be called.&lt;br /&gt;
&lt;br /&gt;
* '''location''': one of Floating (no specific location), Desktop (on the application's main view are), FullScreen, LeftEdge, RightEdge, TopEdge or ButtomEdge. When the location changes, the plasmoid.locationChanged function, if defined in the Plasmoid, is called.&lt;br /&gt;
&lt;br /&gt;
* '''immutable''': this property is set to true when the Plasmoid is set to not be movable or otherwise changeable, and false otherwise. Configuration is still usually allowed in this state. When the immutability changes, the plasmoid.immutabilityChanged function, if defined in the Plasmoid, is called.&lt;br /&gt;
&lt;br /&gt;
* '''currentActivity''': the current contextual activity name. When the current activity changes, the plasmoid.currentActivityChanged function, if defined in the Plasmoid, is called.&lt;br /&gt;
&lt;br /&gt;
* '''shouldConserveResources''': true if the plasmoid should not be doing anything that would create too much draw on power, e.g. when on a device with low battery power it may be a good idea not to run a computationally expensive but optional animation&lt;br /&gt;
&lt;br /&gt;
* '''userConfiguring''': true if the user configuration interface is currently being displayed.&lt;br /&gt;
&lt;br /&gt;
=== Properties  ===&lt;br /&gt;
A set of read/write properties that allow the Plasmoid to set various visual or functional properties: &lt;br /&gt;
&lt;br /&gt;
* ''AspectRatioMode'' '''aspectRatioMode''': defines how to treat the aspect ratio of a Plasmoid when resizing it. See the [[#AspectRatioMode|AspectRatioMode]] documentation for values and their meaning. &lt;br /&gt;
&lt;br /&gt;
* ''BackgroundHints'' '''backgroundHints''': defines how the background of the widget is rendered. See the [[#BackgroundHints|BackgroundHints]] documentation for values and their meaning. &lt;br /&gt;
&lt;br /&gt;
* ''boolean'' '''busy''': set to true when the Plasmoid is currently processing or waiting for data and the user interface should be blocked while doing so; will generally show a full-Plasmoid animated overlay to denote business&lt;br /&gt;
&lt;br /&gt;
=== Geometry  ===&lt;br /&gt;
&lt;br /&gt;
Read Only Properties: &lt;br /&gt;
&lt;br /&gt;
* ''QRectF'' '''rect''': the current rect of the Plasmoid; note that the top left may be not be the origin point (0,0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functions: &lt;br /&gt;
&lt;br /&gt;
* '''resize(width, height)'''&lt;br /&gt;
* '''setMinimumSize(width, height)'''&lt;br /&gt;
* '''setPreferredSize(width, height)'''&lt;br /&gt;
* '''setBackgroundHints(background)''' - use '''NoBackground''' as value if you want to remove the default plasmoid background box.&lt;br /&gt;
&lt;br /&gt;
=== Painting and Layout  ===&lt;br /&gt;
&lt;br /&gt;
To paint directly on to the canvas, a widget may implement the paintInterface function in the plasmoid object: &lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
    plasmoid.paintInterface = function(painter) { /* painting code goes here*/ }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
See the Painting section below for information about helpful classes and functions that can be used when implementing a paintInterface function. &lt;br /&gt;
&lt;br /&gt;
Read/Write Properties: &lt;br /&gt;
&lt;br /&gt;
* ''Layout'' '''layout''': the QGraphicsLayout associated with the Plasmoid for laying out top level items; this property is read-write, though the property is not usually set as one can simply do &amp;quot;new LinearLayout&amp;quot; (or one of the other layout classes provided) and it will be automatically associated with the Plasmoid.&lt;br /&gt;
&lt;br /&gt;
Functions: &lt;br /&gt;
&lt;br /&gt;
* '''update()''': triggers a full repaint of the Plasmoid.&lt;br /&gt;
* '''update(QRectF rect)''' triggers a repaint of the rect area of the Plasmoid.&lt;br /&gt;
* '''failedToLaunch(bool failed[, string reason])''' sets the launch status of the Plasmoid; if set to true, the script will stop executing and the reason message, if any, will be displayed to the user.&lt;br /&gt;
&lt;br /&gt;
=== Access To Packaged Files  ===&lt;br /&gt;
&lt;br /&gt;
Functions: &lt;br /&gt;
&lt;br /&gt;
* ''string'' '''file(string type[, string fileName])''': returns the path to a file in the Plasmoid package of the given type, optionally with a file name to match, e.g. &amp;lt;code javascript&amp;gt;var path = plasmoid.file(&amp;quot;mainscript&amp;quot;)&amp;lt;/code&amp;gt; or &amp;lt;code javascript&amp;gt;var pm = new QPixmap(plasmoid.file(&amp;quot;images&amp;quot;, &amp;quot;mypixmap.png&amp;quot;))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''bool'' '''include(string filename)''': attempts to include the script defined from the package's code directory&lt;br /&gt;
&lt;br /&gt;
=== Configuration Data  ===&lt;br /&gt;
Configuration values can be defined using [[Development/Tutorials/Using_KConfig_XT|KConfig XT]] XML files in the {{path|contents/config/}} directory of the Plasmoid's package. The default file that is looked for and used is {{path|contents/config/main.xml}}.&lt;br /&gt;
&lt;br /&gt;
==== Accessing Configuration Data  ====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''activeConfig''': The current active configuration description. For instance, setting it to &amp;quot;foo&amp;quot; would cause the Plasmoid to try and reference the {{path|contents/config/foo.xml}} KConfigXT file. Setting this to an empty string will switch to the main.xml file.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''any'' '''readConfig(String key)''': reads the value from the configuration data for the given key as defined by the currently active configuration.&lt;br /&gt;
&lt;br /&gt;
* '''writeConfig(String key, any value) ''': writes a value to the configuration store under the given key&lt;br /&gt;
&lt;br /&gt;
==== User Customization  ====&lt;br /&gt;
&lt;br /&gt;
User customization can be offered by providing a Qt Designer file called {{path|contents/ui/config.ui}} in the Plasmoid's package.&lt;br /&gt;
&lt;br /&gt;
Callbacks:&lt;br /&gt;
* '''configChanged()''': callback function called when the configuration is changed external to the Plasmoid, e.g. when the user changes settings in a configuration dialog.&lt;br /&gt;
&lt;br /&gt;
=== Context menu ===&lt;br /&gt;
&lt;br /&gt;
It's possible to add some items to the popup menu of the Plasmoid.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setAction(name, text, icon, shortcut)''': adds an item to the context menu with the given text and icon; you need to define '''plasmoid.action_&amp;lt;name&amp;gt;''' function, where &amp;lt;name&amp;gt; is the first argument for setAction call, and this function will be called each time user clicks the item&lt;br /&gt;
&lt;br /&gt;
* '''removeAction(name)''': removes the item&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Global Enumerations ==&lt;br /&gt;
In the global namespace are a set of useful enumerations that can be used with various classes in the Simplified Javascript Plasmoid API. These include:&lt;br /&gt;
&lt;br /&gt;
=== AspectRatioMode ===&lt;br /&gt;
* '''IgnoreAspectRatio''': The Plasmoid can be freely resized &lt;br /&gt;
* '''KeepAspectRatio''': The Plasmoid keeps a fixed aspect ratio &lt;br /&gt;
* '''Square: The Plasmoid is always a square &lt;br /&gt;
* '''ConstrainedSquare''': The Plasmoid is no wider (in horizontal formfactors) or no higher (in vertical ones) than a square &lt;br /&gt;
* '''FixedSize''': The Plasmoid cannot be resized &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== FormFactor ===&lt;br /&gt;
* '''Planar''': The Plasmoid lives in a plane and has two degrees of freedom to grow. Optimize for desktop, laptop or tablet usage: a high resolution screen 1-3 feet distant from the viewer.&lt;br /&gt;
* '''MediaCenter''': As with Plasmoid the applet lives in a but the interface should be optimized for medium-to-high resolution screens that 5-15 feet distant from the viewer. Sometimes referred to as a &amp;quot;ten foot interface&amp;quot;.&lt;br /&gt;
* '''Horizontal''': The Plasmoid is constrained vertically, but can expand horizontally.&lt;br /&gt;
* '''Vertical''': The Plasmoid is constrained horizontally, but can expand vertically.&lt;br /&gt;
&lt;br /&gt;
=== Location ===&lt;br /&gt;
* '''Floating''': Free floating. Neither geometry or z-ordering is described precisely by this value.&lt;br /&gt;
* '''Desktop''': On the planar desktop layer, extending across the full screen from edge to edge&lt;br /&gt;
* '''FullScreen'''&lt;br /&gt;
* '''TopEdge'''&lt;br /&gt;
* '''BottomEdge'''&lt;br /&gt;
* '''LeftEdge'''&lt;br /&gt;
* '''RightEdge'''&lt;br /&gt;
&lt;br /&gt;
=== AnimationDirection ===&lt;br /&gt;
* '''AnimationForward'''&lt;br /&gt;
* '''AnimationBackward'''&lt;br /&gt;
&lt;br /&gt;
=== BackgroundHints ===&lt;br /&gt;
* '''NoBackground'''&lt;br /&gt;
* '''StandardBackground'''&lt;br /&gt;
* '''TranslucentBackground'''&lt;br /&gt;
* '''DefaultBackground'''&lt;br /&gt;
&lt;br /&gt;
=== QtAlignment ===&lt;br /&gt;
* QtAlignLeft&lt;br /&gt;
* QtAlignRight&lt;br /&gt;
* QtAlignHCenter&lt;br /&gt;
* QtAlignJustify&lt;br /&gt;
* QtAlignTop&lt;br /&gt;
* QtAlignBottom&lt;br /&gt;
* QtAlignVCenter&lt;br /&gt;
&lt;br /&gt;
If you need to align something in the center (both horizontally and vertically) you can sum the constans.&lt;br /&gt;
&lt;br /&gt;
=== QtAnchorPoint ===&lt;br /&gt;
* QtAnchorLeft&lt;br /&gt;
* QtAnchorRight&lt;br /&gt;
* QtAnchorBottom&lt;br /&gt;
* QtAnchorTop&lt;br /&gt;
* QtAnchorHorizontalCenter&lt;br /&gt;
* QtAnchorVerticalCenter&lt;br /&gt;
&lt;br /&gt;
=== QtCorner ===&lt;br /&gt;
* QtTopLeftCorner&lt;br /&gt;
* QtTopRightCorner&lt;br /&gt;
* QtBottomLeftCorner&lt;br /&gt;
* QtBottomRightCorner&lt;br /&gt;
&lt;br /&gt;
=== QtMouseButton ===&lt;br /&gt;
* QtNoButton&lt;br /&gt;
* QtLeftButton&lt;br /&gt;
* QtRightButton&lt;br /&gt;
* QtMidButton&lt;br /&gt;
* QtXButton1&lt;br /&gt;
* QtXButton2&lt;br /&gt;
&lt;br /&gt;
=== QtOrientation ===&lt;br /&gt;
* QtHorizontal&lt;br /&gt;
* QtVertical&lt;br /&gt;
&lt;br /&gt;
=== QtScrollBarPolicy ===&lt;br /&gt;
* QtScrollBarAsNeeded&lt;br /&gt;
* QtScrollBarAlwaysOff&lt;br /&gt;
* QtScrollBarAlwaysOn&lt;br /&gt;
&lt;br /&gt;
=== QtSizePolicy ===&lt;br /&gt;
* QSizePolicyFixed&lt;br /&gt;
* QSizePolicyMinimum&lt;br /&gt;
* QSizePolicyMaximum&lt;br /&gt;
* QSizePolicyPreferred&lt;br /&gt;
* QSizePolicyExpanding&lt;br /&gt;
* QSizePolicyMinimumExpanding&lt;br /&gt;
* QSizePolicyIgnored&lt;br /&gt;
&lt;br /&gt;
=== Theme Colors (API v3) ===&lt;br /&gt;
* TextColor&lt;br /&gt;
* HighlightColor&lt;br /&gt;
* BackgroundColor&lt;br /&gt;
* ButtonTextColor&lt;br /&gt;
* ButtonBackgroundColor&lt;br /&gt;
* LinkColor&lt;br /&gt;
* VisitedLinkColor&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
* UnknownStatus The status is unknown&lt;br /&gt;
* PassiveStatus The Item is passive&lt;br /&gt;
* ActiveStatus The Item is active&lt;br /&gt;
* NeedsAttentionStatus The Item needs attention&lt;br /&gt;
* AcceptingInputStatus The Item is accepting input&lt;br /&gt;
&lt;br /&gt;
== User Interface Elements  ==&lt;br /&gt;
&lt;br /&gt;
=== Plasma Widgets  ===&lt;br /&gt;
&lt;br /&gt;
The Plasma framework provides a set of standard user interface elements such as pushbuttons and checkboxes for use in Plasmoids, and these are available from the Simplified Javascript API as well. These elements follow the Plasma style and other conventions so that widgets blend well both visually and functionally with other Plasma elements. &lt;br /&gt;
&lt;br /&gt;
Note that some UI elements have functions that are synonymous with a read-write property. In those cases, the function can serve as a slot and be connected to signals for easy setting of the property.&lt;br /&gt;
&lt;br /&gt;
=== DataEngine-Aware UI Elements ===&lt;br /&gt;
Some of the UI elements are able to accept data directly from DataEngines. These widgets will have a dataUpdated function and can be passed into the DataEngine::connectSource method successfully.&lt;br /&gt;
&lt;br /&gt;
DataEngine-aware UI elements include:&lt;br /&gt;
&lt;br /&gt;
* Label&lt;br /&gt;
* TextEdit&lt;br /&gt;
* Meter&lt;br /&gt;
&lt;br /&gt;
=== Common Properties  ===&lt;br /&gt;
&lt;br /&gt;
By default, all of the Plasma user interface elements have the following properties: &lt;br /&gt;
&lt;br /&gt;
* ''String'' '''objectName'''&lt;br /&gt;
* ''number'' '''opacity'''&lt;br /&gt;
* ''boolean'' '''enabled'''&lt;br /&gt;
* ''boolean'' '''visible'''&lt;br /&gt;
* ''QPointF'' '''pos'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
* ''number'' '''z'''&lt;br /&gt;
* ''number'' '''rotation'''&lt;br /&gt;
* ''number'' '''scale'''&lt;br /&gt;
* ''QPointF'' '''transformOriginPoint'''&lt;br /&gt;
* ''QPalette'' '''palette'''&lt;br /&gt;
* ''QFont'' '''font'''&lt;br /&gt;
* ''QSizeF'' '''size'''&lt;br /&gt;
* ''QtFocusPolicy'' '''focusPolicy'''&lt;br /&gt;
* ''QRectF'' '''geometry'''&lt;br /&gt;
&lt;br /&gt;
=== Common Signals  ===&lt;br /&gt;
&lt;br /&gt;
* '''opacityChanged()'''&lt;br /&gt;
* '''visibleChanged()'''&lt;br /&gt;
* '''enabledChanged()'''&lt;br /&gt;
* '''xChanged()'''&lt;br /&gt;
* '''yChanged()'''&lt;br /&gt;
* '''zChanged()'''&lt;br /&gt;
* '''rotationChanged()'''&lt;br /&gt;
* '''scaleChanged() '''&lt;br /&gt;
&lt;br /&gt;
=== UI Element Gallery  ===&lt;br /&gt;
&lt;br /&gt;
==== CSS Styleable UI Elements ====&lt;br /&gt;
&lt;br /&gt;
Most UI Elements are able to have their appearance adjust using a CSS stylesheet. All of these elements have the following read/write property:&lt;br /&gt;
&lt;br /&gt;
*''String'' '''styleSheet''': A CSS stylesheet describing visual properties to apply to the widget; see [http://doc.trolltech.com/4.5/stylesheet.html the Qt Documentation for more information]&lt;br /&gt;
&lt;br /&gt;
===== CheckBox =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''String'' '''image'''&lt;br /&gt;
* ''boolean'' '''checked'''&lt;br /&gt;
* '''toggled(bool)'''&lt;br /&gt;
&lt;br /&gt;
===== ComboBox =====&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''count''': (API v 3) the number of items in the combobox&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text''': the text of the currently selected item in the combobox&lt;br /&gt;
* ''number'' currentIndex:  (API v 3) the index of the current item&lt;br /&gt;
&lt;br /&gt;
Funtions:&lt;br /&gt;
* '''clear()'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''activated(String)'''&lt;br /&gt;
* '''textChanged(String)'''&lt;br /&gt;
* '''currentIndexChanged(number)'''&lt;br /&gt;
&lt;br /&gt;
===== Frame =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''Shadow'' '''frameShadow'''&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''String'' '''image'''&lt;br /&gt;
&lt;br /&gt;
Enumerations:&lt;br /&gt;
* '''Shadow'''&lt;br /&gt;
* '''Plain'''&lt;br /&gt;
* '''Raised'''&lt;br /&gt;
* '''Sunken'''&lt;br /&gt;
&lt;br /&gt;
===== GroupBox =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
&lt;br /&gt;
===== Label =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''String'' '''image'''&lt;br /&gt;
* ''number'' '''alignment''' (see [[#QtAlignment]] for the valid values)&lt;br /&gt;
* ''boolean'' '''hasScaledContents'''&lt;br /&gt;
* ''boolean'' '''textIsSelectable''' (since 4.4.1)&lt;br /&gt;
* ''boolean'' '''wordWrap''' (API v2)&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''dataUpdated(String, Data)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''linkActivated(String)''': emitted when a link is clicked; includes the URL of link that is clicked; this is only available when textIsSelectable&lt;br /&gt;
* '''linkHovered(String)''': emitted when a link is hovered&lt;br /&gt;
&lt;br /&gt;
===== LineEdit =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''boolean'' '''clearButtonShown'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''editingFinished()'''&lt;br /&gt;
* '''returnPressed()'''&lt;br /&gt;
* '''textEdited(String)'''&lt;br /&gt;
* '''textChanged(String)'''&lt;br /&gt;
&lt;br /&gt;
===== PushButton =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''String'' '''image'''&lt;br /&gt;
* ''QAction'' '''action'''&lt;br /&gt;
* ''QIcon'' '''icon'''&lt;br /&gt;
* ''boolean'' '''checkable'''&lt;br /&gt;
* ''boolean'' '''checked'''&lt;br /&gt;
* ''boolean'' '''down'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''pressed()'''&lt;br /&gt;
* '''released()'''&lt;br /&gt;
* '''clicked()'''&lt;br /&gt;
* '''toggled(bool)'''&lt;br /&gt;
&lt;br /&gt;
===== RadioButton =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''String'' '''image'''&lt;br /&gt;
* ''boolean'' '''checked'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''toggled(bool)'''&lt;br /&gt;
&lt;br /&gt;
===== ScrollWidget =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''QGraphicsWidget'' '''widget'''&lt;br /&gt;
* ''number'' '''horizontalScrollBarPolicy'''&lt;br /&gt;
* ''number'' '''verticalScrollBarPolicy'''&lt;br /&gt;
* ''QPointF'' '''scrollPosition'''&lt;br /&gt;
* ''QSizeF'' '''contentsSize'''&lt;br /&gt;
* ''QRectF'' '''viewportGeometry'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''ensureRectVisible(QRectF)'''&lt;br /&gt;
* '''ensureItemVisible(QGraphicsItem)'''&lt;br /&gt;
* '''registerAsDragHandle(QGraphicsWidget)'''&lt;br /&gt;
* '''unregisterAsDragHandle(QGraphicsWidget)'''&lt;br /&gt;
&lt;br /&gt;
===== ScrollBar =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''singleStep'''&lt;br /&gt;
* ''number'' '''pageStep'''&lt;br /&gt;
* ''number'' '''value'''&lt;br /&gt;
* ''number'' '''minimum'''&lt;br /&gt;
* ''number'' '''maximum'''&lt;br /&gt;
* ''QtOrientation'' '''setOrientation'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setValue(number)'''&lt;br /&gt;
* '''setOrientation(QtOrientation)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''valueChanged(number)'''&lt;br /&gt;
&lt;br /&gt;
===== Slider =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''maximum'''&lt;br /&gt;
* ''number'' '''minimum'''&lt;br /&gt;
* ''number'' '''value'''&lt;br /&gt;
* ''number'' '''orientation'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''sliderMoved(number)'''&lt;br /&gt;
* '''valueChanged(number)'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setMaximum(number)'''&lt;br /&gt;
* '''setMinimum(number)'''&lt;br /&gt;
* '''setRange(number, number)'''&lt;br /&gt;
* '''setValue(number)'''&lt;br /&gt;
* '''setOrientation(QtOrientation)'''&lt;br /&gt;
&lt;br /&gt;
===== SpinBox =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''maximum'''&lt;br /&gt;
* ''number'' '''minimum'''&lt;br /&gt;
* ''number'' '''value'''&lt;br /&gt;
&lt;br /&gt;
Functins:&lt;br /&gt;
* '''setMaximum(number)'''&lt;br /&gt;
* '''setMinimum(number)'''&lt;br /&gt;
* '''setRange(number, number)'''&lt;br /&gt;
* '''setValue(number)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''sliderMoved(number)'''&lt;br /&gt;
* '''valueChanged(number)'''&lt;br /&gt;
* '''editingFinished()'''&lt;br /&gt;
&lt;br /&gt;
===== TabBar =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''currentIndex'''&lt;br /&gt;
* ''number'' '''count'''&lt;br /&gt;
* ''boolean'' '''tabBarShown'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setCurrentIndex(number)'''&lt;br /&gt;
* '''insertTab(number, QIcon,String,QGraphicsLayoutItem)'''&lt;br /&gt;
* '''insertTab(number, QIcon,String)'''&lt;br /&gt;
* '''insertTab(number, String,QGraphicsLayoutItem)'''&lt;br /&gt;
* '''insertTab(number, String)'''&lt;br /&gt;
* '''addTab(QIcon,String,QGraphicsLayoutItem)'''&lt;br /&gt;
* '''addTab(QIcon,String)'''&lt;br /&gt;
* '''addTab(String,QGraphicsLayoutItem)'''&lt;br /&gt;
* '''addTab(String)'''&lt;br /&gt;
* '''removeTab(number)'''&lt;br /&gt;
* '''takeTab(number)'''&lt;br /&gt;
* '''tabAt(number)'''&lt;br /&gt;
* '''setTabText(number, String)'''&lt;br /&gt;
* '''tabText(number)'''&lt;br /&gt;
* '''setTabIcon(number, QIcon)'''&lt;br /&gt;
* '''tabIcon(number)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''currentChanged(number)'''&lt;br /&gt;
&lt;br /&gt;
===== TextEdit =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''boolean'' '''readOnly'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''dataUpdated(String, Data)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''textChanged()'''&lt;br /&gt;
&lt;br /&gt;
===== ToolButton =====&lt;br /&gt;
:Read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''''QAction'' '''action''': the action associated with this '''ToolButton'''&lt;br /&gt;
* ''''boolean'' '''autoRaise''': whether or not the ToolButton should raise automatically when the user interacts with it'''&lt;br /&gt;
* ''''String'' '''image''': path to an icon or image (e.g. in the widget's Package) to show on the ToolButton&lt;br /&gt;
* ''''String'' '''text''': the text shown on the ToolButton&lt;br /&gt;
&lt;br /&gt;
API v2 adds:&lt;br /&gt;
* ''''boolean'' '''down''': whether or not the ToolButton is in the down position (since protocol version 2)&lt;br /&gt;
&lt;br /&gt;
:Signals:&lt;br /&gt;
* '''clicked()'''&lt;br /&gt;
* '''pressed()'''&lt;br /&gt;
* '''released()'''&lt;br /&gt;
&lt;br /&gt;
===== TreeView =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''QAbstractModel'' '''model'''&lt;br /&gt;
&lt;br /&gt;
===== VideoWidget =====&lt;br /&gt;
Read-writeproperties:&lt;br /&gt;
* ''String'' '''url'''&lt;br /&gt;
* ''number'' '''currentTime'''&lt;br /&gt;
* ''number'' '''totalTime'''&lt;br /&gt;
* ''number'' '''remainingTime'''&lt;br /&gt;
* ''Controls'' '''usedControls'''&lt;br /&gt;
* ''boolean'' '''controlsVisible'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''play()'''&lt;br /&gt;
* '''pause()'''&lt;br /&gt;
* '''stop()'''&lt;br /&gt;
* '''seek(number)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''tick(number)'''&lt;br /&gt;
* '''aboutToFinish()'''&lt;br /&gt;
* '''nextRequested()'''&lt;br /&gt;
* '''previousRequested()'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enumerations:&lt;br /&gt;
* Controls&lt;br /&gt;
** NoControls&lt;br /&gt;
** Play&lt;br /&gt;
** Pause&lt;br /&gt;
** Stop&lt;br /&gt;
** PlayPause&lt;br /&gt;
** Previous&lt;br /&gt;
** Next&lt;br /&gt;
** Progress&lt;br /&gt;
** Volume&lt;br /&gt;
** OpenFile&lt;br /&gt;
** DefaultControls&lt;br /&gt;
&lt;br /&gt;
==== Other UI Elements ====&lt;br /&gt;
&lt;br /&gt;
===== BusyWidget =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''running'''&lt;br /&gt;
* ''String'' '''label'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''clicked()'''&lt;br /&gt;
&lt;br /&gt;
===== FlashingLabel =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''autohide'''&lt;br /&gt;
* ''QColor'' '''color'''&lt;br /&gt;
* ''number'' '''duration'''&lt;br /&gt;
&lt;br /&gt;
Functins:&lt;br /&gt;
* '''kill()'''&lt;br /&gt;
* '''fadeIn()'''&lt;br /&gt;
* '''fadeOut()'''&lt;br /&gt;
* '''flash(String, number, QTextOption)'''&lt;br /&gt;
* '''flash(String ,number)'''&lt;br /&gt;
* '''flash(String)'''&lt;br /&gt;
* '''flash(QPixmap, number, QtAlignment)'''&lt;br /&gt;
* '''flash(QPixmap, number)'''&lt;br /&gt;
* '''flash(QPixmap)'''&lt;br /&gt;
&lt;br /&gt;
===== GraphicsWidget (API v3) =====&lt;br /&gt;
This is just a plain element with no painting or other features. It is useful primarily as a place holder, especially to contain layouts for other elements.&lt;br /&gt;
&lt;br /&gt;
===== IconWidget =====&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''QSizeF'' '''iconSize''' - the actual size of the icon given the size of the IconWidget, space reserved (if any) for text displayed, etc.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''text'''&lt;br /&gt;
* ''String'' '''infoText'''&lt;br /&gt;
* ''QIcon'' '''icon'''&lt;br /&gt;
* ''QColor'' '''textBackgroundColor'''&lt;br /&gt;
* ''String'' '''svg'''&lt;br /&gt;
* ''QAction'' '''action'''&lt;br /&gt;
* ''QtOrientation'' '''orientation'''&lt;br /&gt;
* ''number'' '''numDisplayLines'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setPressed(boolean)'''&lt;br /&gt;
* '''setUnpressed()'''&lt;br /&gt;
* '''setIcon(String)'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''pressed(bool)'''&lt;br /&gt;
* '''clicked()'''&lt;br /&gt;
* '''doubleClicked()'''&lt;br /&gt;
* '''activated()'''&lt;br /&gt;
* '''changed()'''&lt;br /&gt;
&lt;br /&gt;
===== ItemBackground =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''QRectF'' '''target'''&lt;br /&gt;
* ''QGraphicsItem'' '''targetItem'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''appearanceChanged()'''&lt;br /&gt;
* '''animationStep(qreal)'''&lt;br /&gt;
* '''targetReached(QRectF)'''&lt;br /&gt;
* '''targetItemReached(QGraphicsItem)'''&lt;br /&gt;
&lt;br /&gt;
===== Meter =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''minimum'''&lt;br /&gt;
* ''number'' '''maximum'''&lt;br /&gt;
* ''number'' '''value'''&lt;br /&gt;
* ''String'' '''svg'''&lt;br /&gt;
* ''MeterType'' '''meterType'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''dataUpdated(String, Data)'''&lt;br /&gt;
&lt;br /&gt;
Enumerations:&lt;br /&gt;
* '''MeterType'''&lt;br /&gt;
** BarMeterHorizontal&lt;br /&gt;
** BarMeterVertical&lt;br /&gt;
** AnalogMeter&lt;br /&gt;
&lt;br /&gt;
===== Separator =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''QtOrientation'' '''orientation'''&lt;br /&gt;
&lt;br /&gt;
===== SignalPlotter =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''String'' '''title'''&lt;br /&gt;
* ''String'' '''unit'''&lt;br /&gt;
* ''boolean'' '''useAutoRange'''&lt;br /&gt;
* ''number'' '''horizontalScale'''&lt;br /&gt;
* ''boolean'' '''showVerticalLines'''&lt;br /&gt;
* ''QColor'' '''verticalLinesColor'''&lt;br /&gt;
* ''number'' '''verticalLinesDistance'''&lt;br /&gt;
* ''boolean'' '''verticalLinesScroll'''&lt;br /&gt;
* ''boolean'' '''showHorizontalLines'''&lt;br /&gt;
* ''QColor'' '''horizontalLinesColor'''&lt;br /&gt;
* ''QColor'' '''fontColor'''&lt;br /&gt;
* ''number'' '''horizontalLinesCount'''&lt;br /&gt;
* ''boolean'' '''showLabels'''&lt;br /&gt;
* ''boolean'' '''showTopBar'''&lt;br /&gt;
* ''QColor'' '''backgroundColor'''&lt;br /&gt;
* ''String'' '''svgBackground'''&lt;br /&gt;
* ''boolean'' '''thinFrame'''&lt;br /&gt;
* ''boolean'' '''stackPlots'''&lt;br /&gt;
&lt;br /&gt;
===== SvgWidget =====&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''Svg'' '''svg'''&lt;br /&gt;
* ''String'' '''elementID'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''clicked(QtMouseButton)'''&lt;br /&gt;
&lt;br /&gt;
===== WebView =====&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''QSizeF'' '''contentsSize'''&lt;br /&gt;
* ''QRectF'' '''viewportGeometry'''&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''Url'' '''url'''&lt;br /&gt;
* ''String'' '''html'''&lt;br /&gt;
* ''boolean'' '''dragToScroll'''&lt;br /&gt;
* ''QPointF'' '''scrollPosition'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''loadProgress(number)'''&lt;br /&gt;
* '''loadFinished(bool)'''&lt;br /&gt;
&lt;br /&gt;
=== Layouts  ===&lt;br /&gt;
&lt;br /&gt;
==== LinearLayout ====&lt;br /&gt;
* ''number'' '''spacing'''&lt;br /&gt;
* ''QtOrientation'' '''orientation''' (''QtVertical'' or ''QtHorizontal'')&lt;br /&gt;
* ''function'' '''removeAt'''&lt;br /&gt;
* ''function'' '''addStretch'''&lt;br /&gt;
* ''function'' '''setStretchFactor'''&lt;br /&gt;
* ''function'' '''setAlignment'''&lt;br /&gt;
* ''function'' '''insertStretch'''&lt;br /&gt;
* ''function'' '''setItemSpacing'''&lt;br /&gt;
* ''function'' '''setContentsMargins'''&lt;br /&gt;
* ''function'' '''addItem'''&lt;br /&gt;
* ''function'' '''removeItem'''&lt;br /&gt;
* ''function'' '''insertItem'''&lt;br /&gt;
* ''function'' '''toString'''&lt;br /&gt;
* ''function'' '''activate''' (API v3)&lt;br /&gt;
&lt;br /&gt;
==== AnchorLayout ====&lt;br /&gt;
* ''number'' '''horizontalSpacing'''&lt;br /&gt;
* ''number'' '''verticalSpacing'''&lt;br /&gt;
* ''function'' '''setSpacing'''&lt;br /&gt;
* ''function'' '''removeAt'''&lt;br /&gt;
* ''function'' '''addAnchor'''&lt;br /&gt;
* ''function'' '''anchor'''&lt;br /&gt;
* ''function'' '''addAnchors'''&lt;br /&gt;
* ''function'' '''addCornerAnchors'''&lt;br /&gt;
* ''function'' '''toString'''&lt;br /&gt;
* ''function'' '''activate''' (API v3)&lt;br /&gt;
&lt;br /&gt;
==== GridLayout ====&lt;br /&gt;
* ''number '''horizontalSpacing'''&lt;br /&gt;
* ''number '''verticalSpacing'''&lt;br /&gt;
* ''function'' '''rowSpacing'''&lt;br /&gt;
* ''function'' '''setRowSpacing'''&lt;br /&gt;
* ''function'' '''columnSpacing'''&lt;br /&gt;
* ''function'' '''setColumnSpacing'''&lt;br /&gt;
* ''function'' '''rowMinimumHeight'''&lt;br /&gt;
* ''function'' '''setRowMinimumHeight'''&lt;br /&gt;
* ''function'' '''rowPreferredHeight'''&lt;br /&gt;
* ''function'' '''setRowPreferredHeight'''&lt;br /&gt;
* ''function'' '''rowMaximumHeight'''&lt;br /&gt;
* ''function'' '''setRowMaximumHeight'''&lt;br /&gt;
* ''function'' '''rowFixedHeight'''&lt;br /&gt;
* ''function'' '''setRowFixedHeight'''&lt;br /&gt;
* ''function'' '''columnMinimumWidth'''&lt;br /&gt;
* ''function'' '''setColumnMinimumWidth'''&lt;br /&gt;
* ''function'' '''columnPreferredWidth'''&lt;br /&gt;
* ''function'' '''setColumnPreferredWidth'''&lt;br /&gt;
* ''function'' '''columnMaximumWidth'''&lt;br /&gt;
* ''function'' '''setColumnMaximumWidth'''&lt;br /&gt;
* ''function'' '''columnFixedWidth'''&lt;br /&gt;
* ''function'' '''setColumnFixedWidth'''&lt;br /&gt;
* ''function'' '''remoteAt'''&lt;br /&gt;
* ''function'' '''setAlignment'''&lt;br /&gt;
* ''function'' '''setSpacing'''&lt;br /&gt;
* ''function'' '''setContentsMargins'''&lt;br /&gt;
* ''function'' '''addItem'''&lt;br /&gt;
* ''function'' '''toString'''&lt;br /&gt;
* ''function'' '''activate''' (API v3)&lt;br /&gt;
&lt;br /&gt;
=== Undocumented Properties and Functions  ===&lt;br /&gt;
&lt;br /&gt;
There are a handful of other undocumented properties and functions available to UI elements. These are not supported or guaranteed to exist in future versions however, and as such should not be used or relied upon.&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
=== Creating Animation Objects ===&lt;br /&gt;
An Animation object can be retrieved by calling the ''Animation'' '''animation(string type)''' function. The ''string'' corresponds to the type of animation, which are listed below.&lt;br /&gt;
&lt;br /&gt;
New Animation objects are associated with (and therefore will animate) the Plasmoid by default. By setting the widgetToAnimate property, however, it can be assigned to animate any QGraphicsWidget desired (e.g. Plasma widgets such as push buttons, sliders, etc) .&lt;br /&gt;
&lt;br /&gt;
=== Enumerations ===&lt;br /&gt;
All Animation objects have the following enumerations:&lt;br /&gt;
&lt;br /&gt;
==== MovementDirection ====&lt;br /&gt;
* '''MoveUp'''&lt;br /&gt;
* '''MoveUpRight'''&lt;br /&gt;
* '''MoveRight'''&lt;br /&gt;
* '''MoveDownRight'''&lt;br /&gt;
* '''MoveDown'''&lt;br /&gt;
* '''MoveDownLeft'''&lt;br /&gt;
* '''MoveLeft'''&lt;br /&gt;
* '''MoveUpLeft'''&lt;br /&gt;
&lt;br /&gt;
==== Reference ====&lt;br /&gt;
The reference point, relative to the target widget, for the animation.&lt;br /&gt;
* '''Center'''&lt;br /&gt;
* '''Up'''&lt;br /&gt;
* '''Down'''&lt;br /&gt;
* '''Left'''&lt;br /&gt;
* '''Right'''&lt;br /&gt;
&lt;br /&gt;
==== State ====&lt;br /&gt;
* '''Paused'''&lt;br /&gt;
* '''Running'''&lt;br /&gt;
* '''Stopped'''&lt;br /&gt;
&lt;br /&gt;
=== Common API ===&lt;br /&gt;
With the exception of Pause and Property animations, all animations support the following read/write properties: &lt;br /&gt;
&lt;br /&gt;
* ''AnimationDirection'' '''direction''': the direction the animation should play: AnimationForward or AnimationBackward&lt;br /&gt;
* ''int'' '''duration''': length of the animation in ms.&lt;br /&gt;
* ''EasingCurveType'' '''easingCurveType''': The easing curve to use in the animation&lt;br /&gt;
* ''QGraphicsWidget'' '''targetWidget''': the QGraphicsWidget (e.g. a Plasma::Widget) that this animation should operate on&lt;br /&gt;
&lt;br /&gt;
=== Animation Groups ===&lt;br /&gt;
Animations may be put into groups for convenient sequential or parallel running. Sequential groups, where the animations run one after the other, are handled by the '''AnimationGroup''' class. Parallel aniations, where the animations run simultaneously, are handled the '''ParallelAnimationGroup''' class. &lt;br /&gt;
&lt;br /&gt;
Animations are added to a group by calling '''add(Animation)''' on the group object. Groups may also be added to other groups.&lt;br /&gt;
&lt;br /&gt;
=== Custom Animations ===&lt;br /&gt;
Custom animation types can be defined using Javascript files that are included as part of the Plasmoid's package in the {{path|contents/animations/}} directory. To learn how to create such animations and access them from your Plasmoid, visit the [[Development/Tutorials/Plasma/JavaScript/Animations|Javascript Animations tutorial]].&lt;br /&gt;
&lt;br /&gt;
=== Standard Animation Types ===&lt;br /&gt;
Below is a list of all current standard animation types and their particular read/write properties:&lt;br /&gt;
&lt;br /&gt;
==== Fade ====&lt;br /&gt;
* ''number'' '''startOpacity''': the opacity, between 0 and 1, that the target widget starts at when the animation begins&lt;br /&gt;
* ''number'' '''targetOpacity''': the opacity, between 0 and 1, that the target widget will be at the end of the animation&lt;br /&gt;
&lt;br /&gt;
==== Geometry ====&lt;br /&gt;
* ''QRectF'' '''startGeometry''': the geometry that the target widget should start with&lt;br /&gt;
* ''QRectF'' '''targetGeometry''': the geometry the target widget will have at the end of the animation&lt;br /&gt;
&lt;br /&gt;
==== Grow ====&lt;br /&gt;
* ''number'' '''factor''': the factor by which the target widget will grow to by the end of the animation&lt;br /&gt;
&lt;br /&gt;
==== Pause ====&lt;br /&gt;
* ''number'' '''duration''': the number of milliseconds to pause for&lt;br /&gt;
&lt;br /&gt;
==== Property ====&lt;br /&gt;
Animates an object (must be a QObject internally, which includes all Plasma Widgets) by manipulating one of its properties. Property animations have the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''any'' '''startValue'''&lt;br /&gt;
* ''any'' '''endValue'''&lt;br /&gt;
* ''ByteArray'' '''propertyName'''&lt;br /&gt;
* ''QObject'' '''targetObject'''&lt;br /&gt;
* ''number'' '''duration'''&lt;br /&gt;
* ''EasingCurve'' '''easingCurve'''&lt;br /&gt;
&lt;br /&gt;
==== Pulser ==== &lt;br /&gt;
* ''number'' '''targetScale''': the maximum scale of the pulse-shadow item, relative to the target widget&lt;br /&gt;
&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
* ''QtAxis'' '''axis''': the axis along which to rotate the item&lt;br /&gt;
* ''Reference'' '''reference''': the reference point around which to rotate the target widget&lt;br /&gt;
* ''number'' '''angle''': the number of degrees to rotate the item&lt;br /&gt;
&lt;br /&gt;
==== RotateStacked ====&lt;br /&gt;
* ''MovementDirection'' '''movementDirection''': the direction to rotate the widgets in the stack around&lt;br /&gt;
* ''QGraphicsLayoutItem'' '''layout'''&lt;br /&gt;
* ''Reference'' '''reference''': the reference point around which to rotate the target widget&lt;br /&gt;
* ''QGraphicsWidget'' '''backingWidget''': the widget in the &amp;quot;back&amp;quot; to rotate to the front of the target widget&lt;br /&gt;
&lt;br /&gt;
==== Slide ==== &lt;br /&gt;
* ''MovementDirection'' '''movementDirection''': the direction to slide the widget&lt;br /&gt;
* ''number'' '''distance''': the distance to slide the widget&lt;br /&gt;
&lt;br /&gt;
==== Zoom ====&lt;br /&gt;
* ''number'' '''zoom''': the factor by which to zoom the target widget&lt;br /&gt;
&lt;br /&gt;
=== QEasingCurve ===&lt;br /&gt;
Used to set the progress shape of Animation objects, this class has the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''string'' '''toString'''&lt;br /&gt;
* ''number'' '''valueForProgress(number progress)''': returns effective progress for the easing curve at progress. While progress must be between 0 and 1, the returned effective progress can be outside those bounds.&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write property:&lt;br /&gt;
&lt;br /&gt;
* ''EasingCurveType'' '''type''': the shape of this easing curve&lt;br /&gt;
&lt;br /&gt;
and the following enumeration:&lt;br /&gt;
&lt;br /&gt;
* '''EasingCurveType'''&lt;br /&gt;
** Linear&lt;br /&gt;
** InQuad&lt;br /&gt;
** OutQuad&lt;br /&gt;
** InOutQuad&lt;br /&gt;
** OutInQuad&lt;br /&gt;
** InCubic&lt;br /&gt;
** OutCubic&lt;br /&gt;
** InOutCubic&lt;br /&gt;
** OutInCubic&lt;br /&gt;
** InQuart&lt;br /&gt;
** OutQuart&lt;br /&gt;
** InOutQuart&lt;br /&gt;
** OutInQuart&lt;br /&gt;
** InQuint&lt;br /&gt;
** OutQuint&lt;br /&gt;
** InOutQuint&lt;br /&gt;
** OutInQuint&lt;br /&gt;
** InSize&lt;br /&gt;
** OutSine&lt;br /&gt;
** InOutSine&lt;br /&gt;
** OutInSine&lt;br /&gt;
** InExpo&lt;br /&gt;
** OutExpo&lt;br /&gt;
** InOutExpo&lt;br /&gt;
** OutInExpo&lt;br /&gt;
** InCirc&lt;br /&gt;
** OutCirc&lt;br /&gt;
** InOutCirc&lt;br /&gt;
** InOutCirc&lt;br /&gt;
** OutInCirc&lt;br /&gt;
** InElastic&lt;br /&gt;
** OutElastic&lt;br /&gt;
** InOutElastic&lt;br /&gt;
** OutInElastic&lt;br /&gt;
** InBack&lt;br /&gt;
** OutBack&lt;br /&gt;
** InOutBack&lt;br /&gt;
** OutInBack&lt;br /&gt;
** InBounc&lt;br /&gt;
** OutBounce&lt;br /&gt;
** InOutBounce&lt;br /&gt;
** OutInBounce&lt;br /&gt;
** InCurve&lt;br /&gt;
** OutCurve&lt;br /&gt;
** SineCurve&lt;br /&gt;
** CosineCurve&lt;br /&gt;
&lt;br /&gt;
== Painting  ==&lt;br /&gt;
&lt;br /&gt;
See the &amp;quot;[[Development/Tutorials/Plasma/JavaScript/API#Painting_and_Layout|Painting and Layout]]&amp;quot; section, part of the Global Plasmoid object chapter, for information on using these classes within a widget.&lt;br /&gt;
&lt;br /&gt;
=== Pixmaps  ===&lt;br /&gt;
&lt;br /&gt;
The QPixmap object allows widgets to use pixmaps for painting. Widgets may include pixmaps in various common formats (PNG, JPEG, GIF, etc.) in the contents/images/ directory of the Plasmoid package and load them by passing the name of the file into the pixmap constructor:&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
    var pixmap = new QPixmap(&amp;quot;myimage.png&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In addition to being used as a file load, some objects return or take pixmaps and the QPixmap object facilitates that as well. &lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''null''': true if the pixmap is empty&lt;br /&gt;
* ''QRectF'' '''rect''': the rect of the pixmap &lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QPixmap'' '''scaled(number width, number height);;: returns a scaled version of the pixmap with width and height dimensions.&lt;br /&gt;
&lt;br /&gt;
=== Icons ===&lt;br /&gt;
&lt;br /&gt;
(Since 4.4.1)&lt;br /&gt;
&lt;br /&gt;
The QIcon object provides simple access to icons. They can be constructed using a String or a QPixmap, with the String version either loading a file from disk if given an absolute path (useful for loading icons from the Plasmoid's package) or from the desktop icon theme if given just a name (e.g. &amp;quot;file-open&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''null''': true if the icon is empty&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''addPixmap(QPixmap)''': adds another pixmap to this icon&lt;br /&gt;
* '''addFile(String)''': adds another file to this icon&lt;br /&gt;
&lt;br /&gt;
=== SVG Images  ===&lt;br /&gt;
&lt;br /&gt;
Plasma makes heavy usage of SVG images. More information on this industry standard scalable vector format can be found here: &lt;br /&gt;
&lt;br /&gt;
:http://www.w3.org/Graphics/SVG/&lt;br /&gt;
&lt;br /&gt;
Free and Open Source Software tools for creating SVGs include Inkscape and Karbon13. Widgets may include their own SVG files in the contents/images/ directory or may use SVG images that are part of the standard Plasma Desktop Theme as documented here: &lt;br /&gt;
&lt;br /&gt;
:http://techbase.kde.org/Projects/Plasma/Theme&lt;br /&gt;
&lt;br /&gt;
Two classes are provide: Svg and FrameSvg. Svg allows loading and painting entire SVG documents or individual elements in an SVG document. FrameSvg extends Svg with methods to paint bordered frames from specially crafted SVG documents (see the Plasma Desktop Theme documentation for more information on this). &lt;br /&gt;
&lt;br /&gt;
====Svg====&lt;br /&gt;
Constructors:&lt;br /&gt;
*'''Svg(string fileName)'''': fileName can be a file in the desktop theme or the plasmoid package &lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
*''QSizeF'' '''size''': the current size of the svg&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''multipleImages''': whether or not the svg contains multiple separate images&lt;br /&gt;
* ''string'' '''imagePath''': the file path, including name of the svg&lt;br /&gt;
* ''boolean'' '''usingRenderingCache'': whether or not to cache rendered pixmaps; improves performance (at the cost of some disk and memory usage) for SVG data that is repeatedly rendered&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QSizeF'' elementSize(String svgElemen)'''&lt;br /&gt;
* ''QRectF'' elementRect(String svgElemen)'''&lt;br /&gt;
* ''boolean'' '''hasElement(String svgElement)''' &lt;br /&gt;
* '''elementAtPoint(QPoint pos)''' &lt;br /&gt;
* ''boolean'' '''isValid()'''&lt;br /&gt;
* ''QPixmap'' '''pixmap(String svgElement)''': a pixmap of the element in the svg rendered to the current size&lt;br /&gt;
* ''QPixmap'' '''pixmap()''': a pixmap of the entire svg rendered to the current size&lt;br /&gt;
* '''paint(QPainter painter, QPointF point)'''&lt;br /&gt;
* '''paint(QPainter painter, QPointF point, String svgElement)'''&lt;br /&gt;
* '''paint(QPainter painter, number x, number y)'''&lt;br /&gt;
* '''paint(QPainter painter, number x, number y, String svgElement)'''&lt;br /&gt;
* '''paint(QPainter painter, QRectF destination)'''&lt;br /&gt;
* '''paint(QPainter painter, QRectF destination, String svgElement)'''&lt;br /&gt;
* '''paint(QPainter painter, number y, number width, number height)'''&lt;br /&gt;
* '''paint(QPainter painter, number x, number y, number width, number height, QString svgElement)'''&lt;br /&gt;
* '''resize(number width, number height) &lt;br /&gt;
* '''resize(QSizeF size)'''&lt;br /&gt;
* '''resize()''': resizes the SVG to the document size defined in the SVG itself&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''repaintNeeded()''': emitted when the SVG is in need of a repaint, such as when the theme changes and the SVG has reloaded its data&lt;br /&gt;
&lt;br /&gt;
====FrameSvg====&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''FrameSvg(String fileName)''': fileName can be a file in the desktop theme or the plasmoid package&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''multipleImages''': whether or not the svg contains multiple separate images&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setEnabledBorders(EnabledBorders borders)''': sets which borders are enabled when painting&lt;br /&gt;
* ''EnabledBorders'' '''enabledBorders()''': the borders which are enabled when painting&lt;br /&gt;
* '''resizeFrame(QSizeF size)''': resizes the frame to size&lt;br /&gt;
* ''QSizeF'' '''frameSize()''': the size of the current frame&lt;br /&gt;
* ''number'' '''marginSize(MarginEdge margin)''': the size of the margin for a given edge&lt;br /&gt;
* '''getMargins(number left, number top, number right, number bottom)''': stores the margin values in the variables passed in&lt;br /&gt;
* ''QRectF'' '''contentsRect()''': the rect containing the contents, e.g. the size of the SVG minus the space required by the enabled borders&lt;br /&gt;
* '''setElementPrefix(Location)''': sets the frame element for the given location if it exists&lt;br /&gt;
* '''setElementPrefix(String prefix)''': sets the element prefix&lt;br /&gt;
* ''boolean'' '''hasElementPrefix(String prefix)''': returns true if the SVG contains a frame with the given prefix&lt;br /&gt;
* ''boolean'' '''hasElementPrefix(Location location)''': true if the SVG contains a frame element for the given location&lt;br /&gt;
* '''prefix()'''&lt;br /&gt;
* '''mask()'''&lt;br /&gt;
* '''setCacheAllRenderedFrames(bool)'''&lt;br /&gt;
* '''cacheAllRenderedFrames()'''&lt;br /&gt;
* ''QPixmap'' '''framePixmap()''': a pixmap containing the current frame at the current size&lt;br /&gt;
* '''paintFrame(QPainter painter)'''&lt;br /&gt;
* '''paintFrame(QPainter painter, QPointF target)'''&lt;br /&gt;
* '''paintFrame(QPainter painter, QRectF target)'''&lt;br /&gt;
* '''paintFrame(QPainter painter, QRectF target, QRectF source)'''&lt;br /&gt;
&lt;br /&gt;
Enumerations&lt;br /&gt;
* '''EnabledBorder'''&lt;br /&gt;
** NoBorder&lt;br /&gt;
** TopBorder&lt;br /&gt;
** BottomBorder&lt;br /&gt;
** LeftBorder&lt;br /&gt;
** RightBorder&lt;br /&gt;
** AllBorders&lt;br /&gt;
&lt;br /&gt;
=== Painting on the Canvas  ===&lt;br /&gt;
&lt;br /&gt;
==== QColor ====&lt;br /&gt;
&lt;br /&gt;
*Constructors: &lt;br /&gt;
** QColor &lt;br /&gt;
** QColor(string colorName) &lt;br /&gt;
** QColor(number red, number green, number blue, number alpha) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''setThemeColor(ThemeColor color)''': sets the color to the appropriate ThemeColor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Read/write properties:&lt;br /&gt;
* ''number'' '''red'''&lt;br /&gt;
* ''number'' '''green'''&lt;br /&gt;
* ''number'' '''blue'''&lt;br /&gt;
* ''number'' '''alpha'''&lt;br /&gt;
* ''boolean'' '''valid'''&lt;br /&gt;
&lt;br /&gt;
==== QFont ====&lt;br /&gt;
&lt;br /&gt;
*Constructors: &lt;br /&gt;
**QFont &lt;br /&gt;
**QFont(string fontName) &lt;br /&gt;
**QFont(string fontName, number pointSize) &lt;br /&gt;
**QFont(string fontName, number pointSize, number weight) &lt;br /&gt;
**QFont(string fontName, number pointSize, number weight, boolean italic) &lt;br /&gt;
*string key &lt;br /&gt;
*string lastResortFamily &lt;br /&gt;
*string lastResortFont &lt;br /&gt;
*string defaultFamily &lt;br /&gt;
*boolean exactMatch &lt;br /&gt;
*string toString &lt;br /&gt;
*boolean bold &lt;br /&gt;
*string family &lt;br /&gt;
*boolean fixedPitch &lt;br /&gt;
*undefined fromString &lt;br /&gt;
*boolean italic &lt;br /&gt;
*boolean kerning &lt;br /&gt;
*boolean overline &lt;br /&gt;
*number pixelSize &lt;br /&gt;
*number pointSize &lt;br /&gt;
*number pointSizeF &lt;br /&gt;
*boolean strikeOut &lt;br /&gt;
*number stretch &lt;br /&gt;
*boolean underline &lt;br /&gt;
*number weight &lt;br /&gt;
*function isCopyOf &lt;br /&gt;
*function resolve&lt;br /&gt;
&lt;br /&gt;
====QPainter ====&lt;br /&gt;
* Constructors&lt;br /&gt;
** QPainter&lt;br /&gt;
** QPainter(object paintDevice): used to start a painter on a specific QWidget; rarely if ever needed in a JavaScript Plasmoid&lt;br /&gt;
* object background&lt;br /&gt;
* number backgroundMode&lt;br /&gt;
* object brush&lt;br /&gt;
* undefined setBrush&lt;br /&gt;
* object brushOrigin&lt;br /&gt;
* undefined clipping&lt;br /&gt;
* object clipPath&lt;br /&gt;
* object clipRegion&lt;br /&gt;
* number compositionMode&lt;br /&gt;
* object font&lt;br /&gt;
* number layoutDirection&lt;br /&gt;
* number opacity&lt;br /&gt;
* object pen&lt;br /&gt;
* number renderHints&lt;br /&gt;
* undefined transform&lt;br /&gt;
* object viewport&lt;br /&gt;
* boolean viewTransformEnabled&lt;br /&gt;
* object window&lt;br /&gt;
* object worldMatrix&lt;br /&gt;
* object worldTransform&lt;br /&gt;
* boolean worldMatrixEnabled&lt;br /&gt;
* object combinedMatrix&lt;br /&gt;
* object combinedTransform&lt;br /&gt;
* boolean active&lt;br /&gt;
* function begin&lt;br /&gt;
* function end&lt;br /&gt;
* function boundingRect&lt;br /&gt;
* function drawChord&lt;br /&gt;
* function drawConvexPolygon&lt;br /&gt;
* function drawArc&lt;br /&gt;
* function drawEllipse&lt;br /&gt;
* function drawImage&lt;br /&gt;
* function drawLine&lt;br /&gt;
* function drawLines&lt;br /&gt;
* function drawPath&lt;br /&gt;
* function drawPicture&lt;br /&gt;
* function drawPie&lt;br /&gt;
* function drawPixmap&lt;br /&gt;
* function drawPoint&lt;br /&gt;
* function drawPoints&lt;br /&gt;
* function drawPolygon&lt;br /&gt;
* function drawPolyline&lt;br /&gt;
* function drawRect&lt;br /&gt;
* function drawRects&lt;br /&gt;
* function drawRoundRect&lt;br /&gt;
* function drawText&lt;br /&gt;
* function drawTiledPixmap&lt;br /&gt;
* function eraseRect&lt;br /&gt;
* function fillPath&lt;br /&gt;
* function fillRect&lt;br /&gt;
* function resetMatrix&lt;br /&gt;
* function resetTransform&lt;br /&gt;
* function restore&lt;br /&gt;
* function rotate&lt;br /&gt;
* function save&lt;br /&gt;
* function scale&lt;br /&gt;
* function setClipRect&lt;br /&gt;
* function setRenderHint&lt;br /&gt;
* function shear&lt;br /&gt;
* function strokePath&lt;br /&gt;
* function testRenderHint&lt;br /&gt;
* function toString&lt;br /&gt;
* function translate&lt;br /&gt;
&lt;br /&gt;
==== QPen ====&lt;br /&gt;
*Constructors: &lt;br /&gt;
**QPen &lt;br /&gt;
* object brush&lt;br /&gt;
* object color&lt;br /&gt;
* number capStyle&lt;br /&gt;
* number joinStyle&lt;br /&gt;
* number style&lt;br /&gt;
* number dashOffset&lt;br /&gt;
* number miterLimit&lt;br /&gt;
* number width&lt;br /&gt;
* boolean solid&lt;br /&gt;
* number red&lt;br /&gt;
* number green&lt;br /&gt;
* number blue&lt;br /&gt;
* number alpha&lt;br /&gt;
* boolean valid&lt;br /&gt;
&lt;br /&gt;
==== QRectF ====&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom''' &lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors: &lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle &lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;br /&gt;
&lt;br /&gt;
==== QSizeF ====&lt;br /&gt;
&lt;br /&gt;
*Constructors: &lt;br /&gt;
**QSizeF &lt;br /&gt;
**QSizeF(number width, number height) &lt;br /&gt;
*number height &lt;br /&gt;
*number width&lt;br /&gt;
&lt;br /&gt;
==== QPoint ====&lt;br /&gt;
&lt;br /&gt;
Constructors: &lt;br /&gt;
* '''QPoint'''&lt;br /&gt;
* '''QPoint(number x, number y)'''&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''bool'' '''null''' &lt;br /&gt;
* ''number'' '''manhattanLength '''&lt;br /&gt;
&lt;br /&gt;
Read-write propertie:&lt;br /&gt;
* ''number'' '''x '''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
== Accessing Sources of Data  ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Tutorials/Plasma/JavaScript/DataEngine|JavaScript Plasmoid DataEngine tutorials]]&lt;br /&gt;
&lt;br /&gt;
=== Global Functions to Access DataEngines and Services ===&lt;br /&gt;
* dataEngine(string name): returns a DataEngine object&lt;br /&gt;
* service(string dataEngineName, string sourceName): returns a ServiceObject, see also DataEngine::serviceForSource&lt;br /&gt;
&lt;br /&gt;
=== DataEngine ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[String]'' '''sources'''&lt;br /&gt;
* ''boolean'' '''valid'''&lt;br /&gt;
* ''String'' '''icon'''&lt;br /&gt;
* ''String'' '''name'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''sourceAdded(String sourceName)'''&lt;br /&gt;
* '''sourceRemoved(String sourceName)'''&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''serviceForSource(String sourceName)'''&lt;br /&gt;
* '''connectSource(String sourceName, Object connectTo[, number interval[, IntervalAlignment alignment] ])''': if the object passed in as the object to connect to is the plasmoid object, then the plasmoid.dataUpdated(String source, Map[String, Any] data) callback will be called if it exists&lt;br /&gt;
* '''connectAllSources(Object connectTo[, number interval[, IntervalAlignment alignment] ])''': if the object passed in as the object to connect to is the plasmoid object, then the plasmoid.dataUpdated(String source, Map[String, Any] data) callback will be called if it exists&lt;br /&gt;
* '''disconnectSource(String sourceName, Object connectedTo)''': if the object passed in as the object to connect to is the plasmoid object, then the plasmoid.dataUpdated(String source, Map[String, Any] data) callback will be called if it exists&lt;br /&gt;
* '''Data query(String sourceName)'''&lt;br /&gt;
&lt;br /&gt;
The following functions are only of interest to DataEngine reimplementations (e.g. JavaScript DataEngines):&lt;br /&gt;
&lt;br /&gt;
* '''scheduleSourcesUpdated()'''&lt;br /&gt;
* '''removeSource(String)'''&lt;br /&gt;
* '''updateAllSources()'''&lt;br /&gt;
* '''forceImmediateUpdateOfAllVisualizations()'''&lt;br /&gt;
* '''DataContainer containerForSource(String)'''&lt;br /&gt;
&lt;br /&gt;
=== Service ===&lt;br /&gt;
* function finished(Plasma::ServiceJob*)&lt;br /&gt;
* function operationsChanged()&lt;br /&gt;
* function serviceReady(Plasma::Service*)&lt;br /&gt;
* function setDestination(QString)&lt;br /&gt;
* function destination()&lt;br /&gt;
* function operationNames()&lt;br /&gt;
* function operationDescription(QString)&lt;br /&gt;
* function startOperationCall(KConfigGroup,QObject*)&lt;br /&gt;
* function startOperationCall(KConfigGroup)&lt;br /&gt;
* function isOperationEnabled(QString)&lt;br /&gt;
* function name()&lt;br /&gt;
* function associateWidget(QWidget*,QString)&lt;br /&gt;
* function disassociateWidget(QWidget*)&lt;br /&gt;
* function associateWidget(QGraphicsWidget*,QString)&lt;br /&gt;
* function disassociateWidget(QGraphicsWidget*)&lt;br /&gt;
* function parametersFromDescription(KConfigGroup)&lt;br /&gt;
&lt;br /&gt;
== Other Functions and Classes  ==&lt;br /&gt;
=== Print and Debug ===&lt;br /&gt;
* '''print(string message)''': prints message to console&lt;br /&gt;
* '''debug(string message)''': print message to console if it is running in a KDE debug build&lt;br /&gt;
&lt;br /&gt;
=== GraphicsItem ===&lt;br /&gt;
This class represents an item on the canvas. Support is only provided so that GraphicsItem objects returned or taken by other objects work. There is no meaningful API provided directly in the JavaScript runtime for these objects and they should not need to be used directly.&lt;br /&gt;
&lt;br /&gt;
=== QSizePolicy ===&lt;br /&gt;
The QSizePolicy class is a layout attribute describing horizontal and vertical resizing policy. This can be set on any graphics widget that you have using the enums provided for this (QtSizePolicy ), for example:&lt;br /&gt;
&lt;br /&gt;
button = new PushButton();&lt;br /&gt;
button.sizePolicy = QSizePolicy(QSizePolicyMaximum, QSizePolicyFixed);&lt;br /&gt;
&lt;br /&gt;
This is useful when your widgets are being laid out by a layout (specially the anchor layout).&lt;br /&gt;
&lt;br /&gt;
* ''QtSizePolicy '' '''horizontalPolicy''': The horizontal component of the size policy.&lt;br /&gt;
* ''QtSizePolicy '' '''verticalPolicy''': The vertical component of the size policy.&lt;br /&gt;
* ''number'' '''horizontalStretch''': The horizontal stretch factor of the size policy.&lt;br /&gt;
* ''number'' '''verticalStretch''': The vertical stretch factor of the size policy.&lt;br /&gt;
&lt;br /&gt;
=== IOJob ===&lt;br /&gt;
This object is returned by input/output access for asynchronous file and data access (see the section on Extensions for documentation on getUrl). It is used by connecting Javascript functions in your code to the relevant signals.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''kill()'''&lt;br /&gt;
* '''suspend()'''&lt;br /&gt;
* '''resume()'''&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''data(IOJob job, ByteArray data)''': emitted whenever data arrives. If data is empty (data.length == 0) then the transmission has completed.&lt;br /&gt;
* '''dataReq(IOJob job, ByteArray data)''': when sending data, this signal is emitted when data is requested; add the data to be sent ot the data member, or leave it empty to signal that the process is complete and there is no more data to send&lt;br /&gt;
* '''finished(IOJob job)''': emitted when the transmission has completed&lt;br /&gt;
* '''suspended(IOJob job)''': emitted when the job has been suspeneded &lt;br /&gt;
* '''resumed(IOJob job)'''&lt;br /&gt;
* '''canceled(IOJob job)'''&lt;br /&gt;
* '''connected(IOJob job)'''&lt;br /&gt;
* '''redirection(IOJob job, Url to)'''&lt;br /&gt;
* '''permanentRedirection(IOJob job, Url from, Url to)'''&lt;br /&gt;
* '''mimetype(IOJob job, String mimetype)'''&lt;br /&gt;
&lt;br /&gt;
=== QTimer ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''active''': true if active, false if not&lt;br /&gt;
* ''boolean'' '''singleShot''': true if the timer will fire once when started, false if it will fire repeatedly until stopped&lt;br /&gt;
* ''boolean'' '''interval''': the interval in milliseconds that the timer will trigger&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''start(int msec)''': starts the timer with msec as the interval&lt;br /&gt;
* '''start()''': starts the timer with the default interval&lt;br /&gt;
* '''stop()''': stops the timer&lt;br /&gt;
&lt;br /&gt;
Signals:&lt;br /&gt;
* '''timeout()''': this signal is emitted whenever the timer interval is reached&lt;br /&gt;
&lt;br /&gt;
=== Url ===&lt;br /&gt;
Represents a local or remote address. To create a new Url (or assign to an existing one), use the following syntax:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;var url = new Url(&amp;quot;http://kde.org&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''string'' '''toString''': the URL as a String object&lt;br /&gt;
&lt;br /&gt;
Read-write properties (each representing a portion of the full URL):&lt;br /&gt;
* ''string'' '''protocol'''&lt;br /&gt;
* ''string'' '''host'''&lt;br /&gt;
* ''string'' '''path'''&lt;br /&gt;
* ''string'' '''user'''&lt;br /&gt;
* ''string'' '''password'''&lt;br /&gt;
&lt;br /&gt;
=== ByteArray ===&lt;br /&gt;
This class provides an array of bytes. This is often used by data centric objects, such as the Job classes returned by getUrl.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''length''': the size of the array (number of bytes)&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''chop(number numBytes)''': chops numBytes from the end of the array&lt;br /&gt;
* ''bool'' '''equals(ByteArray other)'''&lt;br /&gt;
* ''ByteArray '''left(number len)''': return len bytes from the left of the array&lt;br /&gt;
* ''ByteArray '''mid(number pos, number len)''': returns an array of bytes starting a post and length len (if len is -1, it returns all remaining bytes)&lt;br /&gt;
* ''ByteArray '''remove(number pos, number len)''': removes len bytes starting at index pos from the array and returns it&lt;br /&gt;
* ''ByteArray '''right(number len)''': returns len bytes from the right of the array&lt;br /&gt;
* ''ByteArray '''simplified()''': returns a byte array that has whitespace removed from the start and the end, and which has each sequence of internal whitespace replaced with a single space&lt;br /&gt;
* ''ByteArray '''toBase64()''': returns the array encoded in base64&lt;br /&gt;
* ''ByteArray '''toLower()''': returns a lowercased copy of the array&lt;br /&gt;
* ''ByteArray '''toUpper()''': returns an uppercased copy of the array&lt;br /&gt;
* ''ByteArray '''trimmed()''': returns a copy of the array with whitespace remove from the start and end&lt;br /&gt;
* truncate(number pos): truncates the array at index pos&lt;br /&gt;
* ''String'' '''toLatin1String()''': returns a Latin1-ized string based on the array&lt;br /&gt;
* ''String'' '''toUtf8()''': (API v3) returns a string from the contents of the array using a Utf8 conversation&lt;br /&gt;
* ''String'' '''valueOf()''': returns the raw data in the array as a string&lt;br /&gt;
&lt;br /&gt;
== Addons (API V3) ==&lt;br /&gt;
Plasmoids may also have plugins of their own, also written in Javascript, and which are shipped separately to the Plasmoid. These are referred to as &amp;quot;Addons&amp;quot; and are packaged similarly to a Plasmoid. For more information on creating Javascript Addons, visit the [[/JavascriptAddons|Javascript Addons tutorial]].&lt;br /&gt;
&lt;br /&gt;
It is possible to list, load and be notified of new Addons having been installed for your Plasmoid.&lt;br /&gt;
&lt;br /&gt;
* ''Array[AddonInformation]'' '''listAddons(string type)''': an array of available addons of the provided type. The type name maps to the X-KDE-PluginInfo-Category entry in the Addon's metadata.desktop file. &lt;br /&gt;
* ''boolean'' '''loadAddon(String type, String id)''': load the addon with the given id and type, return true on success. In order to be notified when the addon is successfully created, add an event listener to the &amp;quot;addCreated&amp;quot; event.&lt;br /&gt;
&lt;br /&gt;
The following are the Addon events which are recognized by the Plasmoid along with the type of event objects (if any) that are passed to registered event listeners that are registered with addEventListener: &lt;br /&gt;
&lt;br /&gt;
* addonCreated: Object addOn&lt;br /&gt;
* newAddonsAvaiable&lt;br /&gt;
&lt;br /&gt;
=== AddonInformation (API V3) ===&lt;br /&gt;
&lt;br /&gt;
The AddonInformation object contains the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''id''': the id of the Addon. Can be used with loadAddon&lt;br /&gt;
* ''String'' '''name''': a string suitable for showing the user, such as in a configuration dialog&lt;br /&gt;
&lt;br /&gt;
== Extensions  ==&lt;br /&gt;
An API extension is a security controlled set of functions and objects that are loaded on demand. These extensions are requested by the widget by listing the required and the optional extensions (if any) it wants loaded in its metadata.desktop file. This way, even prior to the widget being loaded, Plasma can know what it will want. &lt;br /&gt;
&lt;br /&gt;
Required extensions are requested using the X-Plasma-RequiredExtensions key, and optional extensions with the X-Plasma-OptionalExtensions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
X-Plasma-RequiredExtensions=FileDialog,MyCustomQScriptExtension&lt;br /&gt;
X-Plasma-OptionalExtensions=LaunchApp,HTTP&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Simplified Javascript Engine then decides if the widget will actually get that extension or not. Failure to load a required extension will result in script execution being aborted.&lt;br /&gt;
&lt;br /&gt;
Each of the built-in extensions provided are described below.&lt;br /&gt;
&lt;br /&gt;
=== FileDialog ===&lt;br /&gt;
&lt;br /&gt;
Provides access to open and save dialog classes: OpenFileDialog and SaveFileDialog. Both are non-modal and run asynchronously, so the signals must be used. Other than the name difference (and resulting UI variance) the API for each is identical:&lt;br /&gt;
&lt;br /&gt;
* Constructors&lt;br /&gt;
** '''OpenFileDialog'''&lt;br /&gt;
** '''SaveFileDialog'''&lt;br /&gt;
* Properties&lt;br /&gt;
** Read Only&lt;br /&gt;
*** ''array(Url)'' '''urls''': the selected file, as a Url object&lt;br /&gt;
*** ''Url'' '''baseUrl''', the current path (minus filename) as a Url&lt;br /&gt;
*** ''string '''file''': the selected file, as a string&lt;br /&gt;
*** ''array(string)'' '''files''': selected files (plural), as an array of strings&lt;br /&gt;
** Read/Write&lt;br /&gt;
*** ''Url'' '''url''': the current Url, can be read from when the user is done or assigned before to set the starting path&lt;br /&gt;
*** ''string'' '''filter''': a string representing the mimetype filter; e.g. &amp;quot;*.cpp|C++ Source Files\n*.h|Header files&amp;quot; or &amp;quot;*.cpp&amp;quot; or &amp;quot;*.cpp|*h&amp;quot;&lt;br /&gt;
*** ''boolean'' '''localOnly''': true to show only local files, false if network locations are Ok as well&lt;br /&gt;
*** ''boolean'' '''directoriesOnly''': true to only allow selection of a directory (not a file)&lt;br /&gt;
*** ''boolean'' '''existingOnly''': true if only existing files/directories may be selected&lt;br /&gt;
* Functions&lt;br /&gt;
** '''show()''': when called, the dialog will be shown to the user&lt;br /&gt;
* Signals&lt;br /&gt;
** '''accepted(FileDialogProxy)'''': emitted when the file dialog has been successfully accepted by the user with one or more files/directories.&lt;br /&gt;
** '''finished(FileDialogProxy)''': emitted when the file dialog closes, included when cancelled/closed without being accepted&lt;br /&gt;
&lt;br /&gt;
=== LocalIO === &lt;br /&gt;
This extension allows access to local files. &lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''IOJob'' '''getUrl(Url url)''': attempts to fetch the file using an IOJob&lt;br /&gt;
* ''IOJob'' '''getUrl(String url)''': attempts to fetch the file using an IOJob&lt;br /&gt;
&lt;br /&gt;
=== NetworkIO === &lt;br /&gt;
This extensions allows access to network addresses.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''IOJob'' '''getUrl(Url url)''': attempts to fetch the file using an IOJob&lt;br /&gt;
* ''IOJob'' '''getUrl(String url)''': attempts to fetch the file using an IOJob&lt;br /&gt;
&lt;br /&gt;
=== HTTP ===&lt;br /&gt;
This extension allows access to data and files via http and https.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''IOJob'' '''getUrl(Url url)''': attempts to fetch the file using an IOJob&lt;br /&gt;
* ''IOJob'' '''getUrl(String url)''': attempts to fetch the file using an IOJob&lt;br /&gt;
* ''bool'' '''openUrl([string|Url] url)''': (API v4) Opens the url in the default application (or asks the user if there is no default application for the file). The url parameter may be either a string or a Url. Returns true on success, false on failure.&lt;br /&gt;
&lt;br /&gt;
=== LaunchApp ===&lt;br /&gt;
&lt;br /&gt;
Adds methods to the global plasmoid object that allow launching applications, running commands and opening files and urls.&lt;br /&gt;
&lt;br /&gt;
* ''bool'' '''runApplication(string application[, array files])''' &amp;lt;br&amp;gt;Runs an application by name (can reference an installed .desktop file as well as an executable in the user's $PATH) with an optional array of files. The file array may contain either Urls or strings. Returns true on success, false on failure.&lt;br /&gt;
* ''bool'' '''runCommand(string exe[, array args])''' &amp;lt;br&amp;gt;Runs the executable with the given arguments. Returns true on success, false on failure.&lt;br /&gt;
* ''bool'' '''openUrl([string|Url] url)''': &amp;lt;br&amp;gt;Opens the url in the default application (or asks the user if there is no default application for the file). The url parameter may be either a string or a Url. Returns true on success, false on failure.&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-06T13:07:22Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: /* General time and date settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration Keys ==&lt;br /&gt;
Here you find a list of commonly used configuration keys to use with the '''writeConfig''' command. Where the documentation notes that a key is in a subgroup, remember to first use '''currentConfigGroup'''.&lt;br /&gt;
&lt;br /&gt;
=== Common configuration keys ===&lt;br /&gt;
Here are some keys that can be used with all widgets:&lt;br /&gt;
&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
=== Common time and date keys ===&lt;br /&gt;
Most of the settings listed below apply to all widgets dealing with date and time (clock, digital-clock, binary-clock, …)&lt;br /&gt;
Settings for individual plasmoids can be found in their respective category and usually only affect the plasmoid’s appearance.&lt;br /&gt;
* '''announceInterval''' (number ≥ 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
&lt;br /&gt;
=== Analog clock (clock) ===&lt;br /&gt;
* '''showSecondHand''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezoneString''' (true/false): self-explanatory&lt;br /&gt;
&lt;br /&gt;
=== Battery status (battery) ===&lt;br /&gt;
* '''showBatteryString''' (true/false): Whether or not battery status is shown as overlay for the battery icon (if in systemtray or panel)&lt;br /&gt;
* '''showMultipleBatteries''' (true/false): Whether or not battery status is shown for each battery separately&lt;br /&gt;
&lt;br /&gt;
=== Digital clock (digital-clock) ===&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
&lt;br /&gt;
=== Folderview (folderview) ===&lt;br /&gt;
* '''alignToGrid''' (true/false): self-explanatory&lt;br /&gt;
* '''customIconSize''' (16/22/24/32/48/…): Use custom icon size for files/folders (use only default/common icon sizes, powers of 2)&lt;br /&gt;
* '''customLabel''': Use custom title rather than default path or place name&lt;br /&gt;
* '''drawShadows''' (true/false): Whether or not file labels are to draw shadows&lt;br /&gt;
* '''filter''' (0/1/2): Defines whether a filter is to be used or not (0 = No filter, 1 = Show only matching files, 2 = Hide matching files)&lt;br /&gt;
* '''filterFiles''': Wildcard filter to filter file names&lt;br /&gt;
* '''mimeFilter''': Comma-separated list of mimetypes to be filtered (shown/hidden depends on filter-setting)&lt;br /&gt;
* '''iconsLocked''' (true/false): Whether or not icons can be moved&lt;br /&gt;
* '''numTextLines''' (number &amp;gt; 0): Amount of lines a file name can have before it is truncated&lt;br /&gt;
* '''url''': Folder URL to be displayed (e. g. desktop:/// or file:///home/yourusername)&lt;br /&gt;
* '''sortColumn''' (-1/0/1/2/3/4/5): The way files and folders are sorted (-1 = No sorting, 0 = By name, 1 = By size, 2 = By type, 3 = By date)&lt;br /&gt;
* '''sortDirsFirst''' (true/false): Whether or not folders are displayed before files (defaults to true)&lt;br /&gt;
* '''textColor''' (rrr,ggg,bbb): Color the icon labels will have&lt;br /&gt;
&lt;br /&gt;
=== Kickoff menu (launcher) ===&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
&lt;br /&gt;
=== Pager (pager) ===&lt;br /&gt;
* '''displayedText''' (0/1/2): Text to be shown on individual virtual desktops (0 = Workspace number, 1 = Workspace title, 2 = None)&lt;br /&gt;
* '''ShowWindowIcons''' (true/false): Whether or not the application icon is to be shown on each individual window&lt;br /&gt;
* '''currentDesktopSelected''' (0/1/2): Defines what should happen if the user clicks on the virtual desktop that is currently active (0 = Nothing, 1 = Show Workspace, i. e. minimize windows, 2 = Show Dashboard)&lt;br /&gt;
* '''rows''' (number &amp;gt; 0): Amount of rows the pager should have. (Note: ''This is a global option, so you need to use '''writeGlobalConfig''' instead'')&lt;br /&gt;
&lt;br /&gt;
=== Notifications (notifications) ===&lt;br /&gt;
{{note|This applet is likely to be embedded to system tray. For Systrem Tray specific tasks, i. e. how to add, manage and remove plasmoids inside it, see sections below}}&lt;br /&gt;
* '''AutoHidePopup''' (true/false): Whether or not popups are to be hidden automatiaclly&lt;br /&gt;
* '''ShowJobs''' (true/false): Whether or not jobs are to be shown (e. g. file transfer progress)&lt;br /&gt;
* '''ShowNotifications''' (true/false): Whether or not notifications are to be shown&lt;br /&gt;
&lt;br /&gt;
=== Removable media notifier (notifier) ===&lt;br /&gt;
* '''ShowDevices''' (0/1/2): Defines what kind of devices are to be shown (0 = Removable media only, 1 = Non-removable media only, 2 = All)&lt;br /&gt;
{{note|Auto-mount settings and device actions are not stored in this Plasmoid’s settings.}}&lt;br /&gt;
&lt;br /&gt;
=== Taskbar (tasks) ===&lt;br /&gt;
* '''groupingStrategy''' (0/1/2): Defines how taskbar entries are to be grouped (0 = Never, 1 = Manually, 2 = By Program Name)&lt;br /&gt;
* '''groupWhenFull''' (true/false): Only group when taskbar is full (to be used with groupingStrategy=2 only!)&lt;br /&gt;
* '''highlightWindows''' (true/false): Highlight a window if your mouse cursor is hovering its taskbar entry (requires Desktop Compositing and “Highlight windows” effect enabled to work)&lt;br /&gt;
* '''maxRows''' (number &amp;gt; 0): Amount of rows taskbar entries can take&lt;br /&gt;
* '''forceRows''' (true/false): Force row setting for taskbar entries&lt;br /&gt;
* '''showOnlyCurrentActivity''' (true/false): Show only windows from current activity&lt;br /&gt;
* '''showOnlyCurrentDesktop''' (true/false): Show only windows from current virtual desktop&lt;br /&gt;
* '''showOnlyCurrentScreen''' (true/false): Show only windows from current screen (multi monitor setup)&lt;br /&gt;
* '''showTooltip''' (true/false): Whether or not tooltips are to be shown&lt;br /&gt;
* '''sortingStrategy''' (0/1/2/3): How taskbar entries are to be sorted (0 = Never, 1 = Manually, 2 = Alphabetically, 3 = By Desktop)&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some unique behaviors since it can host widgets and configuring it is not as easy as most other widgets, particularly when adding and removing widgets. This section will help you deal with its specific behavior.&lt;br /&gt;
&lt;br /&gt;
==== Generic System Tray configuration keys ====&lt;br /&gt;
* '''DefaultAppletAdded''' (true/false): Remembers whether the default plasmoids (networkmanagement, device manager, notifications) have already been added(??)&lt;br /&gt;
* '''ShowApplicationStatus''' (true/false): Show system tray icons of applications that belong to the group “Applications”&lt;br /&gt;
* '''ShowCommunications''' (true/false): Show system tray icons of applications that belong to the group “Applications” (i. e. Messenger, IRC chat)&lt;br /&gt;
* '''ShowHardware''' (true/false): Show system tray icons of applications that belong to the group “Hardware” (i. e. volume control, printer applet)&lt;br /&gt;
* '''ShowSystemServices''' (true/false): Show system tray icons of applications that belong to the group “System Services” (i. e. Nepomuk Indexing Agent)&lt;br /&gt;
* '''ShowUnknown''' (true/false): Show system tray icons that do not belong into one of the categories mentioned above (or that do not use KDE’s system tray protocol and thus do not provide such information)&lt;br /&gt;
* '''alwaysShown''': Comma-separated list of widgets and entries that are to be shown all the time (e. g. KMix,notifier)&lt;br /&gt;
* '''hidden''': Comma-separated list of widgets and entries that are to be hidden all the time (e. g. Nepomuk Indexing Agent,Klipper,kmail)&lt;br /&gt;
{{note|Although notifications appear to be part of the System Tray, they are handled by a separate plasmoid which is embedded to the system tray. For its configuration keys, see section above}}&lt;br /&gt;
&lt;br /&gt;
==== Add a widget to systemtray ====&lt;br /&gt;
You can not add widgets to the systemtray in a similar way like you would add them to a panel or containment using addWidget. Instead, to add, manage and remove them, you need to utilize writeConfig changing the currentConfigGroup.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray = panel.addWidget(&amp;quot;systemtray&amp;quot;)	// First add a systemtray to your panel&lt;br /&gt;
systray.currentConfigGroup = Array(&amp;quot;Applets&amp;quot;,&amp;quot;0&amp;quot;)		// then change the currentConfig Group&lt;br /&gt;
																										// to the subnode [Applets][0]. Use any number you like(?)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can “create” the plasmoid by adding a “plugin” configuration entry&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;plugin&amp;quot;,&amp;quot;notifier&amp;quot;)	// This will add a Device Notifier Plasmoid&amp;lt;/code&amp;gt;&lt;br /&gt;
You can modify the plasmoid’s configuration by using writeConfig.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;property&amp;quot;,&amp;quot;value&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
To change back to the top configuration level and thus edit the systemtray plasmoid itself pass an empty array to currentConfigGroup.&lt;br /&gt;
&lt;br /&gt;
==== Edit existing widgets in systemtray ====&lt;br /&gt;
&lt;br /&gt;
==== Remove a widget from systemtray =====&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-06T13:06:49Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Grouped all time-date-settings together, added config keys for pager, notifications, notifier, battery and block&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration Keys ==&lt;br /&gt;
Here you find a list of commonly used configuration keys to use with the '''writeConfig''' command. Where the documentation notes that a key is in a subgroup, remember to first use '''currentConfigGroup'''.&lt;br /&gt;
&lt;br /&gt;
=== Common configuration keys ===&lt;br /&gt;
Here are some keys that can be used with all widgets:&lt;br /&gt;
&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
=== General time and date settings ===&lt;br /&gt;
Most of the settings listed below apply to all widgets dealing with date and time (clock, digital-clock, binary-clock, …)&lt;br /&gt;
Settings for individual plasmoids can be found in their respective category and usually only affect the plasmoid’s appearance.&lt;br /&gt;
* '''announceInterval''' (number ≥ 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
&lt;br /&gt;
=== Analog clock (clock) ===&lt;br /&gt;
* '''showSecondHand''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezoneString''' (true/false): self-explanatory&lt;br /&gt;
&lt;br /&gt;
=== Battery status (battery) ===&lt;br /&gt;
* '''showBatteryString''' (true/false): Whether or not battery status is shown as overlay for the battery icon (if in systemtray or panel)&lt;br /&gt;
* '''showMultipleBatteries''' (true/false): Whether or not battery status is shown for each battery separately&lt;br /&gt;
&lt;br /&gt;
=== Digital clock (digital-clock) ===&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
&lt;br /&gt;
=== Folderview (folderview) ===&lt;br /&gt;
* '''alignToGrid''' (true/false): self-explanatory&lt;br /&gt;
* '''customIconSize''' (16/22/24/32/48/…): Use custom icon size for files/folders (use only default/common icon sizes, powers of 2)&lt;br /&gt;
* '''customLabel''': Use custom title rather than default path or place name&lt;br /&gt;
* '''drawShadows''' (true/false): Whether or not file labels are to draw shadows&lt;br /&gt;
* '''filter''' (0/1/2): Defines whether a filter is to be used or not (0 = No filter, 1 = Show only matching files, 2 = Hide matching files)&lt;br /&gt;
* '''filterFiles''': Wildcard filter to filter file names&lt;br /&gt;
* '''mimeFilter''': Comma-separated list of mimetypes to be filtered (shown/hidden depends on filter-setting)&lt;br /&gt;
* '''iconsLocked''' (true/false): Whether or not icons can be moved&lt;br /&gt;
* '''numTextLines''' (number &amp;gt; 0): Amount of lines a file name can have before it is truncated&lt;br /&gt;
* '''url''': Folder URL to be displayed (e. g. desktop:/// or file:///home/yourusername)&lt;br /&gt;
* '''sortColumn''' (-1/0/1/2/3/4/5): The way files and folders are sorted (-1 = No sorting, 0 = By name, 1 = By size, 2 = By type, 3 = By date)&lt;br /&gt;
* '''sortDirsFirst''' (true/false): Whether or not folders are displayed before files (defaults to true)&lt;br /&gt;
* '''textColor''' (rrr,ggg,bbb): Color the icon labels will have&lt;br /&gt;
&lt;br /&gt;
=== Kickoff menu (launcher) ===&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
&lt;br /&gt;
=== Pager (pager) ===&lt;br /&gt;
* '''displayedText''' (0/1/2): Text to be shown on individual virtual desktops (0 = Workspace number, 1 = Workspace title, 2 = None)&lt;br /&gt;
* '''ShowWindowIcons''' (true/false): Whether or not the application icon is to be shown on each individual window&lt;br /&gt;
* '''currentDesktopSelected''' (0/1/2): Defines what should happen if the user clicks on the virtual desktop that is currently active (0 = Nothing, 1 = Show Workspace, i. e. minimize windows, 2 = Show Dashboard)&lt;br /&gt;
* '''rows''' (number &amp;gt; 0): Amount of rows the pager should have. (Note: ''This is a global option, so you need to use '''writeGlobalConfig''' instead'')&lt;br /&gt;
&lt;br /&gt;
=== Notifications (notifications) ===&lt;br /&gt;
{{note|This applet is likely to be embedded to system tray. For Systrem Tray specific tasks, i. e. how to add, manage and remove plasmoids inside it, see sections below}}&lt;br /&gt;
* '''AutoHidePopup''' (true/false): Whether or not popups are to be hidden automatiaclly&lt;br /&gt;
* '''ShowJobs''' (true/false): Whether or not jobs are to be shown (e. g. file transfer progress)&lt;br /&gt;
* '''ShowNotifications''' (true/false): Whether or not notifications are to be shown&lt;br /&gt;
&lt;br /&gt;
=== Removable media notifier (notifier) ===&lt;br /&gt;
* '''ShowDevices''' (0/1/2): Defines what kind of devices are to be shown (0 = Removable media only, 1 = Non-removable media only, 2 = All)&lt;br /&gt;
{{note|Auto-mount settings and device actions are not stored in this Plasmoid’s settings.}}&lt;br /&gt;
&lt;br /&gt;
=== Taskbar (tasks) ===&lt;br /&gt;
* '''groupingStrategy''' (0/1/2): Defines how taskbar entries are to be grouped (0 = Never, 1 = Manually, 2 = By Program Name)&lt;br /&gt;
* '''groupWhenFull''' (true/false): Only group when taskbar is full (to be used with groupingStrategy=2 only!)&lt;br /&gt;
* '''highlightWindows''' (true/false): Highlight a window if your mouse cursor is hovering its taskbar entry (requires Desktop Compositing and “Highlight windows” effect enabled to work)&lt;br /&gt;
* '''maxRows''' (number &amp;gt; 0): Amount of rows taskbar entries can take&lt;br /&gt;
* '''forceRows''' (true/false): Force row setting for taskbar entries&lt;br /&gt;
* '''showOnlyCurrentActivity''' (true/false): Show only windows from current activity&lt;br /&gt;
* '''showOnlyCurrentDesktop''' (true/false): Show only windows from current virtual desktop&lt;br /&gt;
* '''showOnlyCurrentScreen''' (true/false): Show only windows from current screen (multi monitor setup)&lt;br /&gt;
* '''showTooltip''' (true/false): Whether or not tooltips are to be shown&lt;br /&gt;
* '''sortingStrategy''' (0/1/2/3): How taskbar entries are to be sorted (0 = Never, 1 = Manually, 2 = Alphabetically, 3 = By Desktop)&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some unique behaviors since it can host widgets and configuring it is not as easy as most other widgets, particularly when adding and removing widgets. This section will help you deal with its specific behavior.&lt;br /&gt;
&lt;br /&gt;
==== Generic System Tray configuration keys ====&lt;br /&gt;
* '''DefaultAppletAdded''' (true/false): Remembers whether the default plasmoids (networkmanagement, device manager, notifications) have already been added(??)&lt;br /&gt;
* '''ShowApplicationStatus''' (true/false): Show system tray icons of applications that belong to the group “Applications”&lt;br /&gt;
* '''ShowCommunications''' (true/false): Show system tray icons of applications that belong to the group “Applications” (i. e. Messenger, IRC chat)&lt;br /&gt;
* '''ShowHardware''' (true/false): Show system tray icons of applications that belong to the group “Hardware” (i. e. volume control, printer applet)&lt;br /&gt;
* '''ShowSystemServices''' (true/false): Show system tray icons of applications that belong to the group “System Services” (i. e. Nepomuk Indexing Agent)&lt;br /&gt;
* '''ShowUnknown''' (true/false): Show system tray icons that do not belong into one of the categories mentioned above (or that do not use KDE’s system tray protocol and thus do not provide such information)&lt;br /&gt;
* '''alwaysShown''': Comma-separated list of widgets and entries that are to be shown all the time (e. g. KMix,notifier)&lt;br /&gt;
* '''hidden''': Comma-separated list of widgets and entries that are to be hidden all the time (e. g. Nepomuk Indexing Agent,Klipper,kmail)&lt;br /&gt;
{{note|Although notifications appear to be part of the System Tray, they are handled by a separate plasmoid which is embedded to the system tray. For its configuration keys, see section above}}&lt;br /&gt;
&lt;br /&gt;
==== Add a widget to systemtray ====&lt;br /&gt;
You can not add widgets to the systemtray in a similar way like you would add them to a panel or containment using addWidget. Instead, to add, manage and remove them, you need to utilize writeConfig changing the currentConfigGroup.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray = panel.addWidget(&amp;quot;systemtray&amp;quot;)	// First add a systemtray to your panel&lt;br /&gt;
systray.currentConfigGroup = Array(&amp;quot;Applets&amp;quot;,&amp;quot;0&amp;quot;)		// then change the currentConfig Group&lt;br /&gt;
																										// to the subnode [Applets][0]. Use any number you like(?)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can “create” the plasmoid by adding a “plugin” configuration entry&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;plugin&amp;quot;,&amp;quot;notifier&amp;quot;)	// This will add a Device Notifier Plasmoid&amp;lt;/code&amp;gt;&lt;br /&gt;
You can modify the plasmoid’s configuration by using writeConfig.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;property&amp;quot;,&amp;quot;value&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
To change back to the top configuration level and thus edit the systemtray plasmoid itself pass an empty array to currentConfigGroup.&lt;br /&gt;
&lt;br /&gt;
==== Edit existing widgets in systemtray ====&lt;br /&gt;
&lt;br /&gt;
==== Remove a widget from systemtray =====&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-06T12:43:05Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Added list of configuration keys for notifier&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Configuration Keys ==&lt;br /&gt;
Here you find a list of commonly used configuration keys to use with the '''writeConfig''' command. Where the documentation notes that a key is in a subgroup, remember to first use '''currentConfigGroup'''.&lt;br /&gt;
&lt;br /&gt;
=== Common configuration keys ===&lt;br /&gt;
Here are some keys that can be used with all widgets:&lt;br /&gt;
&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
=== Digital clock (digital-clock) ===&lt;br /&gt;
* '''announceInterval''' (number ≥ 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
&lt;br /&gt;
=== Folderview (folderview) ===&lt;br /&gt;
* '''alignToGrid''' (true/false): self-explanatory&lt;br /&gt;
* '''customIconSize''' (16/22/24/32/48/…): Use custom icon size for files/folders (use only default/common icon sizes, powers of 2)&lt;br /&gt;
* '''customLabel''': Use custom title rather than default path or place name&lt;br /&gt;
* '''drawShadows''' (true/false): Whether or not file labels are to draw shadows&lt;br /&gt;
* '''filter''' (0/1/2): Defines whether a filter is to be used or not (0 = No filter, 1 = Show only matching files, 2 = Hide matching files)&lt;br /&gt;
* '''filterFiles''': Wildcard filter to filter file names&lt;br /&gt;
* '''mimeFilter''': Comma-separated list of mimetypes to be filtered (shown/hidden depends on filter-setting)&lt;br /&gt;
* '''iconsLocked''' (true/false): Whether or not icons can be moved&lt;br /&gt;
* '''numTextLines''' (number &amp;gt; 0): Amount of lines a file name can have before it is truncated&lt;br /&gt;
* '''url''': Folder URL to be displayed (e. g. desktop:/// or file:///home/yourusername)&lt;br /&gt;
* '''sortColumn''' (-1/0/1/2/3/4/5): The way files and folders are sorted (-1 = No sorting, 0 = By name, 1 = By size, 2 = By type, 3 = By date)&lt;br /&gt;
* '''sortDirsFirst''' (true/false): Whether or not folders are displayed before files (defaults to true)&lt;br /&gt;
* '''textColor''' (rrr,ggg,bbb): Color the icon labels will have&lt;br /&gt;
&lt;br /&gt;
=== Kickoff menu (launcher) ===&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
&lt;br /&gt;
=== Removable media notifier (notifier) ===&lt;br /&gt;
* '''ShowDevices''' (0/1/2): Defines what kind of devices are to be shown (0 = Removable media only, 1 = Non-removable media only, 2 = All)&lt;br /&gt;
{{note|Auto-mount settings and device actions are not stored in this Plasmoid’s settings.}}&lt;br /&gt;
&lt;br /&gt;
=== Taskbar (tasks) ===&lt;br /&gt;
* '''groupingStrategy''' (0/1/2): Defines how taskbar entries are to be grouped (0 = Never, 1 = Manually, 2 = By Program Name)&lt;br /&gt;
* '''groupWhenFull''' (true/false): Only group when taskbar is full (to be used with groupingStrategy=2 only!)&lt;br /&gt;
* '''highlightWindows''' (true/false): Highlight a window if your mouse cursor is hovering its taskbar entry (requires Desktop Compositing and “Highlight windows” effect enabled to work)&lt;br /&gt;
* '''maxRows''' (number &amp;gt; 0): Amount of rows taskbar entries can take&lt;br /&gt;
* '''forceRows''' (true/false): Force row setting for taskbar entries&lt;br /&gt;
* '''showOnlyCurrentActivity''' (true/false): Show only windows from current activity&lt;br /&gt;
* '''showOnlyCurrentDesktop''' (true/false): Show only windows from current virtual desktop&lt;br /&gt;
* '''showOnlyCurrentScreen''' (true/false): Show only windows from current screen (multi monitor setup)&lt;br /&gt;
* '''showTooltip''' (true/false): Whether or not tooltips are to be shown&lt;br /&gt;
* '''sortingStrategy''' (0/1/2/3): How taskbar entries are to be sorted (0 = Never, 1 = Manually, 2 = Alphabetically, 3 = By Desktop)&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some unique behaviors since it can host widgets and configuring it is not as easy as most other widgets, particularly when adding and removing widgets. This section will help you deal with its specific behavior.&lt;br /&gt;
&lt;br /&gt;
==== Generic Systemtray configuration keys ====&lt;br /&gt;
* '''DefaultAppletAdded''' (true/false): Remembers whether the default plasmoids (networkmanagement, device manager, notifications) have already been added(??)&lt;br /&gt;
* '''ShowApplicationStatus''' (true/false): Show system tray icons of applications that belong to the group “Applications”&lt;br /&gt;
* '''ShowCommunications''' (true/false): Show system tray icons of applications that belong to the group “Applications” (i. e. Messenger, IRC chat)&lt;br /&gt;
* '''ShowHardware''' (true/false): Show system tray icons of applications that belong to the group “Hardware” (i. e. volume control, printer applet)&lt;br /&gt;
* '''ShowSystemServices''' (true/false): Show system tray icons of applications that belong to the group “System Services” (i. e. Nepomuk Indexing Agent)&lt;br /&gt;
* '''ShowUnknown''' (true/false): Show system tray icons that do not belong into one of the categories mentioned above (or that do not use KDE’s system tray protocol and thus do not provide such information)&lt;br /&gt;
* '''alwaysShown''': Comma-separated list of widgets and entries that are to be shown all the time (e. g. KMix,notifier)&lt;br /&gt;
* '''hidden''': Comma-separated list of widgets and entries that are to be hidden all the time (e. g. Nepomuk Indexing Agent,Klipper,kmail)&lt;br /&gt;
&lt;br /&gt;
==== Add a widget to systemtray ====&lt;br /&gt;
You can not add widgets to the systemtray in a similar way like you would add them to a panel or containment using addWidget. Instead, to add, manage and remove them, you need to utilize writeConfig changing the currentConfigGroup.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray = panel.addWidget(&amp;quot;systemtray&amp;quot;)	// First add a systemtray to your panel&lt;br /&gt;
systray.currentConfigGroup = Array(&amp;quot;Applets&amp;quot;,&amp;quot;0&amp;quot;)		// then change the currentConfig Group&lt;br /&gt;
																										// to the subnode [Applets][0]. Use any number you like(?)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can “create” the plasmoid by adding a “plugin” configuration entry&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;plugin&amp;quot;,&amp;quot;notifier&amp;quot;)	// This will add a Device Notifier Plasmoid&amp;lt;/code&amp;gt;&lt;br /&gt;
You can modify the plasmoid’s configuration by using writeConfig.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;property&amp;quot;,&amp;quot;value&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
To change back to the top configuration level and thus edit the systemtray plasmoid itself pass an empty array to currentConfigGroup.&lt;br /&gt;
&lt;br /&gt;
==== Edit existing widgets in systemtray ====&lt;br /&gt;
&lt;br /&gt;
==== Remove a widget from systemtray =====&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-05T14:27:26Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Added how to add systemtray widgets and some other systemtray things&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
==== Configuration keys ====&lt;br /&gt;
Here you find a list of common and most used configuration keys to use with '''writeConfig''' command.&lt;br /&gt;
===== Global configuration keys (keys that are likely to be applicable on all widgets) =====&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
===== Digital clock (digital-clock) =====&lt;br /&gt;
* '''announceInterval''' (number ≥ 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
===== Folderview (folderview) =====&lt;br /&gt;
* '''alignToGrid''' (true/false): self-explanatory&lt;br /&gt;
* '''customIconSize''' (16/22/24/32/48/…): Use custom icon size for files/folders (use only default/common icon sizes, powers of 2)&lt;br /&gt;
* '''customLabel''': Use custom title rather than default path or place name&lt;br /&gt;
* '''drawShadows''' (true/false): Whether or not file labels are to draw shadows&lt;br /&gt;
* '''filter''' (0/1/2): Defines whether a filter is to be used or not (0 = No filter, 1 = Show only matching files, 2 = Hide matching files)&lt;br /&gt;
* '''filterFiles''': Wildcard filter to filter file names&lt;br /&gt;
* '''mimeFilter''': Comma-separated list of mimetypes to be filtered (shown/hidden depends on filter-setting)&lt;br /&gt;
* '''iconsLocked''' (true/false): Whether or not icons can be moved&lt;br /&gt;
* '''numTextLines''' (number &amp;gt; 0): Amount of lines a file name can have before it is truncated&lt;br /&gt;
* '''url''': Folder URL to be displayed (e. g. desktop:/// or file:///home/yourusername)&lt;br /&gt;
* '''sortColumn''' (-1/0/1/2/3/4/5): The way files and folders are sorted (-1 = No sorting, 0 = By name, 1 = By size, 2 = By type, 3 = By date)&lt;br /&gt;
* '''sortDirsFirst''' (true/false): Whether or not folders are displayed before files (defaults to true)&lt;br /&gt;
* '''textColor''' (rrr,ggg,bbb): Color the icon labels will have&lt;br /&gt;
===== Kickoff menu (launcher) =====&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
===== Taskbar (tasks) =====&lt;br /&gt;
* '''groupingStrategy''' (0/1/2): Defines how taskbar entries are to be grouped (0 = Never, 1 = Manually, 2 = By Program Name)&lt;br /&gt;
* '''groupWhenFull''' (true/false): Only group when taskbar is full (to be used with groupingStrategy=2 only!)&lt;br /&gt;
* '''highlightWindows''' (true/false): Highlight a window if your mouse cursor is hovering its taskbar entry (requires Desktop Compositing and “Highlight windows” effect enabled to work)&lt;br /&gt;
* '''maxRows''' (number &amp;gt; 0): Amount of rows taskbar entries can take&lt;br /&gt;
* '''forceRows''' (true/false): Force row setting for taskbar entries&lt;br /&gt;
* '''showOnlyCurrentActivity''' (true/false): Show only windows from current activity&lt;br /&gt;
* '''showOnlyCurrentDesktop''' (true/false): Show only windows from current virtual desktop&lt;br /&gt;
* '''showOnlyCurrentScreen''' (true/false): Show only windows from current screen (multi monitor setup)&lt;br /&gt;
* '''showTooltip''' (true/false): Whether or not tooltips are to be shown&lt;br /&gt;
* '''sortingStrategy''' (0/1/2/3): How taskbar entries are to be sorted (0 = Never, 1 = Manually, 2 = Alphabetically, 3 = By Desktop)&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some odd behaviors since it can host widgets and configuring it (i. e. add and remove widgets) is not as easy as above. This paragraph will help you deal with its specific behavior.&lt;br /&gt;
==== Generic Systemtray configuration keys ====&lt;br /&gt;
* '''DefaultAppletAdded''' (true/false): Remembers whether the default plasmoids (networkmanagement, device manager, notifications) have already been added(??)&lt;br /&gt;
* '''ShowApplicationStatus''' (true/false): Show system tray icons of applications that belong to the group “Applications”&lt;br /&gt;
* '''ShowCommunications''' (true/false): Show system tray icons of applications that belong to the group “Applications” (i. e. Messenger, IRC chat)&lt;br /&gt;
* '''ShowHardware''' (true/false): Show system tray icons of applications that belong to the group “Hardware” (i. e. volume control, printer applet)&lt;br /&gt;
* '''ShowSystemServices''' (true/false): Show system tray icons of applications that belong to the group “System Services” (i. e. Nepomuk Indexing Agent)&lt;br /&gt;
* '''ShowUnknown''' (true/false): Show system tray icons that do not belong into one of the categories mentioned above (or that do not use KDE’s system tray protocol and thus do not provide such information)&lt;br /&gt;
* '''alwaysShown''': Comma-separated list of widgets and entries that are to be shown all the time (e. g. KMix,notifier)&lt;br /&gt;
* '''hidden''': Comma-separated list of widgets and entries that are to be hidden all the time (e. g. Nepomuk Indexing Agent,Klipper,kmail)&lt;br /&gt;
&lt;br /&gt;
===== Add a widget to systemtray =====&lt;br /&gt;
Unfortunately you cannot add widgets to the systemtray in a similar way like you would add them to a panel or containment using addWidget.&lt;br /&gt;
To add, manage and remove them, you need to utilize writeConfig changing the currentConfigGroup.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray = panel.addWidget(&amp;quot;systemtray&amp;quot;)	// First add a systemtray to your panel&lt;br /&gt;
systray.currentConfigGroup = Array(&amp;quot;Applets&amp;quot;,&amp;quot;0&amp;quot;)		// then change the currentConfig Group&lt;br /&gt;
																										// to the subnode [Applets][0]. Use any number you like(?)&amp;lt;/code&amp;gt;&lt;br /&gt;
Now you can “create” the plasmoid by adding a “plugin” configuration entry&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;plugin&amp;quot;,&amp;quot;notifier&amp;quot;)	// This will add a Device Notifier Plasmoid&amp;lt;/code&amp;gt;&lt;br /&gt;
You can modify the plasmoid’s configuration by using writeConfig.&lt;br /&gt;
&amp;lt;code bash&amp;gt;systray.writeConfig(&amp;quot;property&amp;quot;,&amp;quot;value&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
To change back to the top configuration level and thus edit the systemtray plasmoid itself pass an empty array to currentConfigGroup.&lt;br /&gt;
===== Edit existing widgets in systemtray =====&lt;br /&gt;
&lt;br /&gt;
===== Remove a widget from systemtray =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-05T14:02:19Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Added list of configuration keys for folderview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
==== Configuration keys ====&lt;br /&gt;
Here you find a list of common and most used configuration keys to use with '''writeConfig''' command.&lt;br /&gt;
===== Global configuration keys (keys that are likely to be applicable on all widgets) =====&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
===== Digital clock (digital-clock) =====&lt;br /&gt;
* '''announceInterval''' (number ≥ 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
===== Folderview (folderview) =====&lt;br /&gt;
* '''alignToGrid''' (true/false): self-explanatory&lt;br /&gt;
* '''customIconSize''' (16/22/24/32/48/…): Use custom icon size for files/folders (use only default/common icon sizes, powers of 2)&lt;br /&gt;
* '''customLabel''': Use custom title rather than default path or place name&lt;br /&gt;
* '''drawShadows''' (true/false): Whether or not file labels are to draw shadows&lt;br /&gt;
* '''filter''' (0/1/2): Defines whether a filter is to be used or not (0 = No filter, 1 = Show only matching files, 2 = Hide matching files)&lt;br /&gt;
* '''filterFiles''': Wildcard filter to filter file names&lt;br /&gt;
* '''mimeFilter''': Comma-separated list of mimetypes to be filtered (shown/hidden depends on filter-setting)&lt;br /&gt;
* '''iconsLocked''' (true/false): Whether or not icons can be moved&lt;br /&gt;
* '''numTextLines''' (number &amp;gt; 0): Amount of lines a file name can have before it is truncated&lt;br /&gt;
* '''url''': Folder URL to be displayed (e. g. desktop:/// or file:///home/yourusername)&lt;br /&gt;
* '''sortColumn''' (-1/0/1/2/3/4/5): The way files and folders are sorted (-1 = No sorting, 0 = By name, 1 = By size, 2 = By type, 3 = By date)&lt;br /&gt;
* '''sortDirsFirst''' (true/false): Whether or not folders are displayed before files (defaults to true)&lt;br /&gt;
* '''textColor''' (rrr,ggg,bbb): Color the icon labels will have&lt;br /&gt;
===== Kickoff menu (launcher) =====&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
===== Taskbar (tasks) =====&lt;br /&gt;
* '''groupingStrategy''' (0/1/2): Defines how taskbar entries are to be grouped (0 = Never, 1 = Manually, 2 = By Program Name)&lt;br /&gt;
* '''groupWhenFull''' (true/false): Only group when taskbar is full (to be used with groupingStrategy=2 only!)&lt;br /&gt;
* '''highlightWindows''' (true/false): Highlight a window if your mouse cursor is hovering its taskbar entry (requires Desktop Compositing and “Highlight windows” effect enabled to work)&lt;br /&gt;
* '''maxRows''' (number &amp;gt; 0): Amount of rows taskbar entries can take&lt;br /&gt;
* '''forceRows''' (true/false): Force row setting for taskbar entries&lt;br /&gt;
* '''showOnlyCurrentActivity''' (true/false): Show only windows from current activity&lt;br /&gt;
* '''showOnlyCurrentDesktop''' (true/false): Show only windows from current virtual desktop&lt;br /&gt;
* '''showOnlyCurrentScreen''' (true/false): Show only windows from current screen (multi monitor setup)&lt;br /&gt;
* '''showTooltip''' (true/false): Whether or not tooltips are to be shown&lt;br /&gt;
* '''sortingStrategy''' (0/1/2/3): How taskbar entries are to be sorted (0 = Never, 1 = Manually, 2 = Alphabetically, 3 = By Desktop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some odd behaviors since it can host widgets and configuring it (i. e. add and remove widgets) is not as easy as above. This paragraph will help you deal with its specific behavior.&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-05T13:37:43Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Added list of configuration keys for taskbar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
==== Configuration keys ====&lt;br /&gt;
Here you find a list of common and most used configuration keys to use with '''writeConfig''' command.&lt;br /&gt;
===== Global configuration keys (keys that are likely to be applicable on all widgets) =====&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
===== Digital clock (digital-clock) =====&lt;br /&gt;
* '''announceInterval''' (number ≥ 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
===== Kickoff menu (launcher) =====&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
===== Taskbar (tasks) =====&lt;br /&gt;
* '''groupingStrategy''' (0/1/2): Defines how taskbar entries are to be grouped (0 = Never, 1 = Manually, 2 = By Program Name)&lt;br /&gt;
* '''groupWhenFull''' (true/false): Only group when taskbar is full (to be used with groupingStrategy=2 only!)&lt;br /&gt;
* '''highlightWindows''' (true/false): Highlight a window if your mouse cursor is hovering its taskbar entry (requires Desktop Compositing and “Highlight windows” effect enabled to work)&lt;br /&gt;
* '''maxRows''' (number &amp;gt; 0): Amount of rows taskbar entries can take&lt;br /&gt;
* '''forceRows''' (true/false): Force row setting for taskbar entries&lt;br /&gt;
* '''showOnlyCurrentActivity''' (true/false): Show only windows from current activity&lt;br /&gt;
* '''showOnlyCurrentDesktop''' (true/false): Show only windows from current virtual desktop&lt;br /&gt;
* '''showOnlyCurrentScreen''' (true/false): Show only windows from current screen (multi monitor setup)&lt;br /&gt;
* '''showTooltip''' (true/false): Whether or not tooltips are to be shown&lt;br /&gt;
* '''sortingStrategy''' (0/1/2/3): How taskbar entries are to be sorted (0 = Never, 1 = Manually, 2 = Alphabetically, 3 = By Desktop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some odd behaviors since it can host widgets and configuring it (i. e. add and remove widgets) is not as easy as above. This paragraph will help you deal with its specific behavior.&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting</id>
		<title>KDE System Administration/PlasmaDesktopScripting</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KDE_System_Administration/PlasmaDesktopScripting"/>
				<updated>2011-05-05T13:28:57Z</updated>
		
		<summary type="html">&lt;p&gt;Broulik: Added list of configuration keys for kickoff and digital-clock&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ECMA Script Interaction With Plasma Shells ==&lt;br /&gt;
&lt;br /&gt;
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop or (starting in KDE SC 4.5) plasma-netbook session using ECMA Script (aka JavaScript). This scripting mechanism exposes containments (Desktop Activities and Panels), widgets and various other aspects of plasma-desktop configuration using the widely known and used ECMA Script language. The QtScript engine is used for the runtime environment.&lt;br /&gt;
&lt;br /&gt;
This document describes the API that is provided along with how to&lt;br /&gt;
run such scripts in plasma-desktop.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A set of examples can be found [https://projects.kde.org/projects/kde/kdeexamples/repository/revisions/master/show/plasma/javascript/plasma-shell-scripting here] that demonstrate the use of various aspects of Plasma shell scripting.&lt;br /&gt;
&lt;br /&gt;
Contributions of additional examples are welcome and an be sent to the Plasma development mailing list (plasma-devel at kde.org) for inclusion if you do not have commit rights to the kdeexamples module.&lt;br /&gt;
&lt;br /&gt;
== Running Scripts ==&lt;br /&gt;
There are three ways that scripts can be executed in plasma-desktop:&lt;br /&gt;
&lt;br /&gt;
* '''on first run''': when plasma-desktop is started without any pre-existing configuration, any scripts in $APPDATA/plasma-desktop/init/ with a &amp;quot;.js&amp;quot; suffix are run. If there is more than one script, they are run sequentially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''on update''': when plasma-desktop is started, it will check in&lt;br /&gt;
  `kde4-config --path data`/plasma-desktop/updates/&lt;br /&gt;
with a &amp;quot;.js&amp;quot; suffix for scripts that have not yet been run. If there is more than one script which has not been run yet they will be executed serially in the alphabetical order of the file names.&lt;br /&gt;
&lt;br /&gt;
A record of which update scripts have been run is kept in the application's config file in the [Updates] group. This means that if the plasma-desktop configuraiton file is removed, all the update scripts will be run again.&lt;br /&gt;
&lt;br /&gt;
{{note|For security reasons, scripts located in the user's home directory will '''not''' be run during this phase.}}&lt;br /&gt;
&lt;br /&gt;
* '''interactively''': an interactive scripting dialog can be requested either via the KRunner window (Alt+F2, by default, or via the &amp;quot;Run Command&amp;quot; entry in various desktop menus) by entering &amp;quot;desktop console&amp;quot; as the search term. It can also be triggered directly via dbus with &amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication showInteractiveConsole&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|This method is not available for plasma-netbook.}}&lt;br /&gt;
&lt;br /&gt;
:ECMA Script may be entered directly into this window for execution and output appears in the lower half of the window. Ctrl+E is a shortcut to run scripts, and scripts can be saved to and loaded from disk.&lt;br /&gt;
&lt;br /&gt;
:Scripts from files can also be loaded using KRunner with &amp;quot;desktop console /path/to/file&amp;quot; or via dbus with&lt;br /&gt;
&amp;lt;code bash&amp;gt;qdbus org.kde.plasma-desktop /MainApplication loadScriptInInteractiveConsole /path/to/file&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Templates are named packages that contain scripts. This provides a way for common functionality to be easily reused, helping to increase consistency and lower maintenance costs. Templates can be loaded from other scripts by name and they are also used to populate some parts of the user interface, such as the entries in the Add Panels menu.&lt;br /&gt;
&lt;br /&gt;
A template is a small set of files in a specified file hierarchy (or, in Plasma terms, a &amp;quot;Package&amp;quot;). In particular, a Template package contains the following files:&lt;br /&gt;
&lt;br /&gt;
* metadata.desktop: a .desktop file describing the template&lt;br /&gt;
* contents/layout.js: a Javascript file containing the actual script&lt;br /&gt;
&lt;br /&gt;
Templates are stored under share/apps/plasma/layout-templates and may be installed using `plasmapkg -t layout-template -i /path/to/package`. Template packages may also be provided as a .zip file with a .plasmalayout suffix.&lt;br /&gt;
&lt;br /&gt;
The metadata.desktop file contains the usual .desktop entries such as Name and Icon but must also contain Type=Service and ServiceTypes=Plasma/LayoutTemplate entries. If the layout is specific to a given Plasma application, such as plasma-desktop, this can be specific using X-Plasma-Shell. X-Plasma-ContainmentCategories defines what kind of layout it is with possible values being panel and desktop. Finally a X-KDE-PluginInfo-Name entry is required to provide a globally unique internal name for the Template. Here is an example of a Template that provides a Panel layout for Plasma Netbook:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Panel&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-netbook&lt;br /&gt;
X-Plasma-ContainmentCategories=panel&lt;br /&gt;
X-KDE-PluginInfo-Author=Aaron Seigo&lt;br /&gt;
X-KDE-PluginInfo-Email=aseigo@kde.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.CoolNetbookPanel&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://plasma.kde.org/&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When running a template, two global variables will be accessible in read-only mode: templateName and templateComment. They will contain the Name and Comment fields of the above desktop file, and are translated if a localization is available.&lt;br /&gt;
&lt;br /&gt;
=== Examples of Usage ===&lt;br /&gt;
&lt;br /&gt;
==== Creating panels ====&lt;br /&gt;
A good example of the use of templates is the use case that triggered the creation of this feature: the desire to make it easy for users to re-create the default panel that is created on first start. There is a Template called org.kde.plasma-desktop.defaultPanel that ships with the KDE Plasma Workspace which contains the layout for the initial default panel. This is referenced by the default Plasma Desktop init script and, because it is marked as a Panel Template in the metadata.desktop file it also shows up to the user in the Add Panels menu. When selected by the user from the menu, the exact same panel that is created on desktop start up is created for them, complete with Plasma Widgets and configuration.&lt;br /&gt;
&lt;br /&gt;
==== Automating tasks ====&lt;br /&gt;
Another example of the usefulness of templates is the &amp;quot;Find Widgets&amp;quot; template. This template, which first shipped with Plasma Desktop v4.5, provides a function for finding widgets by name. It appears in the toolbar &amp;quot;Load&amp;quot; and &amp;quot;Use&amp;quot; menus in the Desktop Console in plasma-desktop, and makes finding widgets as simple as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code javascript&amp;gt;&lt;br /&gt;
var template = loadTemplate('org.kde.plasma-desktop.findWidgets')&lt;br /&gt;
template.findWidgets('systemtray')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Activity templates ====&lt;br /&gt;
Probably the most user visible use of templates are &amp;quot;Activity templates&amp;quot;. The structure of Activity templates is similar to the other use of templates, but a few extra features are provided in the metadata.desktop file. Here is an example of such an activity template:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Name=Cool Activity Template&lt;br /&gt;
Icon=user-desktop&lt;br /&gt;
Type=Service&lt;br /&gt;
ServiceTypes=Plasma/LayoutTemplate&lt;br /&gt;
X-Plasma-Shell=plasma-desktop&lt;br /&gt;
X-Plasma-ContainmentCategories=desktop&lt;br /&gt;
X-Plasma-ContainmentLayout-ExecuteOnCreation=dolphin $desktop, gwenview $pictures&lt;br /&gt;
X-Plasma-ContainmentLayout-ShowAsExisting=true&lt;br /&gt;
X-KDE-PluginInfo-Author=John Doe&lt;br /&gt;
X-KDE-PluginInfo-Email=john@doe.org&lt;br /&gt;
X-KDE-PluginInfo-Name=org.kde.plasma-desktop.CoolTemplate&lt;br /&gt;
X-KDE-PluginInfo-Version=1.0&lt;br /&gt;
X-KDE-PluginInfo-Website=http://john.doe.org&lt;br /&gt;
X-KDE-PluginInfo-Category=&lt;br /&gt;
X-KDE-PluginInfo-Depends=&lt;br /&gt;
X-KDE-PluginInfo-License=GPL&lt;br /&gt;
X-KDE-PluginInfo-EnabledByDefault=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The layout itself is still created from the layout.js file as usual, but this template also shows as a precreated activity to the user thanks to the X-Plasma-ContainmentLayout-ShowAsExisting key. Additionally, it starts applications in the newly created activity using the X-Plasma-ContainmentLayout-ExecuteOnCreation key.&lt;br /&gt;
&lt;br /&gt;
That key is a list of commands to execute, and it supports the following variables:&lt;br /&gt;
* $desktop&lt;br /&gt;
* $autostart&lt;br /&gt;
* $documents&lt;br /&gt;
* $music&lt;br /&gt;
* $video&lt;br /&gt;
* $downloads&lt;br /&gt;
* $pictures&lt;br /&gt;
&lt;br /&gt;
They all expand into the path toward the user corresponding default folder.&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
In addition to the normal ECMA Script API and the Qt-specific extensions (such as signal/slot support) provided by QtScript, the following API is provided for use by scripts.&lt;br /&gt;
&lt;br /&gt;
All of the API below, unless otherwise noted with a version noticed, appear as below in the KDE Software Compilation v4.4.0 and later. API that is not noted as being part of a given class or object is part of the global namespace.&lt;br /&gt;
&lt;br /&gt;
{{note|API compatibility is guaranteed from version to version starting with KDE Software Compilation v4.4.0.}}&lt;br /&gt;
&lt;br /&gt;
=== Version Numbers ===&lt;br /&gt;
&lt;br /&gt;
Starting with KDE SC 4.5, the version number of both the scripting API and the application is available to the script via the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''String'' '''applicationVersion''': the version of the application, e.g. 0.3&lt;br /&gt;
* ''String'' '''platformVersion''': the version of the KDE Platform, e.g. 0.3&lt;br /&gt;
* ''number'' '''scriptingVersion''': the version of the scripting API; e.g. in KDE SC 4.5 this is 2&lt;br /&gt;
&lt;br /&gt;
=== Activities ===&lt;br /&gt;
Activities are the desktop layer in a plasma-desktop session and may contain widgts. In sightly more technical terms, they are desktop containments. Activities can be created, enumerated, modified and destroyed.&lt;br /&gt;
&lt;br /&gt;
New Activities can be created using the Activity constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var activity = new Activity(&amp;quot;folderview&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file). See the documentation on the Containment object class below.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''activityIds''': returns a list of integer ids of all existing Plasma activities&lt;br /&gt;
* ''Array[String]'' '''knownActivityTypes''':  (scripting version &amp;gt;= 2) a list of types of activities that can be created. This is useful to check if an Activity type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Activity'' '''activityById(number id)''': return an object representing the activity with the given id&lt;br /&gt;
* ''Activity'' '''activityForScreen(number screen[, number dekstop])''': returns an object representing the activity  currently associated with the given screen and, optionally, the given desktop.&lt;br /&gt;
* ''Array[Activity]'' '''activities()''': returns an array of all activities that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Panels ===&lt;br /&gt;
Panels can be created, enumerated, modified and destroyed. A panel object combines both a containment as well as the container itself, allowing for full control of things such as where it appears on screen and the hiding features associated with them.&lt;br /&gt;
&lt;br /&gt;
New Panels can be created using the Panel constructor, like this:&lt;br /&gt;
&lt;br /&gt;
    var panel = new Panel(&amp;quot;dock&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
The string passed into the constructor maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
in the plugin's .desktop file).&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''Array[number]'' '''panelIds''': returns a list of integer ids of all existing Plasma panels&lt;br /&gt;
* ''Array[String]'' '''knownPanelTypes''':  (scripting version &amp;gt;= 2) a list of types of panels that can be created. This is useful to check if a Panel type is available on the system before trying to construct one.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''Panel'' '''panelById(int id)''': returns an object representing the Panel that matches the given id&lt;br /&gt;
* ''Array[Panels]'' '''panels()''': returns an array of all panels that currently exist&lt;br /&gt;
&lt;br /&gt;
=== Activities and Panels ===&lt;br /&gt;
Activity and Panel objects, once created by the script, or as returned by activityById, activityForScreen,&lt;br /&gt;
or panelById) provide the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id: the integer id of this activity&lt;br /&gt;
* ''String'' '''formFactor''': returns the form factor of the activity, e.g. &amp;quot;planar&amp;quot; for most desktop activities,&amp;quot;mediacenter&amp;quot; for media centers and either &amp;quot;horizontal&amp;quot; or &amp;quot;vertical&amp;quot; for panels.&lt;br /&gt;
* ''Array[number]'' '''widgetIds''': a list of integer ids of all the widgets in this Activity&lt;br /&gt;
* ''Array[String]'' '''configKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''configGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
&lt;br /&gt;
as well as the following read/write properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''desktop''': the virtual desktop this activity is associated with, or -1 for none&lt;br /&gt;
* ''number'' '''screen''': the screen this activity is associated with, or -1 for none&lt;br /&gt;
* ''String'' '''name''': the name of this activity&lt;br /&gt;
* ''String'' '''wallpaperPlugin''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin to use with the Activity&lt;br /&gt;
* ''String'' '''wallpaperMode''': (scriptingVersion &amp;gt;= 2) the wallpaper plugin mode to use with the Activity&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': (scriptingVersion &amp;gt;= 2) the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this activity and all widgets inside of it&lt;br /&gt;
* ''Widget'' '''widgetById(number id)''': returns an object representing the widget with the given id&lt;br /&gt;
* ''Widget'' '''addWidget(String name)''': adds a new widget to the activity; the name maps to the X-KDE-PluginInfo-Name= entry&lt;br /&gt;
  in the widget's .desktop file&lt;br /&gt;
* ''Widget'' '''addWidget(Widget widget)''': adds an existing widget to this activity; useful for moving widgets between Activities and Panels&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this Activity or Panel on the screen&lt;br /&gt;
* '''readConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the config with default for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': (scriptingVersion &amp;gt;= 2) causes the Activity or Panel to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of panels and activities of the same type.&lt;br /&gt;
* ''Array[Widget]'' '''widgets([String type])''': (scriptingVersion &amp;gt;= 2) returns all the widgets in the Panel or Activity. If the optional type is specified, only widgets matching that type will be returned.&lt;br /&gt;
&lt;br /&gt;
In addition to all of the above properties and functions, Panel objects also provide the folowing read/write properties:&lt;br /&gt;
* ''number'' '''length''': the number of pixels along the screen edge used&lt;br /&gt;
* ''number'' '''height''': the height (or for vertical panels, the width) of the panel&lt;br /&gt;
* ''String'' '''hiding''': the hiding mode of the panel, one of &amp;quot;none&amp;quot; (for no hiding), &amp;quot;autohide&amp;quot;, &amp;quot;windowscover&amp;quot; or &amp;quot;windowsbelow&amp;quot;&lt;br /&gt;
* ''String'' '''alignment''': right, left or center alignment of the panel (for vertical panels, right corrsponds to top and left to bottom)&lt;br /&gt;
* ''String'' '''location''': returns the location of the activity (only relevant for Panels); valid values include &amp;quot;top&amp;quot;, &amp;quot;bottom&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot; and &amp;quot;floating&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Widgets ===&lt;br /&gt;
Widgets may be enumerated by calling the widgetIds property on a Activity or Panel object. With a widget id in hand, a Widget object can be retrieved by calling widgetById(id) on an Activity or Panel object. New Widgets can be created with add addWidget(String) function provided by Activity and Panel objects.&lt;br /&gt;
&lt;br /&gt;
A list of all installed widget types can be retrieved the following read-only property:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''knownWidgetTypes''' (scripting version &amp;gt;= 2)&lt;br /&gt;
&lt;br /&gt;
A Widget object provides the following read-only properties:&lt;br /&gt;
&lt;br /&gt;
* ''number'' '''id''': the id of the widget&lt;br /&gt;
* ''String'' '''type''': the plugin type of this widget&lt;br /&gt;
* ''Array[String]'' '''configKeys''': a list of all keys that are set in the current configuration&lt;br /&gt;
* ''Array[String]'' '''configGroups''': a list of all the groups in the current configuration&lt;br /&gt;
* ''Array[String]'' '''globalConfigKeys''':  (scriptingVersion &amp;gt;= 2) a list of all keys that are set in the current global configuration group&lt;br /&gt;
* ''Array[String]'' '''globalConfigGroups''': (scriptingVersion &amp;gt;= 2)  a list of all the groups in the current global configuration group&lt;br /&gt;
* ''String'' '''version''': (scriptingVersion &amp;gt;= 2) the version of the Activity or Panel&lt;br /&gt;
&lt;br /&gt;
as well as the following read-write properties:&lt;br /&gt;
&lt;br /&gt;
* ''Array[String]'' '''currentConfigGroup''': the current configuration group path, with each entry in the array representing a sub-group. This allows one to access trees of groups with code such as: widget.currentConfigGroup = new Array('topGroup', 'subGroupOfTopGroup'). An empty Array means the default (top-level) configuration group for the widget&lt;br /&gt;
* ''Array[String]'' '''currentGlobalConfigGroup''': (scriptingVersion &amp;gt;= 2)  the current global configuration group path, with each entry in the array representing a sub-group, similar to currentConfigGroup. However, global configuration is shared by all instances of widgets of the same type.&lt;br /&gt;
* ''QRectF'' '''geometry''': the geometry of the widget (settable)&lt;br /&gt;
* ''String'' '''globalShortcut''': the shortcut sequence (in the format used by QKeySequence, e.g. &amp;quot;Alt+F1&amp;quot;) associated with this widget&lt;br /&gt;
* ''number'' '''index''': the layout index of the widget; in a Panel this corresponds to the order the widget appears in. Changing the value of the index will change the position of the widget in Panels and may do so in some Activities as well.&lt;br /&gt;
&lt;br /&gt;
and the following methods:&lt;br /&gt;
&lt;br /&gt;
* '''remove()''': deletes this widget&lt;br /&gt;
* '''readConfig(String key, any default)''': reads the value of key in the config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeConfig(String key, any value)''': sets key to value in the config&lt;br /&gt;
* '''readGlobalConfig(String key, any default)''': (scriptingVersion &amp;gt;= 2) reads the value of key in the global config with default&lt;br /&gt;
  for the default value&lt;br /&gt;
* '''writeGlobalConfig(String key, any value)''': (scriptingVersion &amp;gt;= 2) sets key to value in the global config&lt;br /&gt;
* '''reloadConfig()''': causes the widget to reload its configuration; reaction to configuration changes made using readConfig are usually activated on script exit, but this can be triggered earlier on a per-widget basis using this method&lt;br /&gt;
* '''showConfigurationInteface()''': shows the configuration user interface for this widget on the screen&lt;br /&gt;
&lt;br /&gt;
==== Configuration keys ====&lt;br /&gt;
Here you find a list of common and most used configuration keys to use with '''writeConfig''' command.&lt;br /&gt;
===== Global configuration keys (keys that are likely to be applicable on all widgets) =====&lt;br /&gt;
* '''Share''' (true/false): Whether or not the widget is to be announces throughout the network (Share tab)&lt;br /&gt;
&lt;br /&gt;
===== Digital clock (digital-clock) =====&lt;br /&gt;
* '''announceInterval''' (number &amp;gt; 0): Interval in minutes that the time is read out loud&lt;br /&gt;
* '''calendarType''' (local/coptic/ethopian/gregorian/gregorian-proleptic/hebrew/hijri/indian-national/jalali/japanese/julian/minguo/thai): Calendar system to be used, defaults to local&lt;br /&gt;
* '''defaultTimezone''' (Local/…): Time zone to be used&lt;br /&gt;
* '''displayHolidays''' (true/false): Whether holidays are to be displayed&lt;br /&gt;
* '''holidayRegions''' (tbd): tbd&lt;br /&gt;
* '''holidayRegionaDaysOff''' (tbd): tbd&lt;br /&gt;
* '''plainClockColor''' (rrr,ggg,bbb): Color set for clock font (e. g. 192,0,0 - to be used with useCustomColor=true!)&lt;br /&gt;
* '''plainClockDrawShadow''' (true/false): Whether a shadow is to bed drawn (defaults to true)&lt;br /&gt;
* '''plainClockShadowColor''' (rrr,ggg,bbb): Color set for clock shadow (e. g. 64,97,128 - to be used with useCustomShadowColor=true!)&lt;br /&gt;
* '''plainClockFont''' (tbd): Font to be used for clock (e. g. Serif,12,-1,5,75,0,0,0,0,0)&lt;br /&gt;
* '''showDate''' (true/false): self-explanatory&lt;br /&gt;
* '''showDay''' (true/false): self-explanatory&lt;br /&gt;
* '''showSeconds''' (true/false): self-explanatory&lt;br /&gt;
* '''showTimezone''' (true/false): self-explanatory&lt;br /&gt;
* '''showYear''' (true/false): self-explanatory&lt;br /&gt;
* '''timeZones''' (Europe/Andorra,…): Comma-separated list of timezones to be used (e. g. Europe/Andorra,Indian/Antananarivo,Asia/Aqtau)&lt;br /&gt;
* '''useCustomColor''' (true/false): Whether or not a custom color is to be used (use with plainClockColor=rrr,ggg,bbb!)&lt;br /&gt;
* '''useCustomShadowColor''' (true/false): Whether or not a custom shadow color is to be used (use with plainClockShadowColor=rrr,ggg,bbb!)&lt;br /&gt;
===== Kickoff menu (launcher) =====&lt;br /&gt;
* '''SwitchTabsOnHover''' (true/false): self-explanatory&lt;br /&gt;
* '''ShowAppsByName''' (true/false): Apps are sorted by name rather than by description&lt;br /&gt;
&lt;br /&gt;
=== System Tray ===&lt;br /&gt;
The System Tray has some odd behaviors since it can host widgets and configuring it (i. e. add and remove widgets) is not as easy as above. This paragraph will help you deal with its specific behavior.&lt;br /&gt;
&lt;br /&gt;
=== Screen Geometry ===&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''number'' '''screenCount''': returns the number of screens connected to the computer&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* ''QRectF'' '''screenGeometry(number screen)''': returns a rect object representing the geometry of a screen&lt;br /&gt;
&lt;br /&gt;
=== Wallpaper Plugins ===&lt;br /&gt;
&lt;br /&gt;
* ''Array[String =&amp;gt; Array[String]]'' '''knownWallpaperPlugins()''': (scripting version &amp;gt;= 4) returns a list of all installed wallpaper plugins. They keys of the array are the wallpaper plugin names. The values are arrays containing the modes available for that wallpaper plugin. The mode array may be empty, as most wallpaper plugins only offer one mode.&lt;br /&gt;
&lt;br /&gt;
=== Locating Applications and Paths ===&lt;br /&gt;
* ''boolean'' '''applicationExists(String name)''': (scripting version &amp;gt;= 4) searches $PATH first, then tries in the application menu system by application storage name (aka the .desktop file name), then Name= entries for apps with installed .desktop files, then GenericName= entries for same&lt;br /&gt;
* ''mixed'' '''defaultApplication(String kind [, boolean storageId = false])''': (scripting version &amp;gt;= 4) returns the executable (or if storageId is true, then the the app menu system id, e.g. its .desktop file name) of the default app. The &amp;quot;kind&amp;quot; parameter may be a well-known application type including &amp;quot;browser&amp;quot;, &amp;quot;mailer&amp;quot;, &amp;quot;filemanager&amp;quot;, &amp;quot;terminal&amp;quot;, &amp;quot;imClient&amp;quot; and &amp;quot;windowmanager&amp;quot; (or any other entry in share/apps/kcm_componentchooser/kcm_*.desktop); it may also be a mimetype (e.g. &amp;quot;application/pdf&amp;quot;). On failure, it returns false.&lt;br /&gt;
* ''String'' '''applicationPath(String name)''':  (scripting version &amp;gt;= 4) returns the full local path to a given application or .desktop file if it exists.&lt;br /&gt;
* ''String'' '''userDataPath([String type, String path])''':  (scripting version &amp;gt;= 4) returns the default path for user data. Called with no parameters, it returns the user's home directory. If only one string is passed in, the standard directory for that type of data in the user's home directory will be located; the following values are recognized:&lt;br /&gt;
** documents&lt;br /&gt;
** music&lt;br /&gt;
** video&lt;br /&gt;
** downloads&lt;br /&gt;
** pictures&lt;br /&gt;
** autostart&lt;br /&gt;
** desktop (should be considered deprecated for Plasma workspaces)&lt;br /&gt;
&lt;br /&gt;
If a second string is passed in, it is considered a request for a specific path and the following types are recognized:&lt;br /&gt;
** apps - Applications menu (.desktop files).&lt;br /&gt;
** autostart - Autostart directories (both XDG and kde-specific)&lt;br /&gt;
** cache - Cached information (e.g. favicons, web-pages)&lt;br /&gt;
** cgi - CGIs to run from kdehelp.&lt;br /&gt;
** config - Configuration files.&lt;br /&gt;
** data - Where applications store data.&lt;br /&gt;
** emoticons - Emoticons themes&lt;br /&gt;
** exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.&lt;br /&gt;
** html - HTML documentation.&lt;br /&gt;
** icon - Icons, see KIconLoader.&lt;br /&gt;
** kcfg - KConfigXT config files.&lt;br /&gt;
** lib - Libraries.&lt;br /&gt;
** locale - Translation files for KLocale.&lt;br /&gt;
** mime - Mime types defined by KDE-specific .desktop files.&lt;br /&gt;
** module - Module (dynamically loaded library).&lt;br /&gt;
** qtplugins - Qt plugins (dynamically loaded objects for Qt)&lt;br /&gt;
** services - Services.&lt;br /&gt;
** servicetypes - Service types.&lt;br /&gt;
** sound - Application sounds.&lt;br /&gt;
** templates - Templates for the &amp;quot;Create new file&amp;quot; functionality.&lt;br /&gt;
** wallpaper - Wallpapers.&lt;br /&gt;
** tmp - Temporary files (specific for both current host and current user)&lt;br /&gt;
** socket - UNIX Sockets (specific for both current host and current user)&lt;br /&gt;
** xdgconf-menu - Freedesktop.org standard location for menu layout (.menu) files.&lt;br /&gt;
** xdgdata-apps - Freedesktop.org standard location for application desktop files.&lt;br /&gt;
** xdgdata-dirs - Freedesktop.org standard location for menu descriptions (.directory files).&lt;br /&gt;
** xdgdata-mime - Freedesktop.org standard location for MIME type definitions.&lt;br /&gt;
** xdgdata-icon - Freedesktop.org standard location for icons.&lt;br /&gt;
** xdgdata-pixmap - Gnome-compatibility location for pixmaps.&lt;br /&gt;
&lt;br /&gt;
The second parameter should be a specific resource to find the path to. An example might be userDataPath(&amp;quot;data&amp;quot;, &amp;quot;plasma-desktop&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Misc. Global Properties and Functions ===&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''boolean'' '''locked''': whether the desktop shell and widgets are locked or not (settable)&lt;br /&gt;
* ''string'' '''theme''': (scripting version &amp;gt;= 3) the name of the desktop theme to use for the interface, e.g. default, Air, Oxygen, etc.&lt;br /&gt;
&lt;br /&gt;
Read-only properties:&lt;br /&gt;
* ''boolean'' '''hasBattery''': whether or not the system has the ability to run on battery power, e.g. a laptop or mobile device&lt;br /&gt;
* ''boolean'' '''multihead''': (scripting version &amp;gt;= 3) true if the system is running with multiple screens in a &amp;quot;Xaphod&amp;quot; multiple display server configuration&lt;br /&gt;
* ''int'' '''multiheadScreen''': (scripting version &amp;gt;= 3) if multihead is true, contains the (real) screen id of the current screen&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''sleep(number ms)''': sleeps the script for the specified number of millseconds&lt;br /&gt;
&lt;br /&gt;
=== QRectF ===&lt;br /&gt;
A rectangle class is also provided for use with Widget, Panel and screen geometry properties and functions.&lt;br /&gt;
&lt;br /&gt;
Read-only properites:&lt;br /&gt;
* ''boolean'' '''empty''': true if the rectangle's width or height is less than, or equal to, 0; an empty rectangle is also invalid&lt;br /&gt;
* ''boolean'' '''null''': true if the rectangle has both the width and the height set to 0; a null rectangle is also empty and not valid&lt;br /&gt;
* ''boolean'' '''valid''':  true if the rectangle has a width &amp;gt; 0 and height 0.&lt;br /&gt;
&lt;br /&gt;
Read-write properties:&lt;br /&gt;
* ''number'' '''left'''&lt;br /&gt;
* ''number'' '''top'''&lt;br /&gt;
* ''number'' '''bottom'''&lt;br /&gt;
* ''number'' '''right'''&lt;br /&gt;
* ''number'' '''height'''&lt;br /&gt;
* ''number'' '''width'''&lt;br /&gt;
* ''number'' '''x'''&lt;br /&gt;
* ''number'' '''y'''&lt;br /&gt;
&lt;br /&gt;
Constructors:&lt;br /&gt;
* '''QRectF'''&lt;br /&gt;
* '''QRectF(number x, number y, number width, number height)''': Sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
* '''adjust(number dx1, number dy1, number dx2, number dy2)''': adds dx1, dy1, dx2 and dy2 respectively to the existing coordinates of the rectangle&lt;br /&gt;
* ''QRectF'' '''adjusted(number dx1, number dy1, number dx2, number dy2)''': returns a new QRectF with dx1, dy1, dx2 and dy2 added respectively to the existing coordinates of the rectangle&lt;br /&gt;
* '''translate(number dx, number dy)''': translates the rect by dx, dy&lt;br /&gt;
* '''setCoords(number x1, number y1, number x2, number y2)''': sets the coordinates of the rectangle's top-left corner to (x1, y1), and the coordinates of its bottom-right corner to (x2, y2).&lt;br /&gt;
* '''setRect(number x, number y, number width, number height)''': sets the coordinates of the rectangle's top-left corner to (x, y), and its size to the given width and height.&lt;br /&gt;
* ''boolean'' '''contains(number x, number y)''': returns true if the rect contains the point (x, y)&lt;br /&gt;
* '''moveBottom(number delta)'': moves the bottom by delta pixels&lt;br /&gt;
* '''moveLeft(number delta)''': moves the left by delta pixels&lt;br /&gt;
* '''moveRight(number delta)''': moves the right by delta pixels&lt;br /&gt;
* '''moveTo(number x, number y)''': moves the top left of the rect to point (x, y)&lt;br /&gt;
* '''moveTop(number delta)''': moves the top by delta pixels&lt;/div&gt;</summary>
		<author><name>Broulik</name></author>	</entry>

	</feed>