Google Summer of Code 2026 Reports: Port the Enlightenment desktop environment to NetBSD, part 2


September 19, 2026 posted by Leonardo Taccari

This report was written by Dimitris Gounaridis as part of Google Summer of Code 2026.

It is the 2nd part of a series. You can read the 1st part at Google Summer of Code 2026 Reports: Port the Enlightenment desktop environment to NetBSD.

Introduction

Enlightenment desktop is a low on resources desktop environment without sacrificing on visuals. NetBSD support for this BSD-licensed desktop has been left a few years behind. The aim of this project is to port the newest version of the desktop to pkgsrc and commit upstream portability fixes when necessary to ease future versions updates for NetBSD.

Updates since the first report

Shutdown is triggering a halt/reboot instead

This was mostly trivial to be fixed. Basically Enlightenment before NetBSD patching was executing shutdown -h now for powering off the system. According to NetBSD's shutdown command manual this actually halts the system instead of completely powering it off. The fix was to execute shutdown -p now instead like the rest of the BSDs and has been applied upstream in d88be0f79c

No app icons in menu - efreet cache error

Last time, the Enlightenment desktop would show up an error about efreet cache not being updated.

Screenshoot of efreetd error not updating cache. No icon themes are detected by Enlightenment and no icons are shown in application menu.

Actually, a very similar issue existed under FreeBSD back in 2021, which led me to the correct direction of identifying, troubleshooting and temporarily remedying the issue. To fix I even got to experiment with ktrace NetBSD's kernel process tracing utility.

Running the command:

ktrace -i -f /tmp/efreetd.ktrace efreetd

...and then analyzing the resulting trace file:

kdump -f /tmp/efreetd.ktrace | grep -B2 -A5 "open"

We can notice the following in the end of the kernel trace file, just before the crash occurs:

2279   2279 efreetd  NAMI  "/home/moihack/.cache/efreet"
2279   2279 efreetd  RET   __stat50 0
2279   2279 efreetd  CALL  open(0x7f7fff9d0f70,0xa02,0x180)
2279   2279 efreetd  RET   open -1 errno 24 Too many open files

Running sysctl kern.maxfiles returns 10000 in my system. However, running find /usr/pkg/share/icons -type f | wc -l returns a number greater than 10K. It seems like we are running into the same issue like FreeBSD has been a few years back. Perhaps increasing the available file descriptors in the kernel with sysctl -w kern.maxfiles=20000 will help. As can be seen in the screenshot below, this was indeed the solution to this problem. We can enjoy different icon themes under Enlightenment desktop.

Screenshoot of Enlightenment desktop showcasing detected, available icon themes. Mate Faenza theme has been selected and is being used by Enlightement's file manager to display green tinted folder icons according to the theme.

Temporarily modifying kern.maxfiles in sysctl.conf and/or also modifying Enlightenment's ulimit resolves this issue. Another temporary remedy is to avoid installing many and complex icon themes. However, a proper solution has yet to be investigated and pushed upstream.

Finish up-streaming window manager changes

The existing pull request about the window manager part of Enlightenment desktop, was not yet merged during the first progress report. It has now been successfully merged upstream and includes specific NetBSD fixes like the halt issue described above. Thanks again raster.

Update pkgsrc-wip Enlightenment packages with latest work

With help from my mentors leot and nia I was gradually introduced to the pkgsrc, NetBSD's very powerful packaging system. pkgsrc automates already a variety of software building tasks like fetching the source code, patching it, compiling and finally converting the resulting build into a binary package ready to be installed. The automatic patching system can detect if a pkgsrc specific patch is already present in the upstream distribution of the software and therefore not apply the patch selectively. With this knowledge and help from my mentors, my task was to backport the now upstreamed Enlightenment patches and also mark which ones could be safely be removed once a new Enlightenment version gets released. While, the existing pkgsrc-wip packages already featured working patches (thanks kikadf and Matthew Danielson), some of them were slightly modified after discussions with upstream. You can visit the updated efl and enlightenment-current pkgsrc-wip packages if you are interested.

Summary

Upstream Commits

Enlightenment Foundation Libraries (EFL)

Enlightenment (window manager)

Pull-Requests

Enlightenment Foundation Libraries (EFL)

Enlightenment (window manager)

pkgsrc-wip packages

efl

enlightenment-current

Other work (not relevant to GSoC project but still part of my experience with NetBSD)

  • icewm pkgsrc-wip package of icewm window manager, updated to latest version and enabled menu feature.
  • Hyper-V X.org setup (mouse was inverted). Use a Gen-1 Hyper-V and in /etc/X11/xorg.conf add the following snippet:
Section "InputClass"
    Identifier "hu-mouse-fix"
    MatchIsPointer "yes"
    Driver "mouse"
    Option "Invy" "true"
EndSection

Current State

Hope you enjoy this port of Enlightenment desktop that can be daily driven for lots of tasks. Here is a screenshot of it running under NetBSD 11.0.

Screenshoot of Enlightenment desktop in action, showcasing an open file manager window displaying icons based on current theme, application menu is also open showing icons correctly, a movie is being played in Rage video player, Chromium Browser is open in NetBSD's page, Terminology (Enlightenment's terminal) is running neofetch and ecrire (Enlightenment's text editor) has an unsaved file open.

Future work

  1. Find and push upstream an actual fix for efreet error/missing app icons in menu issue described above
  2. Enlightenment's mixer panel applet can lead to glitched desktop when OpenGL acceleration is turned on for the compositor (possible Intel Xorg driver issue)
  3. Battery status and other power related settings are not really operational for a laptop installation
  4. Update the rest of Enlightenment's app ecosystem in pkgsrc to their most recent version

What I learned

This project has been a great opportunity to work with a variety of technologies. It helped me learn more about C, operating systems and porting software across them. I also learned a lot about NetBSD, its packaging system (pkgsrc) and how the system differs from Linux which I am more familiar with. I also had the chance to use and familiarize myself with tools such as QEMU, virt-manager and meson.

Acknowledgments

Many thanks to my mentors Leonardo Taccari (leot) and Nia Alarie (nia) for their support, assistance and understanding during the duration of this GSoC project. Also many thanks to Carsten Haitzler (raster) from Enlightenment project as well as Robert Bagdan (kikadf) and Matthew Danielson for their previous work on Enlightenment in pkgsrc-wip. Lastly, many thanks to the NetBSD community for their awesome Operating System, very clear and precise documentation and their awesome package management system pkgsrc.

[0 comments]

 



Post a Comment:
  • HTML Syntax: NOT allowed