Plexydesk API

There are many ways in which you can extend the functionality of PlexyDesk, the built in mechanism allows developers to extend PlexyDesk with DesktopActivities, DesktopWidgets and DataEngine plugins. Apart from the functional plugins, if the overall look and feel of the desktop needs to be changed that too can be done easily with a Style Plugin. Each of these methods will be discussed in detail in this section of the wiki


Extending PlexyDesk.


PlexyDesk creates a workspace per Screen found, this could be external monitors of virtual screens depending on the platform. On each workspace, Users can create unlimited number of Spaces. Windows, Widgets, Activities are created inside this space, and sessions are saved per space. To change the behaviour of the space, and to get deep access to features offered by Space, one needs to develop a controller plugin. Controller plugin gives unlimited access to accessing all parts of the desktop API, which allows the developer to change the behaviour of space as well as the look and feel of it. The look and feel of the widgets and the windows are handled by Style Plugins. By writing a style plugin the developer can change the colours, sizes and all the other style properties of widgets. If you wish to create new types of dialogs, message boxes, image browsers, or any type of light weight component which could be accessed by all the other desktop controllers, it can only be done by writing a new Activity Plugin, All Activity plugins inherit from DesktopActivity Abstract class.


The main design of PlexyDesk.


Commonly used UI components are grouped into a special type of Plugins called the "Activity Plugins". Theme plugins create reusable components which can be created from any Space. Normally the Controller will call on the Space::create_activity() method to create activities on demand based on Data Availability or User demand.

   When PlexyDesk starts, it creates Workspace per screen found, the behaviour of the workspace is determined by the Spaces it contains within. Behaviour of each Space depends on external "Controller" plugins. Normally Controller plugins create the glue between data components and the UI components. Controllers can connect to DataSources and create and interact with the users with UI components.

PlexyDesk has a highly modular architecture. UI and Backend components are grouped in to shared libraries and PlexyDesk Runtime components are designed to be plugins. The interaction between data and the UI follows the Model-View design pattern as much as possible.

PlexyDesk Components.


Developing components for plexyDesk.
The main aim of PlexyDesk is to develop a cross platform desktop manager which will compile natively without any workarounds. For instance PlexyDesk will easily compile with Visual studio on Windows, clang on Mac OS X, and Gnu compilers on Linux or BSD or on any platform supported by Qt. As a long term goal we like to be independent of Qt, until such time we will primarily base the rendering with Qt, making way to adapt to a new ToolKit or Platform API's. It is very important to keep this in mind when