Javascript Interaction With Plasma Shells
Desktop scripting lets you control and interact with a Plasma user interface
Get access to Plasma functionality and its widgets.
Plasma functionality accessible.
It is possible to control and interact with a Plasma user interface shell such as a plasma-desktop, plasma-mobile or plasma-bigscreen using ECMA Script (a.k.a 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 Javascript language. The QJSEngine is used for the runtime environment.
This document describes the API that is provided along with how to run such scripts in plasma-desktop.
Examples
Visit the examples page for more examples. Here's a highlight:
Advanced example: Adding a widget to the System Tray
Running Scripts
There are three ways that scripts can be executed in plasma-desktop:
on first run: when
plasmashell
is started without any pre-existing configuration, the script calledlayout.js
in the shell package will be executed. By default the following script is used:Note For security reasons, scripts located in the user's home directory will **not** be run during this phase.
on update: when
plasmashell
is started, it will check for scripts with a.js
suffix in the current shell package under theupdates
directory.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.
Some examples can be found in
plasma-desktop
underdesktoppackage/contents/updates/
.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~/.config/plasmashellrc
file is removed, all the update scripts will be run again.
Note For security reasons, scripts located in the user's home directory will **not** be run during this phase.
* **interactively**: an interactive scripting dialog can be requested either via the KRunner window (`Alt+F2`, by default, or via the "Run Command" entry in various desktop menus) by entering "desktop console" as the search term. In Plasma versions earlier than 5.23 it can be triggered directly via dbus with:
Global theme dependent default setup for applets
The global theme (also know as look and feel package) can contain JavaScript files to override the default configuration for applets, if distributions or system integrators want to have a different default setup.
The API available is the same as the layout.js
script, with the addition of these global variables:
applet
: instance of the applet. In the case of a containment plasmoid,applet == containment
.containment
: instance of the containment the applet is in.
The file is located in the plasmoidsetupscripts
subfolder of the Global Theme package. The file name of the setup script for the plasmoid is the same as the plugin name, so, for instance, the file for the analog clock will be called org.kde.plasma.analogclock.js
. If we wanted to setup the clock to have the seconds hand by default, the script will located at:
and the script contents will be:
Another example can be found in the plasma-phone-components
repository for the org.kde.phone.homescreen
plasmoid.
Last updated