This Tutorial can also be viewed as webpage here:
or downloaded as a PDF:
Elive on it's introduction, made quite a splash. A distribution that excelled in the way the E17 desktop environment was presented. Snazzy with great optical effects whilst being fast and stable.
Elive Stable with its E17 Desktop
That was more than a decade ago and the Stable version from those days is only available in it's original 32 bit Debian Wheezy base, which alas isn't supported anymore. While still usable in it's own way, age is beginning to show especially when it comes to having a modern browser available.
The world and Elive have moved on and now there are 64bit as well as 32bit versions that are built on Debian Buster: Elive-Beta-3.8.19 ... and counting.
Although the current naming scheme (Beta) does suggest there are bugs and stability issues, this certainly is not the case.
Elive Beta is a fast, pretty and stable distribution well worth downloading and using on a daily basis.
It has to be noted that the current iterations of Elive do not run the E17 desktop anymore.
E17 itself isn't maintained anymore and being replaced by Enlightenment (which actually is E17's right name) by version E24, which is still under heavy construction and prone to unexpected changes.
To remedy this the Elive team decided to use the trusty E16 desktop which is still actively maintained, perfectly stable and modifiable to a great extent.
Thus offering a stable, fast and intuitive desktop for your daily work-flow whilst continuing to integrate and test Enlightenment behind the scenes.
There were some hurdles to be taken to get E16 into a shape that would be acceptable to contemporary desktop demands, of which the greatest is that E16 isn't actually a comprehensive desktop suite with adapted applications.
Finding and integrating external programs and applications and still create a comprehensive look and feel to the desktop is a continuing daunting task which lies at this article's creation.
The current default desktop that comes with the live/install image, uses Cairo-dock as panel and systray holder while E17's conspicuous desktop-pager has been replaced by two small and shade-able virtual desktops on the left hand side.
Elive Beta first start-up default E16 Desktop
Now while cairo-dock in it's own way is a formidable panel application I personally found it to be too obtrusive, resource hungry and Gnome oriented. Almost a whole Desktop in itself, which is quite a feat but not what I expect from a "lean & mean" desktop panel that gets out of my way when working.
The two virtual desktops, each subdivided into six areas are a clever trick but I found that they actually confused me more often than not, making me yearn for the pager E17 had. The fact that the pagers could be shaded with a click was something that did appeal and gave whole array of new possibilities to discover.
So I decided to have some fun and see what I could do to get closer to my personal idea of what a minimal, lightweight desktop should be like and at the same time shed some light on the workings of E16.
As mentioned previously, the first thing to do is to remove cairo-dock completely. It will be in the way of other applications, especially with the area it reserves for icon magnification.
This removal is done by right-clicking anywhere on the dock itself or on one of the external iterations like the CD icon or the systray top left
and POOF! cairo-dock and all it's sub docks are gone.
Now you can continue from there and install and run other stuff but bear in mind that on a restart of E16 cairo-dock will come up again.
The easiest way to prevent it from coming up again is to simply stop it being run at start-up by editing the file that does just that. A file that we will need to be edit to add our own applications later on, so we might as well get acquainted with it.
The file resides in a hidden directory (a so called dot directory) which can be made to show up in your file manager by using the keyboard shortcut Ctrl + h combo. Hitting that combo a second time hides them again, which certainly helps to give a more uncluttered view of your home directory (aka $HOME).
The file we want is ""$HOME/.e16/startup-applications.list" and a double-click will open it in your preferred editor or "scite" editor as the Elive default.
Scite in action
As you can see "cairo-dock" is there as the last entry.
The easiest way is to simply "comment out" that entry by putting a # at the beginning of that line so that if you ever want to re-enable cairo-dock again you will only have to remove the # there.
- Now don't forget to "save" the edit before closing that file!
So having gotten cairo-dock out of the way we'll need to look for a replacement, that is if you want a dock, panel or systray icons.
The reality is that you don't actually need any of them to be functional on E16. A simple click anywhere on your desktop will open a menu offering the available applications.
A true minimalist might find that sufficient but personally I do have a few favorite applications I want easy access to and I find the systray icons very helpful in many ways.
So let's have a look at what applications show promise in that respect.
- Disclaimer: I know there are other options and applications out there and this is not a comprehensive study on which is the best. It's my personal preference, that's all.
Here's what I've been trying out:
First and foremost I found I wanted a taskbar that included the systray, much like most desktop environments do.
Luckily Elive has just that application available in the reposiries: "tint2"
It's easy enough to install.
Just double-click on your desktop to fire up a terminal and enter the following command there:
Which will prompt for a sudo password (that's your own login password) and subsequently install "tint2".
As a cairo-dock substitute I eventually found "plank" to be the most satisfying albeit I did contemplate having tint2 as the panel as well and I do use just that on my old Lenovo Yoga that only has one or two applications to run.
Installing plank is as straight forward as was tint2.
In the terminal:
will find and install it, bringing in all the needed dependencies.
Plank, like tint2 can be started from the menu, utilities category.
Plank will start with it's default configuration which is fairly plain but further on we'll customize this plank exactly to our needs. First we'll concentrate on adjusting tint2.
To start tint2 open the click-anywhere menu and in the Settings section find Tint2 Settings.
Which will open the tint2 configuration window.
Here's a short video on how to change some settings to your own taste:
To accommodate i.e give room to the pager (If it shares a space with the panel), "tint2" has to be set to a smaller size than 100% (I used 70%) to avoid overlapping.
In the video you can see me adding "app-launcher" to the launcher items. You will not have that available on your pristine Elive installation yet but don't worry, it's something we'll be creating later on.
Plank's content itself is easily customized by drag&drop, meaning you can drag items off it and make them disappear or adding them by right-clicking on a running application icon and opting to check "keep in dock",
The default plank installation comes with a few themes that can be found by right-clicking anywhere (but not on an icon) in the dock and holding the Ctrl key at the same time and then going into "prefererences".
Which shows there aren't really many options, necessitating a hunt for those on the net, as the Elive repositories don't really offer much in that section.
A wonderful growing collection of themes can be found on github:
Where, as the on-site explanation reveals is as easy as copying the contents of the Plank Themes folder there to $HOME/.local/share/plank/themes or to /usr/share/plank/themes for system-wide use.
After which your plank will have 100+ themes to test out and play with. Yay!!!
As promised we'll now handle the "app launcher" that could be seen in the tint2 video.
The thought that led to this is that I found it a bit dumb to have an icon on my panel that launches the same menu as single click on the desktop does.
I wanted something more intuitive and versatile whilst avoiding having to type commands in a terminal to start an app.
I found after contemplating "kupfer" for a while that "rofi" was the best candidate. Ultra theme-able through simple config files and plenty of themes available by default.
Again installation was as simple as
api rofi in the terminal but again the default theming, as with most apps was extremely bland.
After digging around I discovered the command
rofi-theme-selector which allows one to try out and view the available themes.
Eventually I opted for the "arthur" theme to run and altered the config of that theme file in "/usr/share/rofi/themes/arthur.rasi" to have it use two columns.
Which is described in the man-page for "rofi-theme", which is excellent documentation for anyone wanting to play around with the themes.
Eventually resulting in the following widget using the command
rofi -show drun
Allowing me to type a fuzzy search into a command or it's description and launch it with an Enter.
Having downloaded all the third party stuff we needed, let's get on with having everything up and running.
That's easy and we already hinted at that before. It requires adding the applications to our "$HOME/.e16/startup-applications.list" which can be done by editing that file in your editor and adding the apps, line by line.
The geeky and faster way is to simply use the following command:
echo "plank \ntint2" >> ~/.e16/startup-applications.list
- where the "\n" means newline and I've substituted "~" for the longer $HOME
There is a "thing" with plank, as well as tint2 that they require an app to have a .desktop entry in "/usr/share/applications/" albeit somewhere in your $HOME or a dedicated directory will suffice too.
Tint2 can be configured to add a custom directory containing extra applications next to those applications found in "/usr/share/applications" but they will need to be in the right .desktop format.
The same .desktop files can be dragged onto plank with full functionality.
Rofi, which we installed previously for instance, doesn't come with a .desktop file. We'll need to roll up our sleeves and do it ourselves.
We'll want to call it "rofi.desktop" obviously and it's content would be something like the following:
[Desktop Entry] Type=Application Encoding=UTF-8 Name=App Launcher GenericName=Starter Comment=Lightweight starter Exec=rofi -show drun Icon=/home/triantares/Code/Custom-Elive/gradient-icons/64/elive-logo.png Terminal=false Categories=System;
Where after "exec=" the command to run (including wanted flags) is put and "Icon=" is the path to the icon I use for it, but it can be any icon you want it to be.
If you want to, feel free to download and use my icon set here:
If you add this rofi.desktop file to /usr/share/applications/ (you will need "sudo" for that) it will also show up in your desktop menu as "app launcher".
Naturally you can do this for other "rogue" programs you downloaded or made yourself or even to check out why it doesn't show an icon in your desktop menu ..... or simply to change an icon that you find bothersome.
Let's have a quick look at a few of the options available:
Large pager on the left with plank and tint2
Single tint2 on top with large pager below
Pager top right with plank on the left and resized tint2
As my personal preference I use the excellent retrowave theme (which can be installed with the usual:
api e16-theme-retrowave) but I definitely want a proper E17 like big pager on the top right of the screen and also have the slide-in and -out function available. That'll need some customizing in the theme as it's oriented to the default setup only, something we are specifically trying to change.
To do that I'll need to alter retrowave theme in "/usr/share/share/E16/themes" or create and add my own.
The latter is the better option in the long run, as those edits in /usr/share will be reset to the default settings every time the theme is upgraded, losing all customization.
- This is just a matter of copying the theme to "$HOME/.e16/themes" and adding the customization and (for clarity) renaming the theme to something else like "Retro-Custom". That way you'll be able to recognize your own theme besides the fixed themes that are installed in /usr/share.
This is what I'm aiming for:
Semi transparent Pager slid open (keeping it on top of everything)
and slid back in.
As the current pager only allows for unshading/shading from left to right we'll need to add an option for up/down and the clickable bar underneath.
Here's what we need to do be able to have a pager that does just that.
- In the "$HOME/.e16/Retro-Custom/borders/" directory we add the file: "pager_bottom.cfg" which contains the following content:
__BORDER __BGN __NAME PAGER_BOTTOM __BORDER_SIZE_LEFT 1 __BORDER_SIZE_RIGHT 1 __BORDER_SIZE_TOP 1 __BORDER_SIZE_BOTTOM 10 __SHADE_DIRECTION __UP __CHANGES_SHAPE __YES __BORDER_PART __BGN __ICLASS PAGER_SHADE __ACLASS ACTION_SHADE __MIN_WIDTH 1 __MAX_WIDTH 99999 __MIN_HEIGHT 9 __MAX_HEIGHT 9 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_X_ABSOLUTE 0 __TOPLEFT_Y_PERCENTAGE 1024 __TOPLEFT_Y_ABSOLUTE -10 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_PERCENTAGE 1024 __BOTTOMRIGHT_X_ABSOLUTE -2 __BOTTOMRIGHT_Y_PERCENTAGE 1024 __BOTTOMRIGHT_Y_ABSOLUTE -2 __KEEP_WHEN_SHADED __ON __END __BORDER_PART __BGN __ICLASS PAGER_SHADE __ACLASS ACTION_SHADE __MIN_WIDTH 1 __MAX_WIDTH 99999 __MIN_HEIGHT 10 __MAX_HEIGHT 10 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_X_ABSOLUTE 33 __TOPLEFT_Y_PERCENTAGE 1024 __TOPLEFT_Y_ABSOLUTE -10 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_PERCENTAGE 1024 __BOTTOMRIGHT_X_ABSOLUTE -1 __BOTTOMRIGHT_Y_PERCENTAGE 1024 __BOTTOMRIGHT_Y_ABSOLUTE -1 __KEEP_WHEN_SHADED __OFF __END __BORDER_PART __BGN __ICLASS PAGER_SHADE __ACLASS ACTION_RESIZE __CURSOR RESIZE_NWSE __MIN_WIDTH 1 __MAX_WIDTH 1 __MIN_HEIGHT 1 __MAX_HEIGHT 1 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_X_ABSOLUTE 0 __TOPLEFT_Y_PERCENTAGE 0 __TOPLEFT_Y_ABSOLUTE 0 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_PERCENTAGE 0 __BOTTOMRIGHT_X_ABSOLUTE 1 __BOTTOMRIGHT_Y_PERCENTAGE 0 __BOTTOMRIGHT_Y_ABSOLUTE 1 __KEEP_WHEN_SHADED __ON __END __BORDER_PART __BGN __ICLASS PAGER_SHADE __ACLASS ACTION_RESIZE_V __CURSOR RESIZE_V __MIN_WIDTH 1 __MAX_WIDTH 99999 __MIN_HEIGHT 1 __MAX_HEIGHT 1 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_X_ABSOLUTE 1 __TOPLEFT_Y_PERCENTAGE 0 __TOPLEFT_Y_ABSOLUTE 0 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_PERCENTAGE 1024 __BOTTOMRIGHT_X_ABSOLUTE -1 __BOTTOMRIGHT_Y_PERCENTAGE 0 __BOTTOMRIGHT_Y_ABSOLUTE 1 __KEEP_WHEN_SHADED __ON __END __BORDER_PART __BGN __ICLASS PAGER_SHADE __ACLASS ACTION_RESIZE __CURSOR RESIZE_NESW __MIN_WIDTH 1 __MAX_WIDTH 1 __MIN_HEIGHT 1 __MAX_HEIGHT 1 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 1024 __TOPLEFT_X_ABSOLUTE -1 __TOPLEFT_Y_PERCENTAGE 0 __TOPLEFT_Y_ABSOLUTE 0 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_PERCENTAGE 1024 __BOTTOMRIGHT_X_ABSOLUTE 0 __BOTTOMRIGHT_Y_PERCENTAGE 0 __BOTTOMRIGHT_Y_ABSOLUTE 0 __KEEP_WHEN_SHADED __ON __END __BORDER_PART __BGN __ICLASS VBARLEFT __ACLASS ACTION_RESIZE_H __CURSOR RESIZE_H __MIN_WIDTH 1 __MAX_WIDTH 1 __MIN_HEIGHT 1 __MAX_HEIGHT 99999 __TOPLEFT_ORIGIN -1 __BOTTOMRIGHT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_X_ABSOLUTE 0 __TOPLEFT_Y_PERCENTAGE 0 __TOPLEFT_Y_ABSOLUTE 1 __BOTTOMRIGHT_X_PERCENTAGE 0 __BOTTOMRIGHT_X_ABSOLUTE 0 __BOTTOMRIGHT_Y_PERCENTAGE 1024 __BOTTOMRIGHT_Y_ABSOLUTE -1 __KEEP_WHEN_SHADED __ON __END __BORDER_PART __BGN __ICLASS PAGER_SHADE __ACLASS ACTION_RESIZE_V __CURSOR RESIZE_V __MIN_WIDTH 1 __MIN_HEIGHT 1 __MAX_HEIGHT 1 __MAX_WIDTH 99999 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_X_ABSOLUTE 1 __TOPLEFT_Y_PERCENTAGE 1024 __TOPLEFT_Y_ABSOLUTE -1 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_PERCENTAGE 1024 __BOTTOMRIGHT_X_ABSOLUTE -1 __BOTTOMRIGHT_Y_PERCENTAGE 0 __BOTTOMRIGHT_Y_ABSOLUTE 1 __KEEP_WHEN_SHADED __ON __END
- Then to have this option available when we manipulate our pager we need to have that border option added in the file "Retro-Custom/borders.cfg" thus:
- Giving us more choices on border styles in general but the pager in particular when using Ctrl, Alt & Right-click to access those options.
E16 can be configured by editing text files but because it's E16 (i.e Enlightenment based) there are ways of doing that through settings or by Ctrl, Alt & -right-clicking- widgets to open extra options.
Let's do that, first by opening the enlightenment, settings:
In both cases not forgetting to click "apply" to save the choice.
After this we can simply drag the open pager to anywhere we want to by grabbing it using Ctrl, Alt & Left-click and resizing it to our needs by simply grabbing one of the corners and pulling.
Once the pager has been placed on the top right corner, we'll want to change the shading direction and the border into what we added earlier by using Ctrl, Alt & Right-click in the pager itself and going into the "set border style" sub-menu
The other "side_---" options shown there are additions of my own for plank. We'll be discussing those in the next stage.
As I intend to have the pager shading/unshading using a shortcut key (the SUPER or WIN key), I'll want the "Set Stacking" set to "On Top" to have it accessible above anything else I've opened on my desktop, whenever I want and getting it out of my way again with the same key.
I don't want to have to go about resizing or moving my window away just to see the pager, I want fast access.
After which we'll have to make sure all the settings we've made like size, placement, stacking, border style and such are remembered by: you guessed it!!
Ctrl, Alt & Right-click and choosing "remember ..."
Which is something you can do with any opened window or widget on any version of Enlightenment and have it open in exactly the same place and size in the future.
Now having customized the pager in the way we just did, I realized the same could be done for my favorites-panel using plank.
Now plank is quite nice, especially since it's been getting some extra attention lately by the folks from the Elementary distribution but it has some caveats.
- A major one is that the "hide" options don't work in the way that I need and like the pager, I want it to be easily accessible at all times.
- Another is that it takes up quite a bit of screen space, similar to cairo-dock, blocking access to any applications in that space.
That meant disabling the "hide" options in the plank preferences and having it behave in the same fashion as our pager. Ergo creating a shortcut key-combo for it to shade/unshade but having do so without a border, unlike the pager.
That leads to the need of creating more border options: Specifically the ""side_left|right|top|bottom" border options were made to test the various positions on the screen.
To keep the plank panel without borders but being shade-able does require a small 1 pixel border from which to shade, a 0 pixel border will not work.
Not liking a long 1 pixel border over the full length of my screen, I opted to keep that on the short side of the panel i.e "side_top" for a panel on the right side and ""side_left" if i want the panel on the bottom.
So like with pager we'll need to add the border option both as a config file as well as adding it's instance to "~/.e16/themes/Retro-Custom/borders.cfg"
Here's the content of "~/.e16/themes/Retro-Custom/borders/side_top.cfg"
__BORDER __BGN __NAME SIDE_TOP __BORDER_SIZE_LEFT 1 __BORDER_SIZE_RIGHT 1 __BORDER_SIZE_TOP 1 __BORDER_SIZE_BOTTOM 1 __SHADE_DIRECTION __UP __CHANGES_SHAPE __OFF /*TOP*/ __BORDER_PART __BGN __ICLASS TOPBAR __ACLASS ACTION_RESIZE_V __CURSOR RESIZE_V __MIN_WIDTH 35 __MIN_HEIGHT 4 __MAX_WIDTH 99999 __MAX_HEIGHT 5 __TOPLEFT_ORIGIN-1 __BOTTOMRIGHT_ORIGIN -1 __TOPLEFT_X_ABSOLUTE 19 __TOPLEFT_Y_ABSOLUTE 0 __BOTTOMRIGHT_X_ABSOLUTE -20 __BOTTOMRIGHT_X_PERCENTAGE 1024 __BOTTOMRIGHT_Y_ABSOLUTE 5 __KEEP_WHEN_SHADED __OFF __END /*LEFT*/ __BORDER_PART __BGN __ICLASS VBARLEFT __ACLASS ACTION_RESIZE_H __CURSOR RESIZE_H __MIN_WIDTH 0 __MAX_WIDTH 0 __MIN_HEIGHT 4 __MAX_HEIGHT 99999 __TOPLEFT_ORIGIN -1 __TOPLEFT_X_ABSOLUTE 0 __TOPLEFT_X_PERCENTAGE 0 __TOPLEFT_Y_ABSOLUTE 19 __TOPLEFT_Y_PERCENTAGE 0 __BOTTOMRIGHT_ORIGIN -1 __BOTTOMRIGHT_X_ABSOLUTE 5 __BOTTOMRIGHT_X_PERCENTAGE 0 __BOTTOMRIGHT_Y_ABSOLUTE -20 __BOTTOMRIGHT_Y_PERCENTAGE 1024 __KEEP_WHEN_SHADED __OFF __END __END
Which requires the mentioned addition to borders.cfg but this time we'll do it through the command-line in a terminal again with:
echo "#include <borders/side_top.cfg>" >> ~/.e16/themes/Retro-Custom/borders.cfg
Then, like with the pager we'll Ctrl, Alt & Right-click to set the correct border as well as the stacking position and "remember ..." it.
Unlike the pager, this particular border doesn't allow the shading to happen by clicking the visible border and can only be done through the shortcut key combo.
Let's create those now.
To do this there are, as always two ways: GUI and command-line.
Through the menu, settings, e16keyedit or by editing the specific file that keeps those settings: "~/.e16/bindings.cfg".
Let's add the shading toggle for the panel to the WIN or SUPER (on my machine it's only on the left so that'll be SUPER_L) and the pager to Ctrl & WIN and again, let's do that with some command-line magic
echo "KeyDown C Super_L exec eesh wop Pager-0 shade" >> ~/.e16/bindings.cfg
for the pager and
echo "KeyDown - Super_L exec eesh wop plank shade" >> ~/.e16/bindings.cfg
I suspect that for some readers the command these keys run might need some explaining, especially the "eesh" part.
eesh in all simplicity is a way to interact directly with, in this case E16, through scripts or directly using the command-line where in other cases it would be through your default shell, be it "bash" or "zsh".
The best way to get to know it is to simply look at it's "help" options in a terminal with:
Enlightenment IPC Commands Help Use "help all" for descriptions of each command Use "help <command>" for an individual description Commands currently available: about group grp screen aclass ac group_op gop set area help ? show sh background bg iconbox ibox slideout border imageclass ic sound snd button btn list_remember rl textclass tc button_show magwin mag theme th compmgr cm menus mnu use_bg configure cfg movres mr version ver cursor csr nop warp debug obj_info oi win_info wi desk pager pg win_op wop dialog_ok dok remember window_list wl exec reparent rep wmatch wma exit q restart focus sf save_config s
To see how it works just use the following from a terminal:
eesh dialog_ok 'Warning: This is is just for fun!'
Or to get a list of all currently opened windows: