Enlightenment

From Gentoo Wiki
Jump to: navigation, search

Enlightenment is an eye-candy, compositing and stacking window manager that is released under the permissive BSD License. It was first released in 1997 by Carsten Haitzler (Rasterman) and this original release was dubbed Enlightenment DR16 (or E16 for short). In 2012 a new version of Enlightenment was released, which was called Enlightenment DR17 (or E17). Since then many further major releases of Enlightenment have been made: E18, E19, E20, E21 and E22. E20, E21 and E22 are all presently in the Portage Tree.

There has been some confusion over Enlightenment versions. E16, despite being an older release of Enlightenment, has its releases numbered 1.x, while the later releases of Enlightenment (E17-E22) all have decimal release numbers. E17 is numbered 0.17.x, E18 is numbered 0.18.x, E19 is numbered 0.19.x while E20 is numbered 0.20.x and so on. Consequently, it is advised that users are careful as to which version of Enlightenment they are installing. While the version numbers reflect actual versions of the upstream tar archives, they can be confusing.

Installation

USE flags

USE flags for x11-wm/enlightenment Enlightenment window manager

acpi Add support for Advanced Configuration and Power Interface global
connman Add support for net-misc/connman global
packagekit Enable module for package manager integration local
wayland Enable dev-libs/wayland backend global
wifi Enable wireless network functions global

All wayland-related modules should be either disabled or enabled, depending on your wayland USE flag status.

Important
Upstream requires systemd to be used when enabling wayland, see Wayland requirements.

For a working Enlightenment installation, USE flags with EFL are important.

USE flags for dev-libs/efl Enlightenment Foundation Libraries all-in-one package

bmp Enable WBMP image loader local
connman Add support for net-misc/connman global
dds Enable DDS image loader local
drm Enable DRM engine local
eet Enable Eet image loader local
egl Enable EGL rendering local
fbcon Add framebuffer support for the console, via the kernel global
fontconfig Support for configuring and customizing font access via media-libs/fontconfig global
fribidi Enable bidirectional text support local
gif Add GIF image support global
gles Enable the OpenGL ES GL implementation local
glib Enable dev-libs/glib support local
harfbuzz Enable complex text shaping and layout support local
hyphen Enable text hyphenation support local
ibus Enable Intelligent Input Bus local
ico Enable Ico image loader local
jpeg2k Support for JPEG 2000, a wavelet-based image compression format global
libuv Enable dev-libs/libuv support local
luajit USE dev-lang/luajit instead of dev-lang/lua local
neon Enable optimization support for ARM NEON processors global
physics Enable Bullet physics effects and support local
postscript Enable support for the PostScript language (often with ghostscript-gpl or libspectre) global
ppm Enable PMAPS image loader local
psd Enable PSD image loader local
raw Add support for raw image formats global
scim Enable Smart Common Input Method local
static-libs Build static versions of dynamic libraries as well global
svg Add support for SVG (Scalable Vector Graphics) global
system-lz4 Use system liblz4 instead of bundled one local
tga Enable Tga image loader local
tiff Add support for the TIFF image format global
tslib Enable x11-libs/tslib for touchscreen events local
unwind Enable debug support via sys-libs/libunwind local
v4l Enable support for video4linux (using linux-headers or userspace libv4l libraries) global
valgrind Enable usage of dev-util/valgrind in debug local
vlc Enable media-video/vlc support local
vnc Enable VNC (remote desktop viewer) support global
wayland Enable dev-libs/wayland backend global
xcf Enable XCF image loader local
xim Enable X Input Method local
xpm Add support for XPM graphics format global
xpresent Enable x11-libs/libXpresent support local

Latest Enlightenment

For installing the latest Enlightenment WM and the needed libraries, just issue the following command:

root #emerge --ask enlightenment

For SVG support e.g. for previews or menu entries, you can additionally install dev-libs/efl with the svg USE flag enabled.

Addition to /etc/portage/package.use (unless you already have the svg USE flag globally enabled) and install the package:

root #euse -p dev-libs/efl -E svg
root #emerge --ask efl

Enabling at least these USE flags for efl is recommended when running Enlightenment: X bmp drm eet fontconfig gif gstreamer harfbuzz ico jpeg2k opengl pulseaudio sound svg system-lz4 systemd

Stable Enlightenment

Because upstream only provides support for the latest Enlightenment, Gentoo will try to follow upstream's release cycles closely. If you prefer older releases of Enlightenment WM, you might have to set up a local overlay to store ebuilds for x11-wm/enlightenment and dev-libs/efl. You can find all the older ebuilds by utilizing Git history.

On stable systems, to get the latest stable version, type

root #emerge --ask enlightenment

You can utilize /etc/portage/package.mask to block incoming updates.

Enlightenment live ebuilds

The process is a little different because it's recommended to always rebuild all of the components using their current state in Git. Make sure you have installed Layman or Eselect/Repository. Now you can add the enlightenment-live overlay.

root #layman -a enlightenment-live

or

root #eselect repository enable enlightenment-live

Make sure to install all core enlightenment packages using live ebuilds. You can update using the exact same command to ensure that all core packages are updated.

root #emerge --ask --autounmask-write @enlightenment-core-9999

The overlay contains masked package even for latest stable enlightenment releases.

Be aware that they are currently masked for ~amd64, so you need to unmask them.

root #emerge --ask --autounmask-write efl enlightenment
Note
The ebuilds are currently tested for X and not for Wayland. Further investigation and feedback is needed for Enlightenment with Wayland and Systemd
Note
The ebuilds for the latest stable packages may be moved to the official repository once tested and stable.

If anything goes wrong, file a ticket on GitHub or contact User:Rafspiny. Those are live ebuilds and therefore they can occasionally need updating. I'm also considering starting a separate overlay just for Enlightenment, let me know if that would help you.

Enlightenment e16

Old Enlightenment-e16 is still maintained. It was removed from Gentoo's portage tree because it caused a lot of confusion and made later Enlightenment releases harder to handle due to wrongly slotted packages. You can install e16 from e16-overlay. Please report any issues you find with e16 to the maintainer of that overlay via Github issues.

Note
Update this section when the overlay gets added to public layman / eselect-repository list.

Configuration

Enlightenment

Enlightenment's configuration is all handled through the settings editor from within enlightenment. You can access some "under-the-hood" config options with

user $elementary_config

And there's also a command line tool called vieet which especially useful in emergency. In many cases, if your Enlightenment's configuration gets broken, moving ~/.e and ~/.elementary to a temporary place, then re-starting Enlightenment usually helps.

Launching enlightenment with startx

FILE ~/.xinitrc
exec dbus-launch --exit-with-session enlightenment_start

Tips and tricks

Adding Gadgets to desktop

Open up menu and navigate to "Desktop -> Add Gadgets".

Disabling desktop application icons

The option to disable application icons in desktop is a bit hidden. Open Settings Panel then go to "Files" tab, navigate to "File Manager -> Display" and uncheck "Icons On Desktop".

Using 'bryce' instead of old-fashioned panel

With recent versions, users can opt to use experimental new "bryce" instead of old panel. Open desktop menu menu and navigate to "Desktop -> Add Bryce". Bryces are experimental in Enlightenment's versions below 0.23.

Wayland session

Important
At the time of writing (19 Aug 2018) Enlightenment with Wayland session is not considered stable for everyday use.

Easiest way to start a wayland session is to use a wayland-compliant login manager, like GDM or SDDM. Wayland session can be started from TTY also, by exporting

user $ECORE_EVAS_ENGINE=wayland_egl ELM_DISPLAY=wl ELM_ACCEL=gl enlightenment_start

where ECORE_EVAS_ENGINE is set to wayland_egl or wayland_shm depending on whether you wish to use the SHM based software rendering or EGL.

When using software rendering, also export ELM_ACCEL=none.

EFL-based applications

EFL and python-efl offer developers everything needed to develop eye-candy applications that integrate into Enlightenment WM. Here are few of them,

  • Edi An EFL-based IDE
  • Ephoto Enlightenment image viewer written with EFL
  • Econnman ConnMan User Interface for Enlightenment
  • Evisum System and process monitor written with EFL
  • enlightenment-extra An app for downloading themes and add-ons to Enlightenment WM
  • terminology Feature rich terminal emulator
  • e-gtk-theme A GTK theme to match Enlightenment WM's default theme


Note
Anyone can add software they use via the proxy-maint project. Please do so. A short list of external applications. And some python-efl applications.

Troubleshooting

Applications requiring system tray not working properly

Older applications still using xembed systray instead of appindicator may not work properly (Dropbox for example). Solution is to install a stand-alone system tray program, such as stalonetray.

Black window contents

If you get windows with completely black contents (most likely with the nvidia proprietary driver and Enlightenment 0.20.5 or 0.20.6), follow these steps:

  • log out from Xorg.
  • set E_COMP_ENGINE=sw, for example in .xinitrc:
FILE ~/.xinitrc
export E_COMP_ENGINE=sw
exec dbus-launch --exit-with-session enlightenment_start

Alternatively, you can set the variable in /etc/environment.

  • start X.
  • Go to Settings->Composite->Advanced->Rendering and disable "Texture from pixmap".
  • Then you can remove "export E_COMP_ENGINE=sw" from .xinitrc and log out/in to get accelerated rendering again.

For more information see this bug report.

"build error: undefined symbol: _EFL_GFX_PATH_CHANGED"

An unfortunate build error that's caused by existing libraries. There is usually a more detailed error, like: "/usr/lib64/libector.so.1: undefined symbol: _EFL_GFX_PATH_CHANGED". In this case, remove any existing installation of dev-libs/efl and the offending library.

Important
It's wise to log out from Enlightenment before removing efl. Removing efl while using Enlightenment might cause Enlightenment to act weirdly and in the worst case lock up. If that happens, you won't see if the build fails. Log in to TTY or some other WM/DE while re-installing efl.
root #emerge -C --nodeps dev-libs/efl
root #rm /usr/lib64/libector.so.1
root #emerge --ask dev-libs/efl

See more in #651890.

Debugging

If you've tried to move your config files away and Enlightenment still doesn't work, you can debug the problem by typing

user $enlightenment_start 2>&1 | tee logthing.txt

and reading the log file. It is useful when making a bug report to bugs.gentoo.org or upstream's Phabricator. If the log file doesn't imply clear errors, you might have to install and run it it with debugging tools like gdb, strace or valgrind.

user $E_START=1 strace enlightenment_start 2>&1 | tee logthing.txt

"No opengl engines found" with nvidia-drivers

With latest releases of mesa and xorg-1.20, efl can look for libGL.so from a wrong place. This results in Enlightenment's gl-engine not using opengl backend. This can be fixed with patchelf utility.

Identify where your libGL.so is installed, usually /usr/lib/opengl/nvidia/lib/libGL.so. Then use patchelf to modify efl's gl engine,

user $patchelf --set-rpath /usr/lib/opengl/nvidia/lib/ /usr/lib64/evas/modules/engines/gl_x11/v-1.20/module.so

And relog. Paths depend on your architechture. This needs to be done once, or everytime efl is re-installed.

Screenshots

See also

External resources