This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch feat/e-wl-proxy-planb
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.

Reply via email to