# The e16 window manager

## User Documentation

### 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 dragbar.

On the bottom-left you’ll see the pagers for desktops 0 and 1.

On the bottom-right you’ll see an iconbox.

Everything else is your desktop background.

### Menus

When you click with your left mouse button on the desktop 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 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 Settings Dialog allows you to customize your desktop to better suit your needs.

### Mouse Bindings

Of course, when you click on the desktop background of your screen, normally you will bring up a menu. And of course, when you click on the 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 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 resize it, or use ALT and right-click to bring up the Window Operations Menu.

Holding down the ALT key while clicking the middle mouse button on the background of your 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.

### 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 desktop. Rolling your wheel downward you will advance forward a desktop.

### 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 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.

### 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 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 Remember dialog to remember the current window border.

### Default Keybindings

Below are the keybindings for e16 as it comes "from the factory"

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

### 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 Settings Dialog.

To change the number of virtual areas, select "Areas" in the 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 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 Desktop Backgrounds section.

### 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 Keybindings Alt-F1 through Alt-F8 for the first 8 desktops., You can use the Keybindings Ctrl-Alt-Left and Ctrl-Alt-Right to navigate to the next/previous desktop., You can use the Keybindings Shift-Alt-arrow to change virtual areas in a given direction., You can use the Pager to quickly navigate to the desktop/area you want by clicking on the desired area., You can use the 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.

### 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 Pager.

You can also move applications between desktops using the Dragbar.

You can also move applications between desktops using the KDE or GNOME desktop pagers.

You can also move a window, then bring the window with you as you change desktops using keybinding.

### 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. 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 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.

### 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 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 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.

### The Iconbox

The iconbox is the place the icons for all your iconified windows go. It is one method of recovering 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 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 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 resize the Iconbox by alt-middleclicking on the window and then adjusting the size as described in the 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 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.

### Recovering Minimized Applications

There are several ways to recover an application once you have minimized it. The most obvious way is to use the 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 Dragbar and get a 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 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 settings.

### Remembering Application Properties

In the 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

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.

### 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 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 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.

### 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 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

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 Window Border.

You can disable the tooltips or change the delay before they pop up by selecting "Tooltips" in the 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 Settings Dialog.

### 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 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 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 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 Keybinding.

### Moving Windows

E16 comes with several different available methods for moving a window. You can perform the actual moves using the window border, or by using the available 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 Settings Dialog, and select "Move/Resize". You can select the mode from a list. Experiment until you find one that suits you best.

### 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 border and dragging to the desired size. You can also get the same effect by using the ALT + middle button 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 Settings Dialog, and select "Move/Resize". You can select the mode from a list. Experiment until you find one that suits you best.

### 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 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 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 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 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 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.

### Window Placement

Selecting "Placement" in the 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.

### 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)

### 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 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.

### 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.

### 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 Settings menu, going to the "Themes" selector, and then choosing a new theme.

Many more themes are available elsewhere, see 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 menu, and you can choose it just like any other theme.

### 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" 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

### 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.

### Frequently Asked Questions

#### Q: I can’t find my iconbox or change its settings.

A: There are two possibilities here.

1. You don’t have an Iconbox on your desktop right now. Just middle-click and select Desktop/Create new iconbox

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 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 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 Window Operations menu, ALT + Middle mouse button will resize the iconbox and ALT+left mouse button will move it. See the 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 tooltip 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 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

### 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:

1. User configuration directory, i.e. `~/.e16/xyz.cfg`.

2. Theme directory, i.e. `/usr/share/e16/themes/<theme>/xyz.cfg`, or `~/.e16/themes/<theme>/xyz.cfg`.

3. Default configuration directory, i.e. `/usr/share/e16/config/xyz.cfg`.

Mouse and keybindings are defined in `bindings.cfg`. `bindings.cfg` is searched in:

1. User configuration directory, i.e. `~/.e16/bindings.cfg`.

2. 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:

1. User configuration directory, i.e. `~/.e16/matches.cfg`.

2. 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.

### 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.

### 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 (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

## 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