Next Previous Contents

5. Themes (and Understanding Enlightenment)

5.1 How many desktops does Enlightenment support/use?

Exactly 16 in the default theme. This can be changed.

5.2 Why is a desktop slow at first, and then fast?

The image server that Enlightenment uses, Imlib, caches images. This means that it reserves a space in RAM for the image so that next time it gets displayed, it does not need to re-read it from disk. This is exceptionally good for those with more memory and who use the same desktops more than once before the cache expires, which is most of us.

5.3 Why is everything slower after using desktops?

There are settings available for those of you who find that your performance degrades from this caching due to the low amount of memory available. What happens is that at least partially, the cache that Imlib creates probably gets swapped out, and/or causes applications that you use to do similarly, causing them to be read from disk. In this situation, it is recommended that you change your cache settings in your Imlib's RC, typically located in /usr/local/etc/imrc in most installations. It can also be changed on a per-user basis in ~/.imrc. Imrc, in whatever form is in clear human-readable text. It can also be accessed in a GUI fashion by the GNOME Panel's "System" sub-menu if that is available or preferable. There are additional features that will potentially make Imlib more optimized for your video and machine characteristics that will make it worth your while to fire up your text editor.

5.4 Why do my windows sometimes flicker when I move them?

Enlightenment uses floating desktops exclusively. There is a limitation in X that says windows are stacked in a certain order and any movement causes a game of "Who's On Top." X dictates than whenever a window is to be transformed (as in a movement and resizing) it must be raised; normally this is not a problem but for the fact that we have multiple virtual "desktops" underneath that window for it to fall down to what X considers the "root" window. The short explanation of it is that your application lost, and has to come back to open air for you to see it. This is instantaneous and handled by Enlightenment. However Enlightenment cannot convince slow, obstinent, or bandwidth impaired programmes to update their display immediately; it can only ask a client programme nicely. This process of hop-skotch has been as optimized by Enlightenment (and its coders) as much as the current X framework allows.

Yes, this is the normal behaviour for an application. However, the faster the application can "regenerate" its window, the less of a "flicker" effect you experience. This also means that "persistent" clients, those programmes that update as often and as quickly as possible, will minimize this effect. Those programmes that aren't "persistent" will update this when they feel like, sometimes leaving you with a completely "invisible" window. This happens for BMRT displays, for instance, because they optimize for total running time. Mind, you aren't going to be waving these screens around a lot. ;)

If you are using a slower network connexion, or a very slow machine, you might consider using your initial desktop (let's call it Desktop 0) for your applications that you will be shuffling around often enough to bother you or which are too slow to update, and the other floating desktops for all others. Another method of bypassing this is by making the window in question floating as well with the floating button (commonly referred to in other window managers as a 'sticky" attribute as such windows appear to "stick" to your monitor when you move the screen). This tells E (and thereby X) that the window should be Always On Top regardless of circumstances and the game of "Who's On Top" is thereby circumvented nicely; however this sometimes ruins the effect of good, managed window policy, so use it at your discretion.

There is a third reason why you might experience it beyond bandwidth concerns, and this is if the window that you are transforming is partially "off screen." The above solutions also affect it similarly, as well as the obvious solution of keeping screens fully on screen as much as possible, and using the Cleanup button as a policy helper.

5.5 Why don't some of the buttons work in the theme?

It's because you don't have the software it's asking for installed. If you press the "Netscape logo" button and you don't have Netscape, Enlightenment will not download and install it for you. Find out what you need, and get it. Or alternatively, change the buttons to the programmes you like to use.

5.6 What are the keybindings (keystrokes that do things) for the default theme?

All of the following keybindings are to be used in conjunction with Ctrl and Alt. This combination, along with the key in question, was chosen for the default user keystrokes, so as to confuse as little of the client windows Enlightenment is managing as possible. These keybindings are yours: no theme will change them, and therefore too, are your responsbility to change if you do not like them. These keybindings are active whether over a window or not, with the exception of Raise and Lower window, depending on your Focus Pointer choice.

F1-F12Jump to Desktop Fn
LeftNext Desktop
RightLast Desktop
DeleteExit Enlightenment
EndRestart Enlightenment
DChange Dragbar direction
OOrder Dragbar buttons
AHide all buttons and Dragbar
CHide all Config buttons (left side)
BHide all buttons, leaving Dragbar
VDeskray Mode toggle
PageUpRaise Window
PageDownLower Window
XExit/Kill Window
KKill Window
SMake window sticky

5.7 Are all Enlightenment themes compatible?

Unfortunately, no. There was a major reassessment of the theme structure that went along with the complete rewrite of Enlightenment itself. The files are not compatible or interchangeable from Enlightenment's point of view. Downloading and installing them will not work. That said, the formats are easily enough changed by hand if you compare the window layout measurements and where they go in each E13 and E14+.

5.8 Why aren't most of the themes updated to E14 and higher?

A bulk of the themes assembled for Enlightenment that were released to the public by their authors are for Enlightenment 13. "Porting" these themes over to E14 and higher is possible, and not even difficult. However, new functions exist in E14, and people tend to demand the same functionality across themes, and that tends to mean graphics for those functions. Not only that, but graphics that meet the original intent of the theme as closely as possible. Most of the original authors are either anonymous or unreachable. While others have taken up their torches at times, or recombined them in different variations, that still leaves many copies of older versioned themes lying around. Don't download them, don't install them.

The other reason why they haven't been updated of course, is that Enlightenment 14 is very new

and the opportunity and time hasn't been there yet for the authors and fans to update most themes. If you particularly like a look, download the theme and swap the graphics into your own E14 theme, and share them if you think the result is good. There are more questions here related to this; read on...

5.9 How do I make Enlightenment look like those screen shots?

Download themes, and install them. Each separate "look" you encounter in those screenshots is a separate theme. With it comes an array of user interface customizations and other sundry things that the theme author feels will enhance the look and feel of his theme. You are free to change any of these same details too, of course.

5.10 Where can I get or register themes?

For now, and maybe in the future, the primary place to get and register your themes is While most themes are still prototypes under development, quite a few are quite usable. You'll find that some themes track Enlightenment's new CVS features, and some don't. Read your labels, because version numbers translate into error messages if you don't. This isn't because the themes are incompatible, but rather because your binaries just don't have the capabilities that go along with what's parsed from the theme langauge.

This site was formerly Technoir's Nethead, but Technoir and Keebler (of "Keebler's Huge Waste of Bandwidth" fame are the co-maintainers of the Enlightenment section at

It promises to be a repository of all things theme-related, and will be developing more automation into the process of its theme registration, as well as the possibility of providing documentation of the theme creation process in specie.

5.11 How/where do I install themes?

Themes are usually distributed in tar.gz format, whether their filenames are suggestive of this nature or not. We haven't seen any pop up in another format that we know of, at any rate, and Enlightenment supports only directory trees, archives (.tar), and compressed archives (.tar.gz or .tgz).

You have a few options depending on your ability and resourcefulness.

Be sure to place any full theme you want to use inside of (or in the case of a new directory, under) your /usr/local/enlightenment/themes directory. This is preferable to another other placement, as it will work regardless of which user asks for it and is a "safe" place that Enlightenment will scan for themes. To unarchive it, type tar zxf filename from within the directory you want it unarchive into; it will hopefully have been created with a subdirectory name already (as this is the general practice). You should then see a new directory, which you will call from now on.

5.12 How do I make Enlightenment choose that (or any) theme?

Enlightenment understand themes in either the form of an archive (tarred and/or gzipped) or as a directory structure. Just tell it on the command line when you start it up, with the command line switch so that the command line looks like:

/usr/local/enlightenment/bin/enlightenment -theme themename

5.13 What are the differences between Enlightenment themes?

What it boils down to is what we want be changed by a theme, so that we can differentiate what themes can do from the control the users themselves exercise in their Enlightenment desktop functionality. As a result, these are what you start with in letting a theme do:

5.14 What is the same between Enlightenment themes?

One can redefine all things from within a theme. However, you can have a site or user configuration file that overrides aspects of any theme you use.

The default configuration can be changed to include more or less user control, but out of the box user definitions that are located in /usr/local/enlightenment/config/user_main.cfg will generally point out to you what the theme authors and other users will expect to be "standard" hands-off for theme authors:

You might argue that the last two belong to the themes; and you might be right. There are probably some gray areas between what is practical from a hardware and performance perspective, what's socially acceptable in the office, and then what allows for better customization on a theme basis. You are free to choose, as always.

5.15 Why do I get boxy gray buttons?

They are leftovers from other theme definitions. If they persist, remove your ~/.enlightenment/user_autosaved.cfg file, or rename them temporarily. Or for those who want it all, you can actually add the graphics E wants to link with those orphaned buttons if you know where to put them. This is not a bug, per se, as the following explanation will show.

The reason is because you have saved your current settings, whether you know it or not. This is the default behaviour of the default theme, and it saves the positions, graphic pointers, keybindings, and mousebindings of all of your E `widgets.' When you restart in a different theme, unfortunately, these same settings aren't finding the same graphic files in the other theme you switched to under its theme directory structure. The trick then is to either get rid of the settings (user_autosaved.cfg), or move the graphics to the other theme's tree. To make the second method work smoothly, you might want to get rid of the button definitions in the theme, or more experimentally, make them visible with different keystrokes.

5.16 How do I plug graphics into themes?

Have your graphic file(s) ready, and place them in your theme directory. In the case of most normally installed themes, this means putting them in the directory it was installed in, normally residing in or under the /usr/local/enlightenment/themes tree. In the case where you use themes directly from their archived format, you must follow the instructions from a bit earlier on in this FAQ concerning installing them in a directory, and then proceed with the next step:

Go to the directory in which it is in, and edit the theme_pre.cfg file with your favourite text editor, changing the filenames as needed to agree with your own personal cosmology, or the theme's pre-existing structure. Usually they are prefixed with "pics" or "pix" which is also unsurpisingly the arbitrary subdirectory name that the graphics reside in. If you like consistency, be sure to place your own graphics in the same place.

Alternatively, in the case where you don't like using a keyboard or searching through text files, load up XV (or EE), and scan all of the picture files themselves using a thumbnail (or visual schnauzer in XV's case) mode, delete the pictures of the graphics you want to replace, and replace them with your own. This can also be accomplished using point-n-shoot with Midnight Commander or some other similar file manager.

5.17 How do I make themes?

For a start, you can use ConfigEdit, which is distributed within the Enlightenment distribution. It uses a otherworldly combination of Gtk-Perl, Perl, and Gtk to get the job done. It's still in a somewhat prototypical state right now, but is usable to get a handle on what goes where, and provides a GUI in which to do it.

Another choice is to grab a bunch of graphics (yours or someone else's), and simply plug them into the existing layout of a pre-existant theme. This is usually the easiest and has a certain ironic tradition in it to recommend itself. It is no less valid than any other method, and is actually a good way to learn the framework. Just use a known good theme, like the default one until you can discern what makes a good or bad theme layout and why.

Learn from documentation you'll find on the web. Right now it is fairly scant until more authors come out with their "best of" hints to quick-bang theme design. I somehow suspect they will be either one or both of the two earlier methods, though, with some insights thrown in for flavour.

The last alternative is to wait for ConfigEdit to be fully developed, for someone else to create another configuration editor, or for the eventual global desire for internal theme design from within Enlightenment itself. And then use it of course. ;) 

5.18 How do I make graphics for themes?

Depending on what you want to portray for your theme, you can use just about anything. Some questions to ask yourself to see where you are headed are:

The real trick of course, besides from trying to stick that mouse around and make a half-decent image, is to get those graphics to work together in the theme you envision itself. Don't be afraid to throw existing imagery, styles and other things into the mix. Sometimes adversity breeds a new look. Just be sure they work together with a little processing. Tint colours so they slightly overlap or create a depth of look an individual image or graphic would not between images.

One of the few things that should guide you besides from imagination is that you should consider the feel with the look. If you want a clean interface, you should attempt a reasonable facsimile of a clean graphical layout, and possibly smart looking graphics as well to guide your intentions so the eventual user will gain understanding of how it works sooner. This works for the opposite, and for that matter, the entire spectrum to some degree or other.

Graphics that will give you shaped windows can only be done with Xpaint, the Gimp, ImageMagick, or some other programme that allows a thing called "transparency" or an "alpha channel." This is what Enlightenment uses to see where to use its magical cookie cutters. Where you don't see it, you see through it when you use Enlightenment.

Don't be disheartened about what artistic ability you had in grade school, high school, or college either. Much can be accomplished with modern processing and programmed help. It's not everything, but it will help you make modest seeming theme graphics together for an interface.

5.19 How do I make good themes?

Try to be sensible with shapes, and think of the user often when designing, placing, and grouping widgets. Most importantly, try to use tileable graphics where possible as this will dramatically speed your theme up for most users and show off your mental capacity. Consider, too, the necessity of contrast in colours, and write down a blurb of what you were attempting when you were designing the theme, as well as what graphic resolution it was designed for primarily, among other things. This will let the user know why the graphics don't come out as expected on his display, or other things, and know what to change and why.

Next Previous Contents