Enlightenment 0.17"> ]> The Enlightenment 0.17 Manual Christian Kreibich
cK@whoop.org
2001 Christian Kreibich Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies of the Software and its documentation and acknowledgment shall be given in the documentation and software packages that this Software was used. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. This is document is nowhere near being finished. Be patient.
Introduction This document explains the &e17; release, for both users and developers. Using &e17; Here's how you use &e17;.
Feature List At the moment, &e17; has not been released. The current feature list includes: A fully functional and mostly ICCCM-compliant windowmanager. Multiple desktops (in the version 0.16 sense, so no large, virtual desktop area yet). Shading/unshading of windows. Ability to browse files in your filesystem through view windows, with recognition of the file types and appropriate icons. Support for icon bars in each view window. These are collections of icons for commonly needed applications or documents in a directory. For example, in a directory with lots of images you will want to have image viewers ready, in a directory with MP3 files you'll want music players etc. The icon bars keep those applications where you need them. This feature list should not imply that &e17; is ready for public use yet. Many more features are in development, but their configuration is currently hard-coded. If you want a fancy windowmanager with full configurability, you best stick to the currently stable 0.16.5 release. Please do not come to the mailing lists and ask for release dates etc. &e17; will be released when it has matured to a stable system that is usable also for novices. &e17; will not be as rich in features as the 0.16 series -- we intend to produce a simple, stable desktop shell for that release. Funky features will be considered for the 0.18 release.
The Window Manager
The File Manager
Themeing
Overview
System Settings
User Settings
Inside &e17; This chapter explains the inner workings of &e17;.
Building &e17; This chapter explains how to build &e17; manually. The Enlightenment Project is hosted by Sourceforge, the project website is therefore http://www.sf.net/projects/enlightenment. Since you're reading this document, your probably know this already. CVS is used for version control, refer to the Sourceforge documentation for details about using CVS. Make sure you know what you're doing! Building e17 from CVS code is not trivial. Expect problems. You're using development code, so do not expect the software to work. Things can and with all likelihood will break. Be sure you know how to handle the tools you need for the build. Experience from the mailing lists shows that way too many people try using CVS without the proper skills. We will try to give help, but by explaining how to build &e17; we lose time we'd otherwise spend coding, so try to solve issues yourselves first. An incomplete tree of the current CVS contents is shown below. For details about the modules, please refer to the Modules section below or the webpage. e17 | \ | apps | |___ e * Enlightenment 0.17, the main program. | | | |___ ebindings A keybingings and menu contents editor. | | | |___ ebony A background editor. | | | |___ efsd * The Enlightenment File System Daemon. | | | |___ entice An image viewer. | | | |___ etcher A GUI editor for window borders and more. | | | ... | \ libs |___ ebits * A library for "bits", graphical layout structures. | |___ ecore * An X Windows wrapper and event loop library. | |___ edb * A database library based on Berkeley DB. | |___ etox A text layout engine. | |___ evas * A graphical canvas engine. | |___ ewl A widget library using evas. | |___ ewd A container library for hashes, lists etc. | |___ imlib2 * An image loading and manipulation library. | |___ imlib2_loaders * A set of loaders for imlib2, separated due to licensing issues. The modules you absolutely need to get &e17; running are marked with an asterisk. The next thing you need to know is the build sequence. A working sequence is the following: Edb Imlib2 Imlib2 Loaders Evas Ebits Ecore Efsd E 17 Some of the modules have other dependencies, you need: For Imlib2, you need a few graphics libraries. [FIXME] For Efsd, you need libxml2 from (XMLSoft) and fam from (Version 2.6.4 or a later version) There's no real reason to build those packages from source. It's a lot easier to just install the packages of your distribution. Do not forget to install the development packages as well, or necessary C header files won't be available during the build. To build, you need recent versions of the following GNU tools: autoconf 2.13 and automake 1.4 OR autoconf 2.50+ and automake 1.5 gettext 0.10.39 or newer libtool 1.4 or newer Other combinations of automake and autoconf may work, but are more prone to errors.
&e17; Architecture
Overview Image of &e17; Architecture &e17; Architecture.
Modules e This is the main &e17; applicaton. It handles managing of windows, launching applications, managing icons and files on your desktop and in directories, drag and drop etc. ecore Ecore is a convenience library. It handles abstracting X calls so you don't have to pass as many parameters to them. It wraps lots of other sequences of X calls you want to do often, handles caching local geometry of windows to save extra X traffic, abstracts X's events and adds a timer system to be able to do timeouts, handles the core event loops, abstracts signals into being events in the event queue, and lets you arbitrarily add other file descriptors to the loop to listen on and have handlers be called when they become active, and much much more. Ecore also handles filtering events and calling idle handlers when appropriate. Ecore is just what it says - a very complex CORE subsystem. It is all callback based, and keeps everything abstracted - but does not move away from normal X11 primitives like other abstractions (GDK for example), thus keeping 100% compatibility with normal Xlib stuff. The core innards of E17 rely heavily on Ecore and its ability to not just work, but work well and optimize silently for E17. evas Evas is a canvas abstraction that uses Imlib2, as well as OpenGL, and X11. It serves as a canvas accelerator and abstraction and does the job really well. It has made building the rendering parts of &e17; a lot easier. ebits Ebits is a higher-level abstraction of image groups built on top of Evas. Basically it's what the old E16 window border logic was - but on steroids. It can do a lot more and is being used as the basic building block for all widgets in E17. Etcher is a GUI editor that can edit Ebits files - thus letting you have a nice GUI to design your widgets, window borders etc. in. edb Edb is a database abstraction layer to Berkeley DB. Edb contains the source for DB 2.7.7, thus freezing the database format on disk, making sure it will never become incompatible (as is a habit of the DB interface in libc). Edb wraps this with a convenience and optimization API layer, making database access easy, fast and consistent. It handles typing of information in the database and much more. Edb is *VERY* fast and all of E17 configuration management is built on top of it - every configuration file is a database - including Ebits files. Also, Efsd stores its metadata information in Edb databases. efsd Efsd is the file system abstraction layer. It is a library and a daemon process that the library communicates with for the calling process (in this case E17). It handles all filing system interaction in an asynchronous manner, so E17 isn't ever left blocking on basic IO requests. It handles copying, renaming and deleting of files. Also listing of directories, monitoring for changes in directories, retrieving stat information on files, as well as metadata retrieval and modification for files. All of this is done in an asynchronous request/event system thus keeping E17 free to handle user interaction as much as possible while Efsd does the nasty IO work. imlib2 Imlib2 is the abstraction layer that handles the raw nasty work of loading images, saving them, rendering them to a drawable or blending and scaling them onto other images, software anti-aliased truetype fonts and other goodies. This one is pretty much done and finished with. It gets minor updates and fixes as needed, but otherwise is left alone. imlib2_loaders This is a collection of loaders that are not packaged with Imlib2 due to licensing issues or because the loaders are not commonly needed enough. It currently contains a loader for Edb files (where images can be accessed through character string keys) and a loader for Gimp's native XCF image format.
Scripting &e17; &e17; provides hooks to allow script interaction with the core systems, using the Ferite scripting language. There basic scripting support is in the code now, but it's too early to think about writing larger scripts.
Code Documentation !Isrc/actions.h !Isrc/border.h !Isrc/desktops.h !Isrc/entry.h !Isrc/fs.h !Isrc/guides.h !Isrc/iconbar.c !Isrc/icons.h !Isrc/menu.h !Isrc/menu.c !Isrc/object.h !Isrc/observer.h !Isrc/place.h !Isrc/view.h
Roadmap