Tuesday, February 17, 2009

evoke rewrite

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 programs from 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 "ede-startup.conf". Remember this name, since it will holds everything needed to fully starts EDE.

Here a small shot of the-5-minute-created theme, called "scape":


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 added later.

No comments: