e16/docs/e16.asc

1431 lines
54 KiB
Plaintext

= The e16 window manager
[[documentation]]
== User Documentation
[[about]]
=== Introduction
E16 is your Window Manager. The Window Manager controls the appearance
of the borders of your windows, their behavior and all user interaction
with positioning, killing, resizing, moving, iconifying, shading etc.
your windows, virtual desktops, multiple desktops, menus attached to
windows and some root window menus and can also control the background
of your desktop(s).
=== The Desktop
The first time e16 is started the desktop will look as described below.
Across the whole top of the screen you will see a bar with arrows
pointing up and down on the left and right ends. This is your desktop
link:#dragbar[dragbar].
On the bottom-left you'll see the link:#pager[pagers] for desktops 0 and
1.
On the bottom-right you'll see an link:#iconbox[iconbox].
Everything else is your desktop link:#backgrounds[background].
[[rootmenu]]
=== Menus
When you click with your left mouse button on the desktop
link:#backgrounds[background] you will see the "User Menus" menu appear.
Applications you may have installed will appear in this menu. To launch
one of them simply select it from the menu.
Clicking the middle button on the desktop link:#backgrounds[background]
will display e16's main menu. You can access the other menus plus more
options from this menu (including those to log out, restart and display
Help information).
When you click the right mouse button the "Settings" menu will appear.
From it you can enter the Settings Dialog, change background and theme,
log out, etc. The link:#settings[Settings Dialog] allows you to
customize your desktop to better suit your needs.
[[mousebind]]
=== Mouse Bindings
Of course, when you click on the link:#desktops[desktop]
link:#backgrounds[background] of your screen, normally you will bring up
a link:#rootmenu[menu]. And of course, when you click on the
link:#border[border] of a window, you will do various things.
In e16, there are several other actions that the mouse can do by
default. For example, by holding down the ALT key when you click the
left mouse button anywhere in a window, you will find that you can
link:#movemode[move] the window around the screen, just as if you had
used the title bar. You can also ALT middle-click in a window to
link:#resizemode[resize] it, or use ALT and right-click to bring up the
link:#windowops[Window Operations Menu].
Holding down the ALT key while clicking the middle mouse button on the
background of your link:#desktops[desktop] will bring up a menu with the
titles of all currently active application windows. Selecting one of
these will take you to that application. By using the CTRL key instead
of ALT you will get a menu displaying all current desktops as sub-menus,
with applications on each desktop in the desktop sub-menu.
[[mouseconfig]]
=== Mouse Configuration
E16 makes extensive use of the mouse. However, you may be missing some
features because of the way that your mouse is configured on your X
server.
If your mouse does not have a middle button you should enable "Emulate 3
Buttons" in your X server. This option allows you to emulate a
three-button mouse by pressing both left and right mouse buttons at
once. If this does not work, three-button emulation may not be enabled.
See your X server documentation to configure this emulation.
This may vary from system to system. The OS and X server may also vary
the method in which you do this, if it is possible. Not having a middle
mouse button in e16, or for that matter X, is not a good thing as it is
almost assumed to be there, and is used by many applications, including
e16.
If you have a Wheel-Mouse and X is configured to use it, e16 supports it
by default.
Rolling your wheel up on the desktop background will take you back a
link:#desktops[desktop]. Rolling your wheel downward you will advance
forward a desktop.
[[border]]
=== Using the Window Border
When you start an application, unless it has special properties, it will
come up on your screen with a border surrounding it that contains a
title bar and several control buttons. This border is the primary
interface to controlling an application window. The default setup gives
adequate control but still retains simplicity.
If you click left mouse button on the title bar and keep the mouse
button down the window will follow your mouse wherever it moves.
Respectively if you click your left mouse button and drag on any of the
resize handles, the window will be resized in that direction. Clicking
right mouse button on the resize handles will raise the windows to the
top.
Clicking right mouse button on the title bar or any button on the window
operations menu button on the top-left will display a menu that has
window manipulation options in it.
Double-clicking the title bar will make the window shade or unshade.
Clicking left mouse button on the iconify button will iconify the window
and send it off to the link:#iconbox[iconbox]. Hitting the Maximize
button will maximize the size of the application fill your screen.
Hitting it again will unmaximize, bringing the window back to its normal
size.
Clicking with the left mouse button on the close button will close the
window. If the application that owns that window does not respond to a
nice request to exit, then press the right mouse button on the close
button to forcibly terminate that window. This should not be used unless
the application is visibly "hung".
In addition to these methods, there are additional ways to manipulate
windows.
If you hold down the ALT key and hold down left mouse button anywhere in
the window (on the border OR in the application part) while dragging,
you will move this window around. Doing the same but with the middle
mouse button will resize the window in that direction. Clicking the
right mouse button anywhere in the window while holding down the ALT key
will bring up the window operations menu.
[[changeborder]]
=== Changing Window Borders
You may find that you don't like a particular border that a window uses,
for some reason or another. You can easily change the border style of a
window in e16 using the link:#windowops[Window Operations] menu,
however. Select the "Set Border Style" menu, and a list will be
presented to you of available borders in this theme. The most common use
for this is to make an application shed its border, using the BORDERLESS
border type.
You can always click with ALT + Right mouse button anywhere in the
window to bring up the window operations menu again.
If you want to remember the border style for the next time you run this
application, you can always use the link:#properties[Remember] dialog to
remember the current window border.
[[defkeys]]
=== Default Keybindings
Below are the keybindings for e16 as it comes "from the factory"
[horizontal]
ALT+(F1-F8) :: Go to desktop 0 - 7
ALT+Tab :: Switch focus to the next window
CTRL+ALT+Home :: Auto-arrange windows
CTRL+ALT+Del :: Log out
CTRL+ALT+End :: Restart
CTRL+ALT+Ins :: Launch xterm
CTRL+ALT+Left :: Go to the previous desktop
CTRL+ALT+Right :: Go to the next desktop
SHIFT+ALT+Up :: Move to the virtual desktop above
SHIFT+ALT+Down :: Move to the virtual desktop below
SHIFT+ALT+Left :: Move to the virtual desktop on the left
SHIFT+ALT+Right :: Move to the virtual desktop on the right
CTRL+SHIFT+F1 :: Show User menu
CTRL+SHIFT+F2 :: Show Enlightenment menu
CTRL+SHIFT+F3 :: Show Settings menu
CTRL+SHIFT+F4 :: Show Window List menu
CTRL+ALT+A :: Toggle visibility of all buttons
CTRL+ALT+B :: Toggle visibility of theme buttons
CTRL+ALT+C :: Toggle visibility of configuration buttons
CTRL+ALT+Up :: Raise active window
CTRL+ALT+Down :: Lower active window
CTRL+ALT+X :: Close active window
CTRL+ALT+K :: Kill active window nastily
CTRL+ALT+I :: Iconify active window
CTRL+ALT+R :: Shade/unshade active window
CTRL+ALT+S :: Stick/unstick active window
CTRL+ALT+M :: Maximize/unmaximize active window
CTRL+ALT+F :: Enter/leave fullscreen mode for active window
CTRL+ALT+W :: Show Window Operations menu for active window
ALT+Enter :: Zoom/unzoom active window
[[desktops]]
=== Multiple & Virtual Desktops
E16 supports both Multiple and Virtual desktops. There are distinct
difference between the two, and e16 treats them differently.
When you start e16 you will by default have two desktops. In e16
desktops are geometrically unrelated work areas. They are visually
stacked on top of each other and can even be dragged down to expose
desktops underneath.
The best way to imagine this is that each desktop is a sheet of paper
with the first desktop (desktop 0) being glued in-place. You can
re-shuffle the stack of papers and slide one down to reveal a piece of
paper underneath - the only paper you can't slide is the first one. Each
desktop (or sheet) contains your application windows.
Windows normally live on one desktop, but can be made to exist on all
desktops - whenever you change to a new desktop the window will follow
you and be on that desktop too. This is known as being sticky. if a
window is sticky it will "stick to the glass of your screen" and stay
there until it is not sticky anymore or the window is closed.
Virtual desktops (also known as desktop areas) is a measure of how big
your desktops are. A desktop can be a multiple of your screen size in
size (2x1, 2x2, 3x3, 4x2 etc.). That means each desktop has an AxB
screen size of area allocated to it and you can be looking at any
screen-sized part of it at any time. It's just like getting more sheets
of paper and taping them to the sides of your current sheet of paper. An
easy way of changing your view is by just sliding your mouse in the
direction of a currently unviewable part of your desktop. As long as you
have Edge Flip enabled e16 will automatically scroll over to that part
of the desktop.
To change the number of virtual desktops that you have, select "Desks"
in the link:#settings[Settings Dialog].
To change the number of virtual areas, select "Areas" in the
link:#settings[Settings Dialog]. Use the slider bars to extend the size
of the virtual areas to the size that you prefer. You can also use this
dialog to enable/disable edge resistance (when your
link:#mousebind[mouse] hits the edge of an area) moving between virtual
areas.
E16 also allows you to set a different desktop backdrop per desktop to
help you customize your environment and differentiate which desktop is
which.
An easy way of having e16 automatically pick up any pictures you have is
to make a directory in your ~/.e16 directory called backgrounds and then
fill that with your favorite backdrops. E16 will automatically discover
this and index them for you allowing you to select them and change their
settings. More on this topic is explained in the
link:#backgrounds[Desktop Backgrounds] section.
[[changedesk]]
=== Changing Desktops
There are several ways that you can change your current desktop - let's
go over a few of them here.
You can use the link:#defkeys[Keybindings] Alt-F1 through Alt-F8 for the
first 8 desktops., You can use the link:#defkeys[Keybindings]
Ctrl-Alt-Left and Ctrl-Alt-Right to navigate to the next/previous
desktop., You can use the link:#defkeys[Keybindings] Shift-Alt-arrow to
change virtual areas in a given direction., You can use the
link:#pager[Pager] to quickly navigate to the desktop/area you want by
clicking on the desired area., You can use the link:#dragbar[Dragbar] to
quickly navigate to a particular application or a particular desktop by
using the middle and right mouse buttons., You can also use external
applications such as the GNOME panel's pager or the KDE panel's pager to
navigate desktops and/or applications.
[[appsdesk]]
=== Moving Applications Between Desktops
There are several ways that you can move applications from one desktop
to another. We'll go over a few of them now.
The first way you can move apps between desktops is using the
link:#pager[Pager].
You can also move applications between desktops using the
link:#dragbar[Dragbar].
You can also move applications between desktops using the KDE or GNOME
desktop pagers.
You can also link:#movemode[move] a window, then bring the window with
you as you change desktops using link:#defkeys[keybinding].
[[dragbar]]
=== The Dragbar
If you look along the top of your screen, you will notice a long thin
bar that looks something like the bar pictured below. This is called
your Dragbar. It gets its name from its primary purpose, which is
dragging desktops around.
If you are on any desktop except desktop 0, you can pick up and move
that desktop in another direction. link:#desktops[Desktops]
documentation has more information on how to change desktops. Once you
have dragged a desktop down, you can proceed to move windows between
desktops this way, instead of using the link:#pager[pager].
You can also use the Dragbar to retrieve window lists. Use the middle
mouse button to retrieve a window list, and the right mouse button for a
window list sorted by desktops.
[[pager]]
=== The Pager
Pagers may not be a new idea in desktop environments, but the Pager in
e16 is a highly advanced and highly configurable tool for desktop and
window control, as well as a navigation tool.
The pager lets you see your desktop screen area in miniature. It lets
you click on a certain desktop to "visit" it, click and drag windows
around in the pager itself to move them about the screen quickly, or
between link:#desktops[desktops].
Dragging a window from one area of a pager to another will move it
there, or to another desktop. Dragging it out onto the actual desktop
will drop that window right there. You can also drag a window into the
link:#iconbox[Iconbox] to iconify the window.
Pressing right-mouse button over a blank portion of the pager gets you
the pager menu. This will allow you to set a couple of quick options.
For more available options, you can select the "Pager Settings" item,
which will pop up the Pager Settings dialog.
This dialog box will allow you to set all sorts of additional
parameters, many of which can increase the performance of e16 on your
system. Disabling high quality snapshots and/or snapshots in general as
well as continuous updates can seriously improve performance - these
features are intended for high end machines.
You can resize the pager to make it the size you'd like. Hold down ALT
and use the middle-mouse button to resize the pager in any direction.
Using left-mouse button while holding ALT and dragging will move the
window. Holding down ALT while pressing right-mouse button, just like
any normal window will get you a window operations menu.
In the default theme clicking the tab on the right side of the pager
with the arrow pointing right will shade and unshade the pager window
horizontally, allowing you to hide and unhide the window easily.
The striped area above this tab on the pager's border is a handle that
will allow you to move the pager about, just like the title bar of any
window.
[[iconbox]]
=== The Iconbox
The iconbox is the place the icons for all your iconified windows go. It
is one method of recovering link:#minimized[minimized] applications.
Whenever you iconify or minimize a window it will go into an iconbox and
have an icon displayed for it there. Clicking on the icon again will
de-iconify it.
You can have as many icon boxes on your desktop as you want to. You can
create more by using the Middle Click link:#rootmenu[Menu] - select
Desktop->Create New Iconbox and a new Iconbox will pop up on your
desktop. Each of these Iconboxes can have individual configurations, as
detailed on the next page.
You can link:#movemode[move] the Iconbox around the screen using
Alt-Leftclick on the window, and then moving it to the desired location
on the screen. You can link:#resizemode[resize] the Iconbox by
alt-middleclicking on the window and then adjusting the size as
described in the link:#mousebind[Mouse Bindings] section.
Clicking the right-mouse button anywhere in the Iconbox will bring up a
menu to configure that iconbox. This menu will look a little something
like the one here to the right. This menu allows you to also close the
Iconbox or open up an additional Iconbox.
To change the settings of an individual Iconbox, use the right mouse
button link:#mousebind[menu] and select "Settings". You can change the
orientation, icon size, scrollbar options, display policy, base image,
and many more options of the Iconbox from this dialog. You may choose to
change the anchor of alignment for resizes - play with it until it
resizes appropriately for your Iconbox location.
If you want to customize the images used for the icons in your iconbox,
there is already an example configuration supplied. To make your own
configuration copy the matches.cfg file installed in your e16 system
config directory (/usr/local/e16/config/matches.cfg or
/usr/share/e16/config/matches.cfg) to your ~/.e16 directory and then
edit it.
There are several examples of using the globbing and matching in the
system matches.cfg file. Use that as a reference for your own additions.
[[minimized]]
=== Recovering Minimized Applications
There are several ways to recover an application once you have minimized
it. The most obvious way is to use the link:#iconbox[Iconbox]. Of
course, you might have had some applications in your Iconbox when you
accidentally closed it. Or maybe you minimized some applications and
forgot you didn't have an Iconbox. Or maybe you don't like the Iconbox
and usually use KDE or GNOME's panel to recover them and forgot to
launch them. Never fear. You can always middle click on the
link:#dragbar[Dragbar] and get a link:#rootmenu[menu] that will allow
you to recover them. You can also Alt or Ctrl-Middleclick on the desktop
to get the same menus (in case you don't have a Dragbar anymore).
Remember, at any time you can always create a new link:#iconbox[Iconbox]
to catch your applications as they minimize, if you want to re-enable
it. Unfortunately you'll have to reconfigure it since each Iconbox can
have its own link:#settings[settings].
[[properties]]
=== Remembering Application Properties
In the link:#windowops[Window Operations] menu of every window you will
see an entry labeled "Remember...". If you select this it will bring up
the "Remember" dialog for that window.
This dialog lets you selectively snapshot certain attributes of that
window at that time and have e16 remember them. You may choose to only
remember some of the attributes, and possibly not have the application
started automatically for you. Choose what you want e16 to remember
about that window and hit "Apply" or "OK" if you don't need the dialog
anymore, and e16 will, the next time that instance of the application is
run, apply the current location, size, border style or any other
attribute to that window. E16 can also launch the application for you
upon startup if you so wish.
[[settings]]
=== Settings
When you click the right mouse button on the desktop background you will
pop up the Settings menu. Clicking "Settings" will bring up the Settings
Dialog. From here you can select an aspect of e16 to configure to your
liking. There are too many settings to actually document fully right
now, but the likelihood is if you want a particular behavior from e16,
it is achievable by merely playing with these options.
Combinations of options are often required to get the effect you want,
so some experimentation may be required. Do not be frightened. Nothing
you can do can't be undone by simply changing the options back to how
they were and clicking on Apply again.
[[groups]]
=== Window Groups
Sometimes you have a number of windows on your desktop that logically go
together. E16 allows you to group windows together, so that whenever you
change a property of one window in a group, the change is reflected on
the other group members. If you have a group whose members span multiple
link:#desktops[desktops], changing a group's property affects only
windows of that group that are on the current desktop.
The properties that you can change for an entire group include setting
the window border, iconifying, killing, moving, raising/lowering,
sticking and shading of a window.
To define what properties are applied to a group by default, you go to
the link:#settings[Settings Dialog] and select "Groups", which will give
you a dialog window in which you can configure the settings.
There are two different methods for manipulating window groups. First,
there's a comprehensive sub-menu available in each window's operations
menu called "Window Groups". You also are able to configure the group
individually apart from the default group settings.
The second way is the window title bar, which has the most important
options directly available for convenience. Shift-click to start a
group, Ctrl-clicking to add a window to the youngest group (also
referred to as the "current" group) and Shift-Ctrl-Click to destroying a
group. You can also click the middle mouse button for visualizing the
group(s) of a window. Click again to returning to the previous border.
Windows can be in multiple groups at the same time, so for many options
you have to indicate which group you are referring to. Selecting the
appropriate checkboxes (showing the group member's titles) at the top of
the dialog windows.
[[backgrounds]]
=== Selecting and Adding backgrounds
Often you will want to change the background of a particular desktop.
There are several ways you can do this. But of course, to change your
desktop, you'll need to give e16 some graphics to play with. A desktop
theme may add a background or two to your available selections, but most
users want to have even more backgrounds to choose from. To add
backgrounds to your selection, make a backgrounds directory under your
home directory. To do this using most shells you can type
....
$ mkdir ~/.e16/backgrounds
....
Once you have added your backgrounds, you should be able to go to the
root menu desktop selector. To get to this menu, middle click on the
desktop, select "Desktop", and go to Backgrounds. From here you will be
able to navigate the backgrounds menus.
Selecting any of the images there will change the desktop background of
the current desktop to the image that you have selected.
E16 will attempt to choose the best settings for a particular
background, but if it gets it wrong you can always change the settings
by hand. To do this bring up the link:#settings[Settings Dialog] and
select "Background". You can use this dialog to change your background,
too, as well as fine-tune all the various settings for each individual
background available.
[[tooltips]]
=== Tooltips
From time to time, as you use e16, if you don't remember what does what,
if you keep the mouse still for a little bit a tooltip will pop up. The
easiest example of this is when you hold the mouse over a
link:#border[Window Border].
You can disable the tooltips or change the delay before they pop up by
selecting "Tooltips" in the link:#settings[Settings Dialog].
=== Audio
If enabled and the theme supports it e16 will play lots of little blips
and beeps when you do various things on your desktop.
You can enable and/or disable sound at run-time by selecting "Sound" in
the link:#settings[Settings Dialog].
[[focus]]
=== Setting the Focus
E16 offers lots of different options for focusing windows. By default,
it comes up in sloppy focus mode. There are two other primary focus
modes supported by e16 - click to focus and pointer focus.
Click To Focus most people are familiar with. You click on a window and
it receives the focus from e16.
Pointer Focus gives the focus to whichever window the pointer is sitting
over
Sloppy Focus is similar to Pointer Focus, except that if you go over the
link:#backgrounds[Desktop Background] you still are focused on the last
window
E16 allows you to change your focus settings at any time. Simply bring
up the link:#settings[Settings Dialog] and select "Focus". At the top,
we can select between our three focus modes.
We can also enable some other features, such as one that will allow a
simple link:#mousebind[mouse] click to raise any window to the
foreground, as well as several other advanced focus settings.
Here we can also enable the focus list feature. The focus list is a
window list that pops up as you cycle through your focus using the
ALT+TAB link:#defkeys[Keybinding].
[[movemode]]
=== Moving Windows
E16 comes with several different available methods for moving a window.
You can perform the actual moves using the window link:#border[border],
or by using the available link:#mousebind[Mouse Bindings]. This will
cause the window to move until you have released the mouse button.
To change the mode that the moving of the windows uses (opaque being the
default), open up the link:#settings[Settings Dialog], and select
"Move/Resize". You can select the mode from a list. Experiment until you
find one that suits you best.
[[resizemode]]
=== Resizing Windows
E16 also comes with several available methods for resizing windows. You
can perform the actual resize on the window by clicking on any
resize-handle of your window link:#border[border] and dragging to the
desired size. You can also get the same effect by using the ALT + middle
button link:#mousebind[Mouse Binding] in any part of the window.
To change the mode that the resizing of the windows uses (opaque being
the default), open up the link:#settings[Settings Dialog], and select
"Move/Resize". You can select the mode from a list. Experiment until you
find one that suits you best.
[[windowops]]
=== The Window Operations Menu
The Window Operations menu is a commonly used menu that allows you to
perform many different actions onto the current window.
The Close function closes the window in question. Annihilate destroys
the window without regard to the application the window belongs to,
which is especially useful if the application refuses to respond to
being closed with Close.
The Iconify function iconifies the window. If you have an
link:#iconbox[Iconbox] it is sent to the nearest one.
The Raise function raises the window above any windows that may be
obscuring it and Lower lowers it below windows it is obscuring.
Shade/Unshade toggles the shaded state of the window. Note that
borderless windows are not allowed to be shaded.
Stick/Unstick toggles the sticky state of a window. A window that is
sticky remains "stuck to the glass" and thus is visible on all virtual
and multiple link:#desktops[desktops].
Fullscreen/Window zooms in and out of the window by changing screen
resolution. This feature will only work if you have your X server
configured correctly and it supports the XVidtune extension. Your X
server may not like having resolutions changed - it is possible that an
unstable X server could crash if you use this. Be aware of this when
using this feature.
Remember... displays the link:#properties[Remember Properties] dialog
that lets you select things to remember about this instance of an
application. The attributes selected to be remembered in the state they
are when you hit Apply or Ok in this dialog. You will have to bring it
up again if you wish to remember a new state of the window.
In the link:#groups[Window Groups] sub-menu there are various options
for configuring window groups and how this window relates to any groups
you may have.
You can quickly modify the size of a window to one of several aspects of
maximum sizes using the Window Size sub-menu.
Set Stacking lets you change the stacking layer of that window.
You can change the link:#changeborder[border] using the Set Border Style
menu if you wish to use a different window border. If you change themes
after you have changed the border, and the new theme doesn't provide a
border of the same name, the window will fall back to using the DEFAULT
border until you change it again.
[[placement]]
=== Window Placement
Selecting "Placement" in the link:#settings[Settings Dialog ] allows you
to configure various options for the placement of windows. The two
Dialog window options are for windows like the ALT+O open URL window in
Netscape. Manual Placement will force you to use the mouse to position
every new window that attempts to map itself.
[[eesh]]
=== E16 and IPC
E16 has a fairly interesting IPC system that allows external
applications to talk to e16 and both ask for information
and change information. There is a program that was installed with e16
called "eesh" that is a simple shell interface to the IPC in e16. It's
even got its own documentation. You can go into eesh and type "help" and
it should spit back a list of commands that it understands.
Note: there are many commands that will show up in e16's IPC that don't
necessarily work yet, or aren't fully implemented. You CAN potentially
do some really bizarre things to your system by using eesh, but for the
most part it's just another interesting interface to e16.
In your distribution package you should have received some sample scripts
written in Python or Perl that interface to e16 through eesh showing how
you can externally script e16 to do more things outside e16's base
functionality.
To exit eesh, hit CTRL + D (EOF)
[[editmenus]]
=== Editing E16's Menus
The first time you run e16 as a user after you've installed it, it
should create a directory under your home directory called .e16/menus.
In this directory, there will be a file called "file.menu" - this file
controls the contents of your left-mouse button link:#rootmenu[Menu].
The very first line of this file contains the title for the menu, and
the remainder of the file looks something like this:
"xterm" NULL exec "xterm"
Where each column represents:
Entry title, graphic for menu (or NULL), exec "commandline"
You may have several files in here, including a KDE menu and a Gnome
menu if e16 has detected their presence during installation. If
detected, your primary apps will be located in another file called
user_apps.menu. Each of these files is for you to edit as desired.
[[editkeys]]
=== Editing Your Keybindings
To set your own keybindings, all you have to do is find the bindings.cfg
file that was installed with e16, and make a copy in your ~/.e16
directory. This file shouldn't be too difficult to edit. Be careful! The
keybindings in this file will override ALL the default keybindings, as
long as this file exists, so edit this file with caution.
To reset your keybindings back to the default, simply remove this file
from your ~/.e16 directory. The next time you restart e16 it should
reload the default keybindings into memory.
[[themes]]
=== E16 and Themes
One of the strong points of e16, of course, is that you can change
around the complete look and feel of your desktop whenever you want to.
The e16 package itself includes only the "winter" theme. Additional
themes are distributed in the e16-themes package. You can select the the
theme from the link:#rootmenu[Settings menu], going to the "Themes"
selector, and then choosing a new theme.
Many more themes are available elsewhere, see link:#res[themes].
To install a new theme is simple: all you need to do is take the
bleh.etheme file and drop it into your ~/.e16/themes directory. Once
you've restarted e16, it will automatically show up in your Themes
link:#rootmenu[menu], and you can choose it just like any other theme.
[[eyecandy]]
=== E16's Eye Candy Features
Of course, e16 wouldn't be complete without just a few bits of eye candy
to play with.
On the "FX" link:#settings[settings] dialog you can chose two toys:
The ripples effect - this causes little ripples of water to reflect on
the bottom of your screen.
The waves effect - similar to ripples, but this one waves up and down as
opposed to side-to-side
[[maint]]
=== Included Maintenance Scripts
E16 comes with several scripts that are executable out of the middle
mouse button/Maintenance menu - these scripts can perform all sorts of
maintenance on the files that e16 creates automatically for you. You can
also rebuild the menus from here.
As a warning, when you purge configuration information, the next time
you restart e16 it will take longer to load. You can monitor e16's usage
using the query tools provided. If you change themes a lot you will
probably want to purge the config file cache after you've settled on a
theme. This will help keep your disk usage by e16 down.
[[faq]]
=== Frequently Asked Questions
==== Q: I can't find my link:#iconbox[iconbox] or change its settings.
A: There are two possibilities here.
{empty}1. You don't have an Iconbox on your desktop right now. Just
middle-click and select Desktop/Create new iconbox
{empty}2. Your Iconbox is transparent and borderless. Iconify a window
and see if your icon appears. If so, right click on it to reconfigure
your Iconbox.
==== Q: I can't seem to find my left mouse menu
A: Your menu files may be destroyed. Try rerunning the program that
initially generated them. First you'll want to remove the
~/.e16/menus/*.menu files. Rebuild them using the
link:#maint[Maintenance] menu.
==== Q: All my settings are mangled and I can't fix it
A: Well, if things get really messed up, you can always remove all of
e16's automatically saved files. Go into ~/.e16, and remove the
e_config* files, and then blow away the cached directory. The next time
you start e16 it should reset everything to the default.
==== Q: I upgraded my theme, but the new one isn't being used
A: When you upgrade a theme that does not come with e16, when you go
into your ~/.e16/themes directory, be sure to delete the unpacked
directory version of your theme that should be sitting next to the
theme, if it is there. Otherwise when e16 attempts to start the new
version it will use the old files, which causes this problem.
==== Q: I set my window to borderless and can't set it back or move it.
A: ALT + Right mouse button when pressed anywhere in the window will
give you the link:#windowops[Window Operations] menu. ALT + Left mouse
button will move the window and ALT + Middle mouse button will resize
the window.
==== Q: How can I move or resize the iconbox?
A: As described above, ALT + Right mouse button will give you the
link:#windowops[Window Operations] menu, ALT + Middle mouse button will
resize the iconbox and ALT+left mouse button will move it. See the
link:#iconbox[Iconbox] documentation for more help
==== Q: How can I disable that annoying desktop tooltip?
A: There is a special config option for it under the
link:#tooltips[tooltip] link:#settings[settings] menu.
==== Q: These docs didn't help, where can I get more help?
A: Well, we obviously can't answer all of your questions just by
predicting them, so please check out the resources listed
link:#res[here].
== Additional Notes
=== Configuration Settings
The configuration is stored in +$ECONFDIR/e_config--D.S.cfg+.
+$ECONFDIR+ is normally +\~/.e16+.
+D+ (+$DISPLAY+) and +S+ (screen) depend on your X setup but will typically be +0.0+.
So typically the configuration is stored in +~/.e16/e_config--0.0.cfg+.
All settings can be shown and set using eesh.
To get a full list of settings:
....
$ eesh show
....
To set some parameter:
....
$ eesh set <parameter> <value>
....
Some settings will not be effective until e16 is restarted.
To get a list of all eesh commands:
....
$ eesh help full
....
The available configuration options are shown below.
Values are the defaults.
....
# [bool] High quality background rendering
backgrounds.hiquality = 1
# [bool] Prefer user selected backgrounds over theme settings
backgrounds.user = 1
# [bool] Do not scan all backgrounds when starting background configuration dialog
backgrounds.no_scan = 0
# [int] Time out for unused background image pixmaps
backgrounds.timeout = 240
# [bool] Enable composite manager
compmgr.enable = 0
# [int] Composite manager mode (always 1 atm)
compmgr.mode = 1
# [int] Dropshadow mode (0: off, 1: sharp, 2: blurry, 3: echo)
compmgr.shadows.mode = 0
# [int] Dropshadow offset
compmgr.shadows.offset_x = 3
compmgr.shadows.offset_y = 5
# [int] Blurry dropshadow radius
compmgr.shadows.blur.radius = 5
# [int] Blurry dropshadow opacity(%)
compmgr.shadows.blur.opacity = 75
# [int] Sharp dropshadow opacity(%)
compmgr.shadows.sharp.opacity = 30
# [int] Shadow color (0xRRGGBB)
compmgr.shadows.color = 0
# [bool] Experimental - leave at 0
compmgr.use_name_pixmap = 0
# [bool] Use composite overlay window
compmgr.use_cow = 1
# [bool] Enable fading
compmgr.fading.enable = 1
# [int] Fading time(ms)
compmgr.fading.time = 200
# [int] Composite redirection of override-redirect windows (0: off, 1: on map, ...: testing)
# Should normally be 1 but 0 may be a partial workaround of problems with vanishing
# pop-ups on certain X-server/toolkit versions.
compmgr.override_redirect.mode = 1
# [int] Opacity of override-redirect windows (pop-ups, etc)
compmgr.override_redirect.opacity = 90
# [int] Number of desktops
desktops.num = 2
# [int] Desktop dragging direction
desktops.dragdir = 2
# [int] Desktop dragbar width (0: disable)
desktops.dragbar_width = 16
# [int] Desktop dragbar length (0: full)
desktops.dragbar_length = 0
# [int] Desktop dragbar button ordering
desktops.dragbar_ordering = 1
# [bool] Wrap around on desk switch (last <-> first on next/prev)
desktops.desks_wraparound = 0
# [bool] Slide desks in when switching
desktops.slidein = 1
# [int] Desk slide speed
desktops.slidespeed = 6000
# [int] Size of virtual desktop
desktops.areas_nx = 2
desktops.areas_ny = 1
# [bool] Wrap around on area switch (last <-> first on next/prev)
desktops.areas_wraparound = 0
# [int] Edge flip mode (0: off, 1: on, 2: only when moving window)
desktops.edge_flip_mode = 1
# [int] Edge flip resistance(pixels)
desktops.edge_flip_resistance = 25
# [string] Desktop names (whitespace separated)
desktops.names =
# [bool] Enable ripples effect
effects.ripples.enabled = 0
# [bool] Enable waves effect
effects.waves.enabled = 0
# [int] Focus mode (0: pointer, 1: sloppy, 2: click)
focus.mode = 1
# [int] Click-to-raise mode (0: Off, 1: Any button, 2: Only button 1)
focus.clickraises = 1
# [bool] Transients are placed where leader is
focus.transientsfollowleader = 1
# [bool] When a transient is mapped the desk/area is switched to where the transient appears
focus.switchfortransientmap = 1
# [bool] Focus new windows
focus.all_new_windows_get_focus = 0
# [bool] Focus new transients if group is focused
focus.new_windows_get_focus_if_group_focused = 1
# [bool] Focus new transients
focus.new_transients_get_focus = 0
# [bool] Focus new transients if group is focused
focus.new_transients_get_focus_if_group_focused = 1
# [bool] Raise window on focus next
focus.raise_on_next = 1
# [bool] Warp pointer to window on focus next
focus.warp_on_next = 0
# [bool] Always warp pointer into window when new window is focused
focus.warp_always = 0
# [bool] Enable autoraise
focus.autoraise.enable = 0
# [int] Autoraise delay(ms)
focus.autoraise.delay = 500
# [bool] Default group settings
groups.dflt.iconify = 1
groups.dflt.kill = 0
groups.dflt.move = 1
groups.dflt.raise = 0
groups.dflt.set_border = 1
groups.dflt.stick = 1
groups.dflt.shade = 1
# [int] Iconbox animation time(ms)
iconboxes.anim_time = 250
# [string] Language used by e16 (dialogs, tooltips, etc.)
# Inherit from environment if not set
locale.internal =
# [string] Language exported when starting applications
# Inherit from environment if not set
locale.exported =
# [bool] Animate menus
menus.animate = 0
# [bool] Keep menus on-screen
menus.onscreen = 1
# [bool] Warp pointer when sliding menus
menus.warp = 1
# [bool] Enable icons in menus
menus.show_icons = 1
# [int] Menu icon size(pixels)
menus.icon_size = 16
# [int] Menu navigation keycodes
menus.key.left = 0xff51
menus.key.right = 0xff53
menus.key.up = 0xff52
menus.key.down = 0xff54
menus.key.escape = 0xff1b
menus.key.ret = 0xff0d
# [int] Animation time step(ms)
misc.animation.step = 10
# [int] Button move resistance(pixels)
misc.buttons.move_resistance = 10
# [bool] Show headers in dialogs
misc.dialogs.headers = 0
# [bool] Enable images on dialog buttons
misc.dialogs.button_image = 0
# [bool] Enable docking of dockapps
misc.dock.enable = 1
# [bool] Make all dockapps sticky
misc.dock.sticky = 1
# [int] Dock direction
misc.dock.dirmode = 3
# [int] Dock start position
misc.dock.startx = 0
misc.dock.starty = 0
# [bool] Enable desktop background compatibility mode
# Fixes background in many apps using pseudo-transparency
# May cause major slowdowns in certain setups
misc.hints.set_xroot_info_on_root_window = 0
# [bool] Show differential time in debug output
misc.log.difftime = 0
# [bool] Logging destination (0: stdout, 1: stderr)
misc.log.dest = 0
# [int] Magnifier zoom level
misc.magwin.zoom_res = 4
# [int] Move mode (0: opaque, 1: technical, 2: box, 3: shaded, 4: semi-solid, 5: translucent)
misc.movres.mode_move = 0
# [int] Resize mode (0: opaque, 1: technical, 2: box, 3: shaded, 4: semi-solid)
misc.movres.mode_resize = 2
# [int] Geometry indicator mode (0: off, 1: window center, 2: screen corner)
misc.movres.mode_info = 1
# [int] Default maximize mode (0: Absolute, 1: Available, 2: Conservative)
misc.movres.mode_maximize_default = 1
# [int] Move/resize color (RGB) when using non-server-grabbing technical/box modes.
misc.movres.color = 0xff0000
# [bool] Avoid server grab
# Use non-server-grabbing line drawing technique in technical and box modes.
misc.movres.avoid_server_grab = 1
# [bool] Send synthetic ConfigureNotify's while moving
# Causes pseudo-transparent apps to update while moving (expensive)
misc.movres.update_while_moving = 0
# [bool] Use SYNC_REQUEST's to synchronize move/resize with client
misc.movres.enable_sync_request = 0
# [bool] Do not cover dragbar when maximizing
misc.movres.dragbar_nocover = 0
# [bool] Enable "smart" maximization
misc.movres.enable_smart_max_hv = 0
# [bool] Animate maximization
misc.movres.maximize_animate = 0
# [bool] Maximization animation speed
misc.movres.maximize_speed = 6000
# [int] Composite opacity of menu windows
misc.opacity.menus = 85
# [int] Composite opacity of windows being moved
misc.opacity.movres = 60
# [int] Composite opacity of tooltip windows
misc.opacity.tooltips = 80
# [int] Composite opacity of focused windows
misc.opacity.focused = 100
# [int] Composite opacity of unfocused windows
misc.opacity.unfocused = 100
# [bool] Place windows manually
misc.place.manual = 0
# [bool] Place windows under pointer
misc.place.manual_mouse_pointer = 0
# [bool] Center windows when desk is full
misc.place.center_if_desk_full = 0
# [bool] Ignore windows with struts (e.g. panels) when placing new window
misc.place.ignore_struts = 0
# [bool] Ignore struts when fullscreening windows
misc.place.ignore_struts_fullscreen = 0
# [bool] Ignore struts when maximizing windows
misc.place.ignore_struts_maximize = 0
# [int] Screen struts - strips at screen edge to avoid when placing windows
misc.place.screen_struts.left = 0
misc.place.screen_struts.right = 0
misc.place.screen_struts.top = 0
misc.place.screen_struts.bottom = 0
# [bool] Raise fullscreen windows (increase stacking level while fullscreen)
misc.place.raise_fullscreen = 0
# [bool] Slide windows in
misc.place.slidein = 0
# [bool] Slide windows around while cleaning up
misc.place.cleanupslide = 1
# [int] Window slide-in mode (0: opaque, 1: technical, 2: box, 3: shaded, 4: semi-solid)
misc.place.slidemode = 0
# [int] Window slide-in speed
misc.place.slidespeedmap = 6000
# [int] Window cleanup slidespeed
misc.place.slidespeedcleanup = 8000
# [bool] Enable session scripts
misc.session.enable_script = 0
# [string] Session script
misc.session.script = $EROOT/scripts/session.sh
# [bool] Enable logout dialog
misc.session.enable_logout_dialog = 1
# [bool] Enable reboot/halt in logout dialog
misc.session.enable_reboot_halt = 0
# [string] Reboot command
misc.session.cmd_reboot = reboot
# [string] Halt command
misc.session.cmd_halt = poweroff
# [bool] Enable animation of window shading
misc.shading.animate = 1
# [int] Shading speed
misc.shading.speed = 8000
# [bool] Enable resistance when moving windows
misc.snap.enable = 1
# [int] Resistance at other window edge
misc.snap.edge_snap_dist = 8
# [int] Resistance at screen edge
misc.snap.screen_snap_dist = 32
# [bool] First time flag
misc.startup.firsttime = 0
# [bool] Enable sliding startup windows
misc.startup.animate = 1
# [bool] Test options (do not change)
misc.testing.argb_internal_objects = 0
misc.testing.argb_internal_clients = 0
misc.testing.argb_clients = 0
misc.testing.argb_clients_inherit_attr = 0
misc.testing.image_cache_size = -1
misc.testing.ximage_cache_count = -1
misc.testing.mask_alpha_threshold = 8
misc.testing.enable_startup_id = 1
misc.testing.use_render_for_scaling = 0
misc.testing.bindings_reload = 1
misc.testing.no_sync_mask = 0
# [bool] Save configuration changes
misc.autosave = 1
# [bool] Keep memory usage down (should probably always be 1)
misc.memory_paranoia = 1
# [bool] Use save-unders when appropriate
misc.save_under = 0
# [bool] Enable pagers
pagers.enable = 1
# [bool] Enable zooming of pager snapshot windows
pagers.zoom = 1
# [bool] Show window name pop-ups
pagers.title = 1
# [bool] Enable high quality snapshots
pagers.hiq = 1
# [int] Pager mode (0: simple, 1: snap, 2: live)
pagers.mode = 2
# [int] Scan/update speed (lines/updates per second. Used only in snap or live mode)
pagers.scanspeed = 10
# [int] Pager buttons
pagers.sel_button = 2
pagers.win_button = 1
pagers.menu_button = 3
# [bool] Enable sound
sound.enable = 0
# [string] Use sounds from theme
sound.theme =
# [int] Bits masks for disabling particular sounds
sound.mask1 = 0
sound.mask2 = 0
# [string] Sound engine name (esound, pulse, alsa, player, sndio)
sound.engine =
# [string] Theme
theme.name = winter
# [string] Colon separated list of directories containing e16 themes
theme.extra_path =
# [bool] Use font specified by theme
theme.use_theme_font_cfg = 0
# [bool] Use alternative font configuration file (specified by theme.font_cfg)
theme.use_alt_font_cfg = 0
# [string] Alternative font configuration file
theme.font_cfg =
# [bool] Enable tooltips
tooltips.enable = 1
# [bool] Enable root window tooltips
tooltips.showroottooltip = 1
# [int] Tooltip delay
tooltips.delay = 1500
# [bool] Enable focus list (alt-tab)
warplist.enable = 1
# [bool] Show sticky windows
warplist.showsticky = 1
# [bool] Show shaded windows
warplist.showshaded = 1
# [bool] Show iconified windows
warplist.showiconified = 1
# [bool] Show windows on all desks
warplist.showalldesks = 0
# [bool] Warp pointer to focused window
warplist.warpfocused = 1
# [bool] Raise window while selecting
warplist.raise_on_select = 1
# [bool] Warp pointer to window while selecting
warplist.warp_on_select = 0
# [bool] Outline windows while switching
warplist.show_shape = 0
# [bool] Icon mode (0: none, 3: e/app/snap, 4: app/e/snap)
warplist.icon_mode = 3
....
[[configurationfiles]]
=== Configuration Files
Skip this section unless you *really* want to know...
It is here assumed that +--prefix+ is +/usr+, and that the default
user configuration directory (+~/.e16+) is used.
In general, the configuration search order for theme related
configuration files, say +xyz.cfg+, is:
. User configuration directory, i.e. +~/.e16/xyz.cfg+.
. Theme directory, i.e. +/usr/share/e16/themes/<theme>/xyz.cfg+, or
+~/.e16/themes/<theme>/xyz.cfg+.
. Default configuration directory, i.e.
+/usr/share/e16/config/xyz.cfg+.
Mouse and keybindings are defined in +bindings.cfg+. +bindings.cfg+
is searched in:
. User configuration directory, i.e. +~/.e16/bindings.cfg+.
. Default configuration directory, i.e. +/usr/share/e16/config/bindings.cfg+.
Window matches (border and icon associations) are defined in
+windowmatches.cfg+ and +matches.cfg+. +windowmatches.cfg+
(deprecated, border associations only) is loaded first, and should be
found only in theme directories. +matches.cfg+ is loaded next, and
searched in:
. User configuration directory, i.e. +~/.e16/matches.cfg+.
. Default configuration directory, i.e.
+/usr/share/e16/config/matches.cfg+.
Window match items are appended to the window match list, in the order
in which they are read from the configuration files. When doing
border/icon matches, the window match list is searched from the start,
and the first matching item will be used.
[[sessionscripts]]
=== Session Scripts
E16 can automatically run user scripts or applications
during Startup, Restart, and Shutdown. This facilitates the loading of
system tray applets, rss readers, screen savers, and other daemons (e.g.
dbus), and allows for cleanup of programs that don't terminate properly
when e16 quits (this is especially common with KDE applications in e16 and
the arts daemon or dcop server keeps running).
The session script feature is controlled by the configuration keys
(shown with default values):
....
misc.session.enable_script = 0
misc.session.script = $EROOT/scripts/session.sh
....
+misc.session.enable_script+ is a boolean. When set to 1,
e16 will execute the script in the +misc.session.script+ key.
By default, this feature is disabled. When enabled, it will do nothing
until the home directory (+$ECONFDIR+ -- normally +~/.e16+) is configured.
The default session.script is located in +$EROOT/scripts/session.sh+
(+$EROOT+ is normally +/usr/share/e16+ or +/usr/local/share/e16+).
It will look for directories in the user's +$ECONFDIR/+ (+~/.e16/+)
called:
....
~/.e16/ ($ECONFDIR)
Init/
Start/
Stop/
....
and run any and/or all scripts or executables in each when e16 starts,
restarts, and shuts down. If no scripts or executables are present, or
if any of the directories +Init+, +Start+, and +Stop+ do not
exist, nothing will happen and e16 will start up as usual. So, in order to
use session scripts, all the user has to do is to populate the +Init+,
+Start+, and +Stop+ directories with scripts, applications, or links
to applications that should run during Startup, Restart, or when e16 is
stopped.
The user may write a custom script and place it anywhere. Simply modify
the config file by using:
....
$ eesh set misc.session.script myscript
....
and modify it (be sure to +chmod +x+ the file otherwise it won't run).
The session script is called with one of three command parameters;
+init+, +start+, and +stop+. Any custom script should have a code
block similar to this in order to function properly in e16.
....
case "$1" in
init)
# do blah
# or do function init
start)
# do blah
# of do function start
stop)
# do blah
# or do function stop
esac
....
Automatic script running can be enabled/disabled in the Settings Dialog
under "Session", or by setting +misc.session.enable_script+ key to 1/0:
....
$ eesh set misc.session.enable_script 1/0
....
This process is very flexible since when used, the user can turn off
individual scripts and applications by +chmod -x+ or simply leave the
startup directories empty or remove them.
[[compositemanagernotes]]
=== Composite Manager
To use the composite manager it is required that the X-server has
support enabled for the COMPOSITE, DAMAGE, FIXES, and RENDER extensions.
For reasonable performance it is also required that hardware
acceleration of the RENDER extension is enabled.
As of version 0.16.8.2 it may happen that the borders on application
windows using ARGB visuals (for transparency) are "ugly". Applications
may use ARGB visuals intentionally (e.g. fdclock) or not (e.g. xv on 16
bit root depth). Applications unintentionally using an ARGB visual will
normally not be rendered properly at all and should be started with the
environment variable +XLIB_SKIP_ARGB_VISUALS+ set. To fix border
rendering on "real" ARGB windows it is required to use +imlib2+ with
version >= 1.3.0.
Tweaks:
As of e16 >= 0.16.8.9: If there is any kind of trouble with the
composite manager, first check +compmgr.mode+ (+eesh show compmgr+),
and set it to 1 if it isn't (+eesh set compmgr.mode 1+, restart).
If pop-up windows disappear immediately after having appeared (may
happen e.g. with certain pop-up windows when using gnome > 2.12), try:
....
$ eesh set compmgr.override_redirect.mode 0
....
This should make the pop-up windows usable, but not always rendered
properly. This problem should not occur with recent X-servers.
=== Fonts
Theme font selection depends on a number of settings and whether or not
the theme has font alias support.
For themes with font alias support the fonts are determined by a font
configuration file. This file is selected as follows, first hit applies:
* If +theme.use_alt_font_cfg+ is set (default off) and the the file
specified by +theme.font_cfg+ is found the fonts are determined by
this file.
* If +theme.use_theme_font_cfg+ is set (default off) and the theme has
a +fonts.theme.cfg+ the fonts are determined by the theme's
+fonts.theme.cfg+.
* If e16 was built with pango support, look for +fonts.pango.cfg+.
* If e16 was built with Xft support, look for +fonts.xft.cfg+.
* Look for +fonts.cfg+.
The font configuration file search path is +~/.e16, <theme-dir>+, and
+/usr/share/e16/config+. Default +fonts.pango.cfg+ and
+fonts.xft.cfg+ are provided in +/usr/share/e16/config+.
The default theme (winter) and the core themes (BlueSteel,
BrushedMetal-Tigert, Ganymede, and ShinyMetal) do have font alias
support.
Don Harrop has made available a major number of e16 themes which have
been modified for font alias support
(http://themes.effx.us[themes.effx.us]).
Other themes are likely to not have font alias support but in stead have
font references more or less scattered around in TextClass definitions
in the theme configuration files.
There are several ways to specify a font (in the font configuration file
or in TextClasses):
* TrueType fonts, +"<font name>/<size>"+, e.g. +"Vera/8"+. +
In this case e16 must be able to find +Vera.ttf+ in +<theme dir>/ttfonts+
or +/usr/share/e16/fonts+.
* XLFD font sets, e.g.
+"-*-lucida-medium-r-normal-*-12-120-*-*-*-*-*-*,-*-gulim*-medium-r-normal-*-12-120-*-*-*-*-ksc5601.1987-*"+. +
xfontsel, xlsfonts, and xfd can be used to select and show these fonts.
* Fontconfig font names, prefixed by "+xft:+", e.g. +"xft:Luxi Sans-10:bold"+. +
fc-list and xfd can be used to select and show these fonts.
* Pango font names, prefixed by "+pango:+", e.g. +"pango:sans bold 10"+. +
fc-list and pango-view can be used to select and show these fonts.
== Installation
Requirements:
* +imlib2+ >= 1.2.0 is required, >= 1.4.2 is recommended.
* +imlib2+ must be built with png support.
It is recommended that e16 is built with support for:
* Pango
* Xft
* RandR
* Render
* Composite
Extract distribution tarball, build, and install:
....
$ tar -xzvf e16-<version>.tar.gz
$ cd e16-<version>
$ ./configure
$ make
$ sudo make install
....
For additional help on package configuration, see
....
$ ./configure --help
....
[[res]]
== Resources
Enlightenment web site:::
https://www.enlightenment.org
Mailing lists:::
https://sourceforge.net/mail/?group_id=2
Download:::
https://sourceforge.net/projects/enlightenment/files
Themes and theming documentation:::
https://themes.effx.us/ +
https://github.com/dharrop/themes