Enlightenment

ArticleCategory: [Choose a category for your article]

Applications

AuthorImage:[Here we need a little image form you]

[Geoffrey W. Corey]

TranslationInfo: [... and translation history]

original in en Geoffrey W. Corey

AboutTheAuthor:[A small biography about the author]

Computers is my hobby and my profession, however my life is my family.   I'm the proud father of a 4-year old boy Joshua and 10-month  old twins, Aaron and Ryan.   Jennifer, my wife, is the best and supports me in my strange career in computers.    I currently work at a small outsourcing firm ClientLink and specialize in very large databases and object oriented analysis & design.

Abstract:[Here you write a little summary]

Enlightenment is a highly customizable window manager for Linux. This article discusses the features, installation, and customization of the Enlightenment window manager. The current release of Enlightenment is still considered a development release. The intended audience for this article should have a good knowledge of developing and compiling programs on Linux.

ArticleIllustration:[This is the title picture for your article]

[Ilustration]

ArticleBody:[The article body]

Introduction

Enlightenment is a graphic intensive window manager.   The authors of Enlightenment have provided a highly customizable window manager that allows users to configure every aspect of a windows appearance.   Gone are the days of the square pane windows that many other operating systems have dictated.   Enlightenment has put the fun back in computing!    You want to make folks envious at work, just load up the default theme that comes with Enlightenment.   You want them to flipout, then load up "Aliens" or the "Neuromancer" themes.  These are just two out of the 20 or so themes availlable to choose.   All of the themes created have been made available at e.themes.org. By the way, www.themes.org contains a lot of themes for other window managers, too.

Word of warning,  you'll probably need a decent processor and graphics card to get the most of this window manager.   I currently run Enlightenment at home on a Pentium 90 with a Vision 864 S3 graphics card with 2mg of memory.   I would consider this setup as the bare minimum requirement.   However there are themes for lower resolution bandwidth such as the "Executive" theme.

The following is a thumbnail image of the default theme for Enlightenment.
Located on the upper right-side are the desktop buttons.   Clicking on these buttons will allow you to bring up applications such as xterm, netscape, gimp, and others.   If you click on the last three buttons, a drawer will open to the right and have thumbnail size images you can select for your background. 

Located on the lower left-side are the virtual desktops.   Clicking on these will allow you to jump to the different desktops.   You will notice that the image on the virtual desktop will resemble the layout of windows on that desktop.   You can actually move windows in the virtual desktop by dragging them to the desired position. 

Located on the upper right-side is the icon box.   When you minimize an x-window the icon is placed in the icon box.   You can scroll through the icon box if you have filled it up by clicking on the scrolling buttons located above and below the iconbox.    Icons can be expanded by dragging the icon onto the desktop. 

The middle of the screen you can see a popup menu.   Popup menus can be viewed by right, middle, or left clicking on the desktop. 

The Default Theme 
Enlightenment Screenshot
 
The Obsidian Theme 
Obsidian Theme
There are a lot more interesting add-ons for Enlightenment.   Explore http://www.enlightenment.org and check out Eterm and Eplus.   Eterm brings you a fancy version of rxvt and Eplus adds just about everything else!   Eplus is comprised of a cd-player, email notifier, performance monitor, and a slew of meaningless lights to dazzle your co-workers!    Eplus's look and feel can also be customized similarly to Enlightenment. Other programs have been created in the spirit of Enlightenment.  One must download is eMusic. It is a jazzed up mp3, MOD, and cd-player.  In true Enlightenment fashion the look and feel of the player can also be configured.  (UPDATE: can't seem to find it anymore :(  ). freshmeat.net/appindex/x11/enlightenment%20applets.html lists a lot of other apps for the E window manager.
 
Here is a thumbnail of the Obsidian theme. Here you can see how different this theme is compared with the default theme. The bottom row are your virtual desktops. The second row contains your menu icons, icon bar, and Eplus

Creativity in computing is not dead thanks to the individuals that bring Linux alive! 

 

Installation

Installation can be a bit tricky if you do not know your way around Makefiles and library paths.    Mind you that Enlightenment is a development release.  I have successfully installed Enlightenment on Debian 1.3.1 system and RedHat 5.0.    Debian was relatively easy since the CD contains jpeg, png, tiff, and z libraries.   Enlightenement requires Imlib which uses those libraries.   It was a bit more challenging under RedHat since the C libraries were updated so I will talk about the RedHat installation here.    There are more detailed installation instructions located at the Enlightenment web site.  Please follow the instructions on the web page to insure the required libraries are installed on your system before compiling/installing Enlightenment.  I will briefly explain how I have installed Enlightenment and discuss some of the work arounds for some of the problems encountered.

First, you will need to get the latest libraries for Imlib at ftp.enlightenment.org/enlightenment/enlightenment/libs/.    Most problems will occur if you install the latest libraries and still have the old versions laying around.   RPM's are available for all libraries.    Check /usr/lib for duplicate libraries as it pertains to z, tiff, jpeg, png, and Imlib.    Clean it up so only the latest are installed.

Now there is an RPM for Enlightenment.   You can try it and install the RPM and see if it works.   To start Enlightenment, edit your .xinitrc file in your home directory, and add the following line:

exec /usr/local/enlightenment/bin/enlightenment

Save the file and then enter the following on the command line and hit return.  Note: Enlightenment has spectacular graphics and is best to run in the highest resolution with the most colors.   16-bit color really should be the minimum.

startx -- -bpp 16

Now, if Enlightenment fails to execute, you should see the reason at the end of the X windows startup info.  You can either figure out what the deal is, or try and compiling the source yourself.

Compiling the Source

After you untar the source all you need to do is read the INSTALL file on compiling.   In short,  1) xmkmf -a  2) make install.

Now if linking failed because it didn't find png, jpeg, or tiff commands then edit the Makefile and search for LOCAL_LIBRARIES and make sure it looks like the following:

LOCAL_LIBRARIES = -lImlib -ltiff -lgif -ljpeg -lpng -lz

Do a 'make install' and everything should work fine.   If it doesn't, then check and see if you have eliminated duplicate libraries from /usr/lib  and that the libaries are accessable from the Makefile.

Customizing Enlightenment

Adding a New Theme

Ok, you downloaded a theme from e.themes.org . . . . Now what?   Well, copy the file to /usr/local/enlightenment/themes.   To startup under a different theme, just change your .xinitrc file located in your home directory and add the theme to the command line.   For instance, we download Neuromancer from the archives.   Edit .xinitrc file in your home directory and add the -theme parameter and the file name of the theme.  In this case your .xinitrc file located in your home directory would have the following line to startup enlightenment with the Neuromancer theme:

exec /usr/local/enlightenment/bin/enlightenment -theme Neuromancer

Now just startup X in 16 bit mode.

startx -- -bpp 16

What enlightenment does is looks for a file called Neuromancer or a directory called Neuromancer in /usr/local/enlightenment/themes directory.  As you can see, each theme is very unique and allows quite a bit of creativity by the theme authors.So what is a theme?   Well, the theme file you downloaded is really a compressed tar file (.tgz).   Usually the extension is left off the file, however you can decompress and untar the file.   Next we will do just that and try to customize some of the menus and buttons in a theme.

Customizing a Theme

There is a utility called Econfig that is TCL/TK based to edit the config files for a theme. (UPDATE: can't find it anymore. Maybe it's part of the Enlightenment package now?)   We will go a bit deeper and just use good old 'vi' editor. Themes are located in  /usr/local/enlighenment/themes and are nothing more than tarballs (.tgz) files.    Unpack and uncompress DEFAULT theme do the following:
cd /usr/local/enlightenment/themes
$ cd /usr/local/enlightenment/themes
$ mv DEFAULT DEFAULT.tgz
$ tar zxvf DEFAULT
$ cd DEFAULT
$ ls
-rw-r--r--   1 1000     bin         2929 Jul 25  1997 MAIN
-rw-r--r--   1 1000     bin         7015 Jul 31  1997 buttons
-rw-r--r--   1 1000     bin         952 Aug 29  1997 control
-rw-r--r--   1 1000     bin         843 Aug 12  1997 cursors
-rw-r--r--   1 1000     bin         2885 Jul 29  1997 desktops
-rw-r--r--   1 1000     bin         510 Nov 18 17:12 exec
-rw-r--r--   1 1000     bin         567 Jul 25  1997 fx
-rw-r--r--   1 1000     bin         3239 Jul 25  1997 icons
-rw-r--r--   1 1000     bin         1074 Jul 25  1997 infobox
-rw-r--r--   1 1000     bin         6392 Jul 30  1997 keys
-rw-r--r--   1 1000     bin         41382 Aug  6  1997 menus
drwxr-xr-x     4 1000      bin         2048 Jul 26  1997 pix
-rw-r--r--   1 1000     bin         452 Jul 25  1997 root
-rw-r--r--   1 1000     bin         1658 Aug  8  1997 status
-rw-r--r--   1 1000     bin         530 Jul 25  1997 text
-rw-r--r--   1 1000     bin         13222 Aug 12  1997 windowstyles

The file MAIN is what enlightenment reads first.   If you view this file you will see that it calls other files to setup the various parts of Enlightenment.  Most other themes follow the same naming convention as the DEFAULT theme.
 
 
Filename Description
MAIN The file enlightenment loads during startup.   This file may include other files for customizing the various layouts for windows, menus, buttons, desktops,  cursors, icons, etc.
buttons Defines the position, look, and behavior of buttons located on the desktop.   For the DEFAULT theme, this is the row of buttons on the upper left side of the desktop.
control Defines window manager behavior.   This includes items such as automatically bringing a window to the top if it has had focus for a period of time.    Go ahead and edit the file and check it out.  It has execellent comments on the features provided.
cursors Defines the appearance of a mouse cursor.
desktops Defines the look and position of virtual desktops.  For the DEFAULT theme, these are the images on the lower left side of the desktop.
exec Defines programs to be automatically started when enlightenment is started.
fx Defines special effects enlightenment can provide.   This is a fun file, go ahead and edit and change drop-shadows from off to on.
icons Defines the box that will hold iconified programs, that is, when you minimize a program the icon for the program will show up in the iconbox.  For the DEFUALT theme the iconbox is located on the upper right-hand side of the desktop.
infobox Defines the startup information box.   This is the logo you first see when enlightenment is started and begins loading the configuration files.
keys Defines hot-keys and their behavior.   You can customize this file and have function key F5 start Gimp if you want.
menus Defines the popup menus and behavior.  These are the menus you see when you right, middle, or left-click on the desktop.   We will explore customizing the menus a little later.
pix This is a directory where all the images are located. 
root Defines the background image.
status This defines the television screens you see popup on the startup screen when enlightenment is loading the configuration file.
text Defines the font used for text.
windowstyles This defines the window boarders, buttons, and behavior for all X-windows.
 

Customizing Menus

Now, usual customization work for popup menus is the 'menus' file.    You may just want to change the text and action exec line for an existing item that you want to change at first.   Many of the menu items do not exist on my machine and I can reuse the spot for something else.   Now eventually you'll want to add something.   Here, you might want to get a calculator.

Note: Before you change any of the config files, BACK THEM UP!!!!

To append a menu item, just cut and paste a begin menuitem thru end to the end of the list (within the begin menu and end).   For example,  edit menus and search for 'Random'.   This is the menu Random Garbage that appears when you right-click on the desktop.  Now search for 'Xsnow' and it will bring to the bottom of the 'Random Garbage' menu list.   Copy the begin menuitem thru the first end (right after 'action exec xsnow') and append before the last 'end'.    Now change Xsnow to Fonts and change .action exec xsnow' to 'action exec xfontsel'.   Now the tricky part has to do with location.   You'll notice that Xsnow is 0 312 and size is 253 24.   Don't worry about the first number. However if you divide 312 / 24 you'll get 13.   That's because Xsnow is the 14th menu item (starting with menu item 0). So for Fonts we need to add 24 to 312.   So change 312 to 336.    We also need to change the number of items from 14 to 15 (two lines above 'Random Garbage' text) and increase the menu dimensions by 24, so change 'dimensions 253 336' to 'dimensions 253 360'

Of course the alternative is running Econfig and using a X-windows interface.   I have not tried Econfig yet, but it looks to me like if would make the following procedure less painful.

Original menus excerpt

------- omitted text -------
begin menu
  name root3
  type custom
  dimensions 253 336
  popupdist 126 12
  items 14
  begin menuitem
    text Random Garbage
------- omitted text -------
 begin menuitem
    text Xsnow
    type element
    location 0 312
    size 253 24
    text_location 5 5
    text_size 243 14
    image unselected pix/menu_plain_1.ppm  shapemodeon 255 0 255
    image selected   pix/menu_plain_2.ppm shapemode on 255 0 255
    action exec xsnow
  end
end
-------- omitted text -------

Modified menus excerpt

-------- omitted text -------
begin menu
  name root3
  type custom
  dimensions 253 360
  popupdist 126 12
  items 15
  begin menuitem
    text Random Garbage
-------- omitted text -------
  begin menuitem
    text Xsnow
    type element
    location 0 312
    size 253 24
    text_location 5 5
    text_size 243 14
    image unselected pix/menu_plain_1.ppm  shapemodeon 255 0 255
    image selected   pix/menu_plain_2.ppm shapemode on 255 0 255
    action exec xsnow
  end
  begin menuitem
    text Fonts
    type element
    location 0 312
    size 253 24
    text_location 5 5
    text_size 243 14
    image unselected pix/menu_plain_1.ppm  shapemodeon 255 0 255
    image selected   pix/menu_plain_2.ppm shapemode on 255 0 255
    action exec xfontsel
  end
end
------- omitted text ------

Okay, to see your handywork, left-click and select 'Exit Options' and then 'Restart'.   Enlightenment will reread the config files and restart.   During the restart you current session is kept so you will not lose any windows you currently have running.    Once Enlightenment restarts, do a right-click on the desktop and you should see Fonts on the bottom of the list.   Give it a try!

Modifying buttons is in similar fashion.   Go ahead and explore the configuration files, however remember to back them up before you make changes!

Future Of Enlightenment

The future of Enlightenment will be GNOME compliant. The authors, a.k.a Mandrake & Rasterman are currently rewriting Enlightenment from scratch for DR0.14.   Rasterman is has been adding GNOME compliance since he is currently working on the GNOME project at Red Hat Labs.   A demo of developer release 0.14 has been released and does not include configurability.   The demo was to show off some of the new slick features of DR0.14.    At the time of this article, DR 0.14 should be released unless unforeseen problems arise.