Today marks the tenth anniversary of the first release of Syllable Desktop, then plainly called Syllable 0.4.0. The original website and announcement are gone, and many other circumstances of the time have changed quite dramatically. The project is happy that Syllable is still here – which, judging by comparable ventures, is a feat to be proud of.
The project would like to celebrate by presenting the port of most of the Enlightenment E17 graphics stack to Syllable Desktop. This screenshot shows a 3D animation in the Evas canvas engine. (It shows tearing because the animation runs close to full speed and Syllable does not lock the display when making a screenshot. This is not present in the actual display.)
The Enlightenment Foundation Libraries constitute a cross-platform application framework, from a graphics engine up to a widget set and a desktop environment. The stack is modularised into more than ten packages, so Syllable can use only what it needs. Most of the stack is ported but not the desktop and not yet the widget set.
The Evas canvas is a scene graph rendering engine. It does not just draw bitmaps, or even vectors, but handles such elements as objects. Because it knows where they are, it can redraw and therefore move and otherwise manipulate them at will. This screenshot shows three Evas squares objects in a stacking order that can be changed.
On top of the canvas engine is the Edje layout engine. It can do all sorts of manipulations on its layout objects, including 3D transformations. This screenshot shows a text in a rectangle, transformed in a 3D perspective that can be changed and animated.
A number of subsystems that are common in other open source projects have been ported to Syllable Desktop to support Enlightenment. Font rendering is done by FreeType, which Syllable already used, and font management by FontConfig. Other libraries that Enlightenment supports can be ported in the future, such as FriBidi for right-to-left text and Harfbuzz for font shaping of languages with complex glyph interactions.
Enlightenment is an integrated stack. It can be programmed at a high level, for example in the Edje layout engine, but lower levels can be addressed when needed. The engine is consistent across these levels. For example, events are propagated through this stack until they reach their proper destination. This screenshot shows an Edje layout object programmed to swallow user interface events.
This graphics stack is running on top of the SDL subsystem in Syllable. Therefore, it is currently limited to a single window per application. In the future, a native Syllable backend could be written for Enlightenment. The latest version of Enlightenment was ported, the new E17 from a month ago. In this, Evas doesn’t have a specific SDL backend anymore, but integrates through its generic memory buffer backend. In a similar way, Evas could already be used in a native Syllable C++ application.
The project hopes to port the E17 widget set Elementary in the future, which reached version 1.0 only a few months ago, to complete this cross-platform application framework. They already have it working on Syllable Server. It is built on top of the Edje layout engine, so widgets can be manipulated in the same ways as Edje and Evas objects.
This screenshot shows an example of how a slider widget can simply be programmed on top of Edje.