This is an automated email from the git hooks/post-receive script.
git pushed a commit to reference refs/pull/135/head
in repository enlightenment.
View the commit online.
commit 95b85df5094504045cf9f4bdf31918b8ec2c002b
Author: [email protected] <[email protected]>
AuthorDate: Sat Jun 13 11:41:14 2026 -0600
feat(e_wl_proxy): crash-resilient Wayland session and menu integration
User-facing integration for the proxy:
- add an "Enlightenment (Wayland Failsafe)" session entry that starts E behind
the proxy (E_WL_PROXY=1), so a display manager can launch the crash-resilient
mode in one click;
- mark wl_proxy as an official module so loading it does not raise the unstable
module warning;
- hide the "Restart" menu entry in a bare Wayland session, where restarting
would tear down every client; it stays available on X11 and when running
behind the proxy, which keeps clients alive across the restart.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
---
.../wl/enlightenment-wayland-failsafe.desktop.in | 26 ++++++++++++++++++++++
data/session/wl/meson.build | 7 ++++++
src/bin/e_int_menus.c | 14 ++++++++----
src/bin/e_module.c | 1 +
4 files changed, 44 insertions(+), 4 deletions(-)
diff --git a/data/session/wl/enlightenment-wayland-failsafe.desktop.in b/data/session/wl/enlightenment-wayland-failsafe.desktop.in
new file mode 100644
index 000000000..01e2653f6
--- /dev/null
+++ b/data/session/wl/enlightenment-wayland-failsafe.desktop.in
@@ -0,0 +1,26 @@
+[Desktop Entry]
+Type=Application
+Name=Enlightenment (Wayland Failsafe)
+Name[ca]=Enlightenment (Wayland Failsafe)
+Name[de]=Enlightenment (Wayland Failsafe)
+Name[el]=Enlightenment (Wayland Failsafe)
+Name[eo]=Enlightenment (Wayland Failsafe)
+Name[fi]=Enlightenment (Wayland Failsafe)
+Name[fr]=Enlightenment (Wayland Failsafe)
+Name[gl]=Enlightenment (Wayland Failsafe)
+Name[ja]=Enlightenment (Wayland Failsafe)
+Name[ko]=Enlightenment (Wayland Failsafe)
+Name[ms]=Enlightenment (Wayland Failsafe)
+Name[pl]=Enlightenment (Wayland Failsafe)
+Name[ru]=Enlightenment (Wayland Failsafe)
+Name[sr]=Просвећење (Wayland Failsafe)
+Name[tr]=Enlightenment (Wayland Failsafe)
+Comment=Log in using Enlightenment with crash-resilient Wayland proxy (Version @VERSION@)
+Comment[ca]=Iniciar sessió amb Enlightenment amb intermediari Wayland resistent a errades (Versió @VERSION@)
+Comment[de]=Anmelden und Enlightenment mit absturzsicherem Wayland-Proxy verwenden (Version @VERSION@)
+Comment[fr]=Ouvrir une session Enlightenment avec un proxy Wayland résistant aux pannes (Version @VERSION@)
+Comment[ru]=Войти используя Enlightenment с отказоустойчивым Wayland-прокси (Версия @VERSION@)
+Icon=@prefix@/share/enlightenment/data/images/enlightenment.png
+TryExec=@prefix@/bin/enlightenment_start
+Exec=env E_WL_PROXY=1 E_WL_FORCE=drm E_COMP_ENGINE=gl @prefix@/bin/enlightenment_start
+DesktopNames=Enlightenment
diff --git a/data/session/wl/meson.build b/data/session/wl/meson.build
index a94925dfd..cdb16b1d9 100644
--- a/data/session/wl/meson.build
+++ b/data/session/wl/meson.build
@@ -6,7 +6,14 @@ e_desktop = configure_file(
output : 'enlightenment-wayland.desktop',
configuration : desktop_config)
+e_desktop_failsafe = configure_file(
+ input : 'enlightenment-wayland-failsafe.desktop.in',
+ output : 'enlightenment-wayland-failsafe.desktop',
+ configuration : desktop_config)
+
if config_h.has('HAVE_WAYLAND') == true
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
+ install_data(e_desktop_failsafe,
+ install_dir : join_paths(dir_data, 'wayland-sessions'))
endif
diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c
index 2f67ecb2f..0860a1f54 100644
--- a/src/bin/e_int_menus.c
+++ b/src/bin/e_int_menus.c
@@ -271,10 +271,16 @@ e_int_menus_main_new(void)
l = _e_int_menus_augmentation_find("enlightenment/2");
if (l) _e_int_menus_augmentation_add(subm, l);
- mi = e_menu_item_new(subm);
- e_menu_item_label_set(mi, _("Restart"));
- e_util_menu_item_theme_icon_set(mi, "system-restart");
- e_menu_item_callback_set(mi, _e_int_menus_main_restart, NULL);
+ /* Restarting a bare Wayland session tears down every client with it.
+ * Only offer it when restart is survivable: on X11, or under the
+ * e_wl_proxy (which keeps clients alive across an E restart/crash). */
+ if ((e_comp->comp_type != E_PIXMAP_TYPE_WL) || getenv("E_WL_PROXY_SOCK"))
+ {
+ mi = e_menu_item_new(subm);
+ e_menu_item_label_set(mi, _("Restart"));
+ e_util_menu_item_theme_icon_set(mi, "system-restart");
+ e_menu_item_callback_set(mi, _e_int_menus_main_restart, NULL);
+ }
mi = e_menu_item_new(subm);
e_menu_item_label_set(mi, _("Exit"));
diff --git a/src/bin/e_module.c b/src/bin/e_module.c
index 39399c08e..2520fe250 100644
--- a/src/bin/e_module.c
+++ b/src/bin/e_module.c
@@ -777,6 +777,7 @@ _e_module_whitelist_check(void)
"wl_x11",
"wl_wl",
"wl_drm",
+ "wl_proxy",
"wl_shell",
"wl_desktop_shell",
"xkbswitch",
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.