Electron: Envisagez de fournir une version pour Wayland

Créé le 25 oct. 2017  ·  139Commentaires  ·  Source: electron/electron

  • Version électronique : toute
  • Système d'exploitation : Linux

Comportement attendu

Le dernier Ubuntu est livré avec Wayland, un serveur d'affichage par défaut.
Sur les appareils embarqués, wayland offre généralement les meilleures performances de rendu, du moins par rapport à X11 où les performances sont généralement assez médiocres.

Comportement réel

Les versions binaires actuelles de linux / arm / arm64 sont excellentes mais fonctionnent assez mal d'après mon expérience sur les appareils embarqués. Ils sont tous liés à libx11 / gtk, ce qui les rend inutilisables pour wayland.

libGtk peut être construit avec --wayland-backend et ensuite electron peut être construit contre lui

J'aimerais vraiment que l'équipe d'électrons envisage de fournir des binaires préconstruits utilisables avec wayland, qui ouvriraient une nouvelle gamme de possibilités, en particulier sur les appareils embarqués.

blockeupstream ❌ enhancement platforlinux

Commentaire le plus utile

Mise à jour : Nous (Igalia) travaillons actuellement sur la migration de l'ancien Chromium/Linux (alias : Aura/X11) vers Ozone ( crbug.com/789065 ), afin que le backend X11 ou Wayland Ozone puisse être sélectionné en conséquence au moment de l'exécution. De plus, il est nécessaire de pouvoir basculer entre Ozone et hérité au moment de l'exécution en tant que mécanisme de secours en cas de problème pendant cette période de transition. Une fois que cela est fait et que le backend wayland est correctement poli et testé, il sera, espérons-le, intégré aux versions officielles de Chromium/Linux.

C'est formidable d'entendre que vscode/electron est déjà capable de fonctionner au-dessus de l'ozone de chrome/wayland (je dois trouver un peu de temps pour l'essayer par moi-même :)). Merci de travailler et de partager cela.

Pour un suivi ultérieur, veuillez nous contacter à {nickdiego,msisov}@igalia.com

Tous les 139 commentaires

Après avoir lu un peu, il semble que le meilleur moyen d'y parvenir serait d'activer l'ozone dans la construction de chrome. Alors je voulais savoir si quelqu'un avait déjà fait ça ou si je pouvais avoir quelques conseils pour l'essayer ?
Existe-t-il également d'autres parties de l'électron qui auraient de fortes dépendances X11 ? GTK3 ne devrait pas le faire à ce stade, mais vous vous demandez si des choses comme Brightray l'ont fait ?

Un examen plus approfondi de la construction montre que l'électron dépend du chrome libgtkui.
Le libgtkui dans Chrome a des dépendances assez fortes sur X11 et ne s'appuiera sur rien d'autre que X11 / OSX / Win à ce stade.

Je ne sais pas à quoi sert libgtkui en chrome (ce n'est pas dans libgtk3).
on dirait que c'est pour créer des icônes d'état et des indicateurs d'application.
Je me demande s'il serait possible de rendre cela facultatif...

J'ai réussi à patcher libchromiumcontent pour le faire construire sans X11.
Cela a nécessité pas mal de patchs et n'est pas vraiment adapté.

libchromiumcontent peut être construit dans ce cas avec use_aura=true use_ozone=true et quelques paramètres supplémentaires. pour plus de détails, voir mes correctifs ici https://github.com/LongChair/libchromiumcontent/commits/upgrade-to-chromium-61

Ensuite, j'ai commencé la construction d'électrons et la situation est similaire. Bien que la plupart du code contienne des parties #if defined(USE_AURA) , il ne peut clairement pas être construit pour aura avec de l'ozone à ce stade, même si libgtk3ui n'en dépendrait pas.

Il y a aussi des bits dans les fichiers GYP de brightray qui le rendent dépendant de X11, une version wayland aurait besoin d'être liée aux bonnes bibliothèques displaymanager ( wayland-client, ... ) .

Je pense que le meilleur moyen de le rendre constructible sans trop de tracas sur Linux et sans le support de X11, serait de faire en sorte que le composant libgtk3ui utilise en option dans la construction. Mais je ne connais pas assez les électrons pour savoir ce que cela casserait / rendrait indisponible. il semble qu'il s'agisse principalement d'icônes de la barre des tâches, ce qui n'aurait pas beaucoup d'importance car il n'y a pas de barre des tâches dans weston de toute façon :)

Je suppose que je vais arrêter ma tentative ici car cela fait trop de correctifs et il n'y a eu aucun intérêt / retour à ce sujet de la part de l'équipe d'électrons à ce stade :)

Cela permettrait également de s'exécuter via un hack sur ChromeOS.

Cela permettrait également de s'exécuter via un hack sur ChromeOS.

Cela a un peu piqué mon intérêt, pouvez-vous expliquer comment cela fonctionnerait?

Les derniers appareils Chromeos, ceux qui regroupent le runtime Android, utilisent Wayland pour afficher des applications non Chrome.

J'ai compilé et exécuté avec succès une démo de hello wayland.

ChromeOS utilise Aura et Ozone, soit avec Wayland, soit avec GBM/KMS.
Les problèmes mentionnés ci-dessus sont toujours les mêmes. libgtkui est toujours le problème majeur pour faire une construction, à la fois dans le chrome et l'électron.

Belle progression @LongChair !
J'étudiais également cela, mais j'ai d'abord préféré tester Chrome (Chrome) pour Wayland. Je suppose que le moteur V8 est la plus grande partie de la migration, à la fois dans Chrome et Electron.
Igalia a une fourche chrome qui est proche de l'amont : https://github.com/Igalia/chromium
Peut-être pouvons-nous intégrer les correctifs Igalia dans votre build Electron ?
Eh bien, je n'ai pas encore pu exécuter Chromium sur Wayland ...

J'ai pu compiler et exécuter Chrome avec des correctifs Wayland ! Voir le script de construction ici : https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=chromium-wayland-git

@onny : comme je le disais auparavant, il semble que beaucoup de dépendances X11 soient encore dans l'électron lui-même car si l'utilisation de libgtkui dans la compilation libcc.

Pour autant que j'aie vu, electron gère également AURA en tant que paramètre de construction, mais suppose ensuite qu'aura/x11 est utilisé. il n'y a donc actuellement aucun moyen de le faire construire sans X11.

il fonctionnera sur Xwayland / Wayland mais c'est loin d'apporter les performances de wayland, surtout sur embarqué.

Ah c'est intéressant :

Electron utilise maintenant GTK3 dans la branche master, sera livré dans la prochaine version mineure/majeure.
https://github.com/electron/electron/issues/2927#issuecomment-347092515

??

@onny : oui c'est ce qu'apporte le chrome 61. c'est le progrès.

Ce que je recherche, c'est une version native complète d'électrons wayland, car X11 (Xwayland) a tendance à réduire considérablement les performances globales.
Pour cela, il y a deux problèmes, même si Chromium se construit et s'exécute sur le wayland natif, c'est sans libgtkui afaik. cette dépendance que la libcc ajoute à la construction de chrome elle-même semble dépendre fortement de X11 à ce stade.
Ensuite, à part le chrome, le code électronique lui-même repose à la fois sur libcc:gtkui , mais aussi sur un tas de fonctions X11 qui ne sont pas disponibles sur wayland natif.

Je ne sais pas comment cette dépendance X11 pourrait être surmontée. Les éléments suivants seraient requis :

  • Débarrassez-vous en électron du besoin de licbc gtkui. ? si ce n'est pas possible, avoir du chrome pour le rendre compatible X11 / Wayland
  • Débarrassez-vous des dépendances obligatoires X11. Le code électronique semble utiliser AURA mais suppose qu'il s'agit d'AURA X11 où il pourrait s'agir d'AURA / Wayland. Je ne sais pas s'il existe des équivalents pour les fonctions X11 utilisées.

Cela aurait été bien si certains développeurs d'électrons pouvaient évaluer cela ou apporter des commentaires / considérations techniques ici :)

des nouvelles à ce sujet?

salut! Je voulais juste partager que nous (d'Igalia) avons un support pour Wayland à la fois dans les niveaux Chromium (le navigateur) et Contenu (la couche d'intégration) dans https://github.com/Igalia/chromium/.

Donc, selon la façon dont on configure l'électron au-dessus d'une version standard de chrome/x11 aujourd'hui, il peut être très simple de l'essayer sur chrome/wayland.

Les plus grandes différences sont que :

  • Les builds chrome/wayland ont "ozone" activé.
  • chromium/wayland s'exécute au-dessus du "service UI" en cours de développement, dans chromium-land.

s'il vous plaît contactez-moi à \tonikitoo à igalia dot com\, si l'on veut donner suite à cela.

est-ce que quelqu'un trouve une solution pour exécuter Electron sans X11 ?

@tonikitoo avez-vous une indication de quand votre travail sur Wayland sera réintégré en amont ?

@luispabon le travail se fait activement en amont. Nous estimons qu'environ 85 % se trouvent déjà dans la canalisation principale de chrome.

/cc @msisov

@tonikitoo excelente

salut @tonikitoo , des bonnes nouvelles concernant les électrons avec xwayland, wayland ou weston ?

nous ne travaillons pas sur l'électron, mais plutôt sur l'ajout de la prise en charge de wayland dans Chromium :)

crbug.com/578890

Des nouvelles du support wayland ? J'adorerais voir VSCode s'exécuter nativement sur wayland plutôt que sur Xwayland.

@GitHubRepositoryX suivez la progression du problème crbug dans le commentaire précédent le vôtre, il est toujours en cours de mise à jour.

J'ai remarqué que Chrome a récemment été corrigé pour prendre en charge libgtkui sur l'ozone (à la fois X11 et Wayland): https://chromium-review.googlesource.com/c/chromium/src/+/1744372

Cela résoudrait donc probablement le problème mentionné par @LongChair , car libgtkui peut toujours être utilisé sur le chemin de l'ozone.

J'ai essayé d'activer les drapeaux de construction ozone/wayland et j'ai piraté certains problèmes, et j'ai réussi à l'amener à un point où cela fonctionne ! Le code doit encore être nettoyé, testé et séparé en petites modifications avant de faire des PR, mais voici la branche : https://github.com/electron/electron/compare/master...hedgepigdaniel :ozone?expand= 1

La sensibilisation au changement DPI (https://github.com/electron/electron/issues/11050) fonctionne parfaitement comme dans les versions ozone/wayland chrome, et les parties manquantes sont également cassées, par exemple aucune boîte de dialogue d'ouverture de fichier pour le moment (bien que Je pense qu'ils sont en cours d'élaboration en ce moment).

Pour la plupart, le changement sépare simplement l'utilisation des définitions USE_X11 (qui combinaient auparavant Linux et X11) avec des combinaisons de OS_LINUX et USE_X11 ou USE_OZONE .

USE_X11 sera supprimé de la base de code Chromium dès que nous nous rapprochons d'avoir Ozone/X11 et Ozone/Wayland sans plain X11.

De plus, pour pouvoir utiliser les boîtes de dialogue de fichiers et gtk, vous devez compiler ozone avec use_glib=true activé. IIRC, use_gtk est défini sur true par défaut.

Alors est-ce une meilleure idée de remplacer if use_x11 par if !use_ozone and os_linux ? Ou autre chose?

Je vais essayer avec le drapeau use_glib. Je suppose que les boîtes de dialogue de fichiers fonctionnent alors ?

Oui, d'accord. Cependant, la modalité ne fonctionne pas encore. Mais vous pouvez les utiliser.

ce serait vraiment phénoménal. Peut-être que nous pourrions également faire défiler sur Linux pour être aussi agréable que sur Windows. (cinétique)

Utilisateurs d'Arch : https://aur.archlinux.org/packages/electron-ozone

Je l'ai fait fonctionner avec le dernier VSCode ( code-git a juste besoin d'être corrigé pour utiliser electron plutôt que electron6 suivant https://github.com/microsoft/vscode/pull/ 83796)

Il y a quelques symptômes étranges (probablement moi en train de commenter le code que je ne comprends pas) - mais cela fonctionne. Si pointu, et si correctement dimensionné !

@hedgepigdaniel alliez -vous créer des

../../ui/base/cursor/ozone/bitmap_cursor_factory_ozone.cc:53:15: error: no member named 'find_if' in namespace 'std'
(easy fix: just #include <algorithm>)
../../electron/shell/browser/ui/x/window_state_watcher.cc:59:32: error: no member named 'xproperty' in 'ui::Event'
  ::Atom changed_atom = event->xproperty.atom;
                        ~~~~~  ^
../../electron/shell/browser/ui/x/window_state_watcher.cc:61:18: error: reference to non-static member function must be called; did you mean to call it with no arguments?
          event->type == PropertyNotify && event->xproperty.window == widget_);
          ~~~~~~~^~~~
                     ()
../../electron/shell/browser/ui/x/window_state_watcher.cc:61:51: error: no member named 'xproperty' in 'ui::Event'
          event->type == PropertyNotify && event->xproperty.window == widget_);
                                           ~~~~~  ^

(these might be fixed by your conditional compiles?)

on dirait que ceux-ci pourraient être corrigés par vos commits?

Mise à jour : Nous (Igalia) travaillons actuellement sur la migration de l'ancien Chromium/Linux (alias : Aura/X11) vers Ozone ( crbug.com/789065 ), afin que le backend X11 ou Wayland Ozone puisse être sélectionné en conséquence au moment de l'exécution. De plus, il est nécessaire de pouvoir basculer entre Ozone et hérité au moment de l'exécution en tant que mécanisme de secours en cas de problème pendant cette période de transition. Une fois que cela est fait et que le backend wayland est correctement poli et testé, il sera, espérons-le, intégré aux versions officielles de Chromium/Linux.

C'est formidable d'entendre que vscode/electron est déjà capable de fonctionner au-dessus de l'ozone de chrome/wayland (je dois trouver un peu de temps pour l'essayer par moi-même :)). Merci de travailler et de partager cela.

Pour un suivi ultérieur, veuillez nous contacter à {nickdiego,msisov}@igalia.com

Je ne peux pas croire que cela se produise enfin, un rêve devient réalité... Espérons que cela ne prendra pas si longtemps pour fusionner les correctifs ppc64le 🤞

Courir arch/sway, la construction d'électrons-ozone semble se dérouler sans heurts, mais quand je lance des électrons :

electron -i

[57306:0311/201354.632474:FATAL:ozone_platform_wayland.cc(171)] Failed to initialize Wayland platform

s'il vous plaît laissez ici que font ces deux commandes

echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR

Afficher.

 ~ echo $WAYLAND_DISPLAY
wayland-0
 ~ echo $XDG_RUNTIME_DIR
/run/user/1000

J'obtiens exactement la même erreur que package électron-ozone de @hedgepigdaniel (je suis également sur arch/sway).

Sur la même machine, le chrome-ozone fonctionne bien (à l'exception de quelques problèmes mineurs comme le menu contextuel/le mauvais placement de l' entrée :

ok, essayez d'exécuter l'application de la manière suivante :

WAYLAND_DISPLAY=1 ./votre-application.

Est-ce que ça marche maintenant ? Sinon, essayez de l'exécuter avec WAYLAND_DEBUG=1 et partagez le résultat. Merci

J'obtiens exactement la même erreur que package électron-ozone de @hedgepigdaniel (je suis également sur arch/sway).

Sur la même machine, le chrome-ozone fonctionne bien (à l'exception de quelques problèmes mineurs comme le menu contextuel/le mauvais placement de l' entrée :

Je ne l'ai pas vu. Merci d'avoir posté ce lien ici. Il sera trié et corrigé.

Sous l'emprise :

 ~ WAYLAND_DISPLAY=1 electron -i
> [130498:0312/123434.824982:FATAL:ozone_platform_wayland.cc(171)] Failed to initialize Wayland platform

J'ai aussi testé avec Gnome et ça marche.

ça devrait être

WAYLAND_DISPLAY=wayland-1 (if such display socket exists)


Selon mon environnement, cela devrait être wayland-0, mais j'ai essayé 0 et 1 avec le même effet. Voici la sortie de débogage.

 ~ WAYLAND_DISPLAY=wayland-0 WAYLAND_DEBUG=1 electron -i
> [430007.888]  -> [email protected]_registry(new id wl_registry@2)
[430007.898]  -> [email protected](new id wl_callback@3)
[430008.013] [email protected]_id(3)
[430008.020] [email protected](1, "wl_shm", 1)
[430008.028]  -> [email protected](1, "wl_shm", 1, new id [unknown]@4)
[430008.040] [email protected](2, "zwp_linux_dmabuf_v1", 3)
[430008.051]  -> [email protected](2, "zwp_linux_dmabuf_v1", 3, new id [unknown]@5)
[430008.062]  -> [email protected](new id wl_callback@6)
[430008.066] [email protected](3, "wl_drm", 2)
[430008.075] [email protected](4, "wl_compositor", 4)
[430008.087]  -> [email protected](4, "wl_compositor", 4, new id [unknown]@7)
[430008.124] [email protected](5, "wl_subcompositor", 1)
[430008.136]  -> [email protected](5, "wl_subcompositor", 1, new id [unknown]@8)
[430008.152] [email protected](6, "wl_data_device_manager", 3)
[430008.161]  -> [email protected](6, "wl_data_device_manager", 3, new id [unknown]@9)
[430008.209] [email protected](7, "zwlr_gamma_control_manager_v1", 1)
[430008.220] [email protected](8, "gtk_primary_selection_device_manager", 1)
[430008.232] [email protected](9, "zxdg_output_manager_v1", 3)
[430008.244] [email protected](10, "org_kde_kwin_idle", 1)
[430008.257] [email protected](11, "zwp_idle_inhibit_manager_v1", 1)
[430008.269] [email protected](12, "zwlr_layer_shell_v1", 2)
[430008.281] [email protected](13, "xdg_wm_base", 2)
[430008.293] [email protected](14, "zwp_tablet_manager_v2", 1)
[430008.304] [email protected](15, "org_kde_kwin_server_decoration_manager", 1)
[430008.317] [email protected](16, "zxdg_decoration_manager_v1", 1)
[430008.329] [email protected](17, "zwp_relative_pointer_manager_v1", 1)
[430008.340] [email protected](18, "zwp_pointer_constraints_v1", 1)
[430008.352] [email protected](19, "wp_presentation", 1)
[430008.364]  -> [email protected](19, "wp_presentation", 1, new id [unknown]@10)
[430008.380] [email protected](20, "zwlr_output_manager_v1", 1)
[430008.391] [email protected](21, "zwlr_export_dmabuf_manager_v1", 1)
[430008.402] [email protected](22, "zwlr_screencopy_manager_v1", 2)
[430008.414] [email protected](23, "zwlr_data_control_manager_v1", 2)
[430008.427] [email protected](24, "zwp_primary_selection_device_manager_v1", 1)
[430008.437] [email protected](25, "zwp_virtual_keyboard_manager_v1", 1)
[430008.449] [email protected](26, "zwlr_virtual_pointer_manager_v1", 1)
[430008.461] [email protected](27, "zwlr_input_inhibit_manager_v1", 1)
[430008.473] [email protected](28, "wl_seat", 7)
[430008.499]  -> [email protected](28, "wl_seat", 4, new id [unknown]@11)
[430008.516]  -> [email protected]_data_device(new id wl_data_device<strong i="10">@12</strong>, wl_seat@11)
[430008.526] [email protected](29, "zwp_pointer_gestures_v1", 1)
[430008.538] [email protected](30, "wl_output", 3)
[430008.548]  -> [email protected](30, "wl_output", 3, new id [unknown]@13)
[430008.583] [email protected](241)
[430008.698] [email protected]_id(6)
[430008.716] [email protected](1211384385, 0, 0)
[430008.723] [email protected](1211384385, 16777216, 1)
[430008.729] [email protected](1211384385, 16777216, 2)
[430008.736] [email protected](1211384385, 16777216, 4)
[430008.762] [email protected](1211384408, 0, 0)
[430008.771] [email protected](1211384408, 16777216, 1)
[430008.781] [email protected](1211384408, 16777216, 2)
[430008.803] [email protected](1211384408, 16777216, 4)
[430008.832] [email protected](808669761, 0, 0)
[430008.844] [email protected](808669761, 16777216, 1)
[430008.856] [email protected](808669761, 16777216, 2)
[430008.868] [email protected](808669784, 0, 0)
[430008.880] [email protected](808669784, 16777216, 1)
[430008.891] [email protected](808669784, 16777216, 2)
[430008.903] [email protected](808665665, 0, 0)
[430008.913] [email protected](808665665, 16777216, 1)
[430008.925] [email protected](808665665, 16777216, 2)
[430008.937] [email protected](808665688, 0, 0)
[430008.948] [email protected](808665688, 16777216, 1)
[430008.958] [email protected](808665688, 16777216, 2)
[430008.969] [email protected](875713089, 0, 0)
[430008.981] [email protected](875713089, 16777216, 1)
[430009.006] [email protected](875713089, 16777216, 2)
[430009.035] [email protected](875713089, 16777216, 4)
[430009.046] [email protected](875708993, 0, 0)
[430009.058] [email protected](875708993, 16777216, 1)
[430009.069] [email protected](875708993, 16777216, 2)
[430009.081] [email protected](875708993, 16777216, 4)
[430009.093] [email protected](875713112, 0, 0)
[430009.105] [email protected](875713112, 16777216, 1)
[430009.129] [email protected](875713112, 16777216, 2)
[430009.141] [email protected](875713112, 16777216, 4)
[430009.152] [email protected](875709016, 0, 0)
[430009.183] [email protected](875709016, 16777216, 1)
[430009.193] [email protected](875709016, 16777216, 2)
[430009.204] [email protected](875709016, 16777216, 4)
[430009.230] [email protected](892424769, 0, 0)
[430009.261] [email protected](892424769, 16777216, 1)
[430009.272] [email protected](892424769, 16777216, 2)
[430009.285] [email protected](909199186, 0, 0)
[430009.297] [email protected](909199186, 16777216, 1)
[430009.310] [email protected](909199186, 16777216, 2)
[430009.320] [email protected](538982482, 0, 0)
[430009.331] [email protected](538982482, 16777216, 1)
[430009.342] [email protected](538982482, 16777216, 2)
[430009.354] [email protected](540422482, 0, 0)
[430009.364] [email protected](540422482, 16777216, 1)
[430009.387] [email protected](540422482, 16777216, 2)
[430009.415] [email protected](943215175, 0, 0)
[430009.427] [email protected](943215175, 16777216, 1)
[430009.440] [email protected](943215175, 16777216, 2)
[430009.464] [email protected](842224199, 0, 0)
[430009.493] [email protected](842224199, 16777216, 1)
[430009.506] [email protected](842224199, 16777216, 2)
[430009.517] [email protected](842224199, 16777216, 4)
[430009.528] [email protected](961959257, 0, 0)
[430009.539] [email protected](961959257, 16777216, 1)
[430009.550] [email protected](961959257, 16777216, 2)
[430009.562] [email protected](825316697, 0, 0)
[430009.574] [email protected](825316697, 16777216, 1)
[430009.586] [email protected](825316697, 16777216, 2)
[430009.598] [email protected](842093913, 0, 0)
[430009.610] [email protected](842093913, 16777216, 1)
[430009.635] [email protected](842093913, 16777216, 2)
[430009.646] [email protected](909202777, 0, 0)
[430009.658] [email protected](909202777, 16777216, 1)
[430009.670] [email protected](909202777, 16777216, 2)
[430009.682] [email protected](875713881, 0, 0)
[430009.694] [email protected](875713881, 16777216, 1)
[430009.704] [email protected](875713881, 16777216, 2)
[430009.716] [email protected](961893977, 0, 0)
[430009.727] [email protected](961893977, 16777216, 1)
[430009.739] [email protected](961893977, 16777216, 2)
[430009.751] [email protected](825316953, 0, 0)
[430009.763] [email protected](825316953, 16777216, 1)
[430009.775] [email protected](825316953, 16777216, 2)
[430009.787] [email protected](842094169, 0, 0)
[430009.799] [email protected](842094169, 16777216, 1)
[430009.811] [email protected](842094169, 16777216, 2)
[430009.823] [email protected](909203033, 0, 0)
[430009.854] [email protected](909203033, 16777216, 1)
[430009.864] [email protected](909203033, 16777216, 2)
[430009.871] [email protected](875714137, 0, 0)
[430009.882] [email protected](875714137, 16777216, 1)
[430009.892] [email protected](875714137, 16777216, 2)
[430009.917] [email protected](842094158, 0, 0)
[430009.929] [email protected](842094158, 16777216, 1)
[430009.942] [email protected](842094158, 16777216, 2)
[430009.953] [email protected](808530000, 0, 0)
[430009.966] [email protected](808530000, 16777216, 1)
[430009.978] [email protected](808530000, 16777216, 2)
[430009.990] [email protected](842084432, 0, 0)
[430010.000] [email protected](842084432, 16777216, 1)
[430010.011] [email protected](842084432, 16777216, 2)
[430010.023] [email protected](909193296, 0, 0)
[430010.035] [email protected](909193296, 16777216, 1)
[430010.048] [email protected](909193296, 16777216, 2)
[430010.058] [email protected](909203022, 0, 0)
[430010.068] [email protected](909203022, 16777216, 1)
[430010.079] [email protected](909203022, 16777216, 2)
[430010.090] [email protected](1448433985, 0, 0)
[430010.103] [email protected](1448433985, 16777216, 1)
[430010.114] [email protected](1448433985, 16777216, 2)
[430010.125] [email protected](1448433985, 16777216, 4)
[430010.137] [email protected](1448434008, 0, 0)
[430010.149] [email protected](1448434008, 16777216, 1)
[430010.160] [email protected](1448434008, 16777216, 2)
[430010.171] [email protected](1448434008, 16777216, 4)
[430010.182] [email protected](1448695129, 0, 0)
[430010.211] [email protected](1448695129, 16777216, 1)
[430010.221] [email protected](1448695129, 16777216, 2)
[430010.230] [email protected](1498831189, 0, 0)
[430010.252] [email protected](1498831189, 16777216, 1)
[430010.282] [email protected](1498831189, 16777216, 2)
[430010.293] [email protected](241)
[430010.299] [email protected]("seat0")
[430010.304] [email protected](3)
[430010.310]  -> [email protected]_pointer(new id wl_pointer@6)
[430010.330]  -> [email protected]_surface(new id wl_surface@3)
[430010.355]  -> [email protected]_keyboard(new id wl_keyboard@14)
[430010.363] [email protected](0, 0, 340, 190, 0, "Unknown", "0xA029", 0)
[430010.385] [email protected](1, 3840, 2160, 60000)
[430010.428] [email protected](2)
[430010.435] [email protected]()
[5217:0312/130033.546314:FATAL:ozone_platform_wayland.cc(171)] Failed to initialize Wayland platform
[1]    5217 trace trap (core dumped)  WAYLAND_DISPLAY=wayland-0 WAYLAND_DEBUG=1 electron -i

J'ai peut-être manqué, mais quelles sont les spécifications de votre système ?

OS: Arch Linux x86_64 
Host: XPS 15 7590 
Kernel: 5.5.8-arch1-1 
Uptime: 35 mins 
Packages: 1222 (pacman) 
Shell: zsh 5.8 
Resolution: 3840x2160 
DE: GNOME 
WM: sway 
Theme: Material-Black-Frost [GTK2/3] 
Icons: Black-Frost-Numix [GTK2/3] 
Terminal: termite 
Terminal Font: MonoLisa 11 
CPU: Intel i7-9750H (12) @ 4.500GHz 
GPU: Intel UHD Graphics 630 
GPU: NVIDIA GeForce GTX 1650 Mobile / Max-Q 
Memory: 3492MiB / 31753MiB 

Je suppose que vous utilisez Mesa et que votre GPU utilisé est celui d'Intel, n'est-ce pas ?

Pouvez-vous s'il vous plaît aller à ui/ozone/platform/wayland/host/wayland_connection.cc[1] et changer ceci

display_.reset(wl_display_connect(nullptr));

à

display_.reset(wl_display_connect("wayland-0"));
[1] https://cs.chromium.org/chromium/src/ui/ozone/platform/wayland/host/wayland_connection.cc?q=wayland_connection.cc&dr&l=58

et, d'ailleurs, avez-vous une compilation de chrome avec le système libwayland ? cela peut aussi être un problème.

J'utilise AUR, donc je ne suis pas sûr de libwayland. Je synchronise le dépôt pour apporter la modification que vous avez suggérée.

Et oui, j'utilise Mesa/Intel puisque Nvidia ne vend que des briques inertes qui ne font rien de plus qu'ajouter du poids à un ordinateur portable Linux.

Je fais référence à ceci - https://cs.chromium.org/chromium/src/third_party/wayland/features.gni?type=cs&q=use_system_libwayland&g=0&l=8

Si vous n'avez pas touché à ce gn arg, essayez de le définir sur true et recompilez.

@msisov J'ai modifié les deux fichiers src comme vous l'avez suggéré et recompilé. Malheureusement le résultat est le même.

J'ai également construit le package AUR electron-ozone et il échoue également mais avec les éléments suivants :

~ # GDK_BACKEND=x11 electron

[538602:0407/171819.513284:FATAL:ozone_platform_wayland.cc(171)] Failed to initialize Wayland platform
[1]    538602 trace trap (core dumped)  GDK_BACKEND=x11 electron
~ # GDK_BACKEND=wayland electron                                                                                                                                         133

(electron:538765): Gtk-WARNING **: 17:18:40.362: cannot open display: :0



md5-09c493bca06795a5a417eb676256b4ca



'blink_symbol_level=0'
'icu_use_data_file=false'
'is_component_ffmpeg=false'
'link_pulseaudio=true'
'linux_use_bundled_binutils=false'
'treat_warnings_as_errors=false'
'use_custom_libcxx=false'
'use_gnome_keyring=false'
'use_sysroot=false'
'use_ozone=true'
'ozone_auto_platforms=false'
'ozone_platform_wayland=true'
'ozone_platform_x11=true'
'use_xkbcommon=true'
'use_system_libwayland=true'
'use_system_minigbm=true'
'use_system_libdrm=true'
'use_glib=true'

J'ai réussi à exécuter Electron sous Wayland en rebasant les correctifs de @hedgepigdaniel sur la version stable de 8.2.1 .

Ce serait bien si @hedgepigdaniel mettait à jour le package AUR électron-ozone avec ces modifications (je peux soumettre une pull-request si cela aide).

Edit: Le package AUR électron-ozone a été mis à jour avec ces changements.

Une raison possible pour laquelle le package electron-ozone AUR échouait pour certains utilisateurs de sway pourrait être due à la suppression de xdg-shell v6 unstable dans sway v1.4 (https://github.com/swaywm/sway/ pull/4466) qui était ce qui était utilisé dans Electron 7.1.8/Chromium 78 ( chrome # 997631 ).

@vialement excellent !

J'ai créé https://github.com/hedgepigdaniel/pkgbuild-electron-ozone qui est un miroir du package AUR - vous pouvez soumettre un PR et je le publierai.

Le paquet a été mis à jour, merci @vially

Peut confirmer que la nouvelle version fonctionne sur Sway .

Bien que cela ne semble pas fonctionner avec la version code-git de vscode - j'obtiens deux fenêtres code-git et Code - OSS qui sont toutes deux vides - mais c'est peut-être un problème avec vscode .

Peut confirmer que la nouvelle version fonctionne sur Sway .

Bien que cela ne semble pas fonctionner avec la version code-git de vscode - j'obtiens deux fenêtres code-git et Code - OSS qui sont toutes deux vides - mais c'est peut-être un problème avec vscode .

Je ne pense pas que VSCode ait été mis à jour pour fonctionner avec electron 8 : https://github.com/microsoft/vscode/blob/304fc630f7f46db67a33def6b8dd3f8728033546/package.json#L99

C'est probablement une erreur que le package code-git n'ait pas encore été mis à jour pour dépendre d'électron7 plutôt que d'électron.

Je vois, j'ai essayé quelques autres applications, comme drawio-desktop et elles semblent bien fonctionner avec la version electron-ozone .

Une chance d'ajouter l'indicateur de construction 'rtc_use_pipewire=true' pour prendre en charge le partage d'écran Wayland ?

Lorsque vous n'êtes pas sur l'arche, quelles sont les options pour obtenir la construction du chemin ?
quand les électrons seront-ils expédiés avec l'ozone ?

Je ne pense pas que VSCode ait été mis à jour pour fonctionner avec l'électron 8

Dommage, c'est mon vrai barrage routier pour pouvoir utiliser Wayland. Impossible de l'utiliser sur XWyaland car les applications à l'échelle XWayland sont très floues.

J'ai regardé la branche electron-8 et il semble qu'il n'y ait rien de spécial à ce sujet, ils viennent de renverser la version electron : https://github.com/microsoft/vscode/compare/electron-8.0.x

Il semble donc que vscode soit censé fonctionner avec electron 8 (mais il peut y avoir quelques bugs, car il est toujours confiné dans sa propre branche).
@nostdm pouvez-vous vérifier si cela fonctionne mieux sur Xorg ?

J'ai essayé vscode avec la version electron-ozone (version 8.2.1 mentionnée ci-dessus) et il démarre, mais il y a des problèmes qui l'ont fait planter assez souvent pour que je devais le faire revenir à la version X11/XWayland.

YMMV et moi vous encourageons à l'essayer car c'est très simple à construire. Pour mon build, je viens de remplacer electron7 par electron dans ce PKGBUILD :

-- _electron=electron7
++ _electron=electron

La plupart des plantages que j'ai vus avec vscode étaient dus à des bugs que j'ai également rencontrés dans chromium-ozone version 80 (la plupart liés aux info-bulles). La bonne nouvelle est que la plupart de ces plantages ont maintenant disparu dans la version 81 de chromium-ozone grâce au travail continu effectué par l'équipe d'Igalia.

Pour moi, si la version 9 d'électron (qui sera basée sur la version 82 de chrome : #22932) s'avère aussi stable que chrome 81 l'est sur Wayland, c'est à ce moment-là que je passerai à vscode nativement sur Wayland et abandonnez XWayland pour de bon. Ou c'est du moins le plan :smiley:

Une chance d'ajouter l'indicateur de construction 'rtc_use_pipewire=true' pour prendre en charge le partage d'écran Wayland ?

A été fait sur la nouvelle version 8.2.2.

Merci! C'est une excellente nouvelle. Je ferai un test quand j'en aurai l'occasion.

Merci pour vos travaux @hedgepigdaniel.
J'écris un ebuild Gentoo basé sur votre PKGBUILD :
https://github.com/12101111/overlay/blob/master/dev-util/electron/electron-8.2.3.ebuild
Il peut fonctionner sous wayland (sway) et planter lors du chargement de vscode (branche electron-8.0.x).
Et il ne peut pas s'ouvrir en session X :

(electron-8:17347): Gtk-WARNING **: 21:48:29.145: cannot open display: :0

ozone_platform_x11 est-il plus instable qu'ozone_platform_wayland ?

@ 12101111 Ozone/X11 est WIP, donc oui, c'est toujours assez instable. Pourriez-vous fournir plus de détails sur votre environnement X ? DE/WM et version ? Je l'exécute quotidiennement dans différents DE/WM sans aucun problème de ce genre.

@nickdiego J'utilise le serveur Xorg 1.20.8, mesa 20.0.4, gtk 3.24.18, sway 1.4, génial wm 4.3.
La construction d'ozone ne fonctionne pas sous X ou Xwayland

$ GDK_BACKEND=x11 ./electron --no-sandbox

(electron:29446): Gtk-WARNING **: 10:17:14.534: cannot open display: :0
$ GDK_BACKEND=x11 ./electron --no-sandbox --gtk-debug=all --gdk-debug=all
Gtk-Message: 10:16:04.809: Failed to open display (null)
Gtk-Message: 10:16:04.809: Failed to separate connection to default display
Received signal 11 SEGV_MAPERR 000000000018
#0 0x55a48ab79f19 <unknown>
#1 0x55a48aaac243 <unknown>
#2 0x55a48ab79ad2 <unknown>
#3 0x7f23f46be160 <unknown>
#4 0x7f23f3851e80 <unknown>
#5 0x7f23f37259aa gtk_css_value_icon_theme_compute
#6 0x7f23f37483a7 _gtk_css_value_compute
#7 0x7f23f372e2b2 gtk_css_value_initial_compute
#8 0x7f23f37483a7 _gtk_css_value_compute
#9 0x7f23f372e15d gtk_css_value_inherit_compute
#10 0x7f23f37483a7 _gtk_css_value_compute
#11 0x7f23f3741094 gtk_css_static_style_compute_value
#12 0x7f23f372f428 _gtk_css_lookup_resolve
#13 0x7f23f3740ffa gtk_css_static_style_new_compute
#14 0x7f23f3740f5f gtk_css_static_style_get_default
#15 0x7f23f3730a02 gtk_css_node_init
#16 0x7f23f4580fa5 g_type_create_instance
#17 0x7f23f4571de1 g_object_new_internal
#18 0x7f23f4571838 g_object_new_with_properties
#19 0x7f23f45716a3 g_object_new
#20 0x7f23f3748608 gtk_css_widget_node_new
#21 0x7f23f38f1b5f gtk_widget_init
#22 0x7f23f4580fa5 g_type_create_instance
#23 0x7f23f4571de1 g_object_new_internal
#24 0x7f23f4571bf8 g_object_new_valist
#25 0x7f23f4571690 g_object_new
#26 0x7f23f36b3644 gtk_inspector_window_new
#27 0x7f23f390c69b gtk_window_set_debugging
#28 0x7f23f390c66a gtk_window_set_interactive_debugging
#29 0x7f23f37d3f3c gtk_init_check
#30 0x7f23f37d3f46 gtk_init
#31 0x55a48e81e106 <unknown>
#32 0x55a48e814ad2 <unknown>
#33 0x55a48e819e7b <unknown>
#34 0x55a48864637a <unknown>
#35 0x55a48a200beb <unknown>
#36 0x55a48a205068 <unknown>
#37 0x55a48a2003a6 <unknown>
#38 0x55a48a0862a4 <unknown>
#39 0x55a48a085fc3 <unknown>
#40 0x55a48c111201 <unknown>
#41 0x55a4891d0ffe <unknown>
#42 0x55a48858bcc2 <unknown>
#43 0x7f23f00ffe1b __libc_start_main
#44 0x55a48858ba6a _start
  r8: 0000000000000000  r9: 0000000000000065 r10: 0000000000000028 r11: 0000000000000000
 r12: 0000000000000000 r13: 0000213a58f820a0 r14: 0000000000000000 r15: 0000213a58f820a0
  di: 0000000000000000  si: 0000213a58e7b5b0  bp: 0000000000000003  bx: 0000000000000000
  dx: 0000213a58e7b5b0  ax: 0000000000000000  cx: fffffffd52dbbc5e  sp: 00007fff0d0d5038
  ip: 00007f23f3851e80 efl: 0000000000010206 cgf: 002b000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000018
[end of stack trace]
Calling _exit(1). Core file will not be generated.

lldb :

$ GDK_BACKEND=x11 lldb ./electron
(lldb) target create "./electron"
Current executable set to '/tmp/electron-ozone/usr/lib64/electron-8/electron' (x86_64).
(lldb) r --no-sandbox --gtk-debug=all --gdk-debug=all
Process 26504 launched: '/tmp/electron-ozone/usr/lib64/electron-8/electron' (x86_64)
Gtk-Message: 10:12:06.866: Failed to open display (null)
Gtk-Message: 10:12:06.866: Failed to separate connection to default display
Process 26504 stopped
* thread #1, name = 'electron', stop reason = signal SIGSEGV: invalid address (fault address: 0x18)
    frame #0: 0x00007ffff711ce80 libgtk-3.so.0`_gtk_settings_get_screen(settings=0x0000000000000000) at gtksettings.c:3348:20
(lldb) bt
* thread #1, name = 'electron', stop reason = signal SIGSEGV: invalid address (fault address: 0x18)
  * frame #0: 0x00007ffff711ce80 libgtk-3.so.0`_gtk_settings_get_screen(settings=0x0000000000000000) at gtksettings.c:3348:20
    frame #1: 0x00007ffff6ff09aa libgtk-3.so.0`gtk_css_value_icon_theme_compute(icon_theme=<unavailable>, property_id=<unavailable>, provider=<unavailable>, style=<unavailable>, parent_style=<unavailable>) at gtkcssiconthemevalue.c:84:48
    frame #2: 0x00007ffff70133a7 libgtk-3.so.0`_gtk_css_value_compute(value=<unavailable>, property_id=<unavailable>, provider=<unavailable>, style=<unavailable>, parent_style=<unavailable>) at gtkcssvalue.c:97:10
    frame #3: 0x00007ffff6ff92b2 libgtk-3.so.0`gtk_css_value_initial_compute(value=<unavailable>, property_id=3, provider=0x0000000000000000, style=0x000010d49974c0a0, parent_style=0x0000000000000000) at gtkcssinitialvalue.c:73:10
    frame #4: 0x00007ffff70133a7 libgtk-3.so.0`_gtk_css_value_compute(value=<unavailable>, property_id=<unavailable>, provider=<unavailable>, style=<unavailable>, parent_style=<unavailable>) at gtkcssvalue.c:97:10
    frame #5: 0x00007ffff6ff915d libgtk-3.so.0`gtk_css_value_inherit_compute(value=<unavailable>, property_id=3, provider=<unavailable>, style=<unavailable>, parent_style=<unavailable>) at gtkcssinheritvalue.c:49:14
    frame #6: 0x00007ffff70133a7 libgtk-3.so.0`_gtk_css_value_compute(value=<unavailable>, property_id=<unavailable>, provider=<unavailable>, style=<unavailable>, parent_style=<unavailable>) at gtkcssvalue.c:97:10
    frame #7: 0x00007ffff700c094 libgtk-3.so.0`gtk_css_static_style_compute_value(style=0x000010d49974c0a0, provider=0x0000000000000000, parent_style=0x0000000000000000, id=3, specified=0x00007ffff722c230, section=0x0000000000000000) at gtkcssstaticstyle.c:237:11
    frame #8: 0x00007ffff6ffa428 libgtk-3.so.0`_gtk_css_lookup_resolve(lookup=0x000010d4995ffe00, provider=0x0000000000000000, style=0x000010d49974c0a0, parent_style=0x0000000000000000) at gtkcsslookup.c:122:9
    frame #9: 0x00007ffff700bffa libgtk-3.so.0`gtk_css_static_style_new_compute(provider=0x0000000000000000, matcher=<unavailable>, parent=0x0000000000000000) at gtkcssstaticstyle.c:195:3
    frame #10: 0x00007ffff700bf5f libgtk-3.so.0`gtk_css_static_style_get_default at gtkcssstaticstyle.c:164:23
    frame #11: 0x00007ffff6ffba02 libgtk-3.so.0`gtk_css_node_init(cssnode=0x000010d49973d1b0) at gtkcssnode.c:667:34
    frame #12: 0x00007ffff7e4bfa5 libgobject-2.0.so.0`g_type_create_instance(type=<unavailable>) at gtype.c:1861:4
    frame #13: 0x00007ffff7e3cde1 libgobject-2.0.so.0`g_object_new_internal(class=0x000010d4995e3960, params=0x0000000000000000, n_params=0) at gobject.c:1937:24
    frame #14: 0x00007ffff7e3c838 libgobject-2.0.so.0`g_object_new_with_properties(object_type=18505292407456, n_properties=0, names=0x0000000000000000, values=0x0000000000000000) at gobject.c:2105:14
    frame #15: 0x00007ffff7e3c6a3 libgobject-2.0.so.0`g_object_new(object_type=<unavailable>, first_property_name=<unavailable>) at gobject.c:1777:12
    frame #16: 0x00007ffff7013608 libgtk-3.so.0`gtk_css_widget_node_new(widget=0x000010d499748480) at gtkcsswidgetnode.c:297:12
    frame #17: 0x00007ffff71bcb5f libgtk-3.so.0`gtk_widget_init(instance=0x000010d499748480, g_class=0x000010d4995e1200) at gtkwidget.c:4468:19
    frame #18: 0x00007ffff7e4bfa5 libgobject-2.0.so.0`g_type_create_instance(type=<unavailable>) at gtype.c:1861:4
    frame #19: 0x00007ffff7e3cde1 libgobject-2.0.so.0`g_object_new_internal(class=0x000010d4995e1200, params=0x00007fffffffcbe0, n_params=1) at gobject.c:1937:24
    frame #20: 0x00007ffff7e3cbf8 libgobject-2.0.so.0`g_object_new_valist(object_type=<unavailable>, first_property_name=<unavailable>, var_args=<unavailable>) at gobject.c:2262:16
    frame #21: 0x00007ffff7e3c690 libgobject-2.0.so.0`g_object_new(object_type=<unavailable>, first_property_name=<unavailable>) at gobject.c:1780:12
    frame #22: 0x00007ffff6f7e644 libgtk-3.so.0`gtk_inspector_window_new at window.c:321:10
    frame #23: 0x00007ffff71d769b libgtk-3.so.0`gtk_window_set_debugging(enable=1, select=0, warn=0) at gtkwindow.c:12767:26
    frame #24: 0x00007ffff71d766a libgtk-3.so.0`gtk_window_set_interactive_debugging(enable=<unavailable>) at gtkwindow.c:12830:3
    frame #25: 0x00007ffff709ef3c libgtk-3.so.0`gtk_init_check(argc=<unavailable>, argv=<unavailable>) at gtkmain.c:1112:5
    frame #26: 0x00007ffff709ef46 libgtk-3.so.0`gtk_init(argc=<unavailable>, argv=<unavailable>) at gtkmain.c:1166:8
    frame #27: 0x000055555e380106 electron`___lldb_unnamed_symbol405691$$electron + 150
    frame #28: 0x000055555e376ad2 electron`___lldb_unnamed_symbol405583$$electron + 866
    frame #29: 0x000055555e37be7b electron`___lldb_unnamed_symbol405643$$electron + 27
    frame #30: 0x00005555581a837a electron`___lldb_unnamed_symbol4472$$electron + 106
    frame #31: 0x0000555559d62beb electron`___lldb_unnamed_symbol95227$$electron + 187
    frame #32: 0x0000555559d67068 electron`___lldb_unnamed_symbol95278$$electron + 648
    frame #33: 0x0000555559d623a6 electron`___lldb_unnamed_symbol95219$$electron + 182
    frame #34: 0x0000555559be82a4 electron`___lldb_unnamed_symbol89107$$electron + 692
    frame #35: 0x0000555559be7fc3 electron`___lldb_unnamed_symbol89106$$electron + 323
    frame #36: 0x000055555bc73201 electron`___lldb_unnamed_symbol226506$$electron + 3761
    frame #37: 0x0000555558d32ffe electron`___lldb_unnamed_symbol54351$$electron + 142
    frame #38: 0x00005555580edcc2 electron`___lldb_unnamed_symbol3$$electron + 450
    frame #39: 0x00007ffff39cae1b libc.so.6`__libc_start_main + 235
    frame #40: 0x00005555580eda6a electron`_start + 42

Je n'ai jamais touché cette erreur spécifique. Êtes-vous capable d'exécuter Chromium ozone/x11 sur votre environnement ? Comme il est en cours de développement, il serait intéressant de vérifier les versions les plus

_En tant que plan dans le noir, cela pourrait être lié à ce problème , qui dans mon environnement provoquait des plantages uniquement lorsque j'essayais d'ouvrir les boîtes de dialogue gtk, pas au démarrage._

@nickdiego Je suppose que c'est parce qu'ils utilisent le canal stable, qui dans leur cas est ""80.0.3987.163"". Ce n'est pas fiable dans le cas d'Ozone/X11/Wayland car il y a des changements constants dans le coffre.

J'essaie de construire chromium-83.0.4103.15, cela fonctionne sur wayland, et j'ai besoin de chromium --ozone-platform=x11 pour fonctionner sur X.
Mais l'électron ne peut pas se lancer sur X :

$ ./electron --ozone-platform=x11

Electron 8.2.3 - Build cross platform desktop apps with JavaScript, HTML, and CSS
Usage: electron [options] [path]

A path to an Electron app may be specified. It must be one of the following:
  - index.js file.
  - Folder containing a package.json file.
  - Folder containing an index.js file.
  - .html/.htm file.
  - http://, https://, or file:// URL.

Options:
  -i, --interactive     Open a REPL to the main process.
  -r, --require         Module to preload (option can be repeated).
  -v, --version         Print the version.
  -a, --abi             Print the Node ABI version.
Received signal 11 SEGV_MAPERR 000000000000
#0 0x55b9f7eadf19 <unknown>
#1 0x55b9f7de0243 <unknown>
#2 0x55b9f7eadad2 <unknown>
#3 0x7fa643ba4160 <unknown>
#4 0x55b9f898ad06 <unknown>
#5 0x55b9f609f3a8 <unknown>
#6 0x55b9f91f07de <unknown>
#7 0x55b9f8dc5f09 <unknown>
#8 0x55b9fae0172b <unknown>
#9 0x55b9fae33d70 <unknown>
#10 0x55b9fae3211f <unknown>
#11 0x55b9fadfd418 <unknown>
#12 0x55b9f599a0c0 <unknown>
#13 0x55b9f599c0bb <unknown>
#14 0x55b9f592558b <unknown>
#15 0x55b9f58dffc9 <unknown>
#16 0x55b9f58e1b63 <unknown>
#17 0x55b9f58dd422 <unknown>
#18 0x55b9f58dd166 <unknown>
#19 0x55b9f58dd313 <unknown>
#20 0x55b9f6706782 <unknown>
#21 0x55b9f670589e <unknown>
#22 0x55b9f670513e <unknown>
#23 0x55b9f711dbf9 <unknown>
  r8: 0000000000000000  r9: 000000000606ece8 r10: 0000000000000018 r11: 002fc8b7156f8000
 r12: 00001497d4b9b180 r13: 00001497d4dfea80 r14: 00001497d515f510 r15: 00007fff79d10f80
  di: 00001497d531c634  si: 0000000000000001  bp: 00007fff79d10f10  bx: 00001497d515f480
  dx: 0000000000000010  ax: 0000000000000000  cx: 000055b9fc042fc8  sp: 00007fff79d10ef0
  ip: 000055b9f898ad06 efl: 0000000000010202 cgf: 002b000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.

@msisov Oui, c'est logique.

J'essaie de construire chromium-83.0.4103.15, cela fonctionne sur wayland, et j'ai besoin de chrome --ozone-platform=x11 pour fonctionner sur X.
Mais l'électron ne peut pas se lancer sur X :

Donc, il semble y avoir un problème spécifique aux électrons dans l'initialisation Gtk/Ozone. Quelqu'un pourrait-il confirmer ce problème dans d'autres configurations? Désolé mais je n'ai actuellement pas le temps de m'y pencher (je n'ai même pas de construction électronique locale).

Dois-je changer ozone_auto_platforms en true ?

Actuellement, ozone_auto_platforms définit simplement x11 comme backend par défaut, car nous n'avons toujours pas de détection automatique de plate-forme sur le bureau Linux.

Je construis electron 8.2.3 avec CXXFLAGS= -O1 -g et j'obtiens une trace avec le code source :

$ lldb ./electron
(lldb) target create "./electron"
Current executable set to '/data/tmp/portage/dev-util/electron-8.2.3/image/usr/lib/electron-8/electron' (x86_64).
(lldb) r --ozone-platform=x11
Process 823 launched: '/data/tmp/portage/dev-util/electron-8.2.3/image/usr/lib/electron-8/electron' (x86_64)
Process 823 stopped and restarted: thread 1 received signal: SIGCHLD

Electron 8.2.3 - Build cross platform desktop apps with JavaScript, HTML, and CSS
Usage: electron [options] [path]

A path to an Electron app may be specified. It must be one of the following:
  - index.js file.
  - Folder containing a package.json file.
  - Folder containing an index.js file.
  - .html/.htm file.
  - http://, https://, or file:// URL.

Options:
  -i, --interactive     Open a REPL to the main process.
  -r, --require         Module to preload (option can be repeated).
  -v, --version         Print the version.
  -a, --abi             Print the Node ABI version.
Process 823 stopped
* thread #1, name = 'electron', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
    frame #0: 0x00005555636e2a11 electron`ui::InputMethodAuraLinux::InputMethodAuraLinux(this=0x000055556836a480, delegate=<unavailable>) at input_method_auralinux.cc:35:51
   32         << "Trying to initialize InputMethodAuraLinux, but "
   33            "LinuxInputMethodContextFactory is not initialized yet.";
   34     context_ =
-> 35         LinuxInputMethodContextFactory::instance()->CreateInputMethodContext(
   36             this, false);
   37     context_simple_ =
   38         LinuxInputMethodContextFactory::instance()->CreateInputMethodContext(
(lldb) bt
* thread #1, name = 'electron', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
  * frame #0: 0x00005555636e2a11 electron`ui::InputMethodAuraLinux::InputMethodAuraLinux(this=0x000055556836a480, delegate=<unavailable>) at input_method_auralinux.cc:35:51
    frame #1: 0x000055555e778750 electron`std::__1::__unique_if<ui::InputMethodAuraLinux>::__unique_single std::__1::make_unique<ui::InputMethodAuraLinux, ui::internal::InputMethodDelegate*&>(__args=<unavailable>) at memory:3028:32
    frame #2: 0x000055555e79d9b2 electron`ui::(anonymous namespace)::OzonePlatformX11::CreateInputMethod(this=<unavailable>, delegate=0x0000555568501020) at ozone_platform_x11.cc:115:12
    frame #3: 0x0000555564241a20 electron`ui::CreateInputMethod(delegate=<unavailable>, widget=<unavailable>) at input_method_factory.cc:69:44
    frame #4: 0x0000555563be4da2 electron`aura::WindowTreeHost::GetInputMethod(this=0x0000555568501020) at window_tree_host.cc:276:9
    frame #5: 0x00005555665a0f53 electron`views::DesktopNativeWidgetAura::GetInputMethod(this=0x0000555568507240) at desktop_native_widget_aura.cc:693:27
    frame #6: 0x0000555566558db6 electron`views::Widget::GetInputMethod(this=0x0000555568369c80) at widget.cc:814:37
    frame #7: 0x000055556655a26b electron`views::Widget::OnNativeWidgetSizeChanged(this=0x0000555568369c80, new_size=0x00007fffffffb4a8) at widget.cc:1202:28
    frame #8: 0x00005555665a2343 electron`views::DesktopNativeWidgetAura::OnHostResized(this=<unavailable>, host=<unavailable>) at desktop_native_widget_aura.cc:1250:28
    frame #9: 0x00005555665a0858 electron`views::DesktopNativeWidgetAura::InitNativeWidget(this=0x0000555568507240, params=InitParams @ 0x00007fffffffb540) at desktop_native_widget_aura.cc:552:3
    frame #10: 0x000055556655766a electron`views::Widget::Init(this=0x0000555568369c80, params=InitParams @ 0x00007fffffffb958) at widget.cc:353:19
    frame #11: 0x000055555dc7f316 electron`electron::NativeWindowViews::NativeWindowViews(this=0x000055556843ae20, options=<unavailable>, parent=<unavailable>) at native_window_views.cc:206:13
    frame #12: 0x000055555dc8116b electron`electron::NativeWindow::Create(options=<unavailable>, parent=<unavailable>) at native_window_views.cc:1484:14
    frame #13: 0x000055555db98cb7 electron`electron::api::TopLevelWindow::TopLevelWindow(this=<unavailable>, isolate=0x00005555687a28c0, options=0x00007fffffffbde0) at electron_api_top_level_window.cc:96:17
    frame #14: 0x000055555db11647 electron`electron::api::BrowserWindow::BrowserWindow(this=0x00005555685f32a0, args=0x00007fffffffbf20, options=0x00007fffffffbde0) at electron_api_browser_window.cc:34:7
    frame #15: 0x000055555db12e32 electron`electron::api::BrowserWindow::New(thrower=<unavailable>, args=0x00007fffffffbf20) at electron_api_browser_window.cc:464:14
    frame #16: 0x000055555db09d7c electron`mate::WrappableBase* base::internal::FunctorTraits<mate::WrappableBase* (*)(gin_helper::ErrorThrower, gin::Arguments*), void>::Invoke<mate::WrappableBase* (function=<unavailable>, args=<unavailable>, args=<unavailable>)(gin_helper::ErrorThrower, gin::Arguments*), gin_helper::ErrorThrower, gin::Arguments*>(mate::WrappableBase* (* const&)(gin_helper::ErrorThrower, gin::Arguments*), gin_helper::ErrorThrower&&, gin::Arguments*&&) at bind_internal.h:398:12
    frame #17: 0x000055555db09d19 electron`mate::WrappableBase* base::internal::InvokeHelper<false, mate::WrappableBase*>::MakeItSo<mate::WrappableBase* (functor=<unavailable>, args=<unavailable>, args=<unavailable>)(gin_helper::ErrorThrower, gin::Arguments*), gin_helper::ErrorThrower, gin::Arguments*>(mate::WrappableBase* (* const&)(gin_helper::ErrorThrower, gin::Arguments*), gin_helper::ErrorThrower&&, gin::Arguments*&&) at bind_internal.h:598:12
    frame #18: 0x000055555db09cc9 electron`mate::WrappableBase* base::internal::Invoker<base::internal::BindState<mate::WrappableBase* (*)(gin_helper::ErrorThrower, gin::Arguments*)>, mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)>::RunImpl<mate::WrappableBase* (functor=<unavailable>, bound=<unavailable>, (null)=<unavailable>, unbound_args=<unavailable>, unbound_args=<unavailable>)(gin_helper::ErrorThrower, gin::Arguments*), std::__1::tuple<> const&>(mate::WrappableBase* (* const&)(gin_helper::ErrorThrower, gin::Arguments*), std::__1::tuple<> const&, std::__1::integer_sequence<unsigned long>, gin_helper::ErrorThrower&&, gin::Arguments*&&) at bind_internal.h:671:12
    frame #19: 0x000055555db09c7b electron`base::internal::Invoker<base::internal::BindState<mate::WrappableBase* (*)(gin_helper::ErrorThrower, gin::Arguments*)>, mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)>::Run(base=<unavailable>, unbound_args=<unavailable>, unbound_args=0x00007fffffffbf20) at bind_internal.h:653:12
    frame #20: 0x000055555db09b5c electron`base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)>::Run(this=<unavailable>, args=<unavailable>, args=0x00007fffffffbf20) const & at callback.h:132:12
    frame #21: 0x000055555db09a77 electron`mate::WrappableBase* mate::internal::InvokeFactory<gin_helper::ErrorThrower, gin::Arguments*>(args=<unavailable>, callback=0x000055556829ba68)> const&) at constructor.h:50:19
    frame #22: 0x000055555db09145 electron`void mate::internal::InvokeNew<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)>(factory=0x000055556829ba68, isolate=0x00005555687a28c0, args=0x00007fffffffc1c0)> const&, v8::Isolate*, mate::Arguments*) at constructor.h:143:14
    frame #23: 0x000055555db09829 electron`void base::internal::FunctorTraits<void (*)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), void>::Invoke<void (function=<unavailable>, args=<unavailable>, args=<unavailable>, args=<unavailable>)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*>(void (* const&)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*&&, mate::Arguments*&&) at bind_internal.h:398:12
    frame #24: 0x000055555db0977e electron`void base::internal::InvokeHelper<false, void>::MakeItSo<void (functor=<unavailable>, args=<unavailable>, args=<unavailable>, args=<unavailable>)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*>(void (* const&)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*&&, mate::Arguments*&&) at bind_internal.h:598:12
    frame #25: 0x000055555db0971e electron`void base::internal::Invoker<base::internal::BindState<void (*)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> >, void (v8::Isolate*, mate::Arguments*)>::RunImpl<void (functor=<unavailable>, bound=<unavailable>, (null)=<unavailable>, unbound_args=<unavailable>, unbound_args=<unavailable>)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), std::__1::tuple<base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> > const&, 0ul>(void (* const&)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), std::__1::tuple<base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> > const&, std::__1::integer_sequence<unsigned long, 0ul>, v8::Isolate*&&, mate::Arguments*&&) at bind_internal.h:671:12
    frame #26: 0x000055555db096b3 electron`base::internal::Invoker<base::internal::BindState<void (*)(base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> const&, v8::Isolate*, mate::Arguments*), base::RepeatingCallback<mate::WrappableBase* (gin_helper::ErrorThrower, gin::Arguments*)> >, void (v8::Isolate*, mate::Arguments*)>::Run(base=<unavailable>, unbound_args=0x00005555687a28c0, unbound_args=0x00007fffffffc1c0) at bind_internal.h:653:12
    frame #27: 0x000055555db0951c electron`base::RepeatingCallback<void (v8::Isolate*, mate::Arguments*)>::Run(this=<unavailable>, args=0x00005555687a28c0, args=0x00007fffffffc1c0) const & at callback.h:132:12
    frame #28: 0x000055555db0944c electron`mate::internal::Invoker<mate::internal::IndicesHolder<0ul, 1ul>, v8::Isolate*, mate::Arguments*>::DispatchToCallback(this=<unavailable>, callback=<unavailable>)>) at function_template.h:209:14
    frame #29: 0x000055555db092d8 electron`mate::internal::Dispatcher<void (v8::Isolate*, mate::Arguments*)>::DispatchToCallback(info=<unavailable>) at function_template.h:243:15
    frame #30: 0x000055555f8d3095 electron`v8::internal::FunctionCallbackArguments::Call(this=0x00007fffffffc3c0, handler=CallHandlerInfo @ 0x00007fffffffc270) at api-arguments-inl.h:158:3
    frame #31: 0x000055555f8d19e3 electron`v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<true>(isolate=<unavailable>, function=<unavailable>, new_target=<unavailable>, fun_data=<unavailable>, receiver=<unavailable>, args=BuiltinArguments @ 0x00007fffffffc490) at builtins-api.cc:111:36
    frame #32: 0x000055555f8d0d58 electron`v8::internal::Builtin_Impl_HandleApiCall(args=BuiltinArguments @ 0x00007fffffffc4d0, isolate=0x00005555687a28c0) at builtins-api.cc:137:5
    frame #33: 0x000055555f8d09a9 electron`v8::internal::Builtin_HandleApiCall(args_length=6, args_object=0x00007fffffffc5d0, isolate=0x00005555687a28c0) at builtins-api.cc:129:1
    frame #34: 0x00005555605fbf39 electron`Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit + 57
    frame #35: 0x00005555605876a1 electron`Builtins_JSBuiltinsConstructStub + 97
    frame #36: 0x0000555560673fdb electron`Builtins_ConstructHandler + 187
    frame #37: 0x000055556058b9d8 electron`Builtins_InterpreterEntryTrampoline + 184
    frame #38: 0x00005555605b9b10 electron`Builtins_AsyncFunctionAwaitResolveClosure + 48
    frame #39: 0x00005555605db2f2 electron`Builtins_PromiseFulfillReactionJob + 50
    frame #40: 0x00005555605ab888 electron`Builtins_RunMicrotasks + 552
    frame #41: 0x0000555560589238 electron`Builtins_JSRunMicrotasksEntry + 120
    frame #42: 0x000055555f9f0200 electron`v8::internal::GeneratedCode<unsigned long, unsigned long, v8::internal::MicrotaskQueue*>::Call(this=<unavailable>, args=<unavailable>, args=<unavailable>) at simulator.h:142:12
    frame #43: 0x000055555f9eef4d electron`v8::internal::(anonymous namespace)::Invoke(isolate=0x00005555687a28c0, params=0x00007fffffffca18)::InvokeParams const&) at execution.cc:281:33
    frame #44: 0x000055555f9ef895 electron`v8::internal::(anonymous namespace)::InvokeWithTryCatch(isolate=0x00005555687a28c0, params=0x00007fffffffca18)::InvokeParams const&) at execution.cc:326:20
    frame #45: 0x000055555f9efa6e electron`v8::internal::Execution::TryRunMicrotasks(isolate=0x00005555687a28c0, microtask_queue=<unavailable>, exception_out=<unavailable>) at execution.cc:405:10
    frame #46: 0x000055555fa25acf electron`v8::internal::MicrotaskQueue::RunMicrotasks(this=0x0000555568435180, isolate=0x00005555687a28c0) at microtask-queue.cc:164:22
    frame #47: 0x000055555fa25839 electron`v8::internal::MicrotaskQueue::PerformCheckpoint(this=0x0000555568435180, v8_isolate=0x00005555687a28c0) at microtask-queue.cc:117:5
    frame #48: 0x000055555f862819 electron`v8::MicrotasksScope::PerformCheckpoint(v8_isolate=0x00005555687a28c0) at api.cc:9202:20
    frame #49: 0x000055555dc7a645 electron`electron::MicrotasksRunner::DidProcessTask(this=0x00005555682dbde0, pending_task=<unavailable>) at microtasks_runner.cc:18:3
    frame #50: 0x00005555627ca874 electron`base::sequence_manager::internal::SequenceManagerImpl::NotifyDidProcessTask(this=<unavailable>, executing_task=0x00007fffef864360, time_after_task=<unavailable>) at sequence_manager_impl.cc:867:16
    frame #51: 0x00005555627ca4ab electron`base::sequence_manager::internal::SequenceManagerImpl::DidRunTask(this=0x000055556803cde0) at sequence_manager_impl.cc:678:3
    frame #52: 0x00005555627e576e electron`base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(this=<unavailable>, continuation_lazy_now=0x00007fffffffce60, ran_task=0x00007fffffffceaf) at thread_controller_with_message_pump_impl.cc:378:37
    frame #53: 0x00005555627e5436 electron`base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork(this=0x00007fffef85d9e0) at thread_controller_with_message_pump_impl.cc:219:7
    frame #54: 0x00005555627560c7 electron`base::MessagePumpGlib::Run(this=0x00007ffff1e89f20, delegate=<unavailable>) at message_pump_glib.cc:441:48
    frame #55: 0x00005555627e5e31 electron`base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(this=0x00007fffef85d9e0, application_tasks_allowed=true, timeout=(delta_ = 9223372036854775807)) at thread_controller_with_message_pump_impl.cc:463:12
    frame #56: 0x00005555627944c0 electron`base::RunLoop::Run(this=0x00007fffffffd060) at run_loop.cc:156:14
    frame #57: 0x0000555560c83a78 electron`content::BrowserMainLoop::MainMessageLoopRun(this=<unavailable>) at browser_main_loop.cc:1535:12
    frame #58: 0x0000555560c838b8 electron`content::BrowserMainLoop::RunMainMessageLoopParts(this=0x00005555680e2360) at browser_main_loop.cc:1062:5
    frame #59: 0x0000555560c8babd electron`content::BrowserMainRunnerImpl::Run(this=<unavailable>) at browser_main_runner_impl.cc:150:15
    frame #60: 0x0000555560c80f42 electron`content::BrowserMain(parameters=<unavailable>) at browser_main.cc:47:28
    frame #61: 0x00005555609b97db electron`content::RunBrowserProcessMain(main_function_params=0x00007fffffffd2e0, delegate=<unavailable>) at content_main_runner_impl.cc:527:10
    frame #62: 0x00005555609ba399 electron`content::ContentMainRunnerImpl::RunServiceManager(this=0x00007fffef922160, main_params=<unavailable>, start_service_manager_only=<unavailable>) at content_main_runner_impl.cc:960:10
    frame #63: 0x00005555609ba0db electron`content::ContentMainRunnerImpl::Run(this=0x00007fffef922160, start_service_manager_only=false) at content_main_runner_impl.cc:868:12
    frame #64: 0x000055555f24461f electron`content::ContentServiceManagerMainDelegate::RunEmbedderProcess(this=0x00007fffffffd5c0) at content_service_manager_main_delegate.cc:52:32
    frame #65: 0x00005555645ce0f3 electron`service_manager::Main(params=<unavailable>) at main.cc:423:29
    frame #66: 0x000055555f2469be electron`content::ContentMain(params=0x00007fffffffd660) at content_main.cc:19:10
    frame #67: 0x000055555dac9ffa electron`main(argc=2, argv=0x00007fffffffd768) at electron_main.cc:189:10

Je pense que https://github.com/chromium/chromium/commit/182d586fee5b5f9053b5702fcfc847f18ea5ec79 résoudra ce problème et je vais essayer de rétroporter ce correctif sur Chrome 80
Edit : il y a un autre plantage après avoir appliqué ce correctif

$ lldb ./electron
(lldb) target create "./electron"
Current executable set to '/data/tmp/portage/dev-util/electron-8.2.3/image/usr/lib/electron-8/electron' (x86_64).
(lldb) r --ozone-platform=x11
Process 15986 launched: '/data/tmp/portage/dev-util/electron-8.2.3/image/usr/lib/electron-8/electron' (x86_64)
Process 15986 stopped and restarted: thread 1 received signal: SIGCHLD

Electron 8.2.3 - Build cross platform desktop apps with JavaScript, HTML, and CSS
Usage: electron [options] [path]

A path to an Electron app may be specified. It must be one of the following:
  - index.js file.
  - Folder containing a package.json file.
  - Folder containing an index.js file.
  - .html/.htm file.
  - http://, https://, or file:// URL.

Options:
  -i, --interactive     Open a REPL to the main process.
  -r, --require         Module to preload (option can be repeated).
  -v, --version         Print the version.
  -a, --abi             Print the Node ABI version.
Process 15986 stopped
* thread #1, name = 'electron', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
    frame #0: 0x00005555665a03f4 electron`views::DesktopNativeWidgetAura::HandleActivationChanged(this=0x00005555683a9840, active=true) at desktop_native_widget_aura.cc:417:25
   414            view_for_activation->GetWidget()->GetNativeView());
   415        // Refreshes the focus info to IMF in case that IMF cached the old info
   416        // about focused text input client when it was "inactive".
-> 417        GetInputMethod()->OnFocus();
   418      }
   419    } else {
   420      // TODO(nektar): We need to harmonize the firing of accessibility
(lldb) bt
* thread #1, name = 'electron', stop reason = signal SIGSEGV: invalid address (fault address: 0x0)
  * frame #0: 0x00005555665a03f4 electron`views::DesktopNativeWidgetAura::HandleActivationChanged(this=0x00005555683a9840, active=true) at desktop_native_widget_aura.cc:417:25
    frame #1: 0x00005555665b82f5 electron`views::DesktopWindowTreeHostPlatform::OnActivationChanged(this=0x000055556834c400, active=<unavailable>) at desktop_window_tree_host_platform.cc:688:32
    frame #2: 0x00005555665abbd2 electron`views::DesktopWindowTreeHostLinux::OnActivationChanged(this=0x000055556834c400, active=true) at desktop_window_tree_host_linux.cc:291:34
    frame #3: 0x00005555636f2301 electron`ui::X11Window::OnXWindowIsActiveChanged(this=<unavailable>, active=<unavailable>) at x11_window.cc:607:30
    frame #4: 0x000055556353e8c6 electron`ui::XWindow::AfterActivationStateChanged(this=0x0000555568789e28) at x11_window.cc:923:5
    frame #5: 0x000055556353fa94 electron`ui::XWindow::OnFocusEvent(this=0x0000555568789e28, focus_in=<unavailable>, mode=<unavailable>, detail=3) at x11_window.cc:1040:3
    frame #6: 0x000055556353fc3c electron`ui::XWindow::ProcessEvent(this=0x0000555568789e28, xev=0x00007fffffffccc0) at x11_window.cc:1145:7
    frame #7: 0x000055555e7a8b98 electron`ui::X11WindowOzone::DispatchXEvent(this=<unavailable>, xev=0x00007fffffffccc0) at x11_window_ozone.cc:66:12
    frame #8: 0x00005555635c8ad3 electron`ui::X11EventSourceDefault::DispatchXEventToXEventDispatchers(this=0x00005555683a5c40, xevent=0x00007fffffffccc0) at x11_event_source_default.cc:136:22
    frame #9: 0x00005555635c8772 electron`ui::X11EventSourceDefault::ProcessXEvent(this=0x00005555683a5c40, xevent=0x00007fffffffccc0) at x11_event_source_default.cc:90:5
    frame #10: 0x00005555635c226c electron`ui::X11EventSource::ExtractCookieDataDispatchEvent(this=0x00005555683a5cc8, xevent=0x00007fffffffccc0) at x11_event_source.cc:273:14
    frame #11: 0x00005555635c2211 electron`ui::X11EventSource::DispatchXEvents(this=0x00005555683a5cc8) at x11_event_source.cc:140:5
    frame #12: 0x00005555635c8c70 electron`ui::X11EventSourceDefault::OnFileCanReadWithoutBlocking(this=<unavailable>, fd=<unavailable>) at x11_event_source_default.cc:165:17
    frame #13: 0x0000555562755f92 electron`base::MessagePumpGlib::FdWatchController::NotifyCanRead(this=<unavailable>) at message_pump_glib.cc:333:13
    frame #14: 0x000055556275634f electron`base::MessagePumpGlib::HandleFdWatchDispatch(this=<unavailable>, controller=0x00005555683a5d50) at message_pump_glib.cc:502:17
    frame #15: 0x00005555627564bd electron`base::(anonymous namespace)::FdWatchSourceDispatch(gsource=<unavailable>, unused_func=<unavailable>, unused_data=<unavailable>)(void*), void*) at message_pump_glib.cc:194:17
    frame #16: 0x00007ffff7e4d585

Est-ce que quelqu'un sait comment compiler des électrons pour prendre en charge les natifs de Wayland ? (étape par étape) Et exécutez des applications électroniques dans wayland (weston, etc.).
Il a fallu des heures pour compiler l'électron et j'échoue plusieurs fois.

@caijw , vous n'êtes peut-être pas un utilisateur arch, mais vous pouvez consulter le PKGBUILD pour l'ozone électronique pour obtenir des indices sur sa construction. D'après ce que j'ai compris, c'est encore très expérimental.

vscode ignorera l'électron 8 et utilisera l'électron 9 dans la prochaine version, qui est basée sur le chrome 83 et fonctionne de manière très stable avec ozone-wayland et ozone-x11. Mais l'électron 9 a encore besoin de quelques patchs pour se compiler avec l'ozone

Les drapeaux d'ozone intégrés au chrome sont en route https://bugs.chromium.org/p/chromium/issues/detail?id=1085700

Voici ma tentative WIP de rebaser ma branche d'électron wayland sur v9.xx : https://github.com/electron/electron/compare/9-xy...hedgepigdaniel :arch-9?expand=1

Actuellement, il est assez bon pour exécuter electron-quick-start , mais pas grand-chose d'autre. Le plus souvent, le symptôme est que les fenêtres n'apparaissent pas.

J'ai également mis à jour https://aur.archlinux.org/packages/electron-ozone/

Je serais heureux de recevoir de l'aide si quelqu'un peut déterminer ce qui ne va pas - n'hésitez pas à faire un PR à ma fourchette. N'hésitez pas non plus à prendre mes patchs et à les transformer en quelque chose de poli/fusionnable - je n'ai pas vraiment le temps de tout faire moi-même.

Merci pour vos patchs @hedgepigdaniel.
Je l'ai compilé et j'ai trouvé un problème :

  1. Impossible de fermer la fenêtre (qui est mentionnée dans AUR)
  2. exécutez electron-9 --ozone-platform=wayland mais la fenêtre n'apparaît pas. electron-9 --ozone-platform=x11 fonctionne sans problème
  3. vscode a besoin de la variable d'environnement ELECTRON_RUN_AS_NODE=1 pour se lancer, mais ELECTRON_RUN_AS_NODE=1 electron-9 --ozone-platform=x11 a une erreur : electron-9: bad option: --ozone-platform=x11
  4. Le glisser-déposer ne fonctionne pas (par exemple : explorateur de fichiers ou onglets dans vscode)

图片

J'ai fait d'autres tests en utilisant les packages arch,

Cela fonctionne, sans aucune fenêtre vide ou quoi que ce soit. Le principal problème que j'ai trouvé est que si vous faites défiler à l'aide de la molette de la souris dans les menus de l'application, toutes les fenêtres disparaissent. Je pense que ce bug a été corrigé dans les versions de chrome plus récentes.

@hedgepigdaniel Je pense que vos correctifs sur Electron sont tout à fait

Quelqu'un a-t-il des fichiers de construction Ubuntu ? Je suis prêt à aider à corriger les bugs de Wayland :)
Est-ce que quelqu'un sait d'ailleurs. quel composant a cassé le support du glisser-déposer ? Chrome, ozone, électron ou vscode ?

@hedgepigdaniel quel est le problème avec la fermeture des fenêtres et des menus ? tout ce que je pourrais commencer si je voulais travailler sur un correctif?

@ninja- Le glisser-déposer ne fonctionne pas sur Chromium sous Linux, donc je ne pense pas que ce soit un bogue électronique ou vscode.

@ninja- Le glisser-déposer ne fonctionne pas sur Chromium sous Linux, donc je ne pense pas que ce soit un bogue électronique ou vscode.

@WhyNotHugo Quelle version (ou head commit) de Chromium Ozone/Wayland utilisez-vous ? J'ai une nouvelle version du tronc et DnD fonctionne assez bien.

J'utilise Chromium 85.0.4183.83, mais pas la version Ozone. Je n'ai pas les ressources pour construire la version Ozone à partir des sources.

@WhyNotHugo, nous avons de bonnes nouvelles pour vous :) Ozone est désormais construit par défaut pour Chromium (le patch a fusionné pour la 3ème fois aujourd'hui 🤣 ). Bientôt, il devrait également faire partie des versions de dev chrome.

https://chromium-review.googlesource.com/c/chromium/src/+/2382834

Cependant, le patch peut être rétabli à nouveau. nous devons attendre quelques jours jusqu'à ce que cela colle.

J'ai essayé de construire du chrome avec de l'ozone à partir de zéro il y a un mois et c'était un gâchis total :/ je n'ai pas pu le compiler

@nickdiego le problème de fermeture de la fenêtre a-

@ninja- Je suis très surpris et désolé en même temps que vous n'ayez pas pu compiler l'ozone. Cependant, nous, les développeurs, le faisons tous les jours sans aucun problème.

Quel genre de directives avez-vous utilisé? Avez-vous compilé l'ozone depuis l'amont ? Ou avez-vous utilisé des recettes tierces ? Veuillez noter que nous ne sommes pas responsables de ceux-ci et qu'ils font l'objet de la maintenance de projets en aval.

J'utilise Chromium 85.0.4183.83, mais pas la version Ozone. Je n'ai pas les ressources pour construire la version Ozone à partir des sources.

Je t'ai eu. Donc Chromium X11/XWayland, dans ce cas. J'ai également rencontré des problèmes avec XWayland sous Sway :( par exemple : onglet glissant totalement cassé, etc.

@nickdiego le problème de fermeture de la fenêtre a-

@ninja- Lequel ? L'avez-vous signalé sur crbug.com ? Nous avons récemment corrigé de nombreux bugs, dont plusieurs liés aux fenêtres contextuelles.

@nickdiego Je n'ai pas vécu ça, juste en lisant les commentaires de l'AUR, j'ai dit que c'était un bloqueur majeur

cela a fonctionné comme un charme ici. Electron wayland native m'apporte beaucoup de confort, merci (AUR + recompiler vscodium)

Très excité ici en tant que mainteneur de l'application Electron.

Cela signifie-t-il qu'une future version électronique prendra en charge Wayland de manière native ou devrai-je faire quelque chose de spécial pour mon application ?

Vous êtes tous incroyables.

J'ai récemment testé sur Wayland avec Gnome mais il n'y avait pas de cadre autour de la fenêtre.

@MyIsaak avez-vous utilisé votre précédent

@msisov Je viens de reconstruire l'ensemble du projet et j'ai toujours le même résultat. Dois-je modifier les paramètres de chrome avant la construction, car je ne l'ai fait qu'après la construction ?

Par défaut, Chrome essaiera de réutiliser votre répertoire de données utilisateur existant.

Essayez d'utiliser quelque chose de vide. Par exemple. - —user-data-dir=/tmp/blah

@msisov Ok, cela a fonctionné en passant à la version sans cadre/sans bordure, à l'exception de la fermeture de la fenêtre (sauf si je fais ALT + F4). VSCode a également fonctionné de la même manière en définissant "window.titleBarStyle": "custom" dans settings.json . Merci pour l'aide!

J'ai essayé le chrome principal avec le support de l'ozone et son exécution sur le shell gnome entraîne une utilisation permanente du processeur à 100% et le chrome ne démarre pas :(
Cela commence très bien sur weston :(

Système d'exploitation : Ubuntu 20.04

@ninja- , veuillez exécuter avec WAYLAND_DEBUG=1 et collez le journal ici. Peut-être lié à https://crbug.com/1123382 . Le correctif en route.

@msisov oui c'est ça ! Pourriez-vous d'ailleurs. gérer correctement le cas lorsque gnome shell déconnecte votre connexion wayland ? Parce qu'actuellement, il continue de tourner eventfd avec 100% cpu :/

[1894729.120]  -> [email protected]_registry(new id wl_registry@2)
[1894738.037]  -> [email protected](new id wl_callback@3)
[1894738.116] [email protected]_id(3)
[1894738.146] [email protected](1, "wl_drm", 2)
[1894738.160]  -> [email protected](1, "wl_drm", 2, new id [unknown]@4)
[1894738.181]  -> [email protected](new id wl_callback@5)
[1894738.186] [email protected](2, "wl_compositor", 4)
[1894738.195]  -> [email protected](2, "wl_compositor", 4, new id [unknown]@6)
[1894738.212] [email protected](3, "wl_shm", 1)
[1894738.218]  -> [email protected](3, "wl_shm", 1, new id [unknown]@7)
[1894738.231] [email protected](4, "wl_output", 2)
[1894738.242]  -> [email protected](4, "wl_output", 2, new id [unknown]@8)
[1894738.252] [email protected](5, "wl_output", 2)
[1894738.258]  -> [email protected](5, "wl_output", 2, new id [unknown]@9)
[1894738.275] [email protected](6, "zxdg_output_manager_v1", 3)
[1894738.282] [email protected](7, "wl_data_device_manager", 3)
[1894738.293]  -> [email protected](7, "wl_data_device_manager", 3, new id [unknown]@10)
[1894738.308] [email protected](8, "zwp_primary_selection_device_manager_v1", 1)
[1894738.319] [email protected](9, "gtk_primary_selection_device_manager", 1)
[1894738.328]  -> [email protected](9, "gtk_primary_selection_device_manager", 1, new id [unknown]@11)
[1894738.349] [email protected](10, "wl_subcompositor", 1)
[1894738.358]  -> [email protected](10, "wl_subcompositor", 1, new id [unknown]@12)
[1894738.370] [email protected](11, "xdg_wm_base", 3)
[1894738.382]  -> [email protected](11, "xdg_wm_base", 1, new id [unknown]@13)
[1894738.396] [email protected](12, "zxdg_shell_v6", 1)
[1894738.406]  -> [email protected](12, "zxdg_shell_v6", 1, new id [unknown]@14)
[1894738.418] [email protected](13, "wl_shell", 1)
[1894738.429] [email protected](14, "gtk_shell1", 3)
[1894738.438] [email protected](15, "wp_viewporter", 1)
[1894738.447] [email protected](16, "zwp_pointer_gestures_v1", 1)
[1894738.457] [email protected](17, "zwp_tablet_manager_v2", 1)
[1894738.465] [email protected](18, "wl_seat", 5)
[1894738.476]  -> [email protected](18, "wl_seat", 4, new id [unknown]@15)
[1894738.491]  -> [email protected]_data_device(new id wl_data_device<strong i="7">@16</strong>, wl_seat@15)
[1894738.510] [email protected](19, "zwp_relative_pointer_manager_v1", 1)
[1894738.520] [email protected](20, "zwp_pointer_constraints_v1", 1)
[1894738.531] [email protected](21, "zxdg_exporter_v1", 1)
[1894738.539] [email protected](22, "zxdg_importer_v1", 1)
[1894738.548] [email protected](23, "zwp_linux_dmabuf_v1", 3)
[1894738.559]  -> [email protected](23, "zwp_linux_dmabuf_v1", 3, new id [unknown]@17)
[1894738.573]  -> [email protected](new id wl_callback@18)
[1894738.579] [email protected](24, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[1894738.593] [email protected](25, "zwp_text_input_manager_v3", 1)
[1894738.604] [email protected](26, "gtk_text_input_manager", 1)
[1894738.618] [email protected](152130)
[1894738.728] [email protected]_id(5)
[1894738.732] [email protected]_id(18)
[1894738.737] [email protected]("/dev/dri/card0")
[1894738.903]  -> [email protected](4)
[1894738.908]  -> [email protected](new id wl_callback@3)
[1894738.914] [email protected](808669761)
[1894738.920] [email protected](808669784)
[1894738.925] [email protected](808665665)
[1894738.930] [email protected](808665688)
[1894738.932] [email protected](875713089)
[1894738.936] [email protected](875713112)
[1894738.940] [email protected](909199186)
[1894738.944] [email protected](961959257)
[1894738.948] [email protected](825316697)
[1894738.952] [email protected](842093913)
[1894738.955] [email protected](909202777)
[1894738.961] [email protected](875713881)
[1894738.965] [email protected](842094158)
[1894738.970] [email protected](909203022)
[1894738.976] [email protected](1448695129)
[1894738.981] [email protected](1)
[1894738.985] [email protected](152130)
[1894738.989] [email protected](1920, 0, 530, 300, 0, "DEL", "DELL P2419H", 0)
[1894739.009] [email protected](3, 1920, 1080, 60000)
[1894739.020] [email protected](1)
[1894739.024] [email protected]()
[1894739.028] [email protected](0, 0, 530, 300, 0, "DEL", "DELL P2419H", 0)
[1894739.046] [email protected](3, 1920, 1080, 60000)
[1894739.057] [email protected](1)
[1894739.060] [email protected]()
[1894739.064] [email protected](3)
[1894739.069]  -> [email protected]_pointer(new id wl_pointer@5)
[1894739.076]  -> [email protected]_surface(new id wl_surface@19)
[1894739.081]  -> [email protected]_keyboard(new id wl_keyboard@20)
[1894739.088] [email protected]("seat0")
[1894739.092] [email protected](875713089)
[1894739.096] [email protected](875713089, 16777215, 4294967295)
[1894739.107] [email protected](875713112)
[1894739.114] [email protected](875713112, 16777215, 4294967295)
[1894739.120] [email protected](808669761)
[1894739.124] [email protected](808669761, 16777215, 4294967295)
[1894739.134] [email protected](909199186)
[1894739.138] [email protected](909199186, 16777215, 4294967295)
[1894739.150] [email protected](152130)
[1894739.345] [email protected]_id(3)
[1894739.349] [email protected]()
[1894739.354] [email protected](152130)
[1894739.357] [email protected](1, fd 32, 54533)
[1894740.677] [email protected]_info(33, 500)
[1894773.934]  -> [email protected]_registry(new id wl_registry@2)
[1894773.945]  -> [email protected](new id wl_callback@3)
[1894773.990] [email protected]_id(3)
[1894773.994] [email protected](1, "wl_drm", 2)
[1894774.003] [email protected](2, "wl_compositor", 4)
[1894774.011]  -> [email protected](2, "wl_compositor", 3, new id [unknown]@4)
[1894774.022] [email protected](3, "wl_shm", 1)
[1894774.030]  -> [email protected](3, "wl_shm", 1, new id [unknown]@5)
[1894774.077]  -> [email protected]_pool(new id wl_shm_pool<strong i="8">@6</strong>, fd 38, 2304)
[1894774.189]  -> [email protected](6912)
[1894774.231]  -> [email protected](16128)
[1894774.296]  -> [email protected](34560)
[1894774.476]  -> [email protected](71424)
[1894774.738]  -> [email protected](145152)
[1894775.331]  -> [email protected](292608)
[1894776.011]  -> [email protected](587520)
[1894777.122]  -> [email protected](1177344)
[1894782.938] [email protected](4, "wl_output", 2)
[1894782.947]  -> [email protected](4, "wl_output", 2, new id [unknown]@7)
[1894782.983]  -> [email protected](new id wl_callback@8)
[1894782.988] [email protected](5, "wl_output", 2)
[1894782.995]  -> [email protected](5, "wl_output", 2, new id [unknown]@9)
[1894783.012]  -> [email protected](new id wl_callback@10)
[1894783.017] [email protected](6, "zxdg_output_manager_v1", 3)
[1894783.025]  -> [email protected](6, "zxdg_output_manager_v1", 3, new id [unknown]@11)
[1894783.041]  -> [email protected]_xdg_output(new id zxdg_output_v1<strong i="9">@12</strong>, wl_output@7)
[1894783.046]  -> [email protected]_xdg_output(new id zxdg_output_v1<strong i="10">@13</strong>, wl_output@9)
[1894783.055]  -> [email protected](new id wl_callback@14)
[1894783.061] [email protected](7, "wl_data_device_manager", 3)
[1894783.069]  -> [email protected](7, "wl_data_device_manager", 3, new id [unknown]@15)
[1894783.080] [email protected](8, "zwp_primary_selection_device_manager_v1", 1)
[1894783.088] [email protected](9, "gtk_primary_selection_device_manager", 1)
[1894783.098]  -> [email protected](9, "gtk_primary_selection_device_manager", 1, new id [unknown]@16)
[1894783.108] [email protected](10, "wl_subcompositor", 1)
[1894783.115]  -> [email protected](10, "wl_subcompositor", 1, new id [unknown]@17)
[1894783.131] [email protected](11, "xdg_wm_base", 3)
[1894783.138] [email protected](12, "zxdg_shell_v6", 1)
[1894783.144] [email protected](13, "wl_shell", 1)
[1894783.152] [email protected](14, "gtk_shell1", 3)
[1894783.167]  -> [email protected](14, "gtk_shell1", 3, new id [unknown]@18)
[1894783.188] [email protected](15, "wp_viewporter", 1)
[1894783.197] [email protected](16, "zwp_pointer_gestures_v1", 1)
[1894783.205]  -> [email protected](16, "zwp_pointer_gestures_v1", 1, new id [unknown]@19)
[1894783.223] [email protected](17, "zwp_tablet_manager_v2", 1)
[1894783.230]  -> [email protected](17, "zwp_tablet_manager_v2", 1, new id [unknown]@20)
[1894783.241] [email protected](18, "wl_seat", 5)
[1894783.248]  -> [email protected](18, "wl_seat", 5, new id [unknown]@21)
[1894784.921]  -> [email protected]_surface(new id wl_surface@22)
[1894784.934]  -> [email protected]_device(new id gtk_primary_selection_device<strong i="11">@23</strong>, wl_seat@21)
[1894784.943]  -> [email protected]_data_device(new id wl_data_device<strong i="12">@24</strong>, wl_seat@21)
[1894785.027]  -> [email protected]_surface(new id wl_surface@25)
[1894785.031]  -> [email protected]_tablet_seat(new id zwp_tablet_seat_v2<strong i="13">@26</strong>, wl_seat@21)
[1894785.040]  -> [email protected](new id wl_callback@27)
[1894785.045] [email protected](19, "zwp_relative_pointer_manager_v1", 1)
[1894785.053] [email protected](20, "zwp_pointer_constraints_v1", 1)
[1894785.060] [email protected](21, "zxdg_exporter_v1", 1)
[1894785.068]  -> [email protected](21, "zxdg_exporter_v1", 1, new id [unknown]@28)
[1894785.080] [email protected](22, "zxdg_importer_v1", 1)
[1894785.089]  -> [email protected](22, "zxdg_importer_v1", 1, new id [unknown]@29)
[1894785.101] [email protected](23, "zwp_linux_dmabuf_v1", 3)
[1894785.110] [email protected](24, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[1894785.117]  -> [email protected](24, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1, new id [unknown]@30)
[1894785.129] [email protected](25, "zwp_text_input_manager_v3", 1)
[1894785.136] [email protected](26, "gtk_text_input_manager", 1)
[1894785.145] [email protected](152130)
[1894785.277] [email protected]_id(8)
[1894785.281] [email protected]_id(10)
[1894785.283] [email protected]_id(14)
[1894785.287] [email protected]_id(27)
[1894785.293] [email protected](0)
[1894785.296] [email protected](1)
[1894785.301] [email protected](1920, 0, 530, 300, 0, "", "", 0)
[1894785.321] [email protected](3, 1920, 1080, 60000)
[1894785.327] [email protected](1)
[1894785.330] [email protected]()
[1894785.336] [email protected](152130)
[1894785.339] [email protected](0, 0, 530, 300, 0, "", "", 0)
[1894785.357] [email protected](3, 1920, 1080, 60000)
[1894785.362] [email protected](1)
[1894785.365] [email protected]()
[1894785.369] [email protected](152130)
[1894785.372] [email protected]_position(1920, 0)
[1894785.375] [email protected]_size(1920, 1080)
[1894785.379] [email protected]()
[1894785.383] [email protected]("")
[1894785.386] [email protected]()
[1894785.390] [email protected]_position(0, 0)
[1894785.395] [email protected]_size(1920, 1080)
[1894785.400] [email protected]("")
[1894785.403] [email protected](""")
[1894785.406] [email protected]()
[1894785.410] [email protected](152130)
[1894785.414] [email protected](0)
[1894785.421] [email protected](3)
[1894785.425]  -> [email protected]_pointer(new id wl_pointer@14)
[1894785.437]  -> [email protected]_swipe_gesture(new id zwp_pointer_gesture_swipe_v1<strong i="14">@10</strong>, wl_pointer@14)
[1894785.445]  -> [email protected]_pinch_gesture(new id zwp_pointer_gesture_pinch_v1<strong i="15">@8</strong>, wl_pointer@14)
[1894785.452]  -> [email protected]_keyboard(new id wl_keyboard@3)
[1894785.460] [email protected]("seat0")
[1894785.463] [email protected](152130)
[1894785.467]  -> [email protected](11, "xdg_wm_base", 1, new id [unknown]@27)
[1894840.113]  -> [email protected]_surface(new id wl_surface@31)
[1896097.874]  -> [email protected]_registry(new id wl_registry@2)
[1896097.897]  -> [email protected](new id wl_callback@3)
[1896097.947] [email protected]_id(3)
[1896097.962] [email protected](1, "wl_drm", 2)
[1896097.968]  -> [email protected](1, "wl_drm", 2, new id [unknown]@4)
[1896097.978] [email protected](2, "wl_compositor", 4)
[1896097.985] [email protected](3, "wl_shm", 1)
[1896097.993] [email protected](4, "wl_output", 2)
[1896098.000] [email protected](5, "wl_output", 2)
[1896098.006] [email protected](6, "zxdg_output_manager_v1", 3)
[1896098.015] [email protected](7, "wl_data_device_manager", 3)
[1896098.025] [email protected](8, "zwp_primary_selection_device_manager_v1", 1)
[1896098.036] [email protected](9, "gtk_primary_selection_device_manager", 1)
[1896098.050] [email protected](10, "wl_subcompositor", 1)
[1896098.059] [email protected](11, "xdg_wm_base", 3)
[1896098.068] [email protected](12, "zxdg_shell_v6", 1)
[1896098.077] [email protected](13, "wl_shell", 1)
[1896098.091] [email protected](14, "gtk_shell1", 3)
[1896098.099] [email protected](15, "wp_viewporter", 1)
[1896098.108] [email protected](16, "zwp_pointer_gestures_v1", 1)
[1896098.116] [email protected](17, "zwp_tablet_manager_v2", 1)
[1896098.127] [email protected](18, "wl_seat", 5)
[1896098.133] [email protected](19, "zwp_relative_pointer_manager_v1", 1)
[1896098.138] [email protected](20, "zwp_pointer_constraints_v1", 1)
[1896098.150] [email protected](21, "zxdg_exporter_v1", 1)
[1896098.158] [email protected](22, "zxdg_importer_v1", 1)
[1896098.166] [email protected](23, "zwp_linux_dmabuf_v1", 3)
[1896098.173]  -> [email protected](23, "zwp_linux_dmabuf_v1", 3, new id [unknown]@5)
[1896098.184] [email protected](24, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[1896098.193] [email protected](25, "zwp_text_input_manager_v3", 1)
[1896098.206] [email protected](26, "gtk_text_input_manager", 1)
[1896098.215] [email protected](152134)
[1896098.219]  -> [email protected](new id wl_callback@3)
[1896098.293] [email protected]_id(3)
[1896098.296] [email protected]("/dev/dri/card0")
[1896098.425]  -> [email protected](4)
[1896098.429] [email protected](808669761)
[1896098.435] [email protected](808669784)
[1896098.439] [email protected](808665665)
[1896098.441] [email protected](808665688)
[1896098.444] [email protected](875713089)
[1896098.447] [email protected](875713112)
[1896098.450] [email protected](909199186)
[1896098.454] [email protected](961959257)
[1896098.459] [email protected](825316697)
[1896098.464] [email protected](842093913)
[1896098.467] [email protected](909202777)
[1896098.470] [email protected](875713881)
[1896098.473] [email protected](842094158)
[1896098.476] [email protected](909203022)
[1896098.479] [email protected](1448695129)
[1896098.483] [email protected](1)
[1896098.486] [email protected](875713089)
[1896098.492] [email protected](875713089, 16777215, 4294967295)
[1896098.500] [email protected](875713112)
[1896098.512] [email protected](875713112, 16777215, 4294967295)
[1896098.525] [email protected](808669761)
[1896098.529] [email protected](808669761, 16777215, 4294967295)
[1896098.539] [email protected](909199186)
[1896098.544] [email protected](909199186, 16777215, 4294967295)
[1896098.554] [email protected](152134)
[1896098.560]  -> [email protected](new id wl_callback@3)
[1896098.585] [email protected]_id(3)
[1896098.588] [email protected]()
[1896098.590] [email protected](152134)
[1739236:1739236:0911/113806.380850:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.
[1899569.137]  -> [email protected]_surface(new id wl_surface@3)
[1899569.182]  -> [email protected]_region(new id wl_region@18)
[1899569.186]  -> [email protected](0, 0, 945, 640)
[1899569.197]  -> [email protected]_opaque_region(wl_region@18)
[1899569.201]  -> [email protected]()
[1899895.275]  -> [email protected]_xdg_surface(new id xdg_surface<strong i="16">@21</strong>, wl_surface@3)
[1899895.294]  -> [email protected]_toplevel(new id xdg_toplevel@22)
[1899895.299]  -> [email protected]()
[1899895.302]  -> [email protected]_app_id("Chromium-browser")
[1899895.310]  -> [email protected]_fullscreen()
[1899895.312]  -> [email protected]_maximized()
[1900760.265] [email protected](1, fd 74, 54533)
[1900762.215] [email protected]_info(33, 500)
[1900762.250] [email protected]_id(18)
[1900762.255] [email protected](0, 0, array)
[1900762.267]  -> [email protected]_window_geometry(0, 0, 945, 640)
[1900762.279] [email protected](6108)
[1900762.284]  -> [email protected]_configure(6108)
[1902493.196]  -> [email protected]_params(new id zwp_linux_buffer_params_v1@18)
[1902493.215]  -> [email protected](fd 177, 0, 0, 4096, 16777215, 4294967295)
[1902493.226]  -> [email protected]_immed(new id wl_buffer<strong i="17">@23</strong>, 945, 640, 875708993, 0)
[1902493.276]  -> [email protected]_params(new id zwp_linux_buffer_params_v1@24)
[1902493.280]  -> [email protected](fd 170, 0, 0, 4096, 16777215, 4294967295)
[1902493.290]  -> [email protected]_immed(new id wl_buffer<strong i="18">@25</strong>, 945, 640, 875708993, 0)
[1902493.304]  -> [email protected]_params(new id zwp_linux_buffer_params_v1@26)
[1902493.308]  -> [email protected](fd 171, 0, 0, 4096, 16777215, 4294967295)
[1902493.317]  -> [email protected]_immed(new id wl_buffer<strong i="19">@27</strong>, 945, 640, 875708993, 0)
[1902493.564] [email protected](zwp_linux_buffer_params_v1<strong i="20">@18</strong>, 7, "failed to import supplied dmabufs: Unsupported buffer format 875708993")

@ninja- , ouais. Je vais.

@ninja- , Si vous compilez vous-même Chromium, ce correctif permet d'arrêter le navigateur en douceur + permet d'imprimer le message d'erreur envoyé par libwayland-client et ce correctif résout le problème du tampon non pris en charge. Vous pouvez les appliquer et vérifier que le problème est résolu.

Échelle fractionnelle fonctionnant comme un charme dans Fedora 32 avec GNOME

Chrome 84 vs Chrome Dev 87 (wayland activé)
chrome

Ce sera un grand pas pour les applications électroniques et les utilisateurs de wayland

eh bien, je dois admettre que cela fonctionne en partie et dépend de la valeur que passe Wayland. Le problème est que wl_output ne prend pas en charge la mise à l'échelle fractionnaire. Et s'il arrondit 150% à 200%, alors le chrome obtiendra la valeur "correcte".

Sinon, xdg_output doit être utilisé (Chromium calculera la mise à l'échelle à partir de la taille physique et logique d'un affichage). Et ce travail est en cours de développement en ce moment.

eh bien, je dois admettre que cela fonctionne en partie et dépend de la valeur que passe Wayland. Le problème est que wl_output ne prend pas en charge la mise à l'échelle fractionnaire. Et s'il arrondit 150% à 200%, alors le chrome obtiendra la valeur "correcte".

Je vois, c'est logique, j'utilisais 150% pour le test

@msisov, votre correctif a finalement atterri dans une version hebdomadaire de développement instantané - fonctionne très bien ! Merci!

Auparavant, Chrome gelait sur mon PC toutes les deux secondes - je ne sais vraiment pas s'il s'agit d'un bug du noyau, amdgpu, chrome, xwayland ou gnome-shell :/
J'espère que ce sera mieux maintenant avec du pur Wayland.

@refi64 merci beaucoup d'avoir soulevé cela ! intéressant

Comme cela n'est plus bloqué par l'amont, quel est le plan pour l'avenir ? Chrome 87 (maintenant en version bêta) est livré avec wayland en tant que plate-forme d'ozone qui peut être activée à l'aide de google-chrome-beta --enable-features=UseOzonePlatform --ozone-platform=wayland du PPA officiel de Chrome. Actuellement, electron@beta mais la version de Chrome ne prend pas en charge wayland dans le binaire préconstruit.

Il semble déjà y avoir des efforts de @vially pour refactoriser du code afin de permettre la future prise en charge de wayland dans les builds. Y a-t-il d'autres obstacles majeurs?

TLDR

La dépendance Chromium d'Electron pointe actuellement vers une version qui plante au démarrage sur Wayland ( chromium#1128997 ).

Une fois que ce n'est plus le cas (par exemple, après la ou les deux prochaines bosses de chrome ), je prévois de m'ajuster et d'essayer de remonter les correctifs de @hedgepigdaniel afin d'activer la prise en charge de Wayland dans les versions officielles d'Electron.

Détails techniques

Patchs pré-chrome 87

L'un des défis liés à la mise en amont des correctifs Wayland actuels est dû au récent passage de Chromium d'Electron à la version 87, qui permet à la fois les chemins de code Ozone et non-Ozone dans la même version ( chromium#1085700 ).

Ces correctifs Electron Wayland ont été écrits en supposant qu'une version est soit une version X11 ( USE_X11 ) soit une version Ozone ( USE_OZONE ), ce qui était vrai jusqu'à la version 87, mais n'est plus le cas après cela.

Cela signifie que les correctifs doivent être ajustés pour tenir compte du fait que maintenant USE_X11 et USE_OZONE peuvent être tous les deux vrais en même temps.

Patchs post-chrome 87

Mon plan était de reprendre les patchs existants, de les ajuster en empruntant les motifs à chromium#1085700 (ce que j'ai fait dans cette branche ) puis de les remonter vers Electron.

Cependant, en raison d'un bug qui a été corrigé entre-temps dans Chromium ( chromium#1128997 ) mais n'a pas encore été electron --enable-features=UseOzonePlatform --ozone-platform=wayland plante avec la même erreur que dans le rapport de bogue Chromium).

L'exécution de la même version Electron avec Ozone/X11 ( electron --enable-features=UseOzonePlatform --ozone-platform=x11 ) semble fonctionner correctement avec ces correctifs, ce qui est un bon signe, je suppose.

Donc pour le moment, j'attends juste quelques bosses de chrome supplémentaires dans Electron qui devraient résoudre le problème actuel , mais qui en découvriront très probablement un autre .

Et je sais qu'il y en aura un autre puisque j'ai rétroporté manuellement chromium#2434928 et que la compilation ne démarre toujours pas, mais cette fois avec un stacktrace différent. Je n'ai actuellement aucune idée de pourquoi cela se produit ou de comment résoudre ce problème, mais j'espère en quelque sorte que ce sera automatiquement corrigé par le(s) prochain(s) bump(s) Chromium.

Cela fait partie du stacktrace si quelqu'un est intéressé à y jeter un œil. Cela semble suggérer que cela peut également être lié à l'initialisation du tampon (peut-être chromium # 2343545 ?), mais je ne peux pas le dire avec certitude. Peut-être que ça sonne une cloche pour @msisov ou @nickdiego.


Trace de la pile

[19947:1003/140001.730007:INFO:content_main_runner_impl.cc(976)] Chrome is running in full browser mode.
[4248247.318]  -> [email protected]_registry(new id wl_registry@2)
[4248247.345]  -> [email protected](new id wl_callback@3)
[4248247.458] [email protected]_id(3)
[4248247.470] [email protected](1, "wl_shm", 1)
[4248247.481]  -> [email protected](1, "wl_shm", 1, new id [unknown]@4)
[4248247.503] [email protected](2, "wl_drm", 2)
[4248247.513]  -> [email protected](2, "wl_drm", 2, new id [unknown]@5)
[4248247.528]  -> [email protected](new id wl_callback@6)
[4248247.534] [email protected](3, "zwp_linux_dmabuf_v1", 3)
[4248247.544]  -> [email protected](3, "zwp_linux_dmabuf_v1", 3, new id [unknown]@7)
[4248247.558]  -> [email protected](new id wl_callback@8)
[4248247.564] [email protected](4, "wl_compositor", 4)
[4248247.574]  -> [email protected](4, "wl_compositor", 4, new id [unknown]@9)
[4248247.587] [email protected](5, "wl_subcompositor", 1)
[4248247.597]  -> [email protected](5, "wl_subcompositor", 1, new id [unknown]@10)
[4248247.610] [email protected](6, "wl_data_device_manager", 3)
[4248247.620]  -> [email protected](6, "wl_data_device_manager", 3, new id [unknown]@11)
[4248247.634] [email protected](7, "zwlr_gamma_control_manager_v1", 1)
[4248247.644] [email protected](8, "gtk_primary_selection_device_manager", 1)
[4248247.654]  -> [email protected](8, "gtk_primary_selection_device_manager", 1, new id [unknown]@12)
[4248247.667] [email protected](9, "zxdg_output_manager_v1", 3)
[4248247.677] [email protected](10, "org_kde_kwin_idle", 1)
[4248247.687] [email protected](11, "zwp_idle_inhibit_manager_v1", 1)
[4248247.697] [email protected](12, "zwlr_layer_shell_v1", 2)
[4248247.706] [email protected](13, "xdg_wm_base", 2)
[4248247.716]  -> [email protected](13, "xdg_wm_base", 1, new id [unknown]@13)
[4248247.730] [email protected](14, "zwp_tablet_manager_v2", 1)
[4248247.740] [email protected](15, "org_kde_kwin_server_decoration_manager", 1)
[4248247.749] [email protected](16, "zxdg_decoration_manager_v1", 1)
[4248247.762]  -> [email protected](16, "zxdg_decoration_manager_v1", 1, new id [unknown]@14)
[4248247.775] [email protected](17, "zwp_relative_pointer_manager_v1", 1)
[4248247.785] [email protected](18, "zwp_pointer_constraints_v1", 1)
[4248247.795] [email protected](19, "wp_presentation", 1)
[4248247.805]  -> [email protected](19, "wp_presentation", 1, new id [unknown]@15)
[4248247.818] [email protected](20, "zwlr_output_manager_v1", 1)
[4248247.828] [email protected](21, "zwlr_output_power_manager_v1", 1)
[4248247.838] [email protected](22, "zwp_input_method_manager_v2", 1)
[4248247.847] [email protected](23, "zwp_text_input_manager_v3", 1)
[4248247.858] [email protected](24, "zwlr_foreign_toplevel_manager_v1", 2)
[4248247.867] [email protected](25, "zwlr_export_dmabuf_manager_v1", 1)
[4248247.877] [email protected](26, "zwlr_screencopy_manager_v1", 3)
[4248247.887] [email protected](27, "zwlr_data_control_manager_v1", 2)
[4248247.896] [email protected](28, "zwp_primary_selection_device_manager_v1", 1)
[4248247.906] [email protected](29, "wp_viewporter", 1)
[4248247.916] [email protected](30, "zwp_virtual_keyboard_manager_v1", 1)
[4248247.925] [email protected](31, "zwlr_virtual_pointer_manager_v1", 2)
[4248247.935] [email protected](32, "zwlr_input_inhibit_manager_v1", 1)
[4248247.945] [email protected](33, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[4248247.954] [email protected](34, "wl_seat", 7)
[4248247.964]  -> [email protected](34, "wl_seat", 5, new id [unknown]@16)
[4248247.978]  -> [email protected]_data_device(new id wl_data_device<strong i="23">@17</strong>, wl_seat@16)
[4248247.989] [email protected](35, "zwp_pointer_gestures_v1", 1)
[4248247.999] [email protected](39, "wl_output", 3)
[4248248.008]  -> [email protected](39, "wl_output", 3, new id [unknown]@18)
[4248248.022] [email protected](40, "wl_output", 3)
[4248248.032]  -> [email protected](40, "wl_output", 3, new id [unknown]@19)
[4248248.052] [email protected](41, "wl_output", 3)
[4248248.062]  -> [email protected](41, "wl_output", 3, new id [unknown]@20)
[4248248.075] [email protected](2593)
[4248248.203] [email protected]_id(6)
[4248248.210] [email protected]_id(8)
[4248248.215] [email protected]("/dev/dri/card0")
[4248248.399]  -> [email protected](6)
[4248248.406]  -> [email protected](new id wl_callback@3)
[4248248.413] [email protected](808669761)
[4248248.421] [email protected](808669784)
[4248248.427] [email protected](808665665)
[4248248.432] [email protected](808665688)
[4248248.436] [email protected](875713089)
[4248248.441] [email protected](875713112)
[4248248.445] [email protected](909199186)
[4248248.450] [email protected](961959257)
[4248248.455] [email protected](825316697)
[4248248.459] [email protected](842093913)
[4248248.464] [email protected](909202777)
[4248248.468] [email protected](875713881)
[4248248.473] [email protected](842094158)
[4248248.477] [email protected](909203022)
[4248248.482] [email protected](1448695129)
[4248248.486] [email protected](1)
[4248248.491] [email protected](2593)
[4248248.496] [email protected](1211384385, 16777215, 4294967295)
[4248248.506] [email protected](1211384408, 16777215, 4294967295)
[4248248.516] [email protected](808669761, 16777215, 4294967295)
[4248248.526] [email protected](808669784, 16777215, 4294967295)
[4248248.535] [email protected](808665665, 16777215, 4294967295)
[4248248.545] [email protected](808665688, 16777215, 4294967295)
[4248248.555] [email protected](875713089, 16777215, 4294967295)
[4248248.564] [email protected](875708993, 16777215, 4294967295)
[4248248.574] [email protected](875713112, 16777215, 4294967295)
[4248248.584] [email protected](875709016, 16777215, 4294967295)
[4248248.593] [email protected](892424769, 16777215, 4294967295)
[4248248.603] [email protected](909199186, 16777215, 4294967295)
[4248248.613] [email protected](538982482, 16777215, 4294967295)
[4248248.622] [email protected](540422482, 16777215, 4294967295)
[4248248.632] [email protected](943215175, 16777215, 4294967295)
[4248248.642] [email protected](842224199, 16777215, 4294967295)
[4248248.651] [email protected](961959257, 16777215, 4294967295)
[4248248.661] [email protected](825316697, 16777215, 4294967295)
[4248248.671] [email protected](842093913, 16777215, 4294967295)
[4248248.680] [email protected](909202777, 16777215, 4294967295)
[4248248.690] [email protected](875713881, 16777215, 4294967295)
[4248248.699] [email protected](961893977, 16777215, 4294967295)
[4248248.709] [email protected](825316953, 16777215, 4294967295)
[4248248.718] [email protected](842094169, 16777215, 4294967295)
[4248248.728] [email protected](909203033, 16777215, 4294967295)
[4248248.738] [email protected](875714137, 16777215, 4294967295)
[4248248.748] [email protected](842094158, 16777215, 4294967295)
[4248248.757] [email protected](808530000, 16777215, 4294967295)
[4248248.767] [email protected](842084432, 16777215, 4294967295)
[4248248.776] [email protected](909193296, 16777215, 4294967295)
[4248248.786] [email protected](909203022, 16777215, 4294967295)
[4248248.796] [email protected](1448433985, 16777215, 4294967295)
[4248248.805] [email protected](1448434008, 16777215, 4294967295)
[4248248.815] [email protected](1448695129, 16777215, 4294967295)
[4248248.824] [email protected](1498831189, 16777215, 4294967295)
[4248248.834] [email protected](2593)
[4248248.839] [email protected]("seat0")
[4248248.844] [email protected](3)
[4248248.849]  -> [email protected]_pointer(new id wl_pointer@8)
[4248248.855]  -> [email protected]_surface(new id wl_surface@6)
[4248248.861]  -> [email protected]_keyboard(new id wl_keyboard@21)
[4248248.875] [email protected](0, 0, 600, 340, 0, "Goldstar Company Ltd", "LG Ultra HD", 0)
[4248248.898] [email protected](1, 3840, 2160, 59997)
[4248248.911] [email protected](2)
[4248248.916] [email protected]()
[4248248.919] [email protected](0, 0, 600, 340, 0, "Goldstar Company Ltd", "LG Ultra HD", 0)
[4248248.942] [email protected](1, 3840, 2160, 59997)
[4248248.954] [email protected](2)
[4248248.959] [email protected]()
[4248248.962] [email protected](0, 0, 600, 340, 0, "Acer Technologies", "XV273K", 0)
[4248248.984] [email protected](1, 3840, 2160, 119910)
[4248248.996] [email protected](2)
[4248249.001] [email protected]()
[4248249.127] [email protected]_id(3)
[4248249.133] [email protected]()
[4248249.137] [email protected](2593)
[4248249.141] [email protected](1, fd 151, 48238)
[4248250.377] [email protected]_info(25, 600)
[4248252.512]  -> [email protected]_registry(new id wl_registry@2)
[4248252.523]  -> [email protected](new id wl_callback@3)
[4248252.568] [email protected]_id(3)
[4248252.575] [email protected](1, "wl_shm", 1)
[4248252.586]  -> [email protected](1, "wl_shm", 1, new id [unknown]@4)
[4248252.617]  -> [email protected]_pool(new id wl_shm_pool<strong i="24">@5</strong>, fd 157, 2304)
[4248252.728]  -> [email protected](6912)
[4248252.787]  -> [email protected](16128)
[4248253.706]  -> [email protected](34560)
[4248253.734]  -> [email protected](71424)
[4248253.771]  -> [email protected](145152)
[4248253.836]  -> [email protected](292608)
[4248254.912]  -> [email protected](587520)
[4248257.613]  -> [email protected](1177344)
[4248267.711] [email protected](2, "wl_drm", 2)
[4248267.726] [email protected](3, "zwp_linux_dmabuf_v1", 3)
[4248267.736] [email protected](4, "wl_compositor", 4)
[4248267.746]  -> [email protected](4, "wl_compositor", 3, new id [unknown]@6)
[4248267.760] [email protected](5, "wl_subcompositor", 1)
[4248267.770]  -> [email protected](5, "wl_subcompositor", 1, new id [unknown]@7)
[4248267.784] [email protected](6, "wl_data_device_manager", 3)
[4248267.794]  -> [email protected](6, "wl_data_device_manager", 3, new id [unknown]@8)
[4248267.808] [email protected](7, "zwlr_gamma_control_manager_v1", 1)
[4248267.818] [email protected](8, "gtk_primary_selection_device_manager", 1)
[4248267.827]  -> [email protected](8, "gtk_primary_selection_device_manager", 1, new id [unknown]@9)
[4248267.842] [email protected](9, "zxdg_output_manager_v1", 3)
[4248267.852]  -> [email protected](9, "zxdg_output_manager_v1", 3, new id [unknown]@10)
[4248267.866]  -> [email protected](new id wl_callback@11)
[4248267.872] [email protected](10, "org_kde_kwin_idle", 1)
[4248267.882] [email protected](11, "zwp_idle_inhibit_manager_v1", 1)
[4248267.892] [email protected](12, "zwlr_layer_shell_v1", 2)
[4248267.902] [email protected](13, "xdg_wm_base", 2)
[4248267.912] [email protected](14, "zwp_tablet_manager_v2", 1)
[4248267.921]  -> [email protected](14, "zwp_tablet_manager_v2", 1, new id [unknown]@12)
[4248267.935] [email protected](15, "org_kde_kwin_server_decoration_manager", 1)
[4248267.945]  -> [email protected](15, "org_kde_kwin_server_decoration_manager", 1, new id [unknown]@13)
[4248267.958] [email protected](16, "zxdg_decoration_manager_v1", 1)
[4248267.969] [email protected](17, "zwp_relative_pointer_manager_v1", 1)
[4248267.979] [email protected](18, "zwp_pointer_constraints_v1", 1)
[4248267.989] [email protected](19, "wp_presentation", 1)
[4248267.998] [email protected](20, "zwlr_output_manager_v1", 1)
[4248268.008] [email protected](21, "zwlr_output_power_manager_v1", 1)
[4248268.018] [email protected](22, "zwp_input_method_manager_v2", 1)
[4248268.028] [email protected](23, "zwp_text_input_manager_v3", 1)
[4248268.038] [email protected](24, "zwlr_foreign_toplevel_manager_v1", 2)
[4248268.048] [email protected](25, "zwlr_export_dmabuf_manager_v1", 1)
[4248268.058] [email protected](26, "zwlr_screencopy_manager_v1", 3)
[4248268.072] [email protected](27, "zwlr_data_control_manager_v1", 2)
[4248268.082] [email protected](28, "zwp_primary_selection_device_manager_v1", 1)
[4248268.093] [email protected](29, "wp_viewporter", 1)
[4248268.102] [email protected](30, "zwp_virtual_keyboard_manager_v1", 1)
[4248268.112] [email protected](31, "zwlr_virtual_pointer_manager_v1", 2)
[4248268.123] [email protected](32, "zwlr_input_inhibit_manager_v1", 1)
[4248268.133] [email protected](33, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[4248268.143]  -> [email protected](33, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1, new id [unknown]@14)
[4248268.157] [email protected](34, "wl_seat", 7)
[4248268.167]  -> [email protected](34, "wl_seat", 5, new id [unknown]@15)
[4248269.960]  -> [email protected]_surface(new id wl_surface@16)
[4248269.975]  -> [email protected]_device(new id gtk_primary_selection_device<strong i="25">@17</strong>, wl_seat@15)
[4248269.985]  -> [email protected]_data_device(new id wl_data_device<strong i="26">@18</strong>, wl_seat@15)
[4248270.059]  -> [email protected]_surface(new id wl_surface@19)
[4248270.067]  -> [email protected]_tablet_seat(new id zwp_tablet_seat_v2<strong i="27">@20</strong>, wl_seat@15)
[4248270.076]  -> [email protected](new id wl_callback@21)
[4248270.084] [email protected](35, "zwp_pointer_gestures_v1", 1)
[4248270.095]  -> [email protected](35, "zwp_pointer_gestures_v1", 1, new id [unknown]@22)
[4248270.108] [email protected](39, "wl_output", 3)
[4248270.118]  -> [email protected](39, "wl_output", 2, new id [unknown]@23)
[4248270.152]  -> [email protected]_xdg_output(new id zxdg_output_v1<strong i="28">@24</strong>, wl_output@23)
[4248270.162]  -> [email protected](new id wl_callback@25)
[4248270.168] [email protected](40, "wl_output", 3)
[4248270.178]  -> [email protected](40, "wl_output", 2, new id [unknown]@26)
[4248270.193]  -> [email protected]_xdg_output(new id zxdg_output_v1<strong i="29">@27</strong>, wl_output@26)
[4248270.202]  -> [email protected](new id wl_callback@28)
[4248270.208] [email protected](41, "wl_output", 3)
[4248270.218]  -> [email protected](41, "wl_output", 2, new id [unknown]@29)
[4248270.232]  -> [email protected]_xdg_output(new id zxdg_output_v1<strong i="30">@30</strong>, wl_output@29)
[4248270.240]  -> [email protected](new id wl_callback@31)
[4248270.246] [email protected](2596)
[4248270.373] [email protected]_id(11)
[4248270.381] [email protected]_id(21)
[4248270.386] [email protected]_id(25)
[4248270.391] [email protected]_id(28)
[4248270.395] [email protected]_id(31)
[4248270.400] [email protected](0)
[4248270.404] [email protected](1)
[4248270.409] [email protected](875709016)
[4248270.413] [email protected](875708993)
[4248270.418] [email protected](2596)
[4248270.423] [email protected]_mode(2)
[4248270.428] [email protected]("seat0")
[4248270.433] [email protected](3)
[4248270.438]  -> [email protected]_pointer(new id wl_pointer@11)
[4248270.452]  -> [email protected]_swipe_gesture(new id zwp_pointer_gesture_swipe_v1<strong i="31">@3</strong>, wl_pointer@11)
[4248270.461]  -> [email protected]_pinch_gesture(new id zwp_pointer_gesture_pinch_v1<strong i="32">@32</strong>, wl_pointer@11)
[4248270.470]  -> [email protected]_keyboard(new id wl_keyboard@33)
[4248270.481] [email protected](2596)
[4248270.487] [email protected](0, 0, 600, 340, 0, "Goldstar Company Ltd", "LG Ultra HD", 0)
[4248270.511] [email protected](1, 3840, 2160, 59997)
[4248270.524] [email protected](2)
[4248270.530] [email protected]()
[4248270.538] [email protected]("DP-3")
[4248270.544] [email protected]("Goldstar Company Ltd LG Ultra HD 0x0000E0B1 (DP-3)")
[4248270.548] [email protected]_position(3840, 0)
[4248270.556] [email protected]_size(1920, 1080)
[4248270.563] [email protected]()
[4248270.568] [email protected](2596)
[4248270.573] [email protected](0, 0, 600, 340, 0, "Goldstar Company Ltd", "LG Ultra HD", 0)
[4248270.597] [email protected](1, 3840, 2160, 59997)
[4248270.610] [email protected](2)
[4248270.614] [email protected]()
[4248270.619] [email protected]("DP-2")
[4248270.628] [email protected]("Goldstar Company Ltd LG Ultra HD 0x0000B9F1 (DP-2)")
[4248270.633] [email protected]_position(0, 0)
[4248270.640] [email protected]_size(1920, 1080)
[4248270.647] [email protected]()
[4248270.652] [email protected](2596)
[4248270.657] [email protected](0, 0, 600, 340, 0, "Acer Technologies", "XV273K", 0)
[4248270.681] [email protected](1, 3840, 2160, 119910)
[4248270.694] [email protected](2)
[4248270.699] [email protected]()
[4248270.704] [email protected]("DP-1")
[4248270.709] [email protected]("Acer Technologies XV273K 0x0000F25B (DP-1)")
[4248270.713] [email protected]_position(1920, 0)
[4248270.720] [email protected]_size(1920, 1080)
[4248270.727] [email protected]()
[4248270.733] [email protected](2596)
[4248270.738]  -> [email protected](13, "xdg_wm_base", 1, new id [unknown]@31)
[4248288.779]  -> [email protected]_surface(new id wl_surface@28)
[4248325.005]  -> [email protected]_surface(new id wl_surface@3)
[4248325.051]  -> [email protected]_buffer_scale(2)
[4248325.058]  -> [email protected]_region(new id wl_region@22)
[4248325.065]  -> [email protected](0, 0, 1920, 1240)
[4248325.077]  -> [email protected]_opaque_region(wl_region@22)
[4248325.083]  -> [email protected]()
[19947:1003/140002.022605:ERROR:wayland_window.cc(193)] Not implemented reached in virtual void ui::WaylandWindow::SetUseNativeFrame(bool)
[19947:1003/140002.022622:ERROR:wayland_window.cc(234)] Not implemented reached in virtual bool ui::WaylandWindow::ShouldWindowContentsBeTransparent() const
[19947:1003/140002.022730:ERROR:wayland_window.cc(244)] Not implemented reached in virtual void ui::WaylandWindow::SetWindowIcons(const gfx::ImageSkia &, const gfx::ImageSkia &)
[4248325.523]  -> [email protected]_region(new id wl_region@23)
[4248325.533]  -> [email protected](0, 0, 1920, 1240)
[4248325.545]  -> [email protected]_opaque_region(wl_region@23)
[4248325.551]  -> [email protected]()
[4248379.892]  -> [email protected]_registry(new id wl_registry@2)
[4248379.912]  -> [email protected](new id wl_callback@3)
[4248379.995] [email protected]_id(3)
[4248380.007] [email protected](1, "wl_shm", 1)
[4248380.017] [email protected](2, "wl_drm", 2)
[4248380.028]  -> [email protected](2, "wl_drm", 2, new id [unknown]@4)
[4248380.042] [email protected](3, "zwp_linux_dmabuf_v1", 3)
[4248380.052]  -> [email protected](3, "zwp_linux_dmabuf_v1", 3, new id [unknown]@5)
[4248380.066] [email protected](4, "wl_compositor", 4)
[4248380.075] [email protected](5, "wl_subcompositor", 1)
[4248380.085] [email protected](6, "wl_data_device_manager", 3)
[4248380.095] [email protected](7, "zwlr_gamma_control_manager_v1", 1)
[4248380.104] [email protected](8, "gtk_primary_selection_device_manager", 1)
[4248380.114] [email protected](9, "zxdg_output_manager_v1", 3)
[4248380.123] [email protected](10, "org_kde_kwin_idle", 1)
[4248380.133] [email protected](11, "zwp_idle_inhibit_manager_v1", 1)
[4248380.143] [email protected](12, "zwlr_layer_shell_v1", 2)
[4248380.152] [email protected](13, "xdg_wm_base", 2)
[4248380.162] [email protected](14, "zwp_tablet_manager_v2", 1)
[4248380.172] [email protected](15, "org_kde_kwin_server_decoration_manager", 1)
[4248380.182] [email protected](16, "zxdg_decoration_manager_v1", 1)
[4248380.191] [email protected](17, "zwp_relative_pointer_manager_v1", 1)
[4248380.201] [email protected](18, "zwp_pointer_constraints_v1", 1)
[4248380.211] [email protected](19, "wp_presentation", 1)
[4248380.220] [email protected](20, "zwlr_output_manager_v1", 1)
[4248380.230] [email protected](21, "zwlr_output_power_manager_v1", 1)
[4248380.240] [email protected](22, "zwp_input_method_manager_v2", 1)
[4248380.249] [email protected](23, "zwp_text_input_manager_v3", 1)
[4248380.259] [email protected](24, "zwlr_foreign_toplevel_manager_v1", 2)
[4248380.274] [email protected](25, "zwlr_export_dmabuf_manager_v1", 1)
[4248380.284] [email protected](26, "zwlr_screencopy_manager_v1", 3)
[4248380.299] [email protected](27, "zwlr_data_control_manager_v1", 2)
[4248380.309] [email protected](28, "zwp_primary_selection_device_manager_v1", 1)
[4248380.318] [email protected](29, "wp_viewporter", 1)
[4248380.328] [email protected](30, "zwp_virtual_keyboard_manager_v1", 1)
[4248380.338] [email protected](31, "zwlr_virtual_pointer_manager_v1", 2)
[4248380.347] [email protected](32, "zwlr_input_inhibit_manager_v1", 1)
[4248380.357] [email protected](33, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1)
[4248380.371] [email protected](34, "wl_seat", 7)
[4248380.381] [email protected](35, "zwp_pointer_gestures_v1", 1)
[4248380.391] [email protected](39, "wl_output", 3)
[4248380.400] [email protected](40, "wl_output", 3)
[4248380.410] [email protected](41, "wl_output", 3)
[4248380.420] [email protected](2596)
[4248380.425]  -> [email protected](new id wl_callback@3)
[4248380.500] [email protected]_id(3)
[4248380.506] [email protected]("/dev/dri/card0")
[4248380.611]  -> [email protected](6)
[4248380.618] [email protected](808669761)
[4248380.623] [email protected](808669784)
[4248380.628] [email protected](808665665)
[4248380.632] [email protected](808665688)
[4248380.637] [email protected](875713089)
[4248380.642] [email protected](875713112)
[4248380.646] [email protected](909199186)
[4248380.654] [email protected](961959257)
[4248380.658] [email protected](825316697)
[4248380.663] [email protected](842093913)
[4248380.667] [email protected](909202777)
[4248380.672] [email protected](875713881)
[4248380.676] [email protected](842094158)
[4248380.681] [email protected](909203022)
[4248380.685] [email protected](1448695129)
[4248380.690] [email protected](1)
[4248380.695] [email protected](1211384385, 16777215, 4294967295)
[4248380.705] [email protected](1211384408, 16777215, 4294967295)
[4248380.715] [email protected](808669761, 16777215, 4294967295)
[4248380.724] [email protected](808669784, 16777215, 4294967295)
[4248380.734] [email protected](808665665, 16777215, 4294967295)
[4248380.744] [email protected](808665688, 16777215, 4294967295)
[4248380.754] [email protected](875713089, 16777215, 4294967295)
[4248380.763] [email protected](875708993, 16777215, 4294967295)
[4248380.773] [email protected](875713112, 16777215, 4294967295)
[4248380.782] [email protected](875709016, 16777215, 4294967295)
[4248380.792] [email protected](892424769, 16777215, 4294967295)
[4248380.802] [email protected](909199186, 16777215, 4294967295)
[4248380.811] [email protected](538982482, 16777215, 4294967295)
[4248380.821] [email protected](540422482, 16777215, 4294967295)
[4248380.830] [email protected](943215175, 16777215, 4294967295)
[4248380.840] [email protected](842224199, 16777215, 4294967295)
[4248380.849] [email protected](961959257, 16777215, 4294967295)
[4248380.859] [email protected](825316697, 16777215, 4294967295)
[4248380.869] [email protected](842093913, 16777215, 4294967295)
[4248380.878] [email protected](909202777, 16777215, 4294967295)
[4248380.888] [email protected](875713881, 16777215, 4294967295)
[4248380.898] [email protected](961893977, 16777215, 4294967295)
[4248380.907] [email protected](825316953, 16777215, 4294967295)
[4248380.917] [email protected](842094169, 16777215, 4294967295)
[4248380.926] [email protected](909203033, 16777215, 4294967295)
[4248380.936] [email protected](875714137, 16777215, 4294967295)
[4248380.945] [email protected](842094158, 16777215, 4294967295)
[4248380.955] [email protected](808530000, 16777215, 4294967295)
[4248380.965] [email protected](842084432, 16777215, 4294967295)
[4248380.974] [email protected](909193296, 16777215, 4294967295)
[4248380.987] [email protected](909203022, 16777215, 4294967295)
[4248380.997] [email protected](1448433985, 16777215, 4294967295)
[4248381.010] [email protected](1448434008, 16777215, 4294967295)
[4248381.019] [email protected](1448695129, 16777215, 4294967295)
[4248381.029] [email protected](1498831189, 16777215, 4294967295)
[4248381.038] [email protected](2596)
[4248381.044]  -> [email protected](new id wl_callback@3)
[4248381.068] [email protected]_id(3)
[4248381.075] [email protected]()
[4248381.078] [email protected](2596)
[19980:1003/140002.088964:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.
[19947:1003/140002.112737:ERROR:wayland_window.cc(184)] Not implemented reached in virtual void ui::WaylandWindow::Activate()
[4248416.183] [email protected](1, fd 195, 48238)
[4248417.673] [email protected]_info(25, 600)
[19947:1003/140002.153267:WARNING:render_frame_host_impl.cc(789)] InterfaceRequest was dropped, the document is no longer active: blink.mojom.AppCacheBackend
[4248458.011]  -> [email protected]_params(new id zwp_linux_buffer_params_v1@24)
[4248458.031]  -> [email protected](fd 208, 0, 0, 7680, 16777215, 4294967295)
[4248458.050]  -> [email protected]_immed(new id wl_buffer<strong i="33">@25</strong>, 1920, 1240, 875708993, 0)
[4248458.123]  -> [email protected]_params(new id zwp_linux_buffer_params_v1@26)
[4248458.133]  -> [email protected](fd 204, 0, 0, 7680, 16777215, 4294967295)
[4248458.151]  -> [email protected]_immed(new id wl_buffer<strong i="34">@27</strong>, 1920, 1240, 875708993, 0)
[4248458.192]  -> [email protected]_params(new id zwp_linux_buffer_params_v1@28)
[4248458.200]  -> [email protected](fd 206, 0, 0, 7680, 16777215, 4294967295)
[4248458.218]  -> [email protected]_immed(new id wl_buffer<strong i="35">@29</strong>, 1920, 1240, 875708993, 0)
[19980:1003/140002.157746:FATAL:socket_utils_posix.cc(122)] Check failed: descriptors[i].get() >= 0 (-1 vs. 0)
#0 0x5646f5f6f3c9 base::debug::CollectStackTrace()
#1 0x5646f5ebdc33 base::debug::StackTrace::StackTrace()
#2 0x5646f5ed407f logging::LogMessage::~LogMessage()
#3 0x5646f5ed48fe logging::LogMessage::~LogMessage()
#4 0x5646f62b7973 mojo::SendmsgWithHandles()
#5 0x5646f346ef32 mojo::core::(anonymous namespace)::ChannelPosix::WriteNoLock()
#6 0x5646f346d036 mojo::core::(anonymous namespace)::ChannelPosix::Write()
#7 0x5646f3455e69 mojo::core::NodeChannel::WriteChannelMessage()
#8 0x5646f34567ed mojo::core::NodeChannel::SendChannelMessage()
#9 0x5646f345c368 mojo::core::NodeController::SendPeerEvent()
#10 0x5646f345c93b mojo::core::NodeController::ForwardEvent()
#11 0x5646f7ab6c7e mojo::core::ports::Node::SendUserMessageInternal()
#12 0x5646f7ab6910 mojo::core::ports::Node::SendUserMessage()
#13 0x5646f345a241 mojo::core::NodeController::SendUserMessage()
#14 0x5646f3454338 mojo::core::MessagePipeDispatcher::WriteMessage()
#15 0x5646f3446fba mojo::core::Core::WriteMessage()
#16 0x5646f628ccdc mojo::Connector::Accept()
#17 0x5646f629b61e mojo::internal::MultiplexRouter::InterfaceEndpoint::SendMessage()
#18 0x5646f628fefc mojo::InterfaceEndpointClient::SendMessage()
#19 0x5646f2e3ac17 ui::ozone::mojom::WaylandBufferManagerHostProxy::CommitOverlays()
#20 0x5646f2e02aeb ui::WaylandBufferManagerGpu::CommitOverlaysInternal()
#21 0x5646f2e04298 base::internal::Invoker<>::RunOnce()
#22 0x5646f5f1908b base::TaskAnnotator::RunTask()
#23 0x5646f5f321ac base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl()
#24 0x5646f5f31dd8 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork()
#25 0x5646f5ed8dd4 base::MessagePumpDefault::Run()
#26 0x5646f5f32a3c base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run()
#27 0x5646f5efcfe5 base::RunLoop::Run()
#28 0x5646f9b1ee07 content::GpuMain()
#29 0x5646f4f1674d content::RunZygote()
#30 0x5646f4f17bae content::ContentMainRunnerImpl::Run()
#31 0x5646f3472397 content::RunContentProcess()
#32 0x5646f347248c content::ContentMain()
#33 0x5646f234fa9e main
#34 0x7f07cfaf7152 __libc_start_main
#35 0x5646f2337f6e _start
Task trace:
#0 0x5646f2e028cf ui::WaylandBufferManagerGpu::CommitOverlays()
#1 0x5646f2e32ba4 ui::GbmSurfacelessWayland::SwapBuffersAsync()
#2 0x5646f2e32ba4 ui::GbmSurfacelessWayland::SwapBuffersAsync()
#3 0x5646f7344b59 gpu::Scheduler::RunNextTask()
#4 0x5646f7344b59 gpu::Scheduler::RunNextTask()
Task trace buffer limit hit, update PendingTask::kTaskBacktraceLength to increase.

Received signal 6

Prochaines étapes

Personnellement, j'attends cela depuis quelques années maintenant et avec les récents progrès de Chromium, il semble que cela se rapproche vraiment maintenant.

Mais il reste encore quelques bugs et problèmes et c'est pourquoi je surveille activement à la fois Chromium et Electron pour voir s'il y a quelque chose que je peux aider pour que cela se produise un peu plus rapidement. Et à en juger par l'intérêt porté à cette question, je suis presque sûr qu'il y en a d'autres qui font de même, ce qui me donne confiance que cela pourrait être mis en œuvre bientôt.

Du côté positif, les correctifs Electron 10 fonctionnent actuellement très bien pour moi et j'exécute Visual Studio Code et Slack nativement sur Wayland sans aucun problème depuis quelques semaines maintenant (bien que vscode nécessite un petit correctif pour le rendre compatible avec Electron dix). Donc, jusqu'à ce qu'ils fassent leur chemin dans les versions officielles d'Electron, je pense que c'est un excellent moyen d'exécuter Electron sur Wayland actuellement.

Merci beaucoup pour tous vos efforts continus à ce sujet.

@vially Un rappel rapide lors de la mise en place de ces correctifs, y compris l'indicateur de construction Chromium RTC_USE_PIPEWIRE=true permettrait le partage d'écran avec les applications électroniques (MS Teams/Slack/etc.) de Mutter, KDE et les compositeurs basés sur wlroots.

Ce drapeau serait en fait utile même si l'électron est toujours en cours d'exécution dans XWayland, mais il est tout à fait logique de le standardiser une fois que le support de Wayland est en amont de l'OMI.

@vially ,

Bien sûr, j'avais prévu de le faire, mais comme je ne suis pas tout à fait sûr qu'il s'agisse d'un bug de Chromium, je pense que je vais d'abord l'étudier un peu plus.

Il est tout à fait possible qu'il s'agisse d'un bogue dans les correctifs Electron Wayland ou peut-être que c'est quelque chose qui a déjà été corrigé dans Chromium en amont, donc je veux les exclure avant de créer un bogue Chromium.

Légèrement hors sujet : je suppose que vous devez déjà en être conscient, mais sinon, il semble qu'il y ait actuellement une régression introduite dans Chromium 87.0.4280.11 (qui n'était pas là dans 87.0.4278.0 ) qui empêche Chromium de lancement sur Wayland : chrome#1136287 (dupliqué par #1136252 ). Cela n'affecte en aucune façon Electron (ou du moins pas encore) mais j'ai juste pensé que je le mentionnerais au cas où vous ne l'auriez pas vu et vous pourriez peut-être aider à le trier. @msisov

@vially , cela aurait dû être corrigé par https://chromium-review.googlesource.com/c/chromium/src/+/2464347 .

Un grand merci à tous ceux qui ont consacré du temps et des efforts à cela! Merci @msisov et les gens d'Igalia et merci @vially.

Un binaire précompilé est également disponible avec electron-nightly pendant quelques jours pour tous ceux qui souhaitent l'essayer.


Je n'ai pu trouver le drapeau RTC_USE_PIPEWIRE=true nulle part dans ce référentiel. Cela semble être une étape logique pour (mais pas seulement) les applications wayland et les environnements de bureau. Devrait-il y avoir un problème séparé pour cela?

Je n'ai pu trouver le drapeau RTC_USE_PIPEWIRE=true nulle part dans ce référentiel. Cela semble être une étape logique pour (mais pas seulement) les applications wayland et les environnements de bureau. Devrait-il y avoir un problème séparé pour cela?

J'espérais probablement qu'il serait inclus ici. C'est une solution simple qui peut être effectuée à tout moment. J'ai récemment compris où cela devrait aller (je pense), alors j'essaierai de faire un RP demain. Le problème est que j'ai besoin de temps et d'un exemple d'application pour le tester.

@danshick J'avais l'intention de soumettre une pull-request pour RTC_USE_PIPEWIRE=true aussi, mais la seule raison pour laquelle je ne l'ai pas déjà fait est que je n'ai pas encore pu faire fonctionner le partage d'écran avec Chrome sur ma machine (après avoir activé le drapeau). Et je ne voulais pas soumettre une pull-request pour quelque chose que je ne peux pas tester.

Mais ce serait formidable si quelqu'un qui est capable de tester cela peut trouver comment l'activer dans Electron et soumettre une pull-request.

Mais ce serait formidable si quelqu'un qui est capable de tester cela peut trouver comment l'activer dans Electron et soumettre une pull-request.

Je vais essayer et lier le PR ici quand j'ai le temps

Je vais essayer et lier le PR ici quand j'ai le temps

Oh mec, obtenir et construire des électrons est une corvée. J'ai tout tiré, enfin, alors j'espère pouvoir faire le changement, le construire et le tester dans les prochains jours.

Edit: --script-executable=/usr/bin/python2 , gn oublié est un pilier de python2.

Edit2 : ... et ce n'était toujours pas assez sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py

Edit3 : je n'ai pas pu faire construire l'électron, obtenant des erreurs dans la compilation du fichier de test unitaire qui ne devraient pas être liées au drapeau rtc_use_pipewire=true . Je sais que cela peut être fait parce que le package électron-ozone de l'AUR inclut ce drapeau en tant qu'argument supplémentaire pour gn.

../../components/net_log/net_export_file_writer_unittest.cc:876:22: error: variable type 'net_log::FakeNetworkContext' is an abstract class
  FakeNetworkContext fake_network_context;
                     ^
gen/services/network/public/mojom/network_context.mojom.h:617:16: note: unimplemented pure virtual method 'SetCertVerifierClient' in 'FakeNetworkContext'
  virtual void SetCertVerifierClient(::mojo::PendingRemote<CertVerifierClient> client) = 0;
               ^
1 error generated.
[38912/81310] CXX obj/components/network_time/unit_tests/network_time_tracker_unittest.o
ninja: build stopped: subcommand failed.


Pour tous ceux qui sont curieux, le patch que j'essaie de créer est juste celui-ci...

diff --git a/build/args/release.gn b/build/args/release.gn index e5017f6e1..3ecf23181 100644 --- a/build/args/release.gn +++ b/build/args/release.gn @@ -14,3 +14,6 @@ rtc_use_h264 = proprietary_codecs # who have an LGPL requirement to ship ffmpeg as a dynamically linked library, # we build ffmpeg as a shared library. is_component_ffmpeg = true + +# Enable pipewire support for screen casting on Wayland +rtc_use_pipewire = true diff --git a/build/args/testing.gn b/build/args/testing.gn index 8f62af6e4..db2a7752c 100644 --- a/build/args/testing.gn +++ b/build/args/testing.gn @@ -12,3 +12,6 @@ symbol_level = 1 # The initialization of the decoder depends on whether ffmpeg has # been built with H.264 support. rtc_use_h264 = proprietary_codecs + +# Enable pipewire support for screen casting on Wayland +rtc_use_pipewire = true

Je ne sais pas si je devrais le mettre ici, mais jusqu'à présent, j'ai un électron fonctionnant sous Wayland en utilisant electron-nightly et --enable-accelerated-mjpeg-decode --enable-accelerated-video --ignore-gpu-blacklist --enable-native-gpu-memory-buffers --enable-gpu-rasterization --enable-features=UseOzonePlatform --ozone-platform=wayland comme arguments de lancement. Il se passe cependant une chose : il n'y a aucune barre de titre dans aucune fenêtre.

Dois-je ouvrir un nouveau numéro ou pouvons-nous en discuter ici ?

@juxuanu et quel compositeur utilisez-vous ? l'ozone n'a pas été conçu pour prendre en charge des compositeurs plus simples. si vous pouvez reproduire sur gnome-shell, c'est probablement un bogue.

@ninja- C'est gnome-shell, alors Mutter. Je suppose que nous avons trouvé un bug, alors.

Electron utilise-t-il des décorations côté serveur ou côté client ? GNOME ne prend en charge que le côté client.

@juxuanu C'est intéressant car je vis la même chose sur chrome stable (86.x...) construit avec de l'ozone. Cela ressemble donc à un bug, mais certainement pas à une régression par rapport à stable. Pourquoi pensez-vous qu'il s'agit d'un bogue dans Mutter ? Toutes les autres applications natives de Wayland semblent fonctionner sur Gnome, à l'exception de Chromium. Cela ressemble plus à un bug de Chromium qu'à un bug de Mutter.

Pourquoi pensez-vous qu'il s'agit d'un bogue dans Mutter ? Toutes les autres applications natives de Wayland semblent fonctionner sur Gnome, à l'exception de Chromium. Cela ressemble plus à un bug de Chromium qu'à un bug de Mutter.

C'est parce que Gnome a décidé de ne pas prendre en charge les décorations côté serveur, ce qui signifie que toutes les applications doivent dessiner leurs propres décorations (https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

Cela signifie que pour que les fenêtres Electron aient l'air "saines" dans Gnome, l'un ou l'autre de ces éléments doit se produire :

  • Gnome doit commencer à prendre en charge les décorations côté serveur (en lisant le problème lié, cela semble peu probable), ou
  • quelqu'un doit ajouter un support pour les décorations côté client dans Electron

@vially Oh je pense que j'ai mal lu. Je pensais que je lisais Chromium mais ils parlaient d'Electron (parce que Chromium fait de la décoration côté client mais je rencontrais un problème similaire).

Je l' ai pensé à cela un peu plus , et considérant que Electron utilise déjà GTK pour certaines choses peut - serait utile à quelqu'un c'est ce que Flutter semble faire pour activer conditionnellement les décorations de la barre de titre dans GNOME.

Opinion personnelle

Je ne suis pas un utilisateur de GNOME donc je n'ai pas de cheval dans cette course, mais je souhaite quand même que GNOME écoute les commentaires constructifs et reconsidère sa position à ce sujet.

Ou peut-être que libdecoration sera finalement publié, ce qui pourrait atténuer quelque peu ce problème. Bien que je ne sois pas sûr qu'exiger des applications qu'elles se connectent à une autre bibliothèque afin de les faire fonctionner correctement dans un compositeur particulier (même s'il est quelque peu populaire) est le meilleur résultat pour cela.

Honnêtement, je préférerais que toute cette histoire de décoration de fenêtre ne soit

Si les décorations sont brisées sur GNOME parce que les développeurs insistent sur le fait que "c'est comme ça que ça devrait être", alors qu'il en soit ainsi. Essayer de contourner les bogues GNOME continue d'apporter des problèmes ou des incohérences aux environnements non GNOME.

Assez d'applications ont déjà rompu des subtilités au nom d'essayer de fonctionner correctement dans GNOME. Je préférerais que des efforts soient consacrés à la prise en charge d'environnements soucieux de la normalisation et de la compatibilité inter-DE.

Chromium a déjà du code pour dessiner la barre de titre en utilisant GTK :
https://chromium.googlesource.com/chromium/src/+/master/ui/gtk/native_theme_gtk.cc#695

Le samedi 14 novembre 2020 à 16 h 22, Hugo Barrera [email protected] a écrit :

Honnêtement, je préférerais que toute cette histoire de décoration de fenêtre ne soit
implémenté en électron. Les développeurs de GNOME ont une position ferme qui
"tout ce qui n'est pas fait n'est pas pris en charge", donc devoir contourner ce problème
dans toutes les applications clientes ne fait qu'ajouter de la complexité à toutes les applications en aval.

Si les décorations sont cassées sur GNOME parce que les développeurs insistent "c'est
la façon dont il devrait être", alors qu'il en soit ainsi. Essayer de contourner les bogues de GNOME
continue d'apporter des problèmes ou des incohérences aux environnements non GNOME.

Assez d'applications ont déjà brisé des subtilités au nom d'essayer de travailler
correctement dans GNOME. Je préfère faire des efforts pour soutenir les environnements
qui se soucient de la standardisation et de la compatibilité inter-DE.

-
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/electron/electron/issues/10915#issuecomment-727273382 ,
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/AAM4YSPJBCV2S5L5GULQVOTSP37J7ANCNFSM4EA2BOCA
.

C'est parce que Gnome a décidé de ne pas prendre en charge les décorations côté serveur, ce qui signifie que toutes les applications doivent dessiner leurs propres décorations (https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

Cela signifie que pour que les fenêtres Electron aient l'air "saines" dans Gnome, l'un ou l'autre de ces éléments doit se produire :

* Gnome needs to start supporting server-side decorations (by reading the linked issue, this seems unlikely), or

* someone needs to add support for client-side decorations in Electron

Mais dans le rapport de bogue lié, quelqu'un fait remarquer :

C'est assez clair, la spécification des décorations XDG elle-même exige un support de décoration de la part des clients. Il permet aussi explicitement
compositeurs de ne pas tenir compte de la préférence du client.
C'est-à-dire qu'une implémentation de compositeur qui utilise toujours un mode client_side dans les événements de configuration serait parfaitement spécifiée.
conforme. Tout client qui réclame une prise en charge, mais ne prend pas en charge les décorations côté client ne l'est pas.

Ainsi, même si quelqu'un pense qu'il est préférable d'utiliser des décorations côté serveur, il semble que pour qu'un client soit conforme à Wayland, il doit prendre en charge CSD.

C'est assez clair, la spécification des décorations XDG elle-même exige un support de décoration de la part des clients. Il permet aussi explicitement
compositeurs de ne pas tenir compte de la préférence du client.
C'est-à-dire qu'une implémentation de compositeur qui utilise toujours un mode client_side dans les événements de configuration serait parfaitement spécifiée.
conforme. Tout client qui réclame une prise en charge, mais ne prend pas en charge les décorations côté client ne l'est pas.

FWIW, GNOME ne suit pas du tout cette règle. Le bouton de confirmation dans des choses comme un sélecteur de fichiers est considéré comme une "décoration", donc masquer les décorations du client masque le bouton d'action principal.

Cela dit, si la spécification est aussi explicite, alors je suppose qu'il est logique que l'électron soutienne cela.

Ma seule préoccupation est que les développeurs d'applications pourraient finir par oublier d'envisager l'une ou l'autre alternative - cette grande flexibilité dans le client semble être un facteur agréable à négliger pour les développeurs.

Il pourrait y avoir une implémentation par défaut des décorations côté client qui est automatiquement activée, puis une option de retrait pour les développeurs qui souhaitent faire quelque chose de plus spécifique à l'application ? Juste pour que les gens sans décorations côté serveur aient au moins quelques notions de base ?

Le protocole de base de wayland n'a pas de concept de décorations, les clients doivent toujours dessiner leur propre barre de titre sauf indication contraire explicite (par exemple via xdg_decoration s'il est implémenté - et rappelez-vous qu'un simple return CLIENT_SIDE serait une implémentation valable bien qu'un inutile)

Pour ma part, je voterais pour créer un problème distinct pour ces sujets. La raison initiale de ce problème était de fournir une construction de chemin qui se fait maintenant dans le canal nocturne. Nous rencontrerons sûrement plus de problèmes avec wayland et discuter de chacun d'eux dans ce fil créera beaucoup de spam.

Cependant, en ce qui concerne le sujet de la barre de titre, je mentionnerai également que le problème existe également dans Chrome et devra probablement y être également résolu. Pour reproduire ce chrome ouvert avec wayland désactivé, faites un clic droit sur la barre de titre pour vous assurer que "Utiliser la barre de titre et les bordures du système" est activé. Ensuite, redémarrez Chrome cette fois avec wayland activé et vous verrez que vous n'avez pas de barre de titre. Il est probablement préférable d'attendre que cela soit corrigé en amont.

rtc_use_pipewire=true est nécessaire pour toute version de Wayland et je pense qu'il devrait être discuté ici. @danshick, je vois, y travaillait.

rtc_use_pipewire=true est nécessaire pour toute version de Wayland et je pense qu'il devrait être discuté ici. @danshick, je vois, y travaillait.

Pas nécessaire, mais certainement utile si desktopCapturer fonctionne. L'activation de ce drapeau m'a conduit à des dizaines d'erreurs de construction que je traverse.

Je sais qu'il est possible de construire avec ce drapeau comme le propose le package électron-ozone AUR, mais ce package se bloque à chaque fois que j'essaie l'API desktopCapturer, et je n'ai pas réussi à modifier ce PKGBUILD pour conserver les symboles de débogage.

Considérant que ce changement semble plus compliqué que le simple ajout du drapeau et la reconstruction, et le fait qu'il soit utile même depuis XWayland, je pense que cela pourrait être mieux pour un nouveau numéro/PR.

Je sais qu'il est possible de construire avec ce drapeau comme le propose le package électron-ozone AUR, mais ce package se bloque à chaque fois que j'essaie l'API desktopCapturer, et je n'ai pas réussi à modifier ce PKGBUILD pour conserver les symboles de débogage.

Les symboles de débogage fonctionnent pour moi - ce sont les parties probablement pertinentes de mon makepkg.conf :

#-- Compiler and Linker Flags
CPPFLAGS="-D_FORTIFY_SOURCE=2"
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt"
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j12"
#-- Debugging flags
#DEBUG_CFLAGS="-g -fvar-tracking-assignments"
#DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"
DEBUG_CFLAGS="-g -Og"
DEBUG_CXXFLAGS="-g -Og"

OPTIONS=(!strip docs !libtool !staticlibs emptydirs zipman purge debug)

Merci @hedgepigdaniel , j'ai essayé les !strip et debug , qui semblaient être respectées dans pkgbuild, mais certains de ces indicateurs de compilateur supplémentaires semblent utiles.

J'aimerais toujours obtenir ce bâtiment comme il se doit directement à partir de git, mais au moins, je peux diagnostiquer l'erreur de segmentation plus immédiatement.

Cette page vous a été utile?
0 / 5 - 0 notes