GUI development using Disko is based on the classic Model View Control (MVC) paradigm. The user interfaces can be fully created using XML-based description files, thus allowing flexible application design.
This means that the application design can be modified without the need for any source code compilation, which in turn means that any customer-specific changes to the user interface can be made effortlessly. All XML descriptions and visual files are converted into a special internal format when the program is first started so that there is no need for repeated resource-intensive operations (importing and processing of dialog files). Disko supports linear and dynamic layouts and provides widgets for all standard requirements.
Disko can be expanded flexibly, thanks to plugins, which can be loaded or deactivated during runtime. These plugins can be used in parallel for a multitude of different applications and can be exchanged within an application without any problem. The underlying principle of reusability makes for easier maintenance and promotes the stability and reliability of the software system in the long term. The plugin concept can even be applied to statically linked applications.
Disko supports input via Linux - /dev/input/event, X11, and DirectFB - and this input is processed according to different input models (e.g. touch, remote controls, keyboard). This eliminates the need for the code to be adapted when switching between input devices.
The Disko code is developed in strict adherence to the object-oriented approach, which facilitates the simple creation of complex applications and significantly shortens development cycles for new products.
Communication between plugins is via events; either seamlessly within an application or across application and system boundaries. The event interface offers diverse possibilities, thereby simplifying the exchange of plugins and also allowing individual plugins to be combined into a new system.
The embedding of Xine and/or GStreamer in Disko allows the simple integration and use of media data in the application.
Depending on the relevant CPU performance, each widget or window can be assigned a specific degree of transparency, a smooth scrolling function, or fading effects.
Disko offers the user a command line interface, allowing general access to the application. During runtime, this interface can be used, for instance, to activate or deactivate plugins, change application parameters, or send events to the system via the event interface.
Disko is licensed under LGPL and can therefore be used by customers equally well for proprietary and/or open source projects. All users can benefit from the continuous further development and ongoing improvement of the software through its use in different applications.
Disko supports multiple languages, even if the user software in question was not originally designed for this.
Users can switch to a different language while the application is running. Internally, Disko works with UTF-8.
The expandability of Disko using plugins and the flexible combination of plugins in Disko-based applications necessitate a system that manages and controls the interactions of plugins with each other and with the user. The switcher component developed for this purpose facilitates central management and control of the individual plugins. The switcher interface itself can be designed and exchanged via XML-based dialog files.
Disko supports the Linux Framebuffer, DirectFB, and X11. The framebuffer support offers native optimization for OMAP and is compatible with GPU 2D hardware acceleration. Since version 1.8, Disko can be configured to use OpenGL / OpenGLES 2.0 hardware acceleration without changing GUI application code.
Disko has already been ported to several platforms. Since a large number of required graphic routines already exist and numerous pixel output formats are already supported (RGB565/RGB16, RGB888/RGB24, RGB32, ARGB, AIRGB, YV12, BGR888/BGR24, BGR555, ARGB3565), porting to a new platform will require comparatively little effort. Most functions are optional, which will allow developers to limit themselves to a small number of dependencies for any specific port. Amongst other things, Disko has been successfully adapted and tested for the platforms listed here: Texas Instruments DaVinci and OMAP3, Analog Devices Blackfin, x86, ATMEL AT91SAM, LPC3250, STi71xx and BCM6362. More detailed information about reference platform ports can be found in the developer section - Reference Platforms