Crema is relatively light-weight and based on the default e17 theme. My purpose in taking the time to do this was to learn edje programing and to understand the hurdles involved in completing a theme. If you have successfully created an e17 theme you will probably agree with this: it is hard to know when to stop.
Important: The latest CVS release requires a theme change.
ELive CD users should download crema.edj
CVS build users should download crema_0_4a.edj
I chose to stop when all core desktop elements had been completed and all the modules that I tend to populate my desktop with had been tweaked sufficiently. The module changes were typically small details — the background face of the clock, popup backgrounds in the forecasts and net modules — but the truth is that most modules are fine as they are and the small changes I did make are really nits that make the theme more consistent and personal (most other people like second hands on their clocks.)
The real meat of the work is in graphics and layout. No surprise there, but I understand why many themes are collaborations. It helps to start with a theme that isn’t a radical departure from the default. The difficulty is staying consistent to your original ideas as you work through the many details. Macros were defined to help me re-use as much similar code as possible and I understand now why each theme designer develops some method for managing this (macros, separate include files, directory hierarchies, etc.). There probably won’t ever be just one good way to do this but it is interesting to watch what people come up with. The emacs c-backslash-region function helps when updating macros.
Crema was a good learning experience. The graphical elements are interesting but not staggering. I purposely kept it simple so my first theme wouldn’t become my life’s work. For the folks who bothered to read this far, here is a jump to some of the more interesting bits:
- The borders (border.edc) are done with gradient regions not images. The focus/unfocus animation is simply a transition between two part descriptions with the same gradient but different y-offsets. The actual client sits in a large dark region one pixel smaller than the dimension of the client swallow part. (Sounds ominous, no?) The no-image border is one reason why I didn’t add a shaped border. No matter … I’m not a fan of shaped borders.
- The background (background.edc) uses a small tile with a theme image in the bottom corner. If you plan this out carefully that corner image appears full size in the theme selection dialog.
- The background of all the dialogs is a simple radial gradient.
