Google Summer of Code 2026 Reports: Port the Enlightenment desktop environment to NetBSD, part 2
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.

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.

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)
- feature: Add initial NetBSD support (
81a548ec07) - NetBSD support: Ignore SEGV_PKUERR signal (
c498d4cd24) - NetBSD support: Correct power menu commands (
d88be0f79c)
Pull-Requests
Enlightenment Foundation Libraries (EFL)
Enlightenment (window manager)
pkgsrc-wip packages
efl
- efl: sync with upstream patch (
e641ca4207) - efl: mark upstream merged patches (
b8d1bbec6c) - efl: backport upstream patch (
4ee28388fa) - efl: Update TODO (
2aff2c681f)
enlightenment-current
- enlightenment-current: sync with upstream patches (
2ecf4a80f5) - enlightenment-current: mark upstream merged patches (
9ff07de95c) - enlightenment-current: Update TODO (
898dda3981)
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.confadd 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.

Future work
- Find and push upstream an actual fix for efreet error/missing app icons in menu issue described above
- Enlightenment's mixer panel applet can lead to glitched desktop when OpenGL acceleration is turned on for the compositor (possible Intel Xorg driver issue)
- Battery status and other power related settings are not really operational for a laptop installation
- 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.
![[NetBSD Logo]](/tnf/resource/NetBSD-headerlogo.png)