Enlightenment

Enlightenment is the reason this project exists to begin with. It is a graphical desktop shell (Most of the core tools you need to manage your system and applications with a small set of matching applications as well). It resembles a traditional UNIX/X11 style desktop by design but has a range of add-ons, as well as a different core design philosophy.

Enlightenment manages launching of apps, windows and also files (with a built-in file manager). It's a compositor also (always compositing), can handle network control (via Connman) and other system configuration as well.

It's fast and lean. It may require a lot of disk space due to the wide set of libraries and dependencies (these provide real functionality) as well as the very high-quality set of default wallpapers provided, but only what is needed will be loaded from disk. This shows in the memory usage. Enlightenment uses less memory than any other major compositing Desktop. Almost 1/4 as much as KDE Plasma, 30% of the memory footprint of GNOME, almost half the memory of XFCE and even less than LXQT (which does not do compositing). It uses a marginal 12% more memory than LXDE which also doesn't do compositing.

Enlightenment will start quickly, launch applications fast, switch desktops and otherwise perform snappily while maintaining a lean footprint on memory. It will fully use your GPU is possible even for rendering text and small features, not just compositing large software-rendered buffers. Fear not - if you have no GPU, it will fall back to software compositing. Some people accidentally switched to software compositing and didn't realize it for months… so it's fast enough for day-to-day usage.

If Enlightenment is already available for your current OS, make sure the version you download is up to date. If not, you can compile it yourself. To get started, download Enlightenment and the Enlightenment Foundation Library (EFL) components. You can find more details about software dependencies below.

Key features of E

  • All the normal window management features you expect
    • Multiple focus modes (click, sloppy, pointer)
    • Virtual desktops (isolated per screen) with a pager
    • Window switching (Alt+Tab) with large previews
    • Main menu
    • Compositing (transparency/shadows) even without a GPU (with hand optimized software rendering)
  • GUI configuration of most settings from a central settings panel
  • Very low memory requirements
  • Fast startup and snappy responsiveness
  • Supports both X11 and Wayland (Wayland is considered experimental)
  • Uses 'Modules' (pluggable pieces of code that add functionality to the window manager itself)
    • Network management
    • Bluetooth management
    • Temperature sensors
    • Music player controls
    • Audio mixer
    • Application launcher and task tracker
    • Iconified application box
    • Taskbar
    • “Systray” (Status notifier protocol)
    • System control (via custom tools or systemd / logind) like Suspend, Hibernate, Shutdown, Reboot
    • Clock and calendar
    • Backlight controls
    • Keymap switcher
    • Screenshot saving, cropping, annotation and sharing
    • Global application menu support
    • Battery meters
    • CPU frequency monitor and control
    • Package update handling
    • Process statistics (CPU/Mem in titlebar)
    • File manager
    • General “type and search/launch/switch” tool via Everything launcher
    • Gadgets on the desktop
    • Shelf (panel along screen edge) - multiple on every screen
    • Polkit agent front-end
    • Desktop locking on idle/suspend or even immediately on login
    • Tiling window layout (per screen or virtual desktop)
    • On screen virtual keyboard
  • Screen edge bindings
  • Sudo and SSH password GUI front end
  • Keyboard and mouse shortcuts for control and launching apps
    • Modify your key, mouse or other bindings in the provided GUI control panels
  • Palettes
  • Screen blanking/dimming and mode controls
  • Gesture/Swipe bindings for touchpads
  • Fingerprint authentication in screen lock
  • Window remembers to remember size/position/desktop and more of windows
  • Window locks to lock applications from changing things about their windows
  • Language/Locale selection and setup
  • Input method control
  • Easy management of environment variables
  • Configurable themes that are incredibly powerful
  • Support for multiple operating systems (Linuxes, BSD's)

Enlightenment has a mixer module that can control Pluseaudio, ALSA (with more limited features) or Pipewire (if you use the pipewire-pulse compatibility support). It will display an active VU meter for currently active audio output. You will also see an application icon per active output stream to let you know just who is generating sound right now. If there is any active audio monitoring/recording going on you will see a second VU meter to show the input levels as well as icons showing which applications are recording right now.

There is a full mixer to let you control individual output and input streams which will display VU meters there too per output or monitor/input stream to let you know what the audio levels are like. You can mute or adjust specific applications and their outputs here as well as configure audio device inputs and outputs and where output streams go (speakers, line out, headphones etc.).

You will even find simple output mixers appear in the titlebar of applications if Enlightenment detects that that application has a matching pulseaudio output stream. You can then modify the volume of that application specifically via this in-titlebar volume slider directly.

There is Mpris media control support to control your favorite media players too. It even has workarounds for Spotify to fix bugs originating from the Spotify client not providing correct URLs to album art. This will let you see any provided album art images from the media player application as well as pause, play, go to next or previous track and see play position.

A clock with a popup calendar to let you know what the time and date are now and at a chick click see the current month (as well as being able to navigate to prior or successive months).

Backlight controls for your laptop to vary the brightness and even for your Desktop monitors (as long as you install ddcutil or libddcutil and your monitor supports DDC controls). Just place a backlight gadget in the shelf on each monitor you have and that gadget will control the backlight on that specific screen, allowing every screen to have a different level if you want. Be aware that DDC monitor control can be a bit unreliable especially when you try and control a monitor while it powers on or changes resolutions. This will vary from monitor to monitor.

Packagekit support to allow for listing of package updates you are missing and installing them when you want to with a few clicks of a button. The gadget just listens to the Packagekit service and will show how many packages are out of date. Clicking on it lets you list the updates and initiate the update right from the GUI. Packagekit is an abstraction around various packaging systems like apt, pacman, yum, dnf etc. that you can install and run.

Bluetooth controls (front-end for BlueZ 5). Pair devices, power your Bluetooth adapters on and off, connect or disconnect paired devices and even set paired devices to be “lock devices” that when they stop being contactable make your screen auto-lock (and auto-unlock when they come in range again and start responding again). Set your phone or earbuds to do this and know when you walk away from your desk with these devices with you that your machine will lock automatically without waiting for a timeout and will unlock when you come back again.

A start menu with everything you need from Enlightenment available from that menu or something that this menu can open. Click the arrow icon in the Shelf or click left mouse button anywhere on the desktop background to get this menu. Access applications to run, settings, shut down, reboot, suspend or hibernate, access recently used files, navigate your file system, take screenshots, access a list of windows to switch to, switch virtual desktops and more.

Fingerprint unlock support directly if you have libfprint/fprintd running. Enlightenment's lock screen will display a fingerprint icon to let you know you can use your fingerprint device to unlock. There is also a GUI setup tool included to configure your fingerprints.

A palette selector and editor also comes with Enlightenment. It allows you to select from some pre-made palettes, or to create your own custom ones and select or edit those. This will immediately affect all of Enlightenment and EFL apps. Enjoy the colors you like independently of the theme you choose.

Enlightenment has a massive settings panel with just about everything accessible from it. Screen resolution and multiple monitors, blanking, window focus modes and much much more are accessible from here. There are a large range of modules to choose from, some of which are not enabled by default, so load them and find out.

Power controls to power off, reboot, suspend, hibernate or log out. By default just pressing the power button on your machine will cause this to appear. Simple press the power button again to power off. Fast and handy.

Temperature sensors are included too. Create as many temperature gadgets as you like in your Shelves and configure each to monitor a different sensor device. Monitor both your CPU and your GPU easily this way.

A pager to show all your virtual desktops, their backgrounds and contents in miniature so you know what is going on even if the windows are hidden on another desktop. They will update live as content changes so you can even watch movies playing on another desktop in your Pager if you want. Switch between desktops at a click, drag and drop windows between desktops or even drag and drop entire desktops around (middle mouse button drag and drop) to re-arrange everything.

Status notifier protocol support to get icons and control menus for many modern applications like Steam, Zoom, Teams, Telegram, Discord and more.

Many loadable modules that extend the basic Window Manager (in fact almost all of the nice features in Enlightenment come from modules - without any modules loaded, Enlightenment is pretty barren and missing a lot of features). There is even a Tiling Module for those that like auto-tiling of windows. You can write your own modules to extend Enlightenment too.

CPU Frequency status display and controls to set the CPU governor and auto-modify it when going on/off battery. It's handy to see what your CPU is doing as an indicator of current power drain or if something is going wrong. It will show the min, max and average frequency of all your available CPU cores.

Application launcher Icon bar (IBar) to run or see open windows for a set of common applications you use (just drag and drop an icon from the top-left of any window into your IBar to add it or drag an icon out to remove it). It will indicate which icons have a matching running application/window. Hover over an icon to see a list of windows for that application to select from.

Network controls for wired Ethernet/USB, Wifi, Bluetooth tethering or even Mobile network connections using Connman as your network management back-end (you will need to install Connman and run it and disable any other network management daemons/tools). Easily switch from Wifi to Wired, or some other connection technology in a few clicks.

There is even a built-in file manager with desktop icons to do basic file management as well as manage removable storage devices. Drag and drop to/from your favorite applications and do all your normal management of your stuff.


A Brief History of Enlightenment

Enlightenment predates larger desktop environments such as GNOME, although it was originally designed as a flexible window manager.

When Enlightenment was first released in the late 90's, it aimed to provide certain features such as setting the desktop wallpaper which until then were managed by 3rd party tools. Enlightenment was also the first window manager to introduce X Window System (X11) themes. These were pre-packaged files containing image, layout and animation data which could be installed quickly and easily, changing the overall look and feel. Today, themes for Enlightenment are available as “Edje” (.edj) files. These are used 'live' in that they aren't unpacked: only data that's actually needed from Edje files is accessed and loaded into memory meaning Enlightenment can handle even very large theme files.

Enlightenment offers so many options that not all features work as well as they could. If you find an area that requires improvement use the Contact page to get in touch.

The Enlightenment Philosophy

The underlying philosophy behind Enlightenment is that users should be given as much control as possible. There is often a trade-off in maintainability by programmers, current and future development, as well as the time available to do work. Developers are encouraged to introduce new features which 'just work' without additional options rather than delay release through constant fine tuning. While configuration is important Enlightenment strives to be accessible to both normal and power users.

Efficiency

Enlightenment is designed for efficiency, without sacrificing looks or functionality. The theme files are binary blobs but can be dissected to reveal tools such as edje_decc. The same holds true for configuration (.cfg) files that are actually eet archives with serialized data structures.

Emphasis is placed on runtime speed and efficiency over forcing users to edit the configuration. Most Enlightenment options can easily be configured through a GUI although there are also tools for importing and editing text files for dedicated programmers.

Enlightenment also has advanced error detection routines. When problems are detected, users are offered the choice either to debug or to restart from where they left off without losing any data. If you've installed *gdb* and activated debug options, Enlightenment also saves a crash log file to ~/.e-crashdump.txt.

Enlightenment is also designed to run on a variety of platforms from budget smartphones to multi-core servers with two screens. The development process is designed to accommodate older and slower machines as well as the most recent. For this reason, compositing in Enlightenment is still very efficient even without a GPU.

A quick comparison of memory usage between major desktops on Linux shows Enlightenment at the bottom of the footprint. Keep in mind that it is also a full compositing desktop, thus adding a large extra footprint just for that. The below is the memory usage above a basic empty Xorg session (which would be a base footprint to get anything displayed that every environment needs) (measured on Arch Linux on 27/12/2021). All environments are freshly logged in on a freshly booted VM, with their default configuration with the user's home directory opened up in the native file manager and one native terminal emulator window opened up.

Software Version Compositing Memory
LXDE 111M
Enlightenment 0.25 124M
LXQT 157M
XFCE 4.16 225M
GNOME 41.0 425M
KDE 5.23 475M

Libraries

Over 80% of the Enlightenment Project's code is in its own stand-alone libraries, which allows it to function as much more than a simple window manager. Developers emphasize building libraries first over adding single features. This provides valuable resources for other developers who may want to reuse those libraries for other projects.

Porting

Most Enlightenment Developers use Linux, but, while Linux is usually the first operating system to be supported, the project welcomes patches and inputs from developers using other systems such as MacOS, BSD and Windows 10.

Multi language support

Most of the Enlightenment website is in English, which is also the software's default language. However, many Enlightenment developers are not native English speakers, which is why Enlightenment does support a number of other languages. The translation process is ongoing. Currently the project supports reading text from right to left, as well as the flexible UTF-8 character set.

Open Source

Enlightenment and its libraries are all open source, using either the BSD 2-clause, LGPL or GPL software licenses. Developers who create libraries either choose the software license, or inherit it if the library is derived from another.

The Enlightenment Philosophy holds that an open source approach is the best way to propagate knowledge as well as gain feedback from the community. This in turn helps to create more helpful and detailed documentation. It also means any software developers create is installed onto more devices.

Further Reading

Download Enlightenment You can download Enlightenment from here.

Coverity scan status Enlightenment's code quality

User uploaded screenshots Click here to see more spectacular screenshots of Enlightenment