Browse Source

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.
pull/7/head
Carsten Haitzler 2 months ago
parent
commit
5cf747d45d
  1. 3
      data/images/meson.build
  2. BIN
      data/images/wayland.png
  3. 19
      data/session/meson.build
  4. 38
      data/session/wl/enlightenment.desktop.in
  5. 12
      data/session/wl/meson.build
  6. 0
      data/session/x/enlightenment.desktop.in
  7. 12
      data/session/x/meson.build
  8. 21
      src/bin/e_start_main.c
  9. 20
      src/modules/wl_drm/e_mod_main.c

3
data/images/meson.build

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

19
data/session/meson.build

@ -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')

38
data/session/wl/enlightenment.desktop.in

@ -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

12
data/session/wl/meson.build

@ -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

0
data/session/enlightenment.desktop.in → data/session/x/enlightenment.desktop.in

12
data/session/x/meson.build

@ -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

21
src/bin/e_start_main.c

@ -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")) ||

20
src/modules/wl_drm/e_mod_main.c

@ -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;
}

Loading…
Cancel
Save