= 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 .... 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//xyz.cfg+, or +~/.e16/themes//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, +, 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, +"/"+, e.g. +"Vera/8"+. + In this case e16 must be able to find +Vera.ttf+ in +/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-.tar.gz $ cd e16- $ ./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