evoke is going to branches for a fresh code. Actually, most of it is already done (just merged), where I kept old xsettings and splash engine code (with a small improvements).
evoke is an EDE "starter" (it will start needed EDE programs)
and "quitter" (will gracefully close all running programs and close
X connection). It will also run splash at the startup, start
autostart folders and keep
xsettings session. In short, manage startup and quitting and
everything related to this.
Maybe it looks like a kitchen sink, but believe me, before
this "code redux" it was a much worse kitchen sink. It had an
option to run external programs, monitor it and report if they
crashes and managed screen composition (a.k.a. composite manager).
Add to this that compositing via FLTK is pain in the ass (I had to
reimplement FLTK looping in evoke so popped windows could be
redrawn and receive additional events), plus all the "nice things"
related to the spawning externaly requested programs. Pfew!
You probably ask by now how all that worked together? Most of
it did, but it (still) had a big problems with events of dialog
windows that could pop up in every moment: some of them didn't show
up, some didn't receive events... pretty bad things for something
that will hold desktop session.
So, instead digging for another "fix", time was to get
serious and dump everything not related to it's mission. Even
before I planned to move compositing code in window manager (where
it belongs) or as an independent program (even better solution) and
all that "runner-launcher-watcher" code was a mistake. Vedran
proposed to keep most of this background stuff in one program (to
reduce a memory usage by running only one instance), but it ended
up using even more memory not counting (possible) instability due
races. At some point, we can addopt old
elauncher (runner from EDE
1.x) to communicate with already running elauncher instance via
D-BUS or some other IPC so it does not get's duplicate with each
new started program. Just an idea...
To get in new evoke... maybe the biggest, user visible thing
is a small addoption for the splash themes. You create a folder and
put a background image and few icons and voila, job done. I had no
clue how splash theming should looks like because every other
desktop is doing it in different way (they done it mostly via
"engines", but why you should write a C/C++ code just to add
different splash screen).
So, in that folder you just plop "
background.png" (it has to
have this name and to be a png image) and a bunch of icons and
their name associate with program started from "
Remember this name, since it will holds everything needed to fully
Here a small shot of the-5-minute-created theme, called
There are few things in my head planned to be added, like
customizing where icons will be placed, icon
jumping-blinking-or-else effects, progress text font/color and etc.
They will definitely require a special file, specific to each
theme, but let's not hurry; these are features and features can be
February 17, 2009