This Tutorial can also be viewed as webpage here:
https://triantares.ddns.net/Elive/Tutorial_on_handling_E16_by_customizing_the_desktop.html
or downloaded as a PDF:
Getting to know Elive-E16 desktop by customizing it.
History
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.
Let the fun begin.
Removing old and installing new stuff.
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
choosing "quit"
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!
It's all about choice
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:
api tint2
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:
api plank
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.
Customizing our plank.
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!!!
More additions.
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.
Making them run on startup
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
Custom applications
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.
re-arranging the default E16 desktop.
Options, options, options.
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
The pager
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:
#include <borders/pager_bottom.cfg>
- 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 GUI magic
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:
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
and choosing "pager_bottom".โ 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.
Nifty plank tricks
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.
Setting key bindings
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
for plank.
I suspect that for some readers the command these keys run might need some explaining, especially the "eesh" part.
eesh in short
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:
eesh help
Which gives:
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:
eesh window_list
Trying it out the easy way.
Anyone who wants to, can try-out the configuration using a live version especially created to illustrate the tutorial's result.
There's a VirtualBox image to be had here:
https://triantares.ddns.net/Elive/elive-minimal-e16-hybrid.iso
It's built on 64 bit Elive 3.8.20 and has a default user elive with the password evile or a guest account with no password.
- Note that this .iso does not offer an installation option nor does it allow 'root' access to upgrade.