Electron: Ziehen Sie in Erwägung, einen Build für Wayland bereitzustellen

Erstellt am 25. Okt. 2017  ·  139Kommentare  ·  Quelle: electron/electron

  • Elektronenversion: beliebig
  • Betriebssystem: Linux

Erwartetes Verhalten

Das neueste Ubuntu wird mit Wayland als Standard-Display-Server geliefert.
Auf eingebetteten Geräten bietet Wayland normalerweise die beste Rendering-Leistung, zumindest im Vergleich zu X11, wo die Leistung normalerweise ziemlich schlecht ist.

Tatsächliches Verhalten

Aktuelle linux / arm / arm64-Binärversionen sind großartig, laufen aber meiner Erfahrung nach auf eingebetteten Geräten ziemlich schlecht. Sie alle verlinken auf libx11 / gtk, was sie für Wayland unbrauchbar macht.

libGtk kann mit --wayland-backend erstellt werden und dann kann Electron dagegen gebaut werden

Ich würde mir wirklich wünschen, dass das Electron-Team in Betracht zieht, vorgefertigte Binärdateien bereitzustellen, die mit Wayland verwendet werden können, die eine neue Reihe von Möglichkeiten eröffnen würden, insbesondere auf eingebetteten Geräten.

blockeupstream ❌ enhancement platforlinux

Hilfreichster Kommentar

Update : Wir (Igalia) arbeiten derzeit daran, Legacy Chromium/Linux (aka: Aura/X11) zu Ozone ( crbug.com/789065 ) zu

Es ist toll zu hören, dass vscode/electron bereits auf Chromozon/Wayland laufen kann (ich muss etwas Zeit finden, um es selbst auszuprobieren :)). Danke für die Arbeit und das Teilen.

Für weitere Nachverfolgung wenden Sie sich bitte an {nickdiego,msisov}@igalia.com

Alle 139 Kommentare

Nach einiger Lektüre sieht es so aus, als ob dies der beste Weg wäre, Ozon im Chromaufbau zu aktivieren. Also wollte ich wissen, ob das schon mal jemand gemacht hat oder ob ich ein paar Tipps bekommen könnte, um es auszuprobieren?
Gibt es auch andere Teile des Elektrons, die starke X11-Abhängigkeiten haben würden? GTK3 sollte an dieser Stelle nicht, aber fragen Sie sich, ob Dinge wie Brightray haben?

Ein weiterer Blick in den Build zeigt, dass das Elektron von der Chrom-Libgtkui abhängt.
Die libgtkui in Chrom hat starke Abhängigkeiten von X11 und baut zu diesem Zeitpunkt auf nichts anderem als X11 / OSX / Win auf.

Ich bin mir nicht sicher, wofür libgtkui in Chrom verwendet wird (das ist nicht in libgtk3).
Es sieht so aus, als ob es zum Erstellen von Statussymbolen und App-Anzeigen verwendet wird.
Ich frage mich, ob es möglich wäre, das optional zu machen ...

Ich habe es geschafft, libchromiumcontent zu patchen, damit es ohne X11 erstellt wird.
Dies erforderte einige Patches und ist nicht wirklich geeignet.

libchromiumcontent kann in diesem Fall mit use_aura=true use_ozone=true und einigen weiteren Parametern erstellt werden. Weitere Details finden Sie in meinen Patches hier https://github.com/LongChair/libchromiumcontent/commits/upgrade-to-chromium-61

Dann habe ich mit dem Elektronenbau begonnen und die Situation ist ähnlich. Obwohl der größte Teil des Codes einige #if defined(USE_AURA) Teile enthält, kann er zu diesem Zeitpunkt eindeutig nicht für Aura mit Ozon erstellt werden, auch wenn libgtk3ui nicht davon abhängig wäre.

Es gibt auch Bits in den Brightray-GYP-Dateien, die es von X11 abhängig machen, eine Wayland-Version müsste dort mit den richtigen Displaymanager-Bibliotheken ( wayland-client, ... ) verknüpft werden.

Ich glaube, dass der beste Weg, um es ohne zu viel Aufwand unter Linux und ohne X11-Unterstützung baubar zu machen, darin besteht, die libgtk3ui-Komponente optional im Build zu verwenden. Aber ich kenne Elektron nicht genug, um zu wissen, was dies kaputt machen / unzugänglich machen würde. es scheinen hauptsächlich Taskleistensymbole zu sein, was nicht viel ausmachen würde, da es in Weston sowieso keine Taskleiste gibt :)

Ich denke, ich werde meinen Versuch hier stoppen, da dies zu viele Patches macht und es zu diesem Zeitpunkt kein Interesse / Feedback vom Electron-Team dazu gab :)

Dies würde die Ausführung über einen Hack auch unter ChromeOS ermöglichen.

Dies würde die Ausführung über einen Hack auch unter ChromeOS ermöglichen.

Das hat mein Interesse ein bisschen geweckt, kannst du mir erklären, wie das funktionieren würde?

Die neuesten Chromeos-Geräte, die die Android-Laufzeit bündeln, verwenden Wayland, um Nicht-Chrom-Apps anzuzeigen.

Ich habe erfolgreich eine Hello-Wayland-Demo kompiliert und ausgeführt.

ChromeOS verwendet Aura & Ozone, entweder mit Wayland oder GBM/KMS.
Die oben genannten Probleme sind jedoch die gleichen. libgtkui ist immer noch das Hauptproblem bei der Erstellung eines Builds, sowohl innerhalb von Chrom als auch bei Elektron.

Schöner Fortschritt @LongChair !
Ich habe mich auch damit befasst, habe es aber vorgezogen, zuerst Chrome (Chrom) für Wayland zu testen. Ich denke, der V8-Motor ist der größte Teil der Migration, sowohl in Chrome als auch in Electron.
Igalia hat eine Chromgabel, die nahe am Upstream liegt: https://github.com/Igalia/chromium
Vielleicht können wir die Igalia-Patches in Ihren Electron-Build integrieren?
Nun, ich konnte Chromium noch nicht auf Wayland ausführen ...

Ich konnte Chrom mit Wayland-Patches kompilieren und ausführen! Sehen Sie sich das Build-Skript hier an: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=chromium-wayland-git

@onny : wie ich schon sagte, es scheint, dass viele X11-Abhängigkeiten immer noch in Electron selbst sind, weil die Verwendung von libgtkui im ​​libcc-Build.

Soweit ich gesehen habe, behandelt Elektron auch AURA als Build-Parameter, geht dann aber davon aus, dass aura/x11 verwendet wird. Daher gibt es derzeit keine Möglichkeit, es ohne X11 zu bauen.

es wird auf Xwayland / Wayland laufen, aber das ist weit davon entfernt, die Wayland-Leistung zu bringen, insbesondere auf Embedded.

Ach das ist interessant:

Electron verwendet jetzt GTK3 im Master-Zweig, wird im nächsten Minor/Major-Release ausgeliefert.
https://github.com/electron/electron/issues/2927#issuecomment -347092515

👍

@onny : ja das bringt chrom 61. das ist ein Fortschritt.

Was ich suche, ist eine vollständige native Wayland-Version von Elektron, da X11 (Xwayland) dazu neigt, die Gesamtleistung um ein Vielfaches zu verringern.
Dafür gibt es zwei Probleme, selbst wenn Chromium auf nativem Wayland erstellt und ausgeführt wird, ist dies ohne libgtkui afaik. Diese Abhängigkeit, die libcc zum Chromium-Build selbst hinzufügt, scheint zu diesem Zeitpunkt stark von X11 abhängig zu sein.
Abgesehen von Chrom verlässt sich der Elektronencode selbst sowohl auf libcc:gtkui als auch auf eine Reihe von X11-Funktionen, die auf nativem Wayland nicht verfügbar sind.

Ich bin mir nicht sicher, wie diese X11-Abhängigkeit überwunden werden könnte. Folgende Dinge wären erforderlich:

  • Befreien Sie sich von dem licbc-gtkui-Bedarf in Elektron. ? wenn nicht möglich, dann Chrom nehmen, um es X11 / Wayland kompatibel zu machen
  • Befreien Sie sich von den obligatorischen X11-Abhängigkeiten. Der Elektronencode scheint AURA zu verwenden, geht jedoch davon aus, dass es sich um AURA X11 handelt, wo es AURA / Wayland sein könnte. Ich bin mir nicht sicher, ob es Entsprechungen für die verwendeten X11-Funktionen gibt.

Es wäre schön gewesen, wenn einige Elektronenentwickler das auswerten oder hier Feedback / technische Überlegungen einbringen könnten :)

Gibt es Neuigkeiten zu diesem Thema?

Hallo! Ich wollte nur mitteilen, dass wir (von Igalia) Wayland sowohl in Chromium (dem Browser) als auch in Content (der Einbettungsschicht) in https://github.com/Igalia/chromium/ unterstützen.

Je nachdem, wie man Elektron auf einem normalen Chrom/x11-Build heute konfiguriert, kann es also wirklich einfach sein, es auf Chrom/Wayland auszuprobieren.

Die größten Unterschiede sind:

  • Chrom/Wayland-Builds haben "Ozon" aktiviert.
  • chromium/wayland läuft auf dem in Entwicklung befindlichen "UI-Dienst", in chromium-land.

bitte kontaktiere mich unter \tonikitoo at igalia dot com\, wenn jemand dem nachgehen möchte.

findet jemand eine Lösung, um Electron ohne X11 auszuführen?

@tonikitoo hast du einen Hinweis darauf, wann deine Arbeit an Wayland wieder vorgelagert integriert wird?

@luispabon die Arbeit wird aktiv vorgelagert. Wir schätzen, dass etwa 85% bereits in der Hauptleitung von Chrom enthalten sind.

/cc @msisov

@tonikitoo excelente

Hallo @tonikitoo , gibt es gute Neuigkeiten zu Elektron mit Xwayland, Wayland oder Weston?

Wir arbeiten nicht an Elektron, sondern fügen stattdessen Wayland in Chromium hinzu :)

crbug.com/578890

Gibt es Neuigkeiten zum Wayland-Support? Ich würde gerne sehen, dass VSCode nativ auf Wayland und nicht auf Xwayland läuft.

@GitHubRepositoryX verfolge den Fortschritt des crbug-Problems im Kommentar vor deinem, er wird immer noch aktiv aktualisiert.

Mir ist aufgefallen, dass Chrom kürzlich gepatcht wurde, um libgtkui auf Ozon zu unterstützen (sowohl X11 als auch Wayland): https://chromium-review.googlesource.com/c/chromium/src/+/1744372

Das würde also wahrscheinlich das von @LongChair erwähnte Problem

Ich habe versucht, die Ozon-/Wayland-Build-Flags einzuschalten und einige Probleme zu lösen, und es ist mir gelungen, es an einen Punkt zu bringen, an dem es funktioniert! Code muss noch bereinigt, getestet und in kleinere Änderungen unterteilt werden, bevor ich PRs mache, aber hier ist der Zweig: https://github.com/electron/electron/compare/master...hedgepigdaniel :ozone?expand= 1

Das DPI-Änderungsbewusstsein (https://github.com/electron/electron/issues/11050) funktioniert perfekt wie bei Ozon/Wayland-Chrom-Builds, und die fehlenden Teile davon sind ähnlich gebrochen, z Ich glaube, daran wird gerade gearbeitet).

Zum größten Teil trennt die Änderung nur die Verwendung der USE_X11 Definitionen (die zuvor Linux und X11 verschmolzen) mit Kombinationen von OS_LINUX und USE_X11 oder USE_OZONE .

USE_X11 wird aus der Chrom-Codebasis entfernt, sobald wir uns Ozone/X11 und Ozone/Wayland ohne reines X11 nähern.

Um Dateidialoge und GTK verwenden zu können, müssen Sie außerdem Ozon mit aktiviertem use_glib=true kompilieren. IIRC, use_gtk ist standardmäßig auf true gesetzt.

Ist es also eine bessere Idee, if use_x11 durch if !use_ozone and os_linux zu ersetzen? Oder etwas anderes?

Ich werde es mit dem use_glib-Flag versuchen. Ich nehme an, dass Dateidialoge dann funktionieren?

Ja richtig. Allerdings funktioniert die Modalität noch nicht. Aber Sie können sie verwenden.

das wäre wirklich phänomenal. Vielleicht könnten wir auch unter Linux scrollen, um so schön zu sein wie unter Windows. (kinetisch)

Arch-Benutzer: https://aur.archlinux.org/packages/electron-ozone

Ich habe es mit dem neuesten VSCode zum Laufen gebracht ( code-git muss nur gepatcht werden, um electron anstelle von electron6 indem https://github.com/microsoft/vscode/pull/ 83796)

Es gibt ein paar seltsame Symptome (wahrscheinlich habe ich Code auskommentiert, den ich nicht verstehe) - aber es funktioniert. So scharf und so richtig dimensioniert!

@hedgepigdaniel wolltest du mit deinen Änderungen PRs erstellen? Ich habe gerade versucht, Elektron mit den gn-Flags von Ihrem PKGBUILD auszuchecken und zu kompilieren, aber ich bekomme Kompilierungsfehler ...

../../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?)

sieht es so aus, als ob diese durch Ihre Commits behoben werden könnten?

Update : Wir (Igalia) arbeiten derzeit daran, Legacy Chromium/Linux (aka: Aura/X11) zu Ozone ( crbug.com/789065 ) zu

Es ist toll zu hören, dass vscode/electron bereits auf Chromozon/Wayland laufen kann (ich muss etwas Zeit finden, um es selbst auszuprobieren :)). Danke für die Arbeit und das Teilen.

Für weitere Nachverfolgung wenden Sie sich bitte an {nickdiego,msisov}@igalia.com

Ich kann nicht glauben, dass das endlich passiert, ein Traum wird wahr ... Hoffentlich dauert es nicht so lange, bis die ppc64le-Patches zusammengeführt sind 🤞

Das Laufen von Bogen / Schwingen, der Aufbau von Elektron-Ozon scheint reibungslos zu gehen, aber dann, wenn ich Elektron laufen lasse:

electron -i

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

Bitte hinterlassen Sie hier, was diese beiden Befehle bewirken

echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR

Show.

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

Ich erhalte genau den gleichen Fehler wie @garth , wenn ich das Elektron-Ozon- Paket von @hedgepigdaniel verwende (ich bin auch auf arch/sway).

Auf derselben Maschine läuft Chrom-Ozon jedoch einwandfrei (mit Ausnahme einiger kleinerer Probleme wie Kontextmenü/Auswahl der falschen Eingabe:

ok, versuchen Sie, die App wie folgt auszuführen:

WAYLAND_DISPLAY=1 ./Ihre-App.

Funktioniert es jetzt? Wenn nicht, versuchen Sie es mit WAYLAND_DEBUG=1 und teilen Sie die Ausgabe. Danke

Ich erhalte genau den gleichen Fehler wie @garth , wenn ich das Elektron-Ozon- Paket von @hedgepigdaniel verwende (ich bin auch auf arch/sway).

Auf derselben Maschine läuft Chrom-Ozon jedoch einwandfrei (mit Ausnahme einiger kleinerer Probleme wie Kontextmenü/Auswahl der falschen Eingabe:

Ich habe es nicht gesehen. Danke, dass du diesen Link hier gepostet hast. Es wird geprüft und behoben.

Unter Sway:

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

Ich habe auch mit Gnome getestet und es funktioniert.

es sollte sein

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


Laut meiner Umgebung sollte es Wayland-0 sein, aber ich habe 0 und 1 mit dem gleichen Effekt ausprobiert. Hier ist die Debug-Ausgabe.

 ~ 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

Ich habe es vielleicht übersehen, aber wie lauten Ihre Systemspezifikationen?

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 

Ich nehme an, Sie verwenden Mesa und Ihre verwendete GPU ist die von Intel, oder?

Können Sie bitte zu ui/ozone/platform/wayland/host/wayland_connection.cc[1] gehen und dies ändern?

display_.reset(wl_display_connect(nullptr));

zu

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

Und übrigens, hast du Chrom mit dem System libwayland kompiliert? das kann auch ein problem sein.

Ich verwende AUR, bin mir also bei libwayland nicht sicher. Ich synchronisiere das Repository, um die von Ihnen vorgeschlagene Änderung vorzunehmen.

Und ja, ich verwende Mesa/Intel, da Nvidia nur inerte Bausteine ​​verkauft, die nichts weiter tun, als einem Linux-Laptop mehr Gewicht zu verleihen.

Ich beziehe mich darauf - https://cs.chromium.org/chromium/src/third_party/wayland/features.gni?type=cs&q=use_system_libwayland&g=0&l=8

Wenn Sie dieses gn arg nicht angerührt haben, versuchen Sie, es auf true zu setzen und neu zu kompilieren.

@msisov Ich habe beide src-Dateien wie von Ihnen vorgeschlagen geändert und neu kompiliert. Das Ergebnis ist leider das gleiche.

Ich habe auch das AUR-Paket electron-ozone und es schlägt auch fehl, aber mit folgendem:

~ # 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'

Ich habe es geschafft, Electron unter Wayland auszuführen , indem ich die Patches von @hedgepigdaniel auf die stabile Version von 8.2.1 rebasiert .

Es wäre schön, wenn @hedgepigdaniel das Elektron-Ozon- AUR-Paket mit diesen Änderungen aktualisieren würde (ich kann eine Pull-Anfrage stellen, wenn das hilft). indem Sie diese Änderungen kann versuchen , Verfügung).

Bearbeiten: Das Elektron-Ozon- AUR-Paket wurde mit diesen Änderungen aktualisiert.

Ein möglicher Grund , warum die electron-ozone AUR - Paket wurde für einige Schwanken Benutzer Fehler gewesen sein könnte aufgrund der Entfernung von xdg-Schale v6 instabil in sway v1.4 (https://github.com/swaywm/sway/ pull/4466), was in Electron 7.1.8/Chromium 78 ( Chrom#997631 ) verwendet wurde.

@vially ausgezeichnet!

Ich habe https://github.com/hedgepigdaniel/pkgbuild-electron-ozone erstellt, das ist ein Spiegel des AUR-Pakets - Sie können gerne eine PR einreichen und ich werde sie veröffentlichen.

Paket wurde aktualisiert, danke @vially

Kann bestätigen, dass der Neubau auf Sway funktioniert.

Obwohl es mit dem code-git Build von vscode nicht zu funktionieren scheint - ich bekomme zwei Fenster code-git und Code - OSS beide leer sind - aber vielleicht ist das ein Problem mit vscode .

Kann bestätigen, dass der Neubau auf Sway funktioniert.

Obwohl es mit dem code-git Build von vscode nicht zu funktionieren scheint - ich bekomme zwei Fenster code-git und Code - OSS beide leer sind - aber vielleicht ist das ein Problem mit vscode .

Ich glaube nicht, dass VSCode aktualisiert wurde, um mit Elektron 8 zu funktionieren: https://github.com/microsoft/vscode/blob/304fc630f7f46db67a33def6b8dd3f8728033546/package.json#L99

Wahrscheinlich ist es ein Fehler, dass das Code-Git-Paket noch nicht aktualisiert wurde, um von Electron7 und nicht von Elektron abhängig zu sein.

Ich sehe, ich habe ein paar weitere Apps ausprobiert, wie drawio-desktop und sie scheinen gut mit dem electron-ozone Build zu funktionieren.

Besteht die Möglichkeit, das Build-Flag 'rtc_use_pipewire=true' hinzuzufügen, um die Bildschirmfreigabe von Wayland zu unterstützen?

Wenn Sie nicht auf Arch sind, welche Optionen gibt es, um den Wayland-Build zu erhalten?
Wann werden Elektronen mit Ozon versendet?

Ich glaube nicht, dass VSCode aktualisiert wurde, um mit Elektron 8 zu arbeiten

Schade, das ist mein echter Roadblocker, um Wayland nutzen zu können. Kann nicht auf XWyaland verwendet werden, da XWayland-skalierte Anwendungen sehr verschwommen sind.

Ich habe mir den Electron-8-Zweig angesehen und es sieht so aus, als ob er nichts Besonderes ist, sie haben nur die Electron-Version gestoßen: https://github.com/microsoft/vscode/compare/electron-8.0.x

Es sieht also so aus, als ob vscode mit Elektron 8 funktionieren soll (aber es kann einige Fehler geben, da es immer noch auf einen eigenen Zweig beschränkt ist).
@nostdm können Sie bitte überprüfen, ob es auf Xorg besser funktioniert?

Ich habe vscode mit dem electron-ozone Build (Version 8.2.1 oben erwähnt) ausprobiert und es startet zwar, aber es gibt einige Probleme , die dazu führten, dass es oft genug abstürzte, dass ich es musste gehe zurück zur X11/XWayland-Version.

YMMV und ich ermutigen Sie, es auszuprobieren, da es sehr einfach zu bauen ist. Für meinen Build habe ich gerade electron7 durch electron in diesem PKGBUILD ersetzt :

-- _electron=electron7
++ _electron=electron

Die meisten Abstürze, die ich mit vscode waren auf einige Fehler zurückzuführen, die mir auch in chromium-ozone Version 80 begegnet sind (die meisten davon bezogen sich auf Tooltips). Die gute Nachricht ist, dass die meisten dieser Abstürze jetzt in Version 81 von chromium-ozone dank der kontinuierlichen Arbeit des Igalia-Teams verschwunden sind.

Wenn sich für mich herausstellt, dass Version 9 von Electron (die auf Version 82 von Chrom basiert: #22932) so stabil ist wie Chrom 81 auf Wayland, dann werde ich auf vscode umsteigen

Besteht die Möglichkeit, das Build-Flag 'rtc_use_pipewire=true' hinzuzufügen, um die Bildschirmfreigabe von Wayland zu unterstützen?

Wurde in der neuen Version 8.2.2 durchgeführt.

Danke! Das sind ausgezeichnete Neuigkeiten. Ich werde es bei Gelegenheit mal testen.

Danke für deine Arbeit @hedgepigdaniel.
Ich schreibe ein Gentoo-Ebuild basierend auf Ihrem PKGBUILD:
https://github.com/12101111/overlay/blob/master/dev-util/electron/electron-8.2.3.ebuild
Es kann unter Wayland (Sway) laufen und abstürzen, wenn vscode geladen wird (Elektron-8.0.x-Zweig).
Und es kann nicht in der X-Sitzung geöffnet werden:

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

Ist ozone_platform_x11 instabiler als ozone_platform_wayland?

@12101111 Ozon/X11 ist WIP, also ja, es ist immer noch ziemlich instabil. Könnten Sie weitere Details zu Ihrem X env bereitstellen? DE/WM und Version? Ich führe es täglich in verschiedenen DEs/WMs ohne solche Probleme aus.

@nickdiego Ich verwende Xorg-Server 1.20.8, Mesa 20.0.4, GTK 3.24.18, Sway 1.4, Awesome wm 4.3.
Der Ozon-Build läuft nicht unter X oder 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

Ich bin noch nie auf diesen spezifischen Fehler gestoßen. Können Sie Chromium Ozone/x11 auf Ihrer Umgebung ausführen? Da es sich in der Entwicklung befindet, wäre es interessant, die neuesten Versionen zu überprüfen. Wenn ja, könnte es sich bei der gtk/Ozon-Initialisierung um etwas Elektronenspezifisches handeln. Ich würde mir auch die Probleme/Fixes ansehen, die von anderen Benutzern in einigen Kommentaren oben gemeldet wurden :point_up:. Einige von ihnen beobachteten in den neuesten Versionen einen Stabilitätsschub.

_Als Schuss ins Dunkel könnte es mit diesem Problem zusammenhängen , das in meiner Umgebung früher nur beim Versuch, GTK-Dialoge zu öffnen, nicht beim Start zu Abstürzen führte._

@nickdiego Ich nehme an, es liegt daran, dass sie den stabilen Kanal verwenden, der in ihrem Fall ""80.0.3987.163"" ist. Im Fall von Ozone/X11/Wayland ist es nicht zuverlässig, da ständig Änderungen am Stamm vorgenommen werden.

Ich versuche, Chrom-83.0.4103.15 zu bauen, es funktioniert auf Wayland, und ich brauche chromium --ozone-platform=x11 , um auf X zu laufen.
Aber Elektron kann nicht auf X starten:

$ ./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 Ja, es macht Sinn.

Ich versuche, Chromium-83.0.4103.15 zu bauen, es funktioniert auf Wayland und ich brauche Chrom --ozone-platform=x11, um auf X zu laufen.
Aber Elektron kann nicht auf X starten:

Es scheint also ein elektronenspezifisches Problem bei der Gtk/Ozone-Initialisierung zu geben. Könnte jemand dieses Problem in anderen Setups bestätigen? Tut mir leid, aber ich habe derzeit keine Zeit, mich damit zu befassen (ich habe nicht einmal einen lokalen Elektronenaufbau).

Muss ich ozone_auto_platforms auf true setzen?

Derzeit legt ozone_auto_platforms nur x11 als Standard-Backend fest, da wir auf dem Linux-Desktop immer noch keine automatische Plattformerkennung haben.

Ich baue Elektron 8.2.3 mit CXXFLAGS= -O1 -g und erhalte einen Backtrace mit Quellcode:

$ 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

Ich denke, https://github.com/chromium/chromium/commit/182d586fee5b5f9053b5702fcfc847f18ea5ec79 wird dies beheben und ich werde versuchen, dieses Update auf Chrom 80 zurück zu portieren
Edit: Nach dem Anwenden dieses Patches kommt es zu einem weiteren Absturz

$ 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

Weiß jemand, wie man Elektron kompiliert, um Wayland native zu unterstützen? (Schritt für Schritt) Und führen Sie Elektronen-Apps in Wayland (Weston usw.) aus.
Es hat Stunden gedauert, Elektron zu kompilieren, und ich scheitere oft.

@caijw , Sie sind vielleicht kein Arch-Benutzer, aber Sie können sich die PKGBUILD für Elektron-Ozon ansehen, um Hinweise zum Bau zu erhalten. Mein Verständnis ist, dass es noch sehr experimentell ist.

vscode wird in der nächsten Version Elektron 8 überspringen und Elektron 9 verwenden, die auf Chrom 83 basiert und sehr stabil mit Ozon-Wayland und Ozon-X11 arbeitet. Aber Elektron 9 braucht noch einige Patches, um mit Ozon zu kompilieren

Chrom-integrierte Ozon-Flaggen sind auf dem Weg https://bugs.chromium.org/p/chromium/issues/detail?id=1085700

Hier ist mein WIP-Versuch, meinen Wayland-Zweig von Elektron auf v9.xx umzubasieren: https://github.com/electron/electron/compare/9-xy...hedgepigdaniel :arch-9?expand=1

Derzeit ist es gut genug, um electron-quick-start laufen zu lassen, aber sonst nicht viel. Meistens ist das Symptom, dass Fenster nicht angezeigt werden.

Ich habe auch https://aur.archlinux.org/packages/electron-ozone/ aktualisiert.

Ich würde mich über Hilfe freuen, wenn jemand herausfinden kann, was falsch ist - zögern Sie nicht, eine PR an meine Gabel zu senden. Fühlen Sie sich auch frei, meine Patches zu nehmen und sie in etwas Poliertes / Verschmelzbares zu verwandeln - ich habe nicht wirklich Zeit, alles selbst zu machen.

Danke für deine Patches @hedgepigdaniel.
Ich habe es zusammengestellt und ein Problem gefunden:

  1. Fenster kann nicht geschlossen werden (was in AUR erwähnt wird)
  2. Führen Sie electron-9 --ozone-platform=wayland aber das Fenster wird nicht angezeigt. electron-9 --ozone-platform=x11 funktioniert ohne Probe
  3. vscode benötigt zum Starten die Umgebungsvariable ELECTRON_RUN_AS_NODE=1 , aber ELECTRON_RUN_AS_NODE=1 electron-9 --ozone-platform=x11 hat einen Fehler erhalten: electron-9: bad option: --ozone-platform=x11
  4. Drag & Drop funktioniert nicht (zum Beispiel: Datei-Explorer oder Tabs in vscode)

图片

Ich habe noch einige Tests mit den Arch-Paketen durchgeführt,

Es funktioniert, ohne leere Fenster oder so. Das Hauptproblem, das ich gefunden habe, ist, dass alle Fenster verschwinden, wenn Sie mit einem Mausrad in den Anwendungsmenüs scrollen. Ich denke, dieser Fehler wurde in neueren Chrom-Versionen behoben.

@hedgepigdaniel Ich denke, Ihre Patches auf Electron sind völlig in Ordnung, um in Upstream aufgenommen zu werden.

Hat jemand Ubuntu-Buildfiles? Ich bin offen dafür, Wayland-Fehler zu beheben :)
Weiß jemand btw. Welche Komponente hat die Drag-and-Drop-Unterstützung gebrochen? Chrom, Ozon, Elektron oder vscode?

@hedgepigdaniel was ist das Problem beim Schließen von Fenstern und Menüs? alles, wovon ich ausgehen könnte, wenn ich an einem Fix arbeiten wollte?

@ninja- Drag & Drop funktioniert nicht auf Chromium unter Linux, daher glaube ich nicht, dass es sich um einen Elektronen- oder vscode-Fehler handelt.

@ninja- Drag & Drop funktioniert nicht auf Chromium unter Linux, daher glaube ich nicht, dass es sich um einen Elektronen- oder vscode-Fehler handelt.

@WhyNotHugo Welche Version (oder

Ich verwende Chromium 85.0.4183.83, aber nicht die Ozone-Version. Ich habe nicht die Ressourcen, um die Ozone-Version aus dem Quellcode zu erstellen.

@WhyNotHugo wir haben gute Neuigkeiten für euch :) Ozone ist jetzt standardmäßig für Chromium gebaut (hat den Patch heute zum 3. Mal zusammengeführt 🤣 ). Bald sollte es auch Teil von Dev-Chrome-Releases werden.

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

Der Patch kann jedoch wieder zurückgesetzt werden. Wir müssen ein paar Tage warten, bis es klebt.

Ich habe vor einem Monat versucht, Chrom mit Ozon von Grund auf neu aufzubauen, und es war ein totales Durcheinander: / konnte es nicht kompilieren

@nickdiego wurde auch das

@ninja- Ich bin sehr überrascht und entschuldige mich gleichzeitig, dass du Ozon nicht kompilieren konntest. Wir, die Entwickler, tun dies jedoch jeden Tag ohne Probleme.

Welche Richtlinien haben Sie verwendet? Hast du Ozon aus dem Upstream kompiliert? Oder haben Sie Rezepte von Drittanbietern verwendet? Bitte beachten Sie, dass wir für diese nicht verantwortlich sind und sie von nachgelagerten Projekten gewartet werden.

Ich verwende Chromium 85.0.4183.83, aber nicht die Ozone-Version. Ich habe nicht die Ressourcen, um die Ozone-Version aus dem Quellcode zu erstellen.

Erwischt. Also in diesem Fall Chromium X11/XWayland. Ich habe auch einige Probleme mit XWayland unter Sway gehabt :( z.

@nickdiego wurde auch das

@ninja- Welches? Hast du es auf crbug.com gemeldet? Wir haben in letzter Zeit viele Fehler behoben, einige davon im Zusammenhang mit Popup-Fenstern.

@nickdiego Das habe ich noch nicht erlebt, nur aus diesen AUR-Kommentaren gelesen, sagte, das sei ein großer Blocker

es funktionierte wie ein Zauber hier. Electron Wayland native bringt mir viel Trost, danke (AUR + recompile vscodium)

Sehr aufgeregt hier als Electron-App-Maintainer.

Bedeutet dies, dass ein zukünftiger Electron-Build Wayland nativ sofort unterstützen wird oder muss ich etwas Besonderes für meine App tun?

Ihr seid alle unglaublich.

Ich habe vor kurzem auf Wayland mit Gnome getestet, aber es gab keinen Rahmen um das Fenster.

@MyIsaak hast du dein vorheriges Benutzerdatenverzeichnis verwendet? Ich denke, die Antwort ist ja. Sind Ihre Chrome-Einstellungen auf "Systemtitelleiste und Rahmen verwenden" aus Ihrem alten Datenverzeichnis eingestellt? Wenn ja, wird dies erwartet, da die Unterstützung von xdg-decorations auf dem Weg ist.

@msisov Ich habe das ganze Projekt gerade noch einmal neu aufgebaut und hatte immer noch das gleiche Ergebnis. Muss ich die Chrome-Einstellungen vor dem Erstellen ändern, da ich dies erst nach dem Erstellen getan habe?

Standardmäßig versucht Chromium, Ihr vorhandenes Benutzerdatenverzeichnis wiederzuverwenden.

Versuchen Sie, etwas Leeres zu verwenden. Z.B. - —user-data-dir=/tmp/blah

@msisov Ok, es hat funktioniert, zur rahmenlosen / randlosen Version zu wechseln, außer das Fenster zu schließen (es sei denn, ich "window.titleBarStyle": "custom" in settings.json . Danke für die Hilfe!

Ich habe Master-Chrom mit Ozonunterstützung ausprobiert und es auf der Gnome-Shell ausgeführt, was zu einer 100%igen CPU-Auslastung für immer führt und Chrom nicht startet :(
Es beginnt gut auf Weston :(

Betriebssystem: Ubuntu 20.04

@ninja- , bitte führe mit WAYLAND_DEBUG=1 aus und füge das Log hier ein. Möglicherweise verwandt mit https://crbug.com/1123382 . Der Fix auf dem Weg.

@msisov ja das ist es! Könntest du übrigens. den Fall richtig handhaben, wenn die Gnome-Shell Ihre Wayland-Verbindung trennt? Denn derzeit dreht es eventfd nur mit 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- , yup. Ich werde.

@ninja- , Falls Sie Chromium selbst kompilieren, ermöglicht dieser Patch das ordnungsgemäße Herunterfahren des Browsers + ermöglicht das Drucken der Fehlermeldung, die libwayland-client sendet, und dieser Patch behebt das Problem mit nicht unterstütztem Puffer. Sie können sie anwenden und überprüfen, ob das Problem behoben ist.

Bruchskala funktioniert wie ein Zauber in Fedora 32 mit GNOME

Chrome 84 vs. Chrome Dev 87 (wayland aktiviert)
chrome

Dies wird ein großer Schritt für Elektron-Apps und Wayland-Benutzer sein

Nun, ich muss zugeben, es funktioniert teilweise und hängt davon ab, welchen Wert Wayland passiert. Das Problem ist, dass wl_output keine fraktionale Skalierung unterstützt. Und wenn es 150% auf 200% rundet, erhält Chrom den "richtigen" Wert.

Andernfalls sollte xdg_output verwendet werden (Chromium berechnet die Skalierung aus der physischen und logischen Größe eines Displays). Und diese Arbeit befindet sich gerade in der Entwicklung.

Nun, ich muss zugeben, es funktioniert teilweise und hängt davon ab, welchen Wert Wayland passiert. Das Problem ist, dass wl_output keine fraktionale Skalierung unterstützt. Und wenn es 150% auf 200% rundet, erhält Chrom den "richtigen" Wert.

Ich verstehe, macht Sinn, ich habe 150% für den Test verwendet

@msisov Ihr Fix landete endlich in einem wöchentlichen Dev-Snap-Build - funktioniert großartig! Danke!

Bisher friert Chrome auf meinem PC alle paar Sekunden ein - ich habe wirklich keine Ahnung, ob das ein Kernel-, AMDGpu-, Chromium-, Xwayland- oder Gnome-Shell-Bug ist :/
Ich hoffe, dass es jetzt mit reinem Wayland besser wird.

@refi64 vielen Dank, dass

Da dies nicht mehr durch den Upstream blockiert wird, was ist der Plan für die Zukunft? Chrome 87 (jetzt in der Beta-Phase) wird mit Wayland als Ozonplattform geliefert, die mit google-chrome-beta --enable-features=UseOzonePlatform --ozone-platform=wayland aus dem offiziellen Chrome-PPA aktiviert werden kann. Derzeit electron@beta jedoch die besagte Chrome-Version unterstützt Wayland in der vorgefertigten Binärdatei nicht.

Es scheint bereits einige Bemühungen von @vially zu geben, Code umzugestalten, um zukünftige Wayland-Unterstützung in den Builds zu ermöglichen. Gibt es noch andere große Hürden?

TLDR

Electrons Chromium-Abhängigkeit weist derzeit auf eine Version hin, die beim Start auf Wayland abstürzt ( chromium#1128997 ).

Sobald dies nicht mehr der Fall ist (zB: nach den nächsten ein oder zwei Chrom-Bumps ) plane ich, die Patches von @hedgepigdaniel anzupassen und zu versuchen, um Wayland-Unterstützung in den offiziellen Electron-Builds zu ermöglichen.

Technische Details

Pre-Chromium 87-Patches

Eine der Herausforderungen beim Upstreaming der aktuellen Wayland-Patches ist auf Electrons jüngste Erhöhung von Chromium auf Version 87 zurückzuführen, die sowohl Ozone- als auch Nicht-Ozone-Codepfade im selben Build ermöglicht ( chromium#1085700 ).

Diese Electron-Wayland-Patches wurden unter der Annahme geschrieben, dass ein Build entweder ein X11-Build ( USE_X11 ) oder ein Ozone-Build ( USE_OZONE ) ist, was bis Version 87 galt, aber nicht mehr das ist Fall danach.

Das bedeutet, dass die Patches angepasst werden müssen, um der Tatsache Rechnung zu tragen, dass jetzt sowohl USE_X11 als auch USE_OZONE gleichzeitig wahr sein können.

Post Chromium 87-Patches

Mein Plan war, die vorhandenen Patches zu nehmen, sie anzupassen, indem ich die Muster von Chrom#1085700 (was ich in diesem Zweig getan ausleiht und sie dann Electron

Aufgrund eines Fehlers, der zwischenzeitlich in Chromium behoben wurde ( electron --enable-features=UseOzonePlatform --ozone-platform=wayland stürzt ab mit dem gleichen Fehler wie im Chromium-Fehlerbericht).

Das Ausführen des gleichen Electron-Builds mit Ozone/X11 ( electron --enable-features=UseOzonePlatform --ozone-platform=x11 ) scheint mit diesen Patches gut zu funktionieren, was ein gutes Zeichen ist, denke ich.

Im Moment warte ich also nur auf ein paar weitere Chromium-Beulen in Electron, die das aktuelle Problem beseitigen sollten , aber sehr wahrscheinlich ein weiteres aufdecken werden.

Und ich weiß, dass es einen weiteren geben wird, da ich Chrom#2434928 manuell

Dies ist Teil des Stacktrace, falls jemand daran interessiert ist, einen Blick darauf zu werfen. Es scheint darauf hinzudeuten , dass es auch mit der Chrom # 2343545 ?), aber ich kann es nicht mit Sicherheit sagen. Vielleicht klingelt es bei @msisov oder @nickdiego.


Stapelverfolgung

[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

Nächste Schritte

Darauf warte ich persönlich schon seit einigen Jahren und mit den jüngsten Chromium-Fortschritten sieht es so aus, als würde es jetzt wirklich eng werden .

Aber es gibt immer noch ein paar Fehler und Probleme und deshalb überwache ich sowohl Chromium als auch Electron aktiv, um zu sehen, ob ich helfen kann, dies etwas schneller zu machen. Und dem Interesse an diesem Thema nach zu urteilen, bin ich mir ziemlich sicher, dass es andere gibt, die dasselbe tun, was mich zuversichtlich macht, dass dies tatsächlich bald umgesetzt werden könnte.

Auf der positiven Seite funktionieren die Electron 10-Patches derzeit großartig für mich und ich führe Visual Studio Code und Slack seit einigen Wochen ohne Probleme nativ auf Wayland aus (obwohl vscode einen kleinen Patch benötigt , um mit Electron kompatibel zu sein 10). Bis sie also ihren Weg in die offiziellen Electron-Builds finden, denke ich, dass dies derzeit eine großartige Möglichkeit ist, Electron auf Wayland zu betreiben.

Vielen Dank für all Ihre anhaltenden Bemühungen in dieser Hinsicht.

@vially Schnelle Erinnerung beim Upstreaming dieser Patches, einschließlich des Chromium-Build-Flags RTC_USE_PIPEWIRE=true würde die Bildschirmfreigabe mit Elektronen-Apps (MS Teams/Slack/etc.) von Mutter, KDE und wlroots-basierten Compositors ermöglichen.

Dieses Flag wäre sogar nützlich, während Electron noch in XWayland läuft, aber es ist definitiv sinnvoll, es zu standardisieren, sobald Wayland-Unterstützung IMO vorgeschaltet ist.

@vially , würden Sie das Problem bitte dem Bug-Tracker von Chrom melden? Danke.

Sicher, das hatte ich vor, aber da ich mir nicht ganz sicher bin, ob es sich um einen Chromium-Bug handelt, denke ich, dass ich es zuerst ein bisschen genauer untersuchen werde.

Es ist durchaus möglich, dass dies ein Fehler in den Electron Wayland-Patches ist oder vielleicht bereits in Upstream-Chromium behoben wurde, also möchte ich diese ausschließen, bevor ich einen Chromium-Fehler erstelle.

Etwas offtopic: Ich denke, Sie müssen sich dessen bereits bewusst sein, aber wenn nicht, sieht es so aus, als ob derzeit eine Regression in Chromium 87.0.4280.11 (die in 87.0.4278.0 ), die Chromium daran hindert, Start auf Wayland: Chrom#1136287 (dupliziert von #1136252 ). Es beeinflusst Electron in keiner Weise (oder zumindest noch nicht), aber ich dachte, ich würde es erwähnen, falls Sie es noch nicht gesehen haben und Sie vielleicht bei der Triage helfen können. @msisov

@vially , sollte von https://chromium-review.googlesource.com/c/chromium/src/+/2464347 behoben worden sein.

Ein herzliches Dankeschön an alle, die sich dafür Zeit und Mühe gemacht haben! Danke @msisov und die Igalia-Leute und danke @vially.

Eine vorkompilierte Binärdatei ist auch mit electron-nightly ein paar Tagen für alle verfügbar, die dies ausprobieren möchten.


Ich konnte das Flag RTC_USE_PIPEWIRE=true nirgendwo in diesem Repo finden. Dies scheint ein logischer Schritt für (aber nicht nur) Wayland-Anwendungen und Desktop-Umgebungen zu sein. Sollte es dafür ein separates Thema geben?

Ich konnte das Flag RTC_USE_PIPEWIRE=true nirgendwo in diesem Repo finden. Dies scheint ein logischer Schritt für (aber nicht nur) Wayland-Anwendungen und Desktop-Umgebungen zu sein. Sollte es dafür ein separates Thema geben?

Wahrscheinlich hatte ich gehofft, dass es hier aufgenommen wird. Es ist eine einfache Lösung, die jederzeit durchgeführt werden kann. Ich habe erst vor kurzem herausgefunden, wo es hingehen soll (glaube ich), also werde ich morgen versuchen, eine PR zu veröffentlichen. Das Problem ist, dass ich Zeit und eine Beispiel-App brauche, um es zu testen.

@danshick Ich hatte vor, auch eine Pull-Anfrage für RTC_USE_PIPEWIRE=true einzureichen, aber der einzige Grund, warum ich dies noch nicht getan habe, ist, dass ich die Bildschirmfreigabe noch nicht mit Chrom auf meinem Computer zum Laufen bringen konnte (nach dem Aktivieren des Flags). Und ich wollte keine Pull-Anfrage für etwas stellen, das ich nicht testen kann.

Aber es wäre toll, wenn jemand, der dies testen kann, herausfinden könnte, wie man es in Electron aktiviert und einen Pull-Request sendet.

Aber es wäre toll, wenn jemand, der dies testen kann, herausfinden könnte, wie man es in Electron aktiviert und einen Pull-Request sendet.

Ich probiere es mal aus und verlinke die PR hier, wenn ich Zeit habe

Ich probiere es mal aus und verlinke die PR hier, wenn ich Zeit habe

Oh Mann, Elektron zu bekommen und aufzubauen ist eine lästige Pflicht. Ich habe endlich alles fertig, also kann ich hoffentlich die Änderung vornehmen, es bauen und in den nächsten Tagen testen.

Bearbeiten: --script-executable=/usr/bin/python2 , habe vergessen, dass gn ein treuer Python2 ist.

Edit2: ...und das war immer noch nicht genug sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py

Edit3: Ich war nicht in der Lage, Elektron zum Erstellen zu bringen, und erhalte Fehler bei der Kompilierung von Komponententestdateien, die nichts mit dem Flag rtc_use_pipewire=true tun haben sollten. Ich weiß, dass es möglich ist, weil das Elektron-Ozon-Paket im AUR dieses Flag als zusätzliches Argument für gn enthält.

../../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.


Für alle Neugierigen ist der Patch, den ich zu bauen versuche, genau dieser...

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

Ich weiß nicht, ob ich das hier einfügen sollte, aber bisher habe ich Electron unter Wayland mit electron-nightly und --enable-accelerated-mjpeg-decode --enable-accelerated-video --ignore-gpu-blacklist --enable-native-gpu-memory-buffers --enable-gpu-rasterization --enable-features=UseOzonePlatform --ozone-platform=wayland als Startargumente arbeiten lassen. Eines passiert jedoch: Es gibt in keinem Fenster Titelleisten.

Soll ich ein neues Thema eröffnen oder können wir es hier besprechen?

@juxuanu und welchen Compositor verwendest du? Ozon wurde nicht gemacht, um einfachere Compositors zu unterstützen. Wenn Sie die Gnome-Shell reproduzieren können, ist dies wahrscheinlich ein Fehler.

@ninja- Es ist Gnomen-Muschel, also Mutter. Dann haben wir wohl einen Fehler gefunden.

Verwendet Electron serverseitige oder clientseitige Dekorationen? GNOME unterstützt nur die Clientseite.

@juxuanu Das ist interessant, denn ich erlebe das gleiche bei Chromium Stable (86.x ...), das mit Ozon gebaut wurde. Dies scheint also ein Fehler zu sein, aber sicherlich keine Regression von Stable. Warum denkst du, ist das ein Fehler in Mutter? Alle anderen nativen Wayland-Anwendungen scheinen auf Gnome zu funktionieren, außer Chromium. Das sieht eher nach einem Chromium-Fehler als nach einem Mutter-Fehler aus.

Warum denkst du, ist das ein Fehler in Mutter? Alle anderen nativen Wayland-Anwendungen scheinen auf Gnome zu funktionieren, außer Chromium. Das sieht eher nach einem Chromium-Fehler als nach einem Mutter-Fehler aus.

Das liegt daran, dass Gnome beschlossen hat, serverseitige Dekorationen nicht zu unterstützen, was bedeutet, dass alle Anwendungen ihre eigenen Dekorationen zeichnen müssen (https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

Das bedeutet, dass eine der folgenden Bedingungen erfüllt sein muss, damit Electron-Fenster in Gnome "gesund" aussehen:

  • Gnome muss anfangen, serverseitige Dekorationen zu unterstützen (durch das Lesen des verlinkten Problems scheint dies unwahrscheinlich), oder
  • jemand muss Unterstützung für clientseitige Dekorationen in Electron hinzufügen

@vially Oh, ich glaube, ich habe mich falsch verstanden. Ich dachte, ich würde Chromium lesen, aber sie sprachen über Electron (weil Chromium clientseitige Dekoration macht, aber ich hatte ein ähnliches Problem).

Ich habe noch ein bisschen darüber nachgedacht und wenn man bedenkt, dass Electron bereits GTK für einige Dinge verwendet , wäre es vielleicht nicht sehr schwer, GTK auch zum Zeichnen der Titelleiste zu verwenden, wenn es in GNOME ausgeführt wird. Falls es für jemanden nützlich ist, der dies versuchen möchte, scheint Flutter dies zu tun , um die Titelleistendekorationen in GNOME bedingt zu aktivieren.

Persönliche Meinung

Ich bin kein GNOME-Benutzer, also habe ich kein Pferd in diesem Rennen, aber ich wünsche mir trotzdem, dass GNOME auf konstruktives Feedback hört und seine Position dazu überdenkt.

Oder vielleicht wird libdecoration irgendwann veröffentlicht, was dieses Problem etwas lindern könnte. Obwohl ich mir nicht sicher bin, ob das beste Ergebnis dafür ist, dass Anwendungen mit einer weiteren Bibliothek verknüpft werden müssen, damit sie in einem bestimmten Compositor (auch wenn sie etwas beliebt sind) ordnungsgemäß ausgeführt werden.

Ehrlich gesagt wäre mir lieber, dass diese ganze Fensterdekorationssache nicht in Elektron umgesetzt wird. Die GNOME-Entwickler vertreten die starke Position, dass "alles, was nicht auf seine Weise getan wird, nicht unterstützt wird".

Wenn Dekorationen auf GNOME kaputt gehen, weil die Entwickler darauf bestehen, "so sollte es sein", dann soll es so sein. Der Versuch, GNOME-Fehler zu umgehen, führt immer wieder zu Problemen oder Inkonsistenzen in Nicht-GNOME-Umgebungen.

Genügend Apps haben Feinheiten bereits im Namen des Versuchs, in GNOME richtig zu funktionieren, gebrochen. Ich würde mich eher bemühen, Umgebungen zu unterstützen, die sich um Standardisierung und DE-übergreifende Kompatibilität kümmern.

Chromium hat bereits Code zum Zeichnen der Titelleiste mit GTK:
https://chromium.googlesource.com/chromium/src/+/master/ui/gtk/native_theme_gtk.cc#695

Am Sa., 14. Nov. 2020, 16:22 Uhr schrieb Hugo Barrera [email protected] :

Ehrlich gesagt wäre mir diese ganze Fensterdeko-Sache lieber nicht
in Elektron umgesetzt. Die GNOME-Entwickler vertreten eine starke Position, dass
"Alles, was nicht auf seine Weise getan wird, wird nicht unterstützt", also muss man das umgehen
in allen Client-Apps erhöht nur die Komplexität aller nachgelagerten Apps.

Wenn Dekorationen auf GNOME beschädigt sind, weil die Entwickler darauf bestehen, dass "das ist"
so wie es sein sollte", dann soll es so sein. Versuche, GNOME-Fehler zu umgehen
bringt immer wieder Probleme oder Inkonsistenzen in Nicht-GNOME-Umgebungen.

Genug Apps haben Feinheiten bereits im Namen des Versuchs zu funktionieren gebrochen
richtig in GNOME. Ich würde mich eher bemühen, in unterstützende Umgebungen zu investieren
die sich um Standardisierung und Cross-DE-Kompatibilität kümmern.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/electron/electron/issues/10915#issuecomment-727273382 ,
oder abmelden
https://github.com/notifications/unsubscribe-auth/AAM4YSPJBCV2S5L5GULQVOTSP37J7ANCNFSM4EA2BOCA
.

Das liegt daran, dass Gnome beschlossen hat, serverseitige Dekorationen nicht zu unterstützen, was bedeutet, dass alle Anwendungen ihre eigenen Dekorationen zeichnen müssen (https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

Das bedeutet, dass eine der folgenden Bedingungen erfüllt sein muss, damit Electron-Fenster in Gnome "gesund" aussehen:

* 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

Aber in dem verlinkten Fehlerbericht weist jemand darauf hin:

Dies ist ziemlich klar, die XDG-Dekorationsspezifikation selbst erfordert Dekorationsunterstützung von den Kunden. Es erlaubt auch ausdrücklich
Compositors, um die Client-Präferenzen zu ignorieren.
Das heißt, eine Compositor-Implementierung, die immer den Modus client_side in configure-Ereignissen verwendet, wäre perfekt spezifiziert.
konform. Jeder Client, der Support beansprucht, aber keine clientseitigen Dekorationen unterstützt, ist dies nicht.

Also, selbst wenn jemand der Meinung ist, dass es vorzuziehen ist, serverseitige Dekorationen zu verwenden, scheint es, dass ein Client, um Wayland-kompatibel zu sein, CSD unterstützen muss.

Dies ist ziemlich klar, die XDG-Dekorationsspezifikation selbst erfordert Dekorationsunterstützung von den Kunden. Es erlaubt auch ausdrücklich
Compositors, um die Client-Präferenzen zu ignorieren.
Das heißt, eine Compositor-Implementierung, die immer den Modus client_side in configure-Ereignissen verwendet, wäre perfekt spezifiziert.
konform. Jeder Client, der Support beansprucht, aber keine clientseitigen Dekorationen unterstützt, ist dies nicht.

FWIW, GNOME befolgt diese Regel überhaupt nicht. Die Bestätigungsschaltfläche in Dingen wie einer Dateiauswahl wird als "Dekoration" betrachtet, so dass das Ausblenden von Client-Dekorationen die Hauptaktionsschaltfläche verbirgt.

Wenn die Spezifikation jedoch so explizit ist, ist es meiner Meinung nach sinnvoll, dass Elektron dies unterstützt.

Meine einzige Sorge ist, dass Anwendungsentwickler am Ende vergessen könnten, über die eine oder andere Alternative nachzudenken – so viel Flexibilität im Client klingt einfach nach einem netten Faktor, den Entwickler übersehen sollten.

Könnte es eine Standardimplementierung clientseitiger Dekorationen geben, die automatisch aktiviert wird, und dann eine Abmeldung für Entwickler, die etwas App-spezifischeres tun möchten? Nur damit Leute ohne serverseitige Dekoration wenigstens ein paar Grundlagen bekommen?

Der Kern wayland Protokoll hat kein Konzept für Dekorationen, Kunden sollten aways ihre eigenen titlebar ziehen , es sei denn explictly anders gesagt (zB über xdg_decoration , wenn implementiert - und denken Sie daran , eine einfache return CLIENT_SIDE wäre eine vaild Implementierung wenn auch ein sinnlos)

Ich für meinen Teil würde dafür stimmen, für solche Themen eine eigene Ausgabe zu erstellen. Der ursprüngliche Grund für dieses Problem war die Bereitstellung eines Wayland-Builds, der jetzt im Nightly Channel durchgeführt wird. Wir werden sicherlich noch mehr Probleme mit Wayland haben und jedes einzelne davon in diesem Thread zu diskutieren wird eine Menge Spam erzeugen.

Zum Thema Titelleiste erwähne ich jedoch auch, dass das Problem auch in Chrome existiert und wahrscheinlich auch dort behoben werden muss. Um dieses offene Chrome mit deaktiviertem Wayland zu reproduzieren, klicken Sie mit der rechten Maustaste auf die Titelleiste, um sicherzustellen, dass "Systemtitelleiste und Rahmen verwenden" aktiviert ist. Danach starten Sie Chrome dieses Mal mit aktiviertem Wayland neu und Sie werden sehen, dass Sie keine Titelleiste haben. Es ist wahrscheinlich am besten zu warten, bis dies im Upstream behoben ist.

rtc_use_pipewire=true wird für jeden Wayland-Build benötigt und sollte meiner Meinung nach hier diskutiert werden. @danshick Ich sehe, dass daran gearbeitet wurde.

rtc_use_pipewire=true wird für jeden Wayland-Build benötigt und sollte meiner Meinung nach hier diskutiert werden. @danshick Ich sehe, dass daran gearbeitet wurde.

Nicht erforderlich, aber sicherlich nützlich, wenn desktopCapturer funktioniert. Das Aktivieren dieses Flags hat mich zu Dutzenden von Build-Fehlern geführt, die ich durchschwimme.

Ich weiß, dass es möglich ist, mit diesem Flag zu bauen, wie es das AUR-Elektronen-Ozon-Paket hat, aber dieses Paket schlägt bei mir jedes Mal segfaults, wenn ich die desktopCapturer-API versuche, und ich konnte dieses PKGBUILD nicht ändern, um Debugsymbole beizubehalten.

In Anbetracht der Tatsache, dass diese Änderung komplizierter zu sein scheint als nur das Hinzufügen der Flagge und der Wiederaufbau, und die Tatsache, dass sie sogar von XWayland aus nützlich ist, denke ich, dass sie für eine neue Ausgabe / PR am besten geeignet ist.

Ich weiß, dass es möglich ist, mit diesem Flag zu bauen, wie es das AUR-Elektronen-Ozon-Paket hat, aber dieses Paket schlägt bei mir jedes Mal segfaults, wenn ich die desktopCapturer-API versuche, und ich konnte dieses PKGBUILD nicht ändern, um Debugsymbole beizubehalten.

Die Debugging-Symbole funktionieren für mich - dies sind die wahrscheinlich relevanten Teile meines 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)

Danke @hedgepigdaniel , ich habe die Optionen !strip und debug ausprobiert, die so aussahen, als würden sie im pkgbuild respektiert, aber einige dieser zusätzlichen Compiler-Flags sehen nützlich aus.

Ich würde dieses Gebäude immer noch gerne so bekommen, wie es sollte, direkt aus git, aber zumindest kann ich den Segfault sofort diagnostizieren.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ThorstenHans picture ThorstenHans  ·  3Kommentare

christiangenco picture christiangenco  ·  3Kommentare

rhnorskov picture rhnorskov  ·  3Kommentare

lealife picture lealife  ·  3Kommentare

sindresorhus picture sindresorhus  ·  3Kommentare