wayland support - add watermark and bug message and pause

this will clearly alert a user they are using e in wayland mode. this
is needed as there seems to be far too much confusion if e is in
wayland or not and when it is people having issues. this makes sure
e's wayland session desktop also has the label in it so it's clear etc.
This commit is contained in:
Carsten Haitzler 2022-05-13 20:35:34 +01:00
parent 5ad1680a7d
commit 5cf747d45d
9 changed files with 107 additions and 18 deletions

View File

@ -2,7 +2,8 @@ install_data([ 'enlightenment.png',
'test.png',
'test.jpg',
'test.edj',
'test.svg'
'test.svg',
'wayland.png'
],
install_dir: join_paths(dir_data, 'enlightenment/data/images')
)

BIN
data/images/wayland.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -1,17 +1,2 @@
desktop_config = configuration_data()
desktop_config.set('prefix', dir_prefix)
desktop_config.set('VERSION', e_version_rev)
e_desktop = configure_file(input : 'enlightenment.desktop.in',
output : 'enlightenment.desktop',
configuration: desktop_config
)
if config_h.has('HAVE_WAYLAND') == true
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
endif
if config_h.has('HAVE_WAYLAND_ONLY') == false
install_data(e_desktop,
install_dir : join_paths(dir_data, 'xsessions'))
endif
subdir('x')
subdir('wl')

View File

@ -0,0 +1,38 @@
[Desktop Entry]
Type=Application
Name=Enlightenment (Wayland)
Name[ca]=Enlightenment (Wayland)
Name[de]=Enlightenment (Wayland)
Name[el]=Enlightenment (Wayland)
Name[eo]=Enlightenment (Wayland)
Name[fi]=Enlightenment (Wayland)
Name[fr]=Enlightenment (Wayland)
Name[gl]=Enlightenment (Wayland)
Name[ja]=Enlightenment (Wayland)
Name[ko]=Enlightenment (Wayland)
Name[ms]=Enlightenment (Wayland)
Name[pl]=Enlightenment (Wayland)
Name[ru]=Enlightenment (Wayland)
Name[sr]=Просвећење (Wayland)
Name[tr]=Enlightenment (Wayland)
Comment=Log in using Enlightenment (Version @VERSION@)
Comment[ca]=Iniciar sessió amb Enlightenment (Versió @VERSION@)
Comment[da]=Log ind med Enlightenment (Version @VERSION@)
Comment[de]=Anmelden und Enlightenment verwenden (Version @VERSION@)
Comment[el]=Είσοδος με το Enlightenment (Έκδοση @VERSION@)
Comment[eo]=Ensaluti pere de Enlightenment (Versio @VERSION@)
Comment[es]=Iniciar sesión usando Enlightenment (Versión @VERSION@)
Comment[fi]=Kirjaudu käyttäen Enlightenmentiä (versio @VERSION@)
Comment[fr]=Ouvrir une session Enlightenment (Version @VERSION@)
Comment[gl]=Iniciar sesión usando Enlightenment (Versión @VERSION@)
Comment[it]=Accedi con Enlightenment (Versione @VERSION@)
Comment[ko]=Enlightenment 로그인(버전 @VERSION@)
Comment[ms]=Daftar masuk menggunakan Enligtenment (Versi @VERSION@)
Comment[pt]=Iniciar sessão no Enlightenment (Versão @VERSION@)
Comment[ru]=Войти используя Enlightenment (Версия @VERSION@)
Comment[sr]=Пријавите се за коришћење Просвећења (издања @VERSION@)
Comment[tr]=Enlightenment kullanarak giriş yaın (Version @VERSION@)
Icon=@prefix@/share/enlightenment/data/images/enlightenment.png
TryExec=@prefix@/bin/enlightenment_start
Exec=@prefix@/bin/enlightenment_start
DesktopNames=Enlightenment

View File

@ -0,0 +1,12 @@
desktop_config = configuration_data()
desktop_config.set('prefix', dir_prefix)
desktop_config.set('VERSION', e_version_rev)
e_desktop = configure_file(
input : 'enlightenment.desktop.in',
output : 'enlightenment.desktop',
configuration : desktop_config)
if config_h.has('HAVE_WAYLAND') == true
install_data(e_desktop,
install_dir : join_paths(dir_data, 'wayland-sessions'))
endif

View File

@ -0,0 +1,12 @@
desktop_config = configuration_data()
desktop_config.set('prefix', dir_prefix)
desktop_config.set('VERSION', e_version_rev)
e_desktop = configure_file(
input : 'enlightenment.desktop.in',
output : 'enlightenment.desktop',
configuration : desktop_config)
if config_h.has('HAVE_WAYLAND_ONLY') == false
install_data(e_desktop,
install_dir : join_paths(dir_data, 'xsessions'))
endif

View File

@ -566,6 +566,27 @@ main(int argc, char **argv)
env_set("E_START", argv[0]);
putenv("E_START_MANAGER=1");
if ((!getenv("DISPLAY")) && (!getenv("E_WL_FORCE")))
{
printf("***************************************************************\n");
printf("* You are probably starting Enlightenment in wayland DRM/KMS *\n");
printf("***************************************************************\n");
printf(" \n");
printf(" Wayland support is experimental. It may work for you. \n");
printf(" It may not. If you wish you help out then please do, but \n");
printf(" for a proper experience use Enlightenment in X11. \n");
printf(" \n");
printf(" If you do not want this pause and message, please set \n");
printf(" the following environment variable: \n");
printf(" \n");
printf(" E_WL_FORCE=drm \n");
printf(" \n");
printf(" Example: \n");
printf(" \n");
printf(" E_WL_FORCE=drm enlightenment_start \n");
printf(" \n");
sleep(10);
}
for (i = 1; i < argc; i++)
{
if ((!strcmp(argv[i], "-h")) || (!strcmp(argv[i], "-help")) ||

View File

@ -738,6 +738,12 @@ _drm2_randr_apply(void)
if (nh > maxh) nh = maxh;
if (nw < minw) nw = minw;
if (nh < minh) nh = minh;
{
Evas *e = ecore_evas_get(e_comp->ee);
Evas_Object *o = evas_object_name_find(e, "__e_wl_watermark");
if (o) evas_object_move(o, nw - 40 - 16, 16);
}
printf("RRR: set vsize: %ix%i, rot=%i\n", nw, nh, ecore_evas_rotation_get(e_comp->ee));
ecore_drm2_device_calibrate(dev, nw, nh);
rot = ecore_evas_rotation_get(e_comp->ee);
@ -986,6 +992,20 @@ e_modapi_init(E_Module *m)
efl_event_callback_array_priority_add(e_comp->evas, arr,
EFL_CALLBACK_PRIORITY_BEFORE, NULL);
{
Evas_Object *o;
char buf[PATH_MAX];
o = evas_object_image_filled_add(ecore_evas_get(e_comp->ee));
evas_object_name_set(o, "__e_wl_watermark");
e_prefix_data_concat_static(buf, "data/images/wayland.png");
evas_object_image_file_set(o, buf, NULL);
evas_object_move(o, w - 40 - 16, 16);
evas_object_resize(o, 40, 40);
evas_object_pass_events_set(o, EINA_TRUE);
evas_object_layer_set(o, EVAS_LAYER_MAX);
evas_object_show(o);
}
return m;
}