forked from enlightenment/enlightenment
473 lines
16 KiB
Plaintext
473 lines
16 KiB
Plaintext
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
|
|
<!ENTITY e17 "<productname>Enlightenment 0.17</productname>">
|
|
]>
|
|
|
|
|
|
<book id="e17-manual">
|
|
<bookinfo>
|
|
<title>The Enlightenment 0.17 Manual</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Christian</firstname>
|
|
<surname>Kreibich</surname>
|
|
<affiliation>
|
|
<address>
|
|
<email>cK@whoop.org</email>
|
|
</address>
|
|
</affiliation>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<copyright>
|
|
<year>2001</year>
|
|
<holder>Christian Kreibich</holder>
|
|
</copyright>
|
|
|
|
<legalnotice>
|
|
<para>
|
|
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:
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</legalnotice>
|
|
|
|
<releaseinfo>
|
|
This is document is nowhere near being finished. Be patient.
|
|
</releaseinfo>
|
|
|
|
</bookinfo>
|
|
|
|
<toc></toc>
|
|
|
|
<chapter id="introduction">
|
|
<title>Introduction</title>
|
|
<para>
|
|
This document explains the &e17; release, for both users and
|
|
developers.
|
|
</para>
|
|
</chapter>
|
|
|
|
<chapter id="using">
|
|
<title>Using &e17;</title>
|
|
<para>
|
|
Here's how you use &e17;.
|
|
</para>
|
|
|
|
<section id="features">
|
|
<title id="features.title">Feature List</title>
|
|
<para>
|
|
At the moment, &e17; has not been released. The current feature list includes:
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>A fully functional and mostly ICCCM-compliant windowmanager.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Multiple desktops (in the version 0.16 sense, so no large,
|
|
virtual desktop area yet).</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Shading/unshading of windows.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Ability to browse files in your filesystem through view windows,
|
|
with recognition of the file types and appropriate icons.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
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.
|
|
</para>
|
|
<para>
|
|
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 <emphasis>not</emphasis> 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.
|
|
</para>
|
|
</section>
|
|
|
|
<section id="wm">
|
|
<title id="wm.title">The Window Manager</title>
|
|
<para>
|
|
</para>
|
|
</section>
|
|
|
|
<section id="fm">
|
|
<title id="fm.title">The File Manager</title>
|
|
<para>
|
|
</para>
|
|
</section>
|
|
|
|
<section id="concepts">
|
|
<title id="concepts.title">Themeing</title>
|
|
<section id="overview">
|
|
<title id="overview.title">Overview</title>
|
|
<para>
|
|
</para>
|
|
</section>
|
|
<section id="system">
|
|
<title id="system.title">System Settings</title>
|
|
<para>
|
|
</para>
|
|
</section>
|
|
<section id="user">
|
|
<title id="user.title">User Settings</title>
|
|
<para>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
</chapter>
|
|
|
|
<chapter id="inside">
|
|
<title>Inside &e17;</title>
|
|
<para>
|
|
This chapter explains the inner workings of &e17;.
|
|
</para>
|
|
|
|
<section id="build">
|
|
<title id="build.title">Building &e17;</title>
|
|
<para>
|
|
This chapter explains how to build &e17; manually. The Enlightenment
|
|
Project is hosted by <ulink url="http://www.sourceforge.net">Sourceforge</ulink>,
|
|
the project website is therefore
|
|
<ulink url="http://www.sourceforge.net/projects/enlightenment">http://www.sf.net/projects/enlightenment</ulink>.
|
|
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.
|
|
</para>
|
|
<para>
|
|
<caution>
|
|
<title>Make sure you know what you're doing!</title>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</caution>
|
|
</para>
|
|
<para>
|
|
An incomplete tree of the current CVS contents is shown below.
|
|
For details about the modules, please refer to the
|
|
<link linkend="modules" endterm="modules.title">Modules</link>
|
|
section below or the
|
|
<ulink url="http://www.enlightenment.org/pages/components.html">webpage</ulink>.
|
|
|
|
<programlisting>
|
|
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.
|
|
</programlisting>
|
|
|
|
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:
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Edb</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Imlib2</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Imlib2 Loaders</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Evas</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Ebits</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Ecore</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Efsd</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>E 17</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
Some of the modules have other dependencies, you need:
|
|
|
|
<itemizedlist mark="opencircle">
|
|
<listitem>
|
|
<para>For Imlib2, you need a few graphics libraries. [FIXME]</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>For Efsd, you need libxml2 from
|
|
(<ulink url="http://xmlsoft.org/">XMLSoft</ulink>) and fam from
|
|
(<ulink url="http://prdownloads.sourceforge.net/enlightenment/fam-oss-2.6.4-NULL-fix.tar.gz">Version 2.6.4</ulink> or a later version)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<note>
|
|
<title>There's no real reason to build those packages from source.</title>
|
|
<para>
|
|
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.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
<para>
|
|
To build, you need recent versions of the following GNU tools:
|
|
|
|
<itemizedlist mark="opencircle">
|
|
<listitem>
|
|
<para><command>autoconf</command> 2.13 and <command>automake</command> 1.4 <emphasis>OR</emphasis></para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>autoconf</command> 2.50+ and <command>automake</command> 1.5</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>gettext</command> 0.10.39 or newer</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>libtool</command> 1.4 or newer</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
Other combinations of <command>automake</command> and
|
|
<command>autoconf</command> may work, but are more
|
|
prone to errors.
|
|
</para>
|
|
</section>
|
|
|
|
<section id="architecture">
|
|
<title id="architecture.title">&e17; Architecture</title>
|
|
<section id="overall">
|
|
<title id="overall.title">Overview</title>
|
|
<para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="figures/architecture.eps" format="eps">
|
|
</imageobject>
|
|
<imageobject>
|
|
<imagedata fileref="figures/architecture.gif" format="gif">
|
|
</imageobject>
|
|
<textobject>
|
|
<phrase>Image of &e17; Architecture</phrase>
|
|
</textobject>
|
|
<caption>
|
|
<para>&e17; Architecture.</para>
|
|
</caption>
|
|
</mediaobject>
|
|
|
|
</para>
|
|
</section>
|
|
<section id="modules">
|
|
<title id="modules.title">Modules</title>
|
|
<para>
|
|
|
|
<itemizedlist mark="opencircle">
|
|
<listitem>
|
|
<para><command>e</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>ecore</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>evas</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>ebits</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>edb</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>efsd</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>imlib2</command></para>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><command>imlib2_loaders</command></para>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
<section id="scripting">
|
|
<title id="scripting.title">Scripting &e17;</title>
|
|
<para>
|
|
&e17; provides hooks to allow script interaction with the core systems,
|
|
using the <ulink url="http://www.ferite.org">Ferite</ulink> scripting
|
|
language. There basic scripting support is in the code now, but it's
|
|
too early to think about writing larger scripts.
|
|
</para>
|
|
</section>
|
|
|
|
<section id="code">
|
|
<title>Code Documentation</title>
|
|
!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
|
|
</section>
|
|
|
|
<section id="roadmap">
|
|
<title id="roadmap.title">Roadmap</title>
|
|
<para>
|
|
</para>
|
|
</section>
|
|
|
|
</chapter>
|
|
|
|
</book>
|
|
|