LJ Archive

Enlightenment Basics

Michael Hammel

Issue #72, April 2000

A guide to getting and installing Enlightenment.

Enlightenment consists of a core package, a set of libraries upon which it is dependent and add-on packages known as “epplets”, which are not required to get E (Enlightenment) running. You can grab the core package and the libraries it requires from the primary E web site at http://www.enlightenment.org/. At a minimum, you'll need the packages listed in Table 1 in order to run on a Red Hat 5.2 system. Red Hat 6.0 or later, SuSE 6.2 and later and the current Debian distributions already have E available. If you install everything, you'll have E ready to run. If not, you will need to determine which package includes E. Usually this is the same category in which you find GNOME or KDE when choosing packages to install.

Table 1

The graphics libraries you'll want are TIFF, GIF, PNG and JPEG, but most of these have been installed with Linux distributions for a couple of years, so chances are you already have them. Like the other libraries upon which E is dependent, you can find the source distributions for the graphics libraries on the E web site.

The first thing you want to do is make sure the graphics libraries are present. The quick way to check for them is to type ldconfig -p. This command will print all libraries initially installed on your system. If you add more libraries in other directories (as we'll be doing in a moment) and have configured them in /etc/ld.so.conf, it will show those as well.

ldconfig -p | grep -i gif
ldconfig -p | grep -i jpeg
ldconfig -p | grep -i tiff
ldconfig -p | grep -i png

If any of these commands simply return without printing anything, you're missing the associated library. The grep command will allow only the output from ldconfig which contains the string that follows it (-i means ignore case). If you're missing a graphics library, get it from the web site and install it. Since most people will already have these, we're going to skip their installation.

Next, you want to install imlib. This library handles the display of graphic images (backgrounds, borders, etc.). It scales images appropriately, such as when you make a window wider. Imlib is not installed on most older distributions of Linux, and some newer versions may not install it by default, so we'll look at the installation of this library directory from its source.

Grab the library source from the E web site and unpack it into a local directory. In this directory, run the configure script as follows:

 ./configure --prefix=/usr/local/imlib

This will prepare the package for compiling. The “--prefix” option tells configure that, after compilation, installation will be into a directory called /usr/local/imlib. Management of packages like imlib, that are built from source rather than an RPM, is easier if you install them in their own directories.

After running the configure command, you're ready to build the software by typing make. This will run for a time and should complete without error; however, you may see some warnings go by. On my system, I don't have the GIF library installed, so I get a message stating “Native GIF support will not be built.” This isn't a big problem unless you plan on using GIF images in your personal themes or as background images. The themes provided in the E core distribution all use PNG, so at a minimum you'll need the PNG library installed.

You might also run into a warning about GTK not being found and one that reads “gdk_imlib will not be built”. This shouldn't happen to you unless, like me, you have GTK installed in its own directory. Most readers will have installed GTK during installation of the operating system. If you do get this error, either you may need to upgrade your GTK package or you need not have it installed in a standard location. In either case, you don't have to have gdk_imlib in order to use the imlib library with E.

After the source code build completes, you're ready to install it. Since we specified a directory in /usr/local, we'll need to be root to install the software there. You can either log out and log back in as root, or just run the su command to change to the root user. The latter is easier to do, but you will need the root password. As root, type

make install

Now, edit the /etc/ld.so.conf file and append the following line to it:

/usr/local/imlib/lib
Then run ldconfig. This will tell the system new libraries are installed under /usr/local/imlib/lib and to check for libraries there when running programs or compiling them. We'll be doing this step again for the other libraries, so be sure you remember it. If you used su to change to the root user, type exit to return to your normal user name. Remember: you should never work as the root user except to manage system files. You can compile these packages without being root, and you should—it's safer that way.

Now you're ready to install the font libraries, fnlib and freetype. Fnlib, a collection of fonts that E uses, has some dependencies on imlib, so that's why imlib had to be installed first. Freetype is the library which gives E internal support for TrueType fonts. In this way, E can use TrueType fonts even if your X server doesn't support them.

Unpack fnlib and the FreeType library into their own separate directories. In the fnlib directory, run this command:

 ./configure --prefix=/usr/local/fnlib \
  with-imlib-prefix=/usr/local/imlib

In the FreeType directory, run this:

 ./configure --prefix=/usr/local/freetype
In each directory, run make, change to the root user again and run make install. Edit the /etc/ld.so.conf file and append these two lines:
/usr/local/fnlib/lib
/usr/local/freetype/lib
Finally, rerun ldconfig and exit from the root user.

Normally, this would be all that was necessary for other programs which use auto-conf (the tool which creates the configure scripts) to find your newly installed packages. But E is missing a minor bit in its configure scripts, so we have one extra step to do. We need to make symbolic links for the files in the fnlib and freetype directories into their respective directories under /usr/local. It's not hard, so don't let this technical explanation scare you. Just type the script in Listing 1 into a file called /tmp/fixit.sh, then type:

sh /tmp/fixit.sh

Listing 1

That should do it. Seems like a lot of work, and it is, but this is what you have to live with when working with very young software. Linux may be in its infancy, but E is only a bit older than most zygotes.

After installing the libraries upon which E is dependent, we're ready to build and install E itself. This one follows the same basic steps as the others—run configure, run make, run make install. Except this time, you don't need to update the ld.so.conf file.

 ./configure --prefix=/usr/local/enlightenment\
  with-imlib-prefix=/usr/local/imblib

Change to the root user and type make install, then exit from the root user.

When you run the configure script, you will get a notice about Esound not being found. That's fine—you don't need it to work with E. As far as I'm concerned, sound on a computer does one of two things: makes noises when you type, or the clock changes and plays MP3s on your CD. Playing music shouldn't be the job of the window manager, so the latter option isn't important. As for making sounds when you type, well, any window manager that does that should be placed on a floppy disk and nailed to the stake where its author is tied just before they light the fire at his feet. But I digress.

The process for building E is just like building the libraries, so the installation should go smoothly. Chances are, the only real problems you'll hit might be if the libraries weren't installed correctly. If that's the case, reread this section and try again. After the build and installation are complete, you may want to add the Enlightenment/bin directory to your path:

export \
PATH=$PATH:/usr/local/enlightenment/enlightenment/bin

or link the binaries to /usr/local/bin:

ln -s \
/usr/local/enlightenment/enlightenment/bin/enlightenment\
/usr/local/bin
Note that E's main program—the window manager—is a program called “enlightenment”.

What looks like a typo is not—the path is correct in both of these commands. We told the build process to install all the enlightenment tools under /usr/local/enlightenment. When we ran make install, the E installation process created a number of directories under /usr/local/enlightenment. One of these was called enlightenment. The reasons for this are technical, but suffice it to say the Enlightenment developers had one installation scenario in mind and that differs from mine. It doesn't matter. It still works using my method, and later upgrades to E will be easier to handle without disturbing any other packages.

Michael J. Hammel (mjhammel@graphics-muse.org) is a graphic artist wanna-be, a writer and a software developer. He wanders the planet aimlessly in search of adventure, quiet beaches and an escape from the computers that dominate his life.

LJ Archive