m (→Current Theme Elements) |
(→Current Theme Elements) |
||
| Line 105: | Line 105: | ||
*** selection-rect: displayed when the icon is selected | *** selection-rect: displayed when the icon is selected | ||
**'''/panel-background.svg''': the default background image for panels. See the section on backgrounds above for information on the required elements in this file. | **'''/panel-background.svg''': the default background image for panels. See the section on backgrounds above for information on the required elements in this file. | ||
| − | *** If you want to create different look for top, bottom, left and right panels, then, beside the default background elements, also create sets of elements with the following prefixes ''north-'', ''south-'', ''west-'' and ''east-''. For example the center element of the left positioned panel's background should be named ''west-center''. That elements will be loaded only when the panel size is 100% of the width (or height), otherwise the elements without prefix will be loaded ( | + | *** If you want to create different look for top, bottom, left and right panels, then, beside the default background elements, also create sets of elements with the following prefixes ''north-'', ''south-'', ''west-'' and ''east-''. For example the center element of the left positioned panel's background should be named ''west-center''. That elements will be loaded only when the panel size is 100% of the width (or height), otherwise the elements without prefix will be loaded (from KDE 4.1) |
** '''/plot-background.svg''': a background for plotter (graph) widgets, such as the plots in ksysguard | ** '''/plot-background.svg''': a background for plotter (graph) widgets, such as the plots in ksysguard | ||
** '''/toolbox-button.svg''': the background for the desktop configuration toolbox button that sites at the edge of the desktop | ** '''/toolbox-button.svg''': the background for the desktop configuration toolbox button that sites at the edge of the desktop | ||
| − | **'''/tasks.svg''': task item backgrounds for tasks: | + | **'''/tasks.svg''': task item backgrounds for tasks (from KDE 4.1): |
*** ''focus'': background of focused task item | *** ''focus'': background of focused task item | ||
*** ''hover'': background when the pointer hovers the task item | *** ''hover'': background when the pointer hovers the task item | ||
| Line 114: | Line 114: | ||
*** ''normal'': background of normal, unfocused task item | *** ''normal'': background of normal, unfocused task item | ||
*** the svg must contain elements of all four prefixes, if a prefix is missing that element will be drawn in a not themed way as fallback (the corresponding element from the default theme won't be used) | *** the svg must contain elements of all four prefixes, if a prefix is missing that element will be drawn in a not themed way as fallback (the corresponding element from the default theme won't be used) | ||
| + | ** '''/systemtray.svg''': a background for the system tray. it does not have prefixes (from KDE 4.1) | ||
=="Opaque" folder== | =="Opaque" folder== | ||
libplasma 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 QStyle, but rather provides standard elements for things such as box backgrounds.
This allows for easy re-theming of the desktop while also keeping elements on the desktop more consistent with each other.
See also Plasma widgets.
See also Creating a Plasma Theme.
Contents |
Themes are stored in share/apps/desktoptheme. A theme is described by a .desktop file in share/apps/desktoptheme. The contents of which might look like this:
[Desktop Entry]
Name=Oxygen
Comment=Theme done in the Oxygen style
X-KDE-PluginInfo-Author=The Oxygen Project X-KDE-PluginInfo-Email=kde-artists@kde.org X-KDE-PluginInfo-Name=default X-KDE-PluginInfo-Version=pre0.1 X-KDE-PluginInfo-Website=http://plasma.kde.org X-KDE-PluginInfo-Category= X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true
The X-KDE-PluginInfo-Name entry must contain the name of the subdirectory in share/apps/desktoptheme where the SVG files for this theme exist.
Beneath this directory one will find the following file structure:
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.
Therefore, to access the dialog background, one might create an svg in this manner:
Plasma::Theme theme;
QSvgRenderer svg(theme.image("dialog/background"));
It is generally recommended to use Plasma::Svg instead of QSvgRenderer directly, however. Remember to call resize() on the Plasma::Svg before painting with it!
Plasma::Svg svg("dialog/background");
svg.resize(size());
If you use Plasma::Svg, changes to the theme are automatically picked up. Otherwise, you can connect to the changed() 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.
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:
Additionally, the following elements can be used to control the rendering of the backgrounds:
Themes get installed to share/apps/desktoptheme. Each theme is stored in a subdirectory with the following file structure
In the folder 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.
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.