Next Previous Contents

2. Compiling/Installing Enlightenment

2.1 Why do I get errors from RPM when I request it to install the packages?

You have to upgrade it, due to a development in the RPM format itself. If this is the cause you will get an error message along the lines of Data type 09 not supported. Download the latest from Redhat according to the updates directory for your particular version and you will receive a warm glow and easy streets from then on.

2.2 I have Redhat 5.1 from out of the box, so why do I get errors?

You should go to the Redhat site and specifically upgrade all of your existing graphic libraries. There was apparently a problem with the shipping Redhat 5.1 at the beginning where all the libraries that were based from a single version have to be rebuilt with the correct one as a base or replaced. You might already have a "corrected" CD but it doesn't hurt to save yourself some time with a simple check.

2.3 Are Sparc/Alpha/PPC binaries in RPM/DEB/TAR archive form available?

Enlightenment has been installed and works on both of these architectures, and while the distributions haven't caught on to the speed of Enlightenment development in the past, there are now maintainers for the various higher level packages. Please go to the Redhat or Debian sites and download or use your favourite net-based variations on your update utilities (dselect or rpm). For others using distributions with a similar library basis to these (ie, DEB or RPM files make up your base libraries), you can make use of these sites as well.

As far as I know there are no .tar.gz versions of a recent (E14+) Enlightenment binaries available for Linux-based "alternative" architectures, nor ones for Solaris (Sparc or Intel), Digital UNIX, or HPUX. I would be overjoyed to hear otherwise and pointers as to where to find them.

For those where these choices offer only partial solvency of your difficulties, the best we can do is point you towards:

(Although I would fill in this area with the information for Alpha processor Enlightenemnt binary RPMs, I can't, because my mail client apparently ate a wad of mail, including one with the address.)

2.4 Beta isn't daring enough for me. Are there snapshots anywhere?

Yes, there are. There is one major structural change in Enlightenment as of the E15 CVS snapshots: the internal portion of it that controls theme parsing has diverged into a full library called StringList. You must get this, a snapshot of both Imlib and Fnlib that hopefully match as closely as possible the same date, and the latest Freetype TrueType engine (available from from Freetype site at www.freetype.org. Additionally, you will need an up-to-date autoconf, automake, and libtool and a compiler from the GCC family.

Why would you want to try these versions out? Even without a penchant for bug-hunting, you might end up finding more features, the self-same bugs gone, and a number of other subtly changing things to brighten your mornings. They are provided because of growing community support and desire in the latest hot-off-the-presses development cycle. You must have the new (v. 1.1) version of Freetype as the previous (v. 1.0) version will not work.

Freetype: v. 1.1.0 [ PPC RPM ] [ TAR ]

And yes, the snapshot really is  5MB now, as Raster has included copious dribbling TrueType fonts to show Enlightenment off with. And yes, Fnlib is still used and has not been abandoned by any means; contrawise, more choices have been added for more people.

New features include a prototypical iconisation and truetype fonts for use by Enlightenment. More can be found in the New Features question or by reading Themes.Org's Daily ChangeLog, which is updated daily for your viewing pleasure.

2.5 How do I use GNOME CVS?

First, you must have CVS software in order to make use of it; this is included with most Linux distributions and vendor packages. Second, you must log in and check out the packages you want out of the CVS tree. Third, you will most likely want to keep updated.

There are many, many ways to do the second. My personal preference is to keep my CVS trees separated from each other by making an executable script file that I call that has its own personal environment space that is temporary. Note that everything can be written on the command line in whole or in part, and/or placed where your normal environmental variables are generated as well. If you choose to define this for your user, put it in your ~/.bash_profile if you use BASH, /etc/profile if you do not care where you put it, or in your favourite shell's hiding place for profiles.

These profiles will be in your home directory and can be found by typing :

ls -lArd .*|less -- yes, I kid you not, lArd.

This is what I use for updating. If you are using the information to place in your profile, ignore the second line and use it on the command line later. My /usr/local/bin/dognome file looks like this:

export CVSROOT=":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome"
cd /usr/local/src/cvs; cvs -z3 update -d

First, no matter what form you choose to use for updating, you must create a directory for your CVS (I call mine /usr/local/src/cvs), and check out the files you want by typing:

cd /usr/local/src/cvs; cvs checkout imlib e fnlib stringlist glib gtk -d

This will create a number of subdirectories and place your initial selections there for later updating. I simplify this process by putting the above script in /usr/local/bin/dognome and typing chmod +x /usr/local/bin/dognome. Then all I have to do thereafter, is type dognome for GNOME stuff, and transparently use other scripts for other CVS repositories. For those who don't like loose scripts lying around, you can achieve the same ends by simply typing:

cd /usr/local/src/cvs; cvs -z3 update -d.

When all is said and done, compile and install it using the instructions.

2.6 How do I make Enlightenment my default window manager?

There are two general ways: either edit a configuration file that controls or defines your X sessions yourself, or run Enlightenment from your current window manager by typing enlightenment. In either case, Enlightenment will be the window manager that gets invoked on your next X session.

Please note that simply typing enlightenment without concurrently running an X server will not work in the same manner; for most users, this means that if you want this ease-of-use feature, you must type it from within an already-running window manager session. What Enlightenment tries to do at this point is find the startup script for you and add itself in just as you would, by looking for calls to other known window managers. as a deciding factor. You do not get much control from using it in this manner, and you will still have to learn how to edit your X startup script or wrapper if you want to use another window manager again, either because you like variety or if E does not suit your needs of the moment. It does not, however check every file on your system for window manager calls, but rather limits itself to your .xsession, .xinitrc, or .Xclients files. You need not worry about using this method as it will not destroy your current setup in your startup scripts, but rather "disable" them by commenting them out by prepending a "#" on each line. To return the functionality of booting other window managers with your scripts, you merely need to remove these "#" characters, and add them to the lines that call your Enlightenment-related portions. This normally amounts to commenting out "esd" and "enlightenment" in a standard configuration.

Specifying an initial theme other than the default one is not accomplished by using the default installation method. If you felt so inclined to maintain a more advanced setup, you may simply add enlightenment -theme theme-path-or-tarball-name in an appropriate place in the startup scripts you use to bring X up.

2.7 How do I know which X11 startup scripts to edit?

There are usually two ways of calling X: by using xdm or startx. Most people generally type their initial startup script's name and know which system to deal with. For those that boot up to X without an intermediary command line console, you are using xdm.

There are a number of places that each of these will look in order to execute a window manager upon starting up X, and in fact, if you switch from one method to the other, you could potentially have two different Enlightenment setups. You will no doubt see the overlap in system-wide configuration files. In the event you do not see a current window manager reference in the file(s) you edit, you will most likely see them in other files; these are listed in probably order of usage. This means that the first file (.Xclients for startx, .xsession for xdm) will be called first, and the other window manager references in the other files never executed. If these files do not currently exist on your system, create them unless you have previously used the first enlightenment installation method, in which case you should try to find the file that Enlightenment is called from. It is recommended to change the settings within the scope of a single user via their personal configuration files as opposed to the system wide ones, especially with regard to the xdm ones, as there are some implications that might not be apparent. For system-wide definitions, if these are your preference, preface a command with exec; with personal directory script includes, these are added by the main startup scripts.

If you use startx, you should probably edit either the .Xclients file in your personal directory, or the system-wide one if this is what you prefer, in /etc/X11/xinit/Xclients on most systems. For older XFree systems, the startup script might also locate and use .xinitrc first; this practice has apparently been discontinued in newer versions.

If you use xdm, you should edit either .xsession or .Xclients in your personal directory, or for the system-wide startup script, /etc/X11/xinit/Xclients or /etc/X11/xdm/Xsession.

2.8 How do I set up WM apps to run at startup?

You add them to the startup scripts just like any other application you would add. The only trick to it is to make sure that you add the programme calls before Enlightenment.

For a demonstrative example in case you've never done this before:

wmapp1 &
wxapp2 &
enlightenment

Notice that programmes that you want to run in the background are always suffixed with an ampersand (&). If this is not added, you will have a startup script that stops until the called programme is finished its completion or is stopped (with Ctrl-Z) and made into a background process (most likely bg 1). Since this goes against the intention of adding it to an automatic startup script, I suggest you place the ampersands in where they should go. ;)

2.9 How do I set up ESD for Enlightenment?

ESD itself is not added to your startup scripts by the previous method. You can do this by finding out which startup scripts you use, and adding the call "esd &" before the one to "enlightenment". This is important, because ESD must initialise itself before Enlightenment asks it to play sounds. Indeed, if called after Enlightenment, you will only notice sound the next time you log back in using xdm, but probably never notice it if using startx to beckon X hither as it is not re-entrant.

2.10 How do I set up ESD for multiple users using xdm?

Your xdm configuration files, scripts, and programmes are located in either /etc/X11/xdm or in /usr/X11R6/lib/xdm. There is one difference between setting up ESD for multiple users and one user, and that is the problem of xdm re-entrance and ownership of the sound device. This may seem ridiculous as the second part of the difference is why ESD was created in the first place, but hear me out. If you call ESD multiple amounts of times, it's going to complain about ownership of an existing programme, and this will happen if you run Enlightenment, because it boots ESD. ESD then does not die when Enlightenment leaves upon logout, and it remains there stopping any xdm sound effects you might like, as it depends greatly on who then has ownership of ESD who has ownership of the sound device, as xdm's pseudo-user runs all programmes within userspace for the user while logging in through xdm.

Are you with me so far? Good. The reason why this happens is really simple. You can set ESD to accept claims of ownership from anybody, but that might not be such a hot idea as it first sounds, on a machine with any access to any persons who you don't want to have access to a daemon. This means it has to be choosey about who owns it. While this can be controlled with esdctl lock and esdctl unlock, this still leaves you open some of the time, and you still have to edit something to cause this to happen. You could do this, and then grant ownership to the pseudo-user xdm generates, but then how do you get it back efficiently without killing it again and re-executing it under a different user each time you need to? Very, very messy, and very, very confusing.

The short of it is that there isn't any perfect solution to controlling what is yours on a networked (or "open") machine. This juggernaut of a problem can be reduced to a set of instructions that should work for everybody while maintaining some fairly good protection in the bargain:

What this should do is run ESD but once, from the moment that you start your X window session manager. The TakeConsole affair should readily make sure that the user logging in is the one in control of the daemon, and no other entity with userspace access can snatch it away from them and use it as a trojan for further activity, or a denial-of-service attack.

The above example also plays an initial sound file using esdplay, which is available if you compile ESD with the optional audio file library. Using Emusic or Replay as a substitute should work as well. If you insist on using a non-ESD conformant player for login sounds or music, you will probably have to scratch this setup, as you will need to use some trigger sequence in order to find out when to esdctl resume before logging in as a user while the other sound programme is hogging the sound device.

If you wish to add whatever special mood music only during a login session, you can implant your music commands into Xsetup_0, in the same directory as everything else. Yes, it will seamlessly mix with anything you also have as an introductory splash sound.

Of course, this isn't your only recourse, by any means whatsoever. The above method is not bullet proof, as somebody could theoretically start up ESD before you do on the first bootup if you have a networked machine, or request services from ESD if you choose to use esdctl resume, which is a current vulnerability (but which might be addressed in the future).

Alternatively, Ricdude, the author of ESD, recommends that you simply put the initial bootstrapping of ESD in your system's boot scripts as opposed to its X startup scripts. Most systems locate their boot scripts in the /etc/sysconfig; it is beyond the scope of this document to help you define where to put it. This should be adequately documented by your distribution or vendor. There are also front ends reportedly available for some systems to save you some time. The task of what to put in your startup scripts is exactly the same; in fact, the conditionality of the above Xsession file can ensure that you can switch between these setups, with only modification of the system's boot scripts being necessary. Just add a call to esd.

2.11 What do I do if Enlightenment doesn't can't connect to ESD?

If you have a slower machine, the chances are high that the time Enlightenment waits for ESD to initialise itself is not long enough. You can diagnose this by its common symptoms:

The solution to this is to set a large enough time delay in your startup script placed so that ESD has enough time to properly initialise itself before Enlightenment is executed. A suitably simplified example of what I'm referring to follows. Please note that you can change the value of 5 to some lower number if you get consistently long enough wait results for ESD to initialise; this numerical value is measured in seconds. If your startup scripts involve loading a number of other clients, you can also judicially place them between the calls to ESD and Enlightenment instead, to better use your machine's idle processor cycles.

esd & sleep 5
enlightenment

2.12 How do I use other sound programmes with ESD? Why does it grab the sound device for itself?

ESD's purpose is to play sounds using a consistent interface to the sound device, in this case, either /dev/dsp or /dev/audio. All other programmes need to do the same, and this brings about the problem of who controls it and when. ESD will seamlessly mix sounds together and act as an intermediary to your sound device. In order to do this, it must control the device in question at all times, which would otherwise be the natural method for each programme, only centralised and not as chaotic.

There exist only two solutions if you still wish to using that sound programme you want to use: either pipe it through ESD itself using esdcat, or to temporarily turn off ESD's ownership of the sound device, and possibly re-enable it at a later time. It is obviously preferable to keep the mixing ability of ESD, especially considering the fact that Enlightenment can use it for its desktop sounds without the temporary loss of use of your other sound programmes, as would normally happen when two or more programmes want ownership of the sound device at the same time.

There is, however, one invisible disadvantage that might become noticeable on some systems when using pipes to bypass a favourite programme's inability to detect and use ESD: there might be a slowdown due to the nature of data being pushed along the data bus by the pipe. On most systems, this might only be apparent when you push your system in other ways at the same time; on others, the situation might be altogether different.

As it happens, both of these functions, and more, are easy:

2.13 Are there any ESD-related software packages that work better than turning ESD off?

Yes. Natively supporting ESD applications naturally promote a better supported and more stable system. While other <@@ref>esd_othersolutions exist, it is still not substitute for programmes that completely understand each other's system of behaviour and possible idiosyncracies, the most obvious of which are MPEG players that don't realize that they don't need an "unbusy" sound device in order to correctly.

Emusic and Replay are both ESD-compatible sound players, and as feature rich as the well known x11amp, and can handle several different audio formats you would normally use. They preclude the necessity of having to use the other non-compatible sound players, and this singular ability gives you the freedom of a seamless mixable device without the mess of pipes or conflicting sound players vying for control of your hardware.

Another alternative is to get the sound library that ESD suggests when compiling it, and thereby getting another programme that works from the command line called "esdplay". Note that ESD will not compile this programme without the required sound library, althrough it will tell you where to get it if it isn't present on your system at compilation.

2.14 What programmes use ESD for sound?

These are programmes that use ESD (the Enlightened Sound Daemon) as part of their sound device support. Other (more unaware) programmes can be used with pipes connected to ESD and these are unlimited in scope. Although there are few programmes that directly use ESD, you will find almost all bases that you would use sound for are covered.

2.15 What kinds of sound architecture does ESD support?

Right now, many of the hardware interfaces are experimental, untested, or both. However, stereo sound cards using a standard Linux kernel driver work. While it aims at being as cross-platform compatible as possible, many architectures seem to be severely under-represented as a userbase in sending in bug reports and development support. There is a known problem with big endian ESD servers and 16 bit sound bites being cached, which can lead to some interesting spontaneous remixes. Current architectures that are under development are:

2.16 How do GTK themes differ from Enlightenment themes?

GTK themes have absolutely nothing in common with Enlightenment themes. While Imlib has a requirement for GTK, this is incidental to Enlightenment's usage of Imlib and is only part of the Imlib package so that it may also be integrated into the GTK widget set. Enlightenment does not make use of GTK, or GTK themes. ConfigEdit, however, is included as part of the Enlightenment package, and does as it is at heart, a GTK application for theme modification. In short, you do not need GTK themes to use Enlightenment.

If you like the look of the screenshots that show a thematic touch with GTK widgets, then go get them, install them, and have fun. Strictly speaking, they have nothing to do with Enlightenment and is not supported by its developers as part of the Enlightenment package. For an example of what GTK themes really look like, Technoir's "Hand of God" theme from the screenshots section will show you.


Next Previous Contents