- 1 Stop Losing 150 Hours a Year to a Slow Desktop
- 2 My Moment of Truth
- 3 What Exactly Is EFL?
- 4 Install EFL in Three Commands
- 5 Your First App: 19 Lines, Zero Headaches
- 6 Build the Parts That Matter
- 7 Make It Look Like You
- 8 Keep It Lean, Keep It Fast
- 9 Debug Without Going Crazy
- 10 Package It for Your Friends
- 11 Ready to Reclaim Your 150 Hours?
Stop Losing 150 Hours a Year to a Slow Desktop
Three-point-five hours. Every week. Gone.
That’s not a typo. That’s 150 hours a year spent staring at a frozen panel, resizing a laggy window, or waiting for the file manager to remember you exist.
And the worst part? We blame ourselves. “Maybe I opened too many tabs.” “I should restart more often.”
Truth is, your desktop was built for everyone. Which means it fits no one.
My Moment of Truth
Last spring I was deep in a debugging sprint. Terminal on the left. Browser on the right. Slack pinned to the corner.
I hit Alt+Tab to jump back to code… and nothing. Half a second later the switcher blinked in. Then it vanished. My train of thought? Derailed.
I snapped. Closed every app. Opened a new browser tab. Typed:
“lightweight linux desktop I can actually build myself”
That rabbit hole led me to Enlightenment Foundation Libraries. Forty-eight hours later I had a desktop that boots faster than my coffee maker.
What Exactly Is EFL?
Think LEGO bricks for your computer screen.
- Ecore – the engine that keeps everything running smoothly.
- Elementary – ready-made buttons, sliders, and lists.
- Edje – the paint set that lets you make it pretty.
- Evas – the GPU-powered canvas that never stutters.
- Wayland & X11 – works today and won’t break tomorrow.
And yep, it’s all open source.
Install EFL in Three Commands
No Snap, no Flatpak, no nonsense. Just clone, build, done.
git clone https://git.enlightenment.org/efl/efl.git
cd efl
meson build && ninja -C build && sudo ninja -C build install
Need it tucked away in a folder? Add --prefix=$HOME/efl and keep your system clean.
Your First App: 19 Lines, Zero Headaches
Create hello.c:
#include <Elementary.h>
EAPI_MAIN void
efl_main(void *d EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) {
elm_win_util_standard_new("hello", "My Fast Desktop");
}
EFL_MAIN()
Compile and run:
gcc hello.c `pkg-config --cflags --libs elementary` -o hello
./hello
A clean, empty window pops up. Congratulations—you just launched the seed of your future desktop.
Build the Parts That Matter
1. A Window Manager That Feels Instant
Ecore_Evas *ee = ecore_evas_new(NULL, 0, 0, 1920, 1080, NULL);
ecore_evas_show(ee);
No flicker. No tearing. Just pixels exactly when you need them.
2. A Panel That Knows Your Shortcuts
Elm_Box *bar = elm_box_add(win);
elm_box_horizontal_set(bar, EINA_TRUE);
Elm_Button *term = elm_button_add(bar);
elm_object_text_set(term, "Terminal");
evas_object_smart_callback_add(term, "clicked", launch_terminal, NULL);
elm_box_pack_end(bar, term);
One click. Terminal spawns. No hunting through menus.
3. Launcher With Fuzzy Search
Elm_Entry *search = elm_entry_add(win);
evas_object_smart_callback_add(search, "changed", fuzzy_match_apps, NULL);
Type chr and Chrome appears. Type obs and OBS pops in. Muscle memory restored.
Make It Look Like You
Drop this into theme.edc:
group "main" {
part { name: "bg"; type: RECT;
description { color: 25 25 28 255; }
}
part { name: "accent"; type: RECT;
description { rel1.to: "bg"; rel2.to: "bg";
color: 0 188 212 255; }
}
}
Compile:
edje_cc theme.edc
Load it in two lines of C:
Edje_Object *theme = edje_object_add(evas);
edje_object_file_set(theme, "theme.edj", "main");
Dark mode? Pastel rainbow? Neon cyberpunk? One file swap away.
Keep It Lean, Keep It Fast
- Use
Eina_Listinstead ofstd::vector—no hidden mallocs. - Cache icon pixmaps with
Evas_Object_Image. - Profile with
perf record -g ./my-de, then trim the fat.
Debug Without Going Crazy
Add these to your shell startup file:
export ELM_ENGINE=wayland
export EINA_LOG_LEVELS=ecore:2,elementary:2
Now run your DE in a nested Wayland session:
weston --width=1280 --height=720 &
Logs show up right in the terminal. No cryptic GUI dialogs.
Package It for Your Friends
meson build --buildtype=release
ninja -C build
DESTDIR=/tmp/pkg ninja -C build install
fpm -s dir -t deb -C /tmp/pkg -n my-de -v 0.1.0
Hand them the .deb. They double-click. Instant envy.
Ready to Reclaim Your 150 Hours?
Grab a coffee. Clone the repo. By tonight you’ll have a desktop that opens apps before your finger leaves the key.
And the next time someone says “Linux desktops are slow”, you’ll just smile and hit Alt+Tab.