## About Enlightenment e16

Jul 18, 2009

Abstract

Coming soon. (maybe)

## Credits

This note contains contributions by

- Kim Woelders

- Peter Hyman `<pete4abw@comcast.net>`

- Yasufumi Haga `<yasufumi.haga@nifty.com>`

## Requirements

- `imlib2` >= 1.2.0 is required, >= 1.4.2 is recommended.

- `imlib2` must be built with png support.

## Installation

    	./configure
    	make
    	sudo make install

For additional help on package configuration, see

    	./configure --help

## Versions

e16-1.0.0:

  No major changes, might as well have been 0.16.8.16.

e16-0.16.8

  - Released Feb 2006

  - enlightenment -> e16

  - Major internal rewrite

  - Changed configuration system

  - Added compositing manager

enlightenment-0.16.7

  - Released Jul 2004

  - Migrated to imlib2

enlightenment-0.16.6

  - Released Nov 2003

  - Added extended window manager hint support

enlightenment-0.16.5

  Released Oct 2000

enlightenment-0.16.0

  Released Oct 1999

## Configuration

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 E 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] Hack to fix problems with resize on old xorg servers
    	compmgr.resize_fix_enable = 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-up's, 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

    	# [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
    	# [bool] Raise window when clicked
    	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
    	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
    	groups.swapmove = 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 pseudotransparency
    	# May cause major slowdowns in certain setups
    	misc.hints.set_xroot_info_on_root_window = 0

    	# [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 technincal/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 pseudotransparent 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

    	# [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] 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.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] Show differential time in debug output
    	misc.difftime = 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] 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

    	# [int] Theme transparency(0-255)
    	transparency.alpha = 0
    	# [int] Item transparencies (0: off, 1: background, 2: glass)
    	transparency.menu = 1
    	transparency.menu_item = 1
    	transparency.tooltip = 2
    	transparency.widget = 1
    	transparency.hilight = 0
    	transparency.border = 1
    	transparency.iconbox = 1
    	transparency.dialog = 1
    	transparency.pager = 1
    	transparency.warplist = 1

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

## Default keybindings

Alt-Ctrl | Home | Auto-arrange windows
Alt-Ctrl | Insert | Launch Eterm
Alt-Ctrl | Delete | Log out
Alt-Ctrl | End | Exit
Alt-Ctrl | Right | Goto next desk
Alt-Ctrl | Left | Goto previous desk
Alt-Shift | Down | Move desk area down
Alt-Shift | Up | - - - up
Alt-Shift | Left | - - - left
Alt-Shift | Right | - - - right
Alt | F1 | Goto desk 0
Alt | F2 | - - 1
Alt | F3 | - - 2
Alt | F4 | - - 3
Alt | F5 | - - 4
Alt | F6 | - - 5
Alt | F7 | - - 6
Alt | F8 | - - 7
Alt | Tab | Switch focus (using focus list, if enabled)
Alt-Ctrl | Up | Raise active window
Alt-Ctrl | Down | Lower active window
Alt-Ctrl | x | Close active window
Alt-Ctrl | k | Destroy active window
Alt-Ctrl | s | Toggle active window sticky state
Alt-Ctrl | i | Iconify active window
Alt-Ctrl | r | Toggle active window shaded state
Alt-Ctrl | f | Toggle active window fullscreen state
Alt-Ctrl | m | Toggle active window maximized state
Alt-Ctrl | w | Show window-ops menu for active window
Alt | Return | Toggle active window zoomed state
Ctrl-Shift | F1 | Show User menu (default left mouse button)
Ctrl-Shift | F2 | Show Enlightenment menu (default middle mouse button)
Ctrl-Shift | F3 | Show Configuration menu (default right mouse button)
Ctrl-Shift | F4 | Show Window List menu (default Alt-middle mouse button)
Alt-Ctrl | a | Toggle visibility of all buttons
Alt-Ctrl | b | Toggle visibility of theme buttons
Alt-Ctrl | c | Toggle visibility of configuration buttons

## Session Scripts

Enlightenment can now automatically run user scripts or applications during Startup, Restart, and Shutdown. This facilitates the loading of system tray applets, rss readers, screensavers, and other daemons (e.g. dbus), and allows for cleanup of programs that don't terminate properly when E quits (this is especially common with KDE applications in E and the arts daemon or dcop server keeps running).

Enlightenment accomplishes this with the addition of two new keys in the `$ECONFDIR/e_config--#.#.cfg` (#.# may vary depending on your X setup -- for most people, it will be 0.0). These are:

    	misc.session.enable_script
    	misc.session.script

`misc.session.enable_script` is a boolean. When set to 1, Enlightenment will execute the script in the `misc.session.script` key. By default, this feature is disabled. When enabled, it will do nothing until the user configures his/her home directory (`$ECONFDIR` -- normally `~/.e16`).

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 E 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 E 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 E is stopped.

The default values for the new keys are:

    	misc.session.enable_script = 0
    	misc.session.script = $EROOT/scripts/session.sh

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

    	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 via the Session Settings dialog in Enlightenment and checking/unchecking the option Enable Session Script, by editing the user cfg file and setting the `misc.session.enable_script` key to 1/0, or with

    	$ 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 notes

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.

If window resize/shading with composite enabled is ugly, try:

    	$ eesh set compmgr.resize_fix_enable 1

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

- "<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. This possibility (Xft support) is available as of version 0.16.8.5.

- Pango font names, prefixed by "pango:", e.g. "pango:sans bold 10".

  This possibility (Pango support) is available as of version 0.16.8.9. Pango support must be explicitly enabled at build time with `--enable-pango`.

## Using e16 with GNOME

Setting up e16 as WM in a GNOME session unfortunately depends on the version of gnome-session.

Recent versions of gnome-session seem to require that a gconf key is set and that an `e16.desktop` file can be found:

    	$ gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string e16
    	$ gnome-sesssion

`/usr/share/applications/e16.desktop` (or `~/.local/share/applications/e16.desktop`):

    	[Desktop Entry]
    	Encoding=UTF-8
    	Type=Application
    	Name=E16
    	Comment=The Enlightenment (e16) window manager
    	Exec=e16
    	Icon=/usr/share/e16/misc/e16.png

The section below seems to be obsolete as of gnome-session-2.2x(?)

The GNOME desktop can be started using e16 as WM with:

    	$ export WINDOW_MANAGER=e16
    	$ gnome-sesssion

The section below is obsolete as of gnome-session-2.16

However, somewhere along the way the script `/usr/bin/gnome-wm` is called. This is supposed to handle differences in all the different WM's out there, but does not know of "e16". This will cause a major delay when starting up the GNOME desktop. One way to fix this is to use gnome-session-properties to get rid of the "gnome-wm" session entry.

Another is to apply this patch to `/usr/bin/gnome-wm`:

    	--- /usr/bin/gnome-wm-org       2005-04-19 21:33:53.000000000 +0200
    	+++ /usr/bin/gnome-wm   2005-11-15 20:46:09.000000000 +0100
    	@@ -69,7 +69,7 @@
    	OPT2=
    	if [ ! -z "$SMID" ] ; then
    	case `basename $WINDOW_MANAGER` in
    	-    sawfish|sawmill|metacity)
    	+    sawfish|sawmill|metacity|e16)
    	OPT1=--sm-client-id=$SMID
    	;;
    	openbox)

## Using e16 with KDE

The KDE desktop can be started using e16 as WM with:

    	$ export KDEWM=e16
    	$ startkde

## Major changes and new features in 0.16.8

The following sections are only relevant for users upgrading from version 0.16.7 or older.

Changes:

- "enlightenment" has been renamed to "e16".

- The default user configuration directory is "`~/.e16`".

- The data install path is "`<somepath>/e16`", e.g. "`/usr/share/e16`". Thus, an e16.8 installation should not clash with any other versions.

- Various configuration file formats have changed and should be easier to read and modify, if needed.

- The configuration is stored per display and per screen. E.g. for `DISPLAY=:1.0` the main configuration file is "`~/.e16/e_config--1.0.cfg`".

- Actions(used by menus, keybindings, etc.) and IPC functions(eesh) have been merged.

- Many IPC(eesh) commands have been changed, possibly breaking compatibility with a few epplets.

- Window matches and icondefs have been merged (into `matches.cfg`), see below.

New features:

- Built-in composite manager.

- An iconbox can be configured to act as System Tray (middle mouse+Desktop → Create Systray).

- Possibility to run programs on startup, restart, and shutdown, see "Session Scripts" below.

- Possibility to track changes in remembered settings.

- Window operations by window matches (class, name, transient, ...), e.g. for making all windows of a certain type sticky, put it on a certain layer, etc. (see `matches.cfg`).

0.16.8 should be compatible with most e16 themes. However, user installed themes will have to be moved/linked to `~/.e16/themes/` or `<datadir>/e16/themes/`. A few themes will have to be tweaked to work with e16.8. The most likely problem is that configuration settings are included in .cfg files where they are no longer accepted. See the "Migrating ..." section below for additional information.

e16keyedit >= 0.3 works with e16.8.

If used to change the keybindings, the modified settings will be stored in `~/.e16/bindings.cfg`. It should also be fairly straightforward to modify the key- and buttonbindings by hand. Copy `/usr/share/e16/config/bindings.cfg` to `~/.e16/bindings.cfg` and modify as desired.

NB! e16keyedit only modifies keybindings, not buttonbindings.

NB!!! Do not rename `~/.enlightenment` to `~/.e16`. It will only cause trouble.

## Migrating from versions older than 0.16.8

Users upgrading from enlightenment 0.16.7 need to read the following.

Several organizational changes have occurred that will require some manual adjustments. Mainly these deal with changes to configuration and shared directory names. This was done to avoid collisions with the new enlightenment DR17.

1. home configuration directory is now `~/.e16`, not `~/.enlightenment`.

2. menu files have been moved to a subdirectory called menus you will need to move customized menus and subdirectories to `~/.e16/menus`.

3. you will need to move `~/.enlightenment/backgrounds` files to `~/.e16` and any themes as well.

4. `$prefix/share/enlightenment` has been changed to `$prefix/share/e16`

5. if installed E-docs and Epplet directories will have to be moved to `$prefix/share/e16`

6. any additional themes that were added to the `$prefix/share/enlightenment` directory will have to be moved to `$prefix/share/e16`

7. any startup scripts or Session scripts that reference the startup executable `enlightenment` must be edited to the new e16 program.

A few themes have to be tweaked to work with 0.16.8.

Some themes (Maw, Black E) have an `actionclasses.cfg` like:

    #include <definitions>
    __E_CFG_VERSION 0
    #include </usr/local/enlightenment/config/actionclasses.cfg>
    #include </usr/share/enlightenment/config/actionclasses.cfg>

The absolute path is obviously no longer valid. The most sensible fix for these themes is to remove the themes `actionclasses.cfg`. e16 will then fall back to the default one.

## Resources

The e16-docs package is somewhat dated but still contains much relevant information about using e16.

Enlightenment web site:

  www.enlightenment.org

Mailing lists:

  sourceforge.net/mail

IRC:

  #e on freenode

## Revision History

Revision History
Revision 33 | Apr 19, 2009 | Yasufumi Haga
rename README-0.16.8.xml to README.xml
Revision 32 | Jan 25, 2009 | Yasufumi Haga
Add html version converted from README-0.16.8.xml rewritten by Yasufumi Haga based on the ascii version of the file.
Revision 1-31 | 2004-2009 | Several
Updates...
Revision 0 | Dec 30, 2004 | Peter Hyman
Notes on migrating to 0.16.8