Changeset View
Changeset View
Standalone View
Standalone View
design/plasmoids
1 | Plasmoids | 1 | Plasmoids | ||
---|---|---|---|---|---|
2 | ========= | 2 | ========= | ||
3 | 3 | | |||
4 | What is a widget? | 4 | What is a widget? | ||
5 | ================ | 5 | ================ | ||
6 | In the context of Plasma, a "widget" is a single, self-contained graphical object on the canvas. They can be added and removed individually, configured separately from other widgets, etc. These "mini appliations" are sometimes referred to in other widget platforms as "applets", "apps", "gadgets", "karambas", "desklets". We chose the word "widget" for Plasma as it is used by other some other existing systems. | 6 | In the context of Plasma, a "widget" is a single, self-contained graphical object on the canvas. They can be added and removed individually, configured separately from other widgets, etc. These "mini applications" are sometimes referred to in other widget platforms as "applets", "apps", "gadgets", "karambas", "desklets". We chose the word "widget" for Plasma as it is used by other some other existing systems. | ||
7 | 7 | | |||
8 | The API of a widget is defined by the host "ScriptEngine", with the exception of native Plasma widgets written in C++ which allows plugins in loadable librareis which use the API of the Plasma library directly. Currently Plasma supports both such "native" widgets written in C++, ones written in various dynamic languages (Plasmoids) as well as: | 8 | The API of a widget is defined by the host "ScriptEngine", with the exception of native Plasma widgets written in C++ which allows plugins in loadable libraries which use the API of the Plasma library directly. Currently Plasma supports both such "native" widgets written in C++, ones written in various dynamic languages (Plasmoids) as well as: | ||
9 | 9 | | |||
10 | * SuperKaramba's karambas | 10 | * SuperKaramba's karambas | ||
11 | * Enlightenment 17 edje content | 11 | * Enlightenment 17 edje content | ||
12 | * MacOS dashboard widgets (though not all) | 12 | * MacOS dashboard widgets (though not all) | ||
13 | 13 | | |||
14 | These are loaded via host AppletScriptEngine plugins that bridge between the widget itself and Plasma's canvas. | 14 | These are loaded via host AppletScriptEngine plugins that bridge between the widget itself and Plasma's canvas. | ||
15 | 15 | | |||
16 | What is a Plasmoid? | 16 | What is a Plasmoid? | ||
17 | ================== | 17 | ================== | ||
18 | A Plasmoid is a widget that can be loaded into Plasma that uses the native Plasma API and comes packaged in a single archive file that includes the code, metadata, images, configuration defintions, etc. Plasmoids may be currently written in the following languages / APIs: | 18 | A Plasmoid is a widget that can be loaded into Plasma that uses the native Plasma API and comes packaged in a single archive file that includes the code, metadata, images, configuration definitions, etc. Plasmoids may be currently written in the following languages / APIs: | ||
19 | 19 | | |||
20 | * HTML/JavaScript widgets (essentially "web pages for Plasma"): they are limited to a small subset of the Plasma library API and DataEngines | 20 | * HTML/JavaScript widgets (essentially "web pages for Plasma"): they are limited to a small subset of the Plasma library API and DataEngines | ||
21 | * Simplified JavaScript: these are written in JavaScript but use a managed set of API from the Plasma library and elsewhere; these are the most likely to be widely portable between Plasma instances and are the most securable. | 21 | * Simplified JavaScript: these are written in JavaScript but use a managed set of API from the Plasma library and elsewhere; these are the most likely to be widely portable between Plasma instances and are the most securable. | ||
22 | * Full JavaScript: a work in progress, this provides full access to the Plasma, KDE and Qt APIs | 22 | * Full JavaScript: a work in progress, this provides full access to the Plasma, KDE and Qt APIs | ||
23 | * Ruby: full access to the Plasma, KDE, Qt and other Ruby APIs are provided | 23 | * Ruby: full access to the Plasma, KDE, Qt and other Ruby APIs are provided | ||
24 | * Python: full access to the Plasma, KDE, Qt and other Python APIs are provided | 24 | * Python: full access to the Plasma, KDE, Qt and other Python APIs are provided | ||
25 | 25 | | |||
26 | There are tutorials for the various APIs avaiable here: http://techbase.kde.org/Development/Tutorials/Plasma | 26 | There are tutorials for the various APIs available here: https://techbase.kde.org/Development/Tutorials/Plasma | ||
27 | 27 | | |||
28 | The Plasmoid Package | 28 | The Plasmoid Package | ||
29 | ==================== | 29 | ==================== | ||
30 | A Plasmoid package is a single archive file compressed using the zip compression algorithm. By convention they have a .plasmoid suffix. | 30 | A Plasmoid package is a single archive file compressed using the zip compression algorithm. By convention they have a .plasmoid suffix. | ||
31 | 31 | | |||
32 | The layout of a Plasmoid package is as follows, starting with the root (/) being the top of the zip archive: | 32 | The layout of a Plasmoid package is as follows, starting with the root (/) being the top of the zip archive: | ||
33 | 33 | | |||
34 | metadata.desktop: a .desktop file (INI format) following the standard KPluginInfo layout. See more about this file below. | 34 | metadata.desktop: a .desktop file (INI format) following the standard KPluginInfo layout. See more about this file below. | ||
▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines |