This series started off as being about customizing some common Linux desktops (Xfce, KDE, Gnome 3, Cinnamon, MATE, and LXDE). Then the previous post looked one layer lower, at the Openbox window manager. Now I am going even further off the beaten path, to look at Enlightenment.
Let's start with some disambiguation. Enlightenment is sometimes referred to simply as "e". If you stare at the logo for long enough, you can see the "e" in it. (If you hold it close to your face and stare at it, you might see a deer jumping over a log). Sometimes the specific version number is added to this, so it is referred to as "e17", "e18", etc., up to the latest release "e20". In the end, it's all Enlightenment.
For purposes of this blog post, I will be using Sparky Linux 4.2 Enlightenment for examples. I am aware that the Sparky Linux desktop is not exactly the standard Enlightenment desktop, but I believe that it is more than adequate for my purposes here. My recent post about Sparky Linux provides information about downloading, installing and initial configuration of this distribution.
Like most Linux desktops, Enlightenment is made up of a number of components:
Menus: A text-based, grouped, sometimes multi-paged cascading list
Shelves: Containers to group items (usually gadgets) around the edge of the screen
Gadgets: A small application which is visible either on a shelf or directly on the desktop
Modules: The 'guts' of a gadget, this is the part which actually does the work
Virtual desktops: Not technically a part of Enlightenment, but important in understanding and using it
In order to configure and customize Enlightenment, we will need to understand those components, how they work and how they interact with each other.
Since I started out every other desktop customization by changing the wallpaper, I will run quickly through that for Enlightenment as well. Click anywhere on the desktop to get the Enlightenment menu, then click Settings and Wallpaper.
This control actually comes up in Basic mode, click the Advanced button to get the view shown here. You can select pretty much any picture to be used as the desktop wallpaper, either from system-defined images or your own pictures. That's pretty much the same as we have seen before with other desktops.
The interesting thing here is the part which showed up when we clicked Advanced, just below the wallpaper image. You can assign one wallpaper to all desktops, or only to the current desktop, or - this is the good bit - to any desktop on the current screen. That's a nice touch if you have multiple displays.
Ok, that's enough about wallpaper - it's boring, as usual, although the bit about desktop-specific or display specific wallpapers was not so bad. But in the process of getting to the Wallpaper Settings control, we got a look at an Enlightenment menu, so lets look more at that.
One of the things that Enlightenment developers and users like to emphasize is that the menu is always easily accessible. You can bring up the Enlightenment menu by (left-)clicking on the desktop, as we did above, or via a menu gadget on a shelf. As it happens, the Sparky logo icon at the left end of the bottom panel in the screen shot above is just such a gadget.
The main Enlightenment menu consists of the following items:
Applications - this is a fairly standard/traditional category/cascading menu. It differs from most that we have seen in the previous posts of this series in that it can have multiple cascaded levels of menus and items.
Navigate - A menu-based cascading list of the directory hierarchy
Run Everything - The Enlightenment run dialog, similar to Gnome Do.
Take Screenshot - What it says.
Desktop - Select/configure virtual desktops and Shelves
Windows - List/select open windows
Lost Windows - find lost sheep.
Enlightenment - Information about and management of Enlightenment itself.
Settings - The heart of modifying/customizing Enlightenment
System - Logout/Reboot/Shutdown/Suspend/Hibernate
One of the most interesting items in this menu is Run Everything, which is... well, it's sort of the Enlightenment version of a Swiss Army Knife.
The initial display of the Run Everything window looks like this. At first glance it looks like it might be a graphical menu hierarchy browser. But on closer inspection, you see that there are a few things there which aren't part of the Applications group, such as Input and Menus. If you look at the bar across the bottom of the window, you will probably start to get an idea of what Run Everything actually is.
Run Everything is a graphical tool for application launching, window management, settings management and plugin management. In its default startup mode, it is showing all of those things at once, but by selecting the individual items from the bar across the bottom of the window, you can narrow the view to only the items in each category.
I'm not going spend any more time on Run Everything here, because my objective is configuring and customizing Enlightenment, not learning to use it. But I would strongly encourage you to take some time and learn to use Run Everything. It is one of those things that starts out as 'what the heck is this?', and then the more you learn about it, the more useful it becomes.
To make access to frequently-used items more convenient, Enlightenment allows you to arrange them around the edge of the desktop in containers which are called Shelves, very much like panels in other desktops, or even to place them directly on the desktop itself. I am going to look at shelves first.
Enlightenment allows you to have any number of shelves (well, not literally any number, but a heck of a lot of them - I think the maximum might be 1,728). They are arranged around the edge of the screen, and can be placed either in the middle of any edge or at any corner; when they are placed at a corner, they can be oriented either horizontally or vertically. Shelves can also be defined as appearing on every virtual desktop, or only on a specific virtual desktop.
Shelves work very much like Panels in the other desktops we have seen. They are there to contain other kinds of objects, which can be menus, launchers, controls or indicators, and which are collectively known in Enlightenment as Gadgets. A Gadget is the visible face of an Enlightenment Module, which is what actually gets the work done.
Sparky Linux Enlightenment initially has one bottom Shelf, which contains a menu button (identified by the Sparky logo at the left end of the shelf), some application launchers (File Manager, Web Browser, System Upgrade and Terminal Emulator), and some controls and indicators (Audio Mixer and Keyboard settings). You can't see it in the screen shot at the beginning of this post, but there is also a Tasks gadget on this shelf, which will add an icon for each open window, that wasn't visible because nothing was running.
If I open GIMP and Iceweasel, for example, the Shelf looks like this, with icons for the two open windows. Clicking those window icons does what you would expect, iconifying or opening the window, but there is even more to Tasks. Right-clicking on the icons gives you a list of other operations that can be performed on the window itself or its contents.
To modify (or customize) shelves, go through the Menu and choose Settings and then Shelves. This brings up the Shelf Settings dialog, which initially presents a list of currently defined shelves. Hey, wait a minute! That shows two shelves defined, and I thought there was only one on the Sparky desktop? Keep an eye on this, the explanation is kind of interesting.
Each shelf has a unique name (no bonus points here for originality with "shelf" and "shelf #1"). I will give them more indicative names in a minute, but first I need to figure out what is what with the two shelves.
The options across the bottom of the window are pretty obvious. Add or Delete (we'll do that in a minute), Rename (not ready yet), Contents and Settings. Those last two look promising, so let's look at the Contents of "shelf".
The Shelf Contents window contains a list of everything that could be contained in a shelf, and indicators to show whether each item is actually visible or not. Scrolling through the list, I can see that this shelf has a Start (menu), something called an iBar (I'll come back to that), a Mixer and a Keyboard. That must be the bottom shelf.
Now check the contents of "shelf #1", and you'll see that it only contains a clock. Oh! Ok, a clock! That means the clock at the top of the screen, which I assumed as on the desktop somehow, is actually on a shelf. Hmmm.
I will leave it as an exercise for the reader to select and rename these two shelves now. Even something boring like "Top shelf" and "Bottom shelf" would be an improvement; I chose "Clock shelf" and "Task shelf" for mine.
The contents of a shelf can be modified by selecting gadgets in the Shelf Contents window, and then clicking either Add or Remove. It would be nice if double-clicking a gadget would toggle the state, but it doesn't work that way. Oh well.
The visible items in a shelf can be rearranged by simply right-clicking anywhere on the shelf or its gadgets, and then choosing Begin Moving Gadgets. You can then drag things around until you get them in the order you want, then right-click again and choose Stop Moving Gadgets.
If you try that yourself, you will find that all of the launcher icons move together - you can't rearrange them this way. That is because they are all contained within an iBar, which is a special gadget that is made to keep launchers together. To move the launchers within the iBar, you have to right-click the iBar, choose iBar then Contents, and in the iBar Applications window choose Order. That's a bit of a pain. Perhaps more than a bit.
Speaking of the iBar Applications window, this is where you have to go to add or remove application launchers as well. In the Shelf Contents window you can only add or remove an entire iBar, you can't change the contents.
As I mentioned above, shelves can be moved around to any edge or corner of the screen, so let's try that now. Go back to the Shelf Settings window, select the bottom shelf and then click Settings at the bottom of the window.
The terminology here is not great, because we have two windows in a row which are both titled Shelf Settings - one refers to all shelves, and the other refers to one specific shelf. The one we are concerned with here is the shelf-specific one.
Select Position in the bar across the top of the window. The top/bottom/left/right selection points are pretty obvious; then for each corner there are two selection points, one for horizontal alignment and the other for vertical alignment.
If I choose the bottom left corner with vertical alignment it comes out looking like this. That's pretty nice, and I like the concept of having either vertical or horizontal orientation out of a corner.
Ok, let's have a bit of fun with shelves. Regular readers here probably know that I don't like to have menus, launchers and controls all together in one panel (or shelf in this case). I also happen to think that controls and indicators belong at the top of the screen, while launchers and task managers can go at the bottom. So I'm going to do something about that, as an exercise in what Enlightenment can do.
Going back to the Shelf Settings window, all I have to do is click Add to create a new shelf. I get a chance to name it (I'm going to call this one Control Shelf), then it will be created as an empty shelf, placed somewhere around the edge of the screen, and the Shelf Contents window for it will be brought up. This is going to be my control/indicator shelf, so I put the System gadget on it, which gives me a Logout/Reboot/Shutdown window, and a Backlight gadget so I can control the screen brightness, and a Cpufreq gadget just for laughs.
I am also trying to arrange things so that the bottom shelf is only application launchers and task/window/status icons, so I want to move the Start menu and the Mixer from that shelf to my new control shelf. That's easy to do, just right-click on those gadgets, then under the gadget name choose Move to and choose the new control shelf as the destination.
Finally, the keyboard/language icon is still on the bottom shelf, and even though it is a nice bright Swiss flag, I don't need it any more. There's no sense in moving it, because I don't change my keyboards, so all I have to do is right-click it, and then again under the gadget name this time choose Delete.
I've just about got it done now, the only thing left to do is put the new shelf where I want it, and make it Autohide. Both of those are done through the Shelf Settings control, I think it is pretty obvious from the examples above how to do that.
I would also like to have multiple virtual desktops to work with, which means that I will have to add a Pager (virtual desktop selector) to the Task Shelf. There's nothing difficult about that, just go back to the Shelf Settings window, select Contents, scroll down to Pager and click Add.
That puts a Pager gadget on the shelf, but as you will see from the icon there is only one virtual desktop available. Not terribly useful. To create more virtual desktops, right-click on the Pager icon and click Virtual Desktop Settings. The horizontal and vertical sliders allow you to configure however many virtual desktops you want, arranged in a row, column or grid.
When you click OK or Apply the Pager display on the Shelf will be updated to show the desktops you have selected. Now with multiple virtual desktops defined, you can go back to the configuration above and specify different wallpaper for each desktop, and different combinations of shelves - some, such as the Control Shelf you might want to have on every desktop, while others such as Application Launchers you might want to be desktop-specific.
Oh, there's another interesting and useful feature - the Tasks gadget can be configured to show icons only for the current desktop, or for all desktops.
Finally, you can put gadgets directly on the desktop itself if you want. I usually don't do that, because of the amount of clutter it leads to, but there is at least one useful case in our current example desktop. It seems a bit dopey to me that we have a top shelf that contains nothing but a clock. I suppose the one advantage of this is that you can autohide that panel so that it gets out of the way... but then, just having it on the desktop and opening a window over it also gets it out of the way, doesn't it? Hmmm.
Well, anyway, what I want to do is move the clock from that shelf to the desktop, then get rid of the shelf. Again, not a problem. Right-click the shelf, choose the Clock and then Move to and select Desktop. I prefer analog to digital clocks, so right-click the desktop clock and choose Settings, then select analog. While I'm there I will move the clock where I want it on the desktop (top right corner).
Now go back and right-click the shelf again, and this time choose Clock Shelf and then Delete. It puts up an "Are you sure" window, and after confirmation it deletes the shelf.
If you are the type who likes to have launchers and such on the desktop, you can do the same thing with the iBar gadget, either Move it from the shelf to the desktop, or go to the Menu, Desktop, Change Gadgets and add an iBox. You can then place it as you want, and add/move/delete the content in the same way as we did above for an iBar on a shelf.
One important note here, though. Unlike wallpaper and shelves, which can be made desktop-specific, any gadgets you place on the desktop will be visible on all desktops, always. That kind of puts a crimp in the purpose-specific virtual desktop customization, so you might want to avoid this.
Summary. After all of the pushing and shoving, clicking and moving, I have finally got an Enlightenment desktop that I am happy with.
Of course, for normal use I have autohide enabled for both shelves.
The bottom line here is that Enlightenment is amazingly configurable, and although it is different from other Linux desktops in a lot of ways, it is well designed and it is very consistent about the way things work. I think that makes it pleasant to use and easy to customize. If you are looking for something different in a Linux desktop, Enlightenment is worth trying.