EDE, a light desktop environment
Today, desktop environments on Linux are in a bad shape. Popular
environments like KDE or GNOME became extremely bloated, resources
hungry without clear vision what desktop environment should be.
To run the latest versions of KDE or GNOME, you will need powerful
hardware with good graphic card and latest drivers, a demands set by
modern 3D games. But, do you really need that just to surf the web or
edit the text?
Because of this, in a recent years, there is increased interest for
alternatives: Xfce, LXDE or Razor-Qt. But, these alternatives are
built on bloated base: Gtk+ and Qt toolkits. Both are quite heavy
libraries, depending on large number of external packages. They will
produce large binaries and increase compile time.
Just for comparison, you will compile Linux kernel much faster than
compile Qt from the source code.
1. Fixing current situation
In my talk, I will introduce EDE, a light desktop built on FLTK
library. FLTK or Fast Light Toolkit is portable C++ GUI library with
good history in movie and graphics business.
EDE goals are to make desktop environment easy to use, easy to install
and to be light in resource usage, no matter which OS or device is
used. Also, it should be compatible with current desktops and be able
to use installed resources like icon themes, menus or sounds.
By using known desktop design paradigms, EDE does not try to
reinvent desktop metaphor. Desktop environment should be invisible
where user feels comfortable and can be focused on daily tasks,
instead of spending time tweaking or optimizing common desktop
The talk will mostly focus on EDE features, comparisons to
alternatives and demonstrate the short snippets of how fast and
easily user can extend it, using C++ or Scheme languages.
2. EDE and technology behind
For EDE is developed additionally library called edelib that comes with
a lot of goodies needed by modern desktop environment. Some of them
* implementation of various freedesktop.org standards
* custom FLTK widgets
* cross OS functionality
* full DBus C++ binding
and some not common features, like builtin Scheme interpreter.
With FLTK and edelib as the main dependencies, DBus is the only
requirement user must provide additionally. DBus is used for component
communication and there is a plan to provide it as optional
requirement, making EDE easy to port on different platforms.
Thanks to this approach from the start, EDE now happily works on
uncommon OS-es and devices like Minix, Zaurus or XBox.
Here are a couple of other facts:
2.1 C++ usage
EDE is written in C++ and this language is known for creating bloated
binaries with increased compilation time. For this reason, we are
trying to skip:
* STL and STL based code
* template abuse
By using these rules, compilation time is dramatically reduced and we
are assured the code will be compile-able even on old C++
compilers, making it easy to port on old or alien platforms.
2.2 Scriptable themes and meta-themes
While other desktops are relaying on XML or JSON to describe themes,
EDE uses full scripting language, Scheme. With Scheme, user in
themes not only can describe how something looks like, but also
when. This theme snippet perfectly explains it:
;; Check if user have installed Tango icon theme and use it.
;; If not, fallback to default 'edeneu'.
;; theme common metadata
(theme.name "demo theme")
;; this is actually a function
(defun guess-icon-theme ()
"Check if user has Tango icon theme."
(if (find-icon-theme "tango")
(theme.style "ede" [
foreground_color "dark slate gray"
background_color "mint cream"
font "sans 10"
icon_theme (guess-icon-theme) ;; this is a function call
EDE themes are at the same time meta-themes: you can bundle inside
single, global theme, a various application specific themes and the
best of all: they can interact with each other.
By using this design, EDE blends the difference between theming and
scripting, giving artists greater freedom to design look and behavior.
3. Future plans
While EDE in current state fulfills a large part of the mentioned
goals, it is not completed yet. Some of features I would like to see
* platform independent easy to use package installer
* light and fast file and web browser
* more exposure of internals via DBus objects in Smalltalk style
There is already work on EDE internals exposure and recently was added
'DBus Explorer' tool, from where the user can debug, inspect and call
various object by simply clicking on them or writing Scheme code.
4. Where you can get it?
Currently EDE is not provided as standard package in popular
distributions, but you can easily find binaries for Ubuntu, Fedora or
FreeBSD on alternative repositories.
However, the user can download EDE from the project site and build
it either manually or by running netinstall script.