KDE Plasma 5 is the fifth generation of the KDE Plasma graphical workspaces environment, created by KDE primarily for Linux systems. KDE Plasma 5 is the successor of KDE Plasma 4 and was first released on 15 July 2014. It was succeeded by KDE Plasma 6 on 28 February 2024.
18-435: Plasma 5 includes a new default theme, "Breeze", and increased convergence across different devices. The graphical interface was fully migrated to QML , which uses OpenGL for hardware acceleration, providing better performance and reduced power consumption. Plasma Mobile is a Plasma 5 variant for Linux-based smartphones. KDE Plasma 5 is built using Qt 5 and KDE Frameworks 5. It improves support for HiDPI displays and ships
36-445: A WYSIWYG editor are available in the free cross-platform IDE Qt Creator since version 2.1 and many other IDEs. The qml executable can be used to run a QML file as a script. If the QML file begins with a shebang it can be made directly executable. However packaging an application for deployment (especially on mobile platforms) generally involves writing a simple C++ launcher and packaging
54-523: A convergent graphical shell, which can adjust itself according to the device in use. 5.0 also includes a new default theme, dubbed Breeze. Qt 5's QtQuick 2 uses a hardware-accelerated OpenGL( ES ) scene graph (canvas) to compose and render graphics on the screen, which allows for the offloading of computationally expensive graphics rendering tasks onto the GPU, freeing up resources on the system's main CPU. KDE Plasma 5 uses
72-515: A data binding process, each data change is reflected automatically by the elements that are bound to the data. The term data binding is also used in cases where an outer representation of data in an element changes, and the underlying data is automatically updated to reflect this change. As an example, a change in a TextBox element could modify the underlying data value. List of examples of data binding frameworks and tools for different programming languages: This computer science article
90-411: A mechanism to combine changes to properties in a semantic unit. A button for example has a pressed and a non-pressed state, an address book application could have a read-only and an edit state for contacts. Every element has an "implicit" base state. Every other state is described by listing the properties and values of those elements which differ from the base state. Example: In the default state, myRect
108-476: A property is assigned a JavaScript expression. The following QML uses two property bindings to connect the size of the rectangle to that of otherItem. QML extends a standards-compliant JavaScript engine, so any valid JavaScript expression can be used as a property binding. Bindings can access object properties, make function calls, and even use built-in JavaScript objects like Date and Math. Example: States are
126-605: A type which can then be instantiated in QML. QML provides direct access to the following concepts from Qt: Signal handlers are JavaScript callbacks which allow imperative actions to be taken in response to an event. For instance, the MouseArea element has signal handlers to handle mouse press, release and click: All signal handler names begin with "on". Because QML and JavaScript are very similar, almost all code editors supporting JavaScript will work. However full support for syntax highlighting , code completion, integrated help, and
144-492: Is a PropertyAnimation, which can animate all of the property types listed above. A property animation can be specified as a value source using the Animation on property syntax. This is especially useful for repeating animations. The following example creates a bouncing effect: Usage of QML does not require Qt/C++ knowledge to use, but it can be easily extended via Qt. Any C++ class derived from QObject can be easily registered as
162-472: Is a QML cache file format which stores a compiled version of QML dynamically for faster startup the next time it is run. Example: Objects are specified by their type, followed by a pair of braces. Object types always begin with a capital letter. In the example above, there are two objects, a Rectangle; and its child, an Image. Between the braces, one can specify information about the object, such as its properties. Properties are specified as property: value. In
180-1087: Is associated with Qt Quick , the UI creation kit originally developed by Nokia within the Qt framework. Qt Quick is used for mobile applications where touch input, fluid animations and user experience are crucial. QML is also used with Qt3D to describe a 3D scene and a "frame graph" rendering methodology. A QML document describes a hierarchical object tree. QML modules shipped with Qt include primitive graphical building blocks (e.g., Rectangle, Image), modeling components (e.g., FolderListModel, XmlListModel), behavioral components (e.g., TapHandler, DragHandler, State, Transition, Animation), and more complex controls (e.g., Button, Slider, Drawer, Menu). These elements can be combined to build components ranging in complexity from simple buttons and sliders, to complete internet-enabled programs. QML elements can be augmented by standard JavaScript both inline and via included .js files. Elements can also be seamlessly integrated and extended by C++ components using
198-633: Is on its own release schedule, with feature releases every four months, and bugfix releases in the intervening months. The latest Plasma 5 features the following workspaces: The first Technology Preview of Plasma 5 (at that time called Plasma 2 ) was released on 13 December 2013. On 15 July 2014, the first release version – Plasma 5.0 – was released. In spring 2015, Plasma 5 replaced Plasma 4 in many popular distributions, such as Fedora 22, Kubuntu 15.04, and openSUSE Tumbleweed. Feature releases are released every four months (up to 5.8 every three months) and bugfix releases in
SECTION 10
#1733093040941216-643: Is positioned at 0,0. In the "moved" state, it is positioned at 50,50. Clicking within the mouse area changes the state from the default state to the "moved" state, thus moving the rectangle. State changes can be animated using Transitions. For example, adding this code to the above Item element animates the transition to the "moved" state: Animations in QML are done by animating properties of objects. Properties of type real, int, color, rect, point, size, and vector3d can all be animated. QML supports three main forms of animation: basic property animation, transitions, and property behaviors. The simplest form of animation
234-599: The X Window System and Wayland . Support for Wayland was prepared in the compositor and planned for a later release. It was made initially available in the 5.4 release. Stable support for a basic Wayland session was provided in the 5.5 release (December 2015). Support for NVIDIA proprietary driver for Plasma on Wayland was added in the 5.16 release (June 2019). Since the split of the KDE Software Compilation into KDE Plasma, KDE Frameworks and KDE Applications, each subproject can develop at its own pace. KDE Plasma 5
252-561: The Qt framework. QML is the language; its JavaScript runtime is the custom V4 engine, since Qt 5.2; and Qt Quick is the 2D scene graph and the UI framework based on it. These are all part of the Qt Declarative module, while the technology is no longer called Qt Declarative. QML and JavaScript code can be compiled into native C++ binaries with the Qt Quick Compiler. Alternatively there
270-559: The example above, we can see the Image has a property named source, which has been assigned the value pics/logo.png . The property and its value are separated by a colon. The id property Each object can be given a special unique property called an id. Assigning an id enables the object to be referred to by other objects and scripts. The first Rectangle element below has an id, myRect . The second Rectangle element defines its own width by referring to myRect.width , which means it will have
288-434: The intervening months. Following version 5.8 LTS KDE plans to support each new LTS version for 18 months with bug fixes, while new regular releases will see feature improvements. QML QML ( Qt Modeling Language ) is a user interface markup language . It is a declarative language (similar to CSS and JSON ) for designing user interface–centric applications. Inline JavaScript code handles imperative aspects. It
306-562: The necessary QML files as resources. Data binding In computer programming , data-binding is a general technique that binds data sources from the provider and consumer together and synchronizes them. This is usually done with two data/information sources with different languages, as in XML data binding and UI data binding . In UI data binding , data and information objects of the same language, but different logic function are bound together (e.g., Java UI elements to Java objects). In
324-474: The same width value as the first Rectangle element. Note that an id must begin with a lower-case letter or an underscore, and cannot contain characters other than letters, digits and underscores. A property binding specifies the value of a property in a declarative way. The property value is automatically updated if the other properties or data values change, following the reactive programming paradigm. Property bindings are created implicitly in QML whenever
#940059