Enlightenment
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, from E18 to E24.
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-E23) 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 |
bluetooth
|
Enable Bluetooth Support |
connman
|
Add support for net-misc/connman |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
exif
|
Add support for reading EXIF headers from JPEG and TIFF images |
geolocation
|
Enable physical position determination |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
pam
|
Add support for PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip |
policykit
|
Enable PolicyKit (polkit) authentication support |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
udisks
|
Enable storage management support (automounting, volume monitoring, etc) |
wayland
|
Enable dev-libs/wayland backend |
xwayland
|
Enable XWayland application support |
All Wayland related modules should be either disabled or enabled, depending on the wayland
USE flag status.
USE flags for dev-libs/efl Enlightenment Foundation Libraries all-in-one package
+X
|
Add support for X11 |
+eet
|
Enable Eet image loader |
+fontconfig
|
Support for configuring and customizing font access via media-libs/fontconfig |
+gstreamer
|
Add support for media-libs/gstreamer (Streaming media) |
+pdf
|
Add general support for PDF (Portable Document Format), this replaces the pdflib and cpdflib flags |
+sound
|
Enable sound support |
+svg
|
Add support for SVG (Scalable Vector Graphics) |
+system-lz4
|
Use system liblz4 instead of bundled one |
avif
|
Add AV1 Image Format (AVIF) support |
bmp
|
Enable WBMP image loader |
connman
|
Add support for net-misc/connman |
dds
|
Enable DDS image loader |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
drm
|
Enable DRM engine |
efl-one
|
Combine multiple core libraries into one libefl.so |
elogind
|
Enable session tracking via sys-auth/elogind |
examples
|
Install examples, usually source code |
fbcon
|
Add framebuffer support for the console, via the kernel |
fribidi
|
Enable bidirectional text support |
gif
|
Add GIF image support |
glib
|
Enable dev-libs/glib support |
harfbuzz
|
Enable complex text shaping and layout support |
heif
|
Enable support for ISO/IEC 23008-12:2017 HEIF/HEIC image format |
hyphen
|
Enable text hyphenation support |
ibus
|
Enable Intelligent Input Bus |
ico
|
Enable Ico image loader |
jpeg2k
|
Support for JPEG 2000, a wavelet-based image compression format |
jpegxl
|
Add JPEG XL image support |
json
|
Enable lottie animation support |
mono
|
Enable mono bindings |
nls
|
Add Native Language Support (using gettext - GNU locale utilities) |
opengl
|
Add support for OpenGL (3D graphics) |
physics
|
Enable Bullet physics effects and support |
pmaps
|
Enable PMAPS image loader |
postscript
|
Enable support for the PostScript language (often with ghostscript-gpl or libspectre) |
psd
|
Enable PSD image loader |
pulseaudio
|
Add sound server support via media-libs/libpulse (may be PulseAudio or PipeWire) |
raw
|
Add support for raw image formats |
scim
|
Enable Smart Common Input Method |
sdl
|
Add support for Simple Direct Layer (media library) |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
tga
|
Enable Tga image loader |
tgv
|
Enable Tgv image loader |
tiff
|
Add support for the TIFF image format |
tslib
|
Enable x11-libs/tslib for touchscreen events |
unwind
|
Enable debug support via sys-libs/libunwind |
v4l
|
Enable support for video4linux (using linux-headers or userspace libv4l libraries) |
vnc
|
Enable VNC (remote desktop viewer) support |
wayland
|
Enable dev-libs/wayland backend |
webp
|
Add support for the WebP image format |
xcf
|
Enable XCF image loader |
xim
|
Enable X Input Method |
xpm
|
Add support for XPM graphics format |
xpresent
|
Enable x11-libs/libXpresent support |
zeroconf
|
Support for DNS Service Discovery (DNS-SD) |
EFL preview and menu entries support the svg
USE flag. It is recommended have at least the USE flags X drm eet fontconfig gles2 gstreamer harfbuzz ico jpeg2k pulseaudio sound svg system-lz4 systemd
.
Latest Enlightenment
To install the latest Enlightenment and libraries, issue:
root #
emerge --ask enlightenment
Stable Enlightenment
Because upstream only provides support for the latest Enlightenment, Gentoo will try to follow upstream's release cycles closely. When preferring to use older releases of Enlightenment WM, setting up a local overlay to store ebuilds for x11-wm/enlightenment and dev-libs/efl may be necessary. Older ebuilds can be located by utilizing gentoo.git history.
On stable systems, to get the latest stable version, type
root #
emerge --ask x11-wm/enlightenment
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. Verify Eselect/Repository has been installed, then add the enlightenment-live overlay.
root #
eselect repository enable enlightenment-live
Verify all core enlightenment packages using live ebuilds. This can be updated using the exact same command to ensure that all core packages are updated.
root #
emerge --ask --autounmask-write @enlightenment-core-9999
The enlightenment-core-9999 set contains the following packages:
''
=dev-libs/efl-9999
=x11-wm/enlightenment-9999
=x11-terms/terminology-9999
When installing both stable and experimental EFL application, enlightenment-apps-9999 may be set. It contains:
''
=app-editors/ecrire-9999
=app-misc/equate-9999
=dev-vcs/egitu-9999
=media-gfx/eluminance-9999
=media-gfx/ephoto-9999
=media-video/rage-9999
=net-irc/express-9999
=net-p2p/epour-9999
=dev-util/espionage-9999
=sys-process/evisum-9999
The ebuild for EFL is now using meson. USE flags may be different.
Be aware that they are currently masked for ~amd64, so they may require unmasking:
root #
emerge --ask --autounmask-write efl enlightenment
The ebuilds are currently tested for X and not for Wayland. Further investigation and feedback is needed for Enlightenment with Wayland
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.
Enlightenment e16
Old Enlightenment-e16 is still maintained. Install it from Gentoo's main tree with
root #
emerge --ask e16
Configuration
Enlightenment
Enlightenment's configuration is all handled through its settings editor. "Under-the-hood" configuration options are accessed via:
user $
elementary_config
The command line tool vieet
is especially useful in emergencies. In many cases, moving the broken ~/.e and ~/.elementary configuration to a temporary place before re-starting Enlightenment usually helps.
Launching enlightenment with startx
exec dbus-launch --exit-with-session enlightenment_start
Tips and tricks
Adding Gadgets to desktop
Open up menu and navigate to "Desktop -> Add Gadgets".
Autostarting applications on login
There's a comprehensive setting editor for that in the Settings Panel, under "Applications -> Autostart applications"
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 and navigate to "Desktop -> Add Bryce". Bryces are experimental in Enlightenment's versions below 0.25.
Wayland session
At the time of writing (28 Sept 2020) 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 calling
user $
enlightenment_start
provided that wayland USE flag and dependencies are set up correctly. There are some fine-tuning options to be exported, if needed:
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 SHM based software rendering or EGL is desired.
When using software rendering, also export ELM_ACCEL=none
.
Note that in theory Wayland should work with elogind, but only systemd is supported by upstream.
Request dark theme from applications
To request applications to use their dark theme if available, checkout GTK#System-wide_dark_theme and Qt#Theming!
Themes
The Theme settings panel offers the possibility to either import a new theme from a file or from the online tool.
When it comes to icon themes, you are required to unpack them in ~/.local/share/icons. Then you can see them listed under the Application theme setting.
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,
- ecrire A simple Notepad-like text editor using EFL
- Edi An EFL-based IDE
- entice A simple image viewer based on EFL
- Ephoto Enlightenment image viewer written with EFL
- rage Video and audio player written using EFL
- Econnman ConnMan User Interface for Enlightenment
- Evisum System and process monitor written with EFL
- terminology Feature rich terminal emulator
- e-flat-theme A modern, flat theme for Enlightenment
- e-gtk-theme A GTK theme to match Enlightenment WM's default theme
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 windows with completely black contents appear (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:
export E_COMP_ENGINE=sw
exec dbus-launch --exit-with-session enlightenment_start
Alternatively, set the variable in the /etc/environment file:
- Start X.
- Go to Settings->Composite->Advanced->Rendering and disable "Texture from pixmap".
- Then remove "export E_COMP_ENGINE=sw" from ~/.xinitrc and log out/in to get accelerated rendering again.
For more information see this bug report.
"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 the libGL.so shared object 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 system architechture. This needs to be done once, or everytime efl is re-installed.
Use systemd user session to select the window manager
When compiled with systemd
USE flag enabled, Enlightenment installs a systemd service file to /usr/lib/systemd/user/graphical-session.target that can be used to spawn a graphical user session. This file however has Requires=xorg.target
which requires set up xorg as a systemd service to be set manually.
"build error: conflicting types for ‘GLintptr’"
Most likely due to newer Mesa dropping openGL support for older graphics cards. Try building dev-libs/efl with gles2 -opengl
to get GL working again.
"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.
It is 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 this occurs, the build failure will not be visible. 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 bug #651890.
Xorg touchpad config ignored
Since 0.25, any touchpad settings configured via xorg .conf files seem to be ignored. If tap-to-click or double-tap-to-drag does not work anymore after a recent update, this most likely is the case.
Enlightenment takes care of touchpad settings itself now, it seems.
Use the mouse settings (Everything launcher, type "Mouse"; or use Settings > Input > Mouse) and navigate to the "touchpad" tab to find the settings probably set in /etc/X11/xorg.conf.d/*.conf before and manually configure them.
Debugging
When attempting to move config files away and Enlightenment still does not work, debug the problem by typing the following and reading the log file:
user $
enlightenment_start 2>&1 | tee logthing.txt
It is useful when making a bug report to bugs.gentoo.org or upstream's Phabricator. If the log file does not imply clear errors, Enlightenment may need started with debugging tools such as dev-debug/gdb, dev-debug/strace, or dev-debug/valgrind.
user $
E_START=1 strace enlightenment_start 2>&1 | tee logthing.txt
Can't change keyboard layout
When having trouble changing the keyboard layout to a different language, install the packages x11-libs/libxklavier and x11-apps/setxkbmap.
Screenshots
See also
- Desktop environment — provides a list of desktop environments available in Gentoo.
- Recommended applications — applications recommended for use in a graphical environment (X11, Wayland)