Difference between revisions of "Development/Tutorials/Plasma4/JavaScript/CheatSheet"

Jump to: navigation, search
m (Languages: html fix)
Line 33: Line 33:
== Services ==
== Services ==
* DO NOT use <tt>plasmoid.dataEngine("engine name").serviceForSource("source name")</tt> - you will get a dummy engine back (in 4.2 at least).
* DO NOT use <tt>plasmoid.dataEngine("engine name").serviceForSource("source name")</tt> - you will get a dummy service back (in 4.2 at least).
* Instead, use <tt>plasmoid.service("engine name", "source name")</tt>
* Instead, use <tt>plasmoid.service("engine name", "source name")</tt>

Revision as of 18:05, 7 July 2009


  • Everything but the metadata.desktop file goes in a directory named contents
  • X-Plasma-MainScript in the metadata.desktop file should point to the main script, relative to the contents directory
  • X-Plasma-DefaultSize in the metadata.desktop file specifies the default widget size in width,height format (eg: 200,100)
  • The plasmoid variable contains all the main plasmoid functionality and represents the main plasmoid widget, and corresponds to the Applet class in C++
  • plasmoidviewer is an immensely useful tool
  • To connect to a signal use object.signalName.connect(function() {});
  • Enumeration values can be used like

if (plasmoid.formFactor() == Vertical) {


} else {




  • The Name and Comment fields in the metadata.desktop file can be translated like Name[nl]=Hallo JavaScript
  • plasmoid.i18n() takes a string (in English) as the first argument, and substitutes in the following arguments to replace %1, %2, %3 etc. Eg: plasmoid.i18n("The file is called %1", fileName);
  • plasmoid.i18nc() works just the same, but has an extra argument at the start that provides some context for translators. Eg: plasmoid.i18nc("Player name - score", "%1 - %2", playerName, score);
  • plasmoid.i18np() is for cases where plural forms might be important. Eg: plasmoid.i18np("One image in album %2", "%1 images in album %2", imageCount, albumName);
  • plasmoid.i18ncp() is a combination of the previous two. Eg: plasmoid.i18ncp("Personal file", "One file", "%1 files", numFiles);


  • Add a dataUpdate method to plasmoid to receive updates: plasmoid.dataUpdate = function(name, data) { /* ... */ } - data contains an object mapping keys to values
  • plasmoid.dataEngine("engine name").connectSource("source name", plasmoid, 500); updates every half second
  • plasmoid.dataEngine("engine name").connectSource("source name", plasmoid); updates when new data is available
  • plasmaengineexplorer is your friend


  • DO NOT use plasmoid.dataEngine("engine name").serviceForSource("source name") - you will get a dummy service back (in 4.2 at least).
  • Instead, use plasmoid.service("engine name", "source name")

Content is available under Creative Commons License SA 4.0 unless otherwise noted.