Page MenuHomePhabricator

Terminology does not start on xwayland
Open, Showstopper IssuesPublic

Description

When I run terminology (in sway) with latest efl (1.21.0) I get no new window. Similar behaviour happens when running from cinnamon, but at least I get the border with blank screen inside the window. If I resize/move window, cursor and all stuff appears. Downgrading back to efl 1.20.7 fixes the above mentioned problem.
I run gdb to get some info but without any output. Feel free to ask for anything that can help locate the problem.

jozi-k created this task.Sep 20 2018, 12:47 AM
billiob added a subscriber: efl.Sep 20 2018, 12:53 AM
Herald triaged this task as Showstopper Issues priority. · View Herald TranscriptTue, Dec 4, 3:23 PM

I've seen this before and (iirc) if you "unset DISPLAY" it works .. not sure why tho, could be something in elementary's detection at startup (ie: it sees DISPLAY as being set and tries to run in X11)

I've seen this before and (iirc) if you "unset DISPLAY" it works .. not sure why tho, could be something in elementary's detection at startup (ie: it sees DISPLAY as being set and tries to run in X11)

@jozi-k start terminology from another terminal please, and see if there are any error messages.

in the code in /src/lib/elementary/efl_selection_manager.c the environment variable ELM_DISPLAY takes precedence over any other. can either of you test if setting ELM_DISPLAY=wl (the other option is ELM_DISPLAY=x11) also helps?

the wayland detection code then checks for $WAYLAND_DISPLAY and the absence of $DISPLAY. so what @devilhorns wrote could be this case, which was introduced with 0a9542e2231cc8172269fba39f2173c6713c794a by one Chris Michael 😀 . however then zmike moved this code to efl_selection_manager.c with 9cf61c2f6d215e3adfa1567154a229eb49116769 with the comment:

neither of these components have fork-safe connections, so there is no benefit to calling them during quicklaunch init

so maybe a race condition?

5209    else /* ELM_DISPLAY not specified */
5210      {
5211         /* If there is a $WAYLAND_DISPLAY */
5212         if ((have_wl_display) && (!getenv("DISPLAY")))
5213           init_wl = EINA_TRUE;
5214         else /* No $WAYLAND_DISPLAY */
5215           init_wl = EINA_FALSE;
5216      }