Skip to content

Architecture details

azubieta edited this page Dec 5, 2014 · 8 revisions

Moonlight Desktop Environment (DE) is aimed at low-performance devices, for this reason should be reduced as far as possible the consumption of computing resources (RAM and CPU cycles). To meet this goal a component-based architecture is used, which, unlike traditional DE, these are dynamic libraries that are loaded on demand (also known as plug-ins).

With the goal of reducing inter-component dependencies, communication between modules is established through a service layer. Thus greater flexibility in the system is achieved and the communication between them is provided. For more information on the service layer, consult the library documentation CppMicroServices, this can be generated from source.

Logical Structure

MoonLight is divided into three layers: GUI, Abstraction and System. In the GUI layer are placed the visual components of the desktop such as panels, folder views, dialogs and others. Those components will communicate allays between then or with the abstraction layer they will never use system specific features (librarys).

The abstraction layer exist for the propose of increase system flexibility in order to make easy the exchange of a system specific library without affecting the components that use it. This is a key factor to support the future compatibility with Wayland and X11 or between ALSA and PulseAudio.

In the system layers are placed the system dependent components, by example the components that communicates with the X11 graphic server. Those components expose their functionalities as services using the interfaces existing in the abstraction layer.

MoonLightDE Logical View

Components: