exo-open sets invalid $DISPLAY on Wayland
When exo-open launches a preferred application from inside a Wayland session, it sets $DISPLAY to $WAYLAND_DISPLAY, which breaks programs that don't support Wayland. To demonstrate:
echo $DISPLAY
exo-open --launch TerminalEmulator
# echo $DISPLAY in new TerminalEmulator window
On my system echo $DISPLAY prints :0 before exo-open and wayland-1 in the new TerminalEmulator window.
This occurs due to the set_environment function passed to g_spawn_async by exo_execute_preferred_application_on_screen which sets $DISPLAY to the result of gdk_display_get_name.