Electron: Wayland용 빌드 제공 고려

에 만든 2017년 10월 25일  ·  139코멘트  ·  출처: electron/electron

  • 전자 버전: 모든
  • 운영 체제: 리눅스

예상되는 행동

최신 Ubuntu에는 기본 디스플레이 서버인 Wayland가 함께 제공됩니다.
임베디드 장치에서 wayland는 일반적으로 성능이 일반적으로 매우 좋지 않은 X11과 비교하여 일반적으로 최고의 렌더링 성능을 제공합니다.

실제 행동

현재 linux/arm/arm64 바이너리 릴리스는 훌륭하지만 임베디드 장치에 대한 내 경험에 따르면 꽤 나쁩니다. 그들은 모두 libx11 / gtk에 연결되어 wayland에서 사용할 수 없습니다.

libGtk는 --wayland-backend로 빌드한 다음 전자를 빌드할 수 있습니다.

저는 전자 팀이 wayland와 함께 사용할 수 있는 미리 빌드된 바이너리를 제공하는 것을 고려하기를 정말로 원합니다. 이는 특히 임베디드 장치에서 새로운 가능성을 열어줄 것입니다.

blockeupstream ❌ enhancement platforlinux

가장 유용한 댓글

업데이트 : 우리(Igalia)는 현재 레거시 Chromium/Linux(일명: Aura/X11)를 Ozone( crbug.com/789065 )으로 마이그레이션하는 작업을 하고 있으므로 런타임 시 그에 따라 X11 또는 Wayland Ozone 백엔드를 선택할 수 있습니다. 또한 이 과도기 동안 문제가 발생할 경우를 대비하여 대체 메커니즘으로 런타임에 오존과 레거시 간에 전환할 수 있어야 한다는 요구 사항이 있습니다. 이 작업이 완료되고 wayland 백엔드가 제대로 연마되고 테스트되면 Chromium/Linux 공식 릴리스에 포함될 것입니다.

vscode/electron이 이미 크롬 오존/웨이랜드 위에서 실행될 수 있다는 소식을 듣게 되어 기쁩니다(혼자서 시도해 볼 시간이 필요합니다 :)). 작업하고 공유해 주셔서 감사합니다.

추가 후속 조치를 원하시면 {nickdiego,msisov}@igalia.com으로 연락해 주십시오.

모든 139 댓글

조금 읽은 후 이를 달성하는 가장 좋은 방법은 크롬 빌드에서 오존을 활성화하는 것 같습니다. 그래서 누군가가 그런 일을 한 적이 있는지 아니면 시도해 볼 수 있는 몇 가지 지침을 얻을 수 있는지 알고 싶었습니다.
또한 X11 의존성이 강한 전자의 다른 부분이 있습니까? GTK3는 이 시점에서 안되지만 brightray와 같은 것이 있는지 궁금합니다.

빌드를 자세히 살펴보면 전자가 크롬 libgtkui에 의존한다는 것을 알 수 있습니다.
크롬의 libgtkui는 X11에 대해 강한 의존성을 가지고 있으며 이 시점에서 X11/OSX/Win 이외의 다른 어떤 것에도 빌드되지 않습니다.

크롬의 libgtkui 가 무엇에 사용되는지 잘 모르겠습니다(libgtk3에는 없음).
상태 아이콘과 앱 표시기를 만들기 위한 것 같습니다.
옵션으로 해도 되는지 궁금합니다...

X11 없이 빌드하도록 libchromiumcontent를 패치했습니다.
이것은 꽤 많은 패치가 필요했고 실제로 적합하지 않습니다.

use_aura=true use_ozone=true 및 더 많은 매개변수를 사용하여 libchromiumcontent를 빌드할 수 있습니다. 자세한 내용은 여기에서 내 패치를 참조 하십시오.

그런 다음 전자 빌드를 시작했고 상황은 비슷합니다. 대부분의 코드에는 #if defined(USE_AURA) 부분이 있지만 libgtk3ui가 의존하지 않더라도 이 시점에서 오존이 있는 오라를 위해 빌드할 수는 없습니다.

또한 brightray GYP 파일에는 X11에 종속되게 만드는 비트가 있습니다. wayland 버전은 올바른 displaymanager libs( wayland-client, ... )와 연결하기 위해 거기에 필요합니다.

Linux에서 너무 많은 번거로움 없이 X11 지원 없이 빌드 가능하게 만드는 가장 좋은 방법은 libgtk3ui 구성 요소를 빌드에서 선택적으로 사용하도록 만드는 것입니다. 그러나 나는 이것이 깨지거나 사용할 수 없게 만드는 것을 알기에 전자를 충분히 알지 못합니다. 어쨌든 weston에는 작업 표시줄이 없기 때문에 대부분 작업 표시줄 아이콘인 것 같습니다. :)

너무 많은 패치를 만들고 이 시점에서 전자 팀으로부터 이에 대한 관심/피드백이 없기 때문에 여기서 시도를 중단하겠습니다. :)

이렇게 하면 ChromeOS에서도 해킹을 통해 실행할 수 있습니다.

이렇게 하면 ChromeOS에서도 해킹을 통해 실행할 수 있습니다.

그것이 제 관심을 약간 불러일으켰습니다. 어떻게 작동하는지 설명해 주시겠습니까?

Android 런타임을 번들로 제공하는 최신 chromeos 기기는 wayland를 사용하여 비 크롬 앱을 표시합니다.

Hello wayland 데모를 성공적으로 컴파일하고 실행했습니다.

ChromeOS는 Wayland 또는 GBM/KMS와 함께 Aura 및 Ozone을 사용합니다.
여전히 위에서 언급한 문제는 동일합니다. libgtkui는 여전히 크롬과 전자 모두에서 빌드를 만드는 주요 문제입니다.

좋은 진행 @LongChair !
나는 또한 그것에 대해 조사하고 있었지만 Wayland용 Chrome(Chromium)을 먼저 테스트하는 것을 선호했습니다. V8 엔진은 Chrome과 Electron 모두에서 마이그레이션의 가장 큰 부분이라고 생각합니다.
Igalia에는 업스트림에 가까운 크롬 포크가 있습니다. https://github.com/Igalia/chromium
Igalia 패치를 Electron 빌드에 통합할 수 있을까요?
글쎄, 나는 아직 Wayland에서 Chromium을 실행할 수 없었습니다 ...

wayland 패치로 크롬을 컴파일하고 실행할 수 있었습니다! 여기에서 빌드 스크립트를 참조하십시오: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=chromium-wayland-git

@onny : 이전에 말했듯이 많은 X11 종속성이 여전히 전자 자체에 있는 것 같습니다. libcc 빌드에서 libgtkui를 사용하기 때문입니다.

내가 본 한 electron은 AURA를 빌드 매개변수로 처리하지만 aura/x11이 사용된다고 가정합니다. 따라서 현재 X11 없이 빌드할 수 있는 방법이 없습니다.

Xwayland / Wayland에서 실행되지만 특히 임베디드에서 wayland 성능을 가져오는 것과는 거리가 멀습니다.

오 흥미롭네요:

Electron은 현재 마스터 브랜치에서 GTK3를 사용하고 있으며 다음 마이너/메이저 릴리스에서 제공될 예정입니다.
https://github.com/electron/electron/issues/2927#issuecomment -347092515

👍

@onny : 네, 크롬 61이 가져오는 것입니다. 이것은 진행입니다.

내가 찾고 있는 것은 X11(Xwayland)이 전체 성능을 많이 떨어뜨리는 경향이 있기 때문에 전자의 완전한 기본 wayland 버전입니다.
이를 위해 Chromium이 기본 wayland에서 빌드 및 실행되더라도 libgtkui afaik이 아닌 두 가지 문제가 있습니다. libcc가 크롬 빌드 자체에 추가하는 종속성은 이 시점에서 X11에 크게 의존하는 것 같습니다.
그런 다음 크롬을 제외하고 전자 코드 자체는 libcc:gtkui 에 의존하지만 네이티브 wayland에서는 사용할 수 없는 X11 함수도 많이 사용합니다.

X11 종속성을 어떻게 극복할 수 있는지 잘 모르겠습니다. 다음 사항이 필요합니다.

  • licbc gtkui가 필요한 전자를 제거하십시오. ? 가능하지 않은 경우 크롬을 X11/Wayland와 호환되도록 하십시오.
  • X11 필수 종속성을 제거하십시오. 전자 코드는 AURA를 사용하는 것 같지만 AURA/Wayland가 될 수 있는 AURA X11이라고 가정합니다. 사용된 X11 기능에 해당하는 기능이 있는지 확실하지 않습니다.

일부 전자 개발자가 이를 평가하거나 여기에 피드백/기술적 고려 사항을 가져올 수 있다면 좋았을 것입니다. :)

이것에 대한 소식이 있습니까?

안녕! 저는 Igalia에서 https://github.com/Igalia/chromium/의 Chromium(브라우저) 및 Content(임베딩 레이어) 수준 모두에서 Wayland를 지원한다는 사실을 공유하고 싶었습니다

따라서 오늘날 일반 크롬/x11 빌드 위에 전자를 구성하는 방법에 따라 크롬/웨이랜드 위에 시도하는 것이 매우 간단할 수 있습니다.

가장 큰 차이점은 다음과 같습니다.

  • chromium/wayland 빌드에는 "오존"이 활성화되어 있습니다.
  • chromium/wayland는 chromium-land에서 개발 중인 "UI 서비스" 위에서 실행됩니다.

이에 대한 후속 조치를 원하시면 \tonikitoo at igalia dot com\으로 연락해 주십시오.

X11 없이 Electron을 실행하는 솔루션을 찾는 사람이 있습니까?

@tonikitoo Wayland에 대한 작업이 언제 다시 업스트림에 통합될

@luispabon 작업이 활발하게 업스트림되고 있습니다. 우리는 약 85%가 이미 크롬의 메인 라인에 있는 것으로 추정합니다.

/cc @msisov

@tonikitoo 엑셀 런트 👍

안녕하세요 @tonikitoo , xwayland, wayland 또는 weston의 전자에 관한 좋은 소식이 있습니까?

우리는 전자에 대해 작업하는 것이 아니라 Chromium에서 wayland에 대한 지원을 추가합니다. :)

crbug.com/578890

웨이랜드 지원 소식은 없나요? VSCode가 Xwayland가 아닌 wayland에서 기본적으로 실행되는 것을 보고 싶습니다.

@GitHubRepositoryX 는 이전 댓글에서 crbug 문제의 진행 상황을 따르고 있으며 여전히 적극적으로 업데이트되고 있습니다.

최근에 오존(X11 및 Wayland 모두)에서 libgtkui를 지원하도록 크롬이 패치되었음을 확인했습니다. https://chromium-review.googlesource.com/c/chromium/src/+/1744372

그 가능성이 libgtkui 여전히 오존 WAYLAND에 이용 될 수 있기 때문에 @LongChair이 언급 한 문제를 해결할 수 있도록.

나는 오존/웨이랜드 빌드 플래그를 켜려고 시도했고 몇 가지 문제를 해킹했고 작동하는 지점까지 도달할 수 있었습니다! PR을 작성하기 전에 코드를 정리하고 테스트하고 더 작은 변경 사항으로 분리해야 하지만 여기에 분기가 있습니다. https://github.com/electron/electron/compare/master...hedgepigdaniel :ozone?expand= 1

DPI 변경 인식(https://github.com/electron/electron/issues/11050)은 오존/웨이랜드 크롬 빌드에서와 같이 완벽하게 작동하며, 누락된 부분도 유사하게 깨졌습니다. 예를 들어 아직 파일 열기 대화 상자가 없습니다(비록 나는 그들이 지금 작업 중이라고 생각합니다).

대부분의 경우 변경 사항은 OS_LINUXUSE_X11 또는 USE_OZONE 조합으로 USE_X11 정의(이전에는 Linux와 X11을 병합)의 사용을 분리하는 것입니다. .

USE_X11은 일반 X11이 없는 Ozone/X11 및 Ozone/Wayland에 가까워지는 즉시 크롬 코드베이스에서 제거됩니다.

또한 파일 대화 상자와 gtk를 사용하려면 use_glib=true가 활성화된 오존을 컴파일해야 합니다. IIRC에서 use_gtk는 기본적으로 true로 설정됩니다.

if use_x11if !use_ozone and os_linux 로 바꾸는 것이 더 나은 생각입니까? 또는 다른 것?

나는 use_glib 플래그로 시도할 것이다. 파일 대화 상자가 작동하는 것으로 간주합니까?

네, 그러죠. 하지만 아직까지는 이 방식이 작동하지 않습니다. 그러나 당신은 그들을 사용할 수 있습니다.

이것은 정말 환상적일 것입니다. 어쩌면 우리는 리눅스에서도 윈도우처럼 멋지게 스크롤할 수 있을 것입니다. (운동)

아치 사용자: https://aur.archlinux.org/packages/electron-ozone

최신 VSCode와 함께 작동하도록 했습니다( code-git 은 https://github.com/microsoft/vscode/pull/에 따라 electron6 대신 electron 를 사용하도록 패치해야 합니다. 83796)

몇 가지 이상한 증상이 있습니다(아마도 제가 이해하지 못하는 코드를 주석 처리함) - 하지만 작동합니다. 너무 예리하고 크기도 적당합니다!

@hedgepigdaniel 변경 사항으로 PR을 생성하시겠습니까? 방금 PKGBUILD의 gn 플래그를 사용하여 전자를 체크아웃하고 컴파일하려고 시도했지만 컴파일 오류가 발생했습니다.

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

이것들이 당신의 커밋에 의해 고칠 수 있을 것 같습니까?

업데이트 : 우리(Igalia)는 현재 레거시 Chromium/Linux(일명: Aura/X11)를 Ozone( crbug.com/789065 )으로 마이그레이션하는 작업을 하고 있으므로 런타임 시 그에 따라 X11 또는 Wayland Ozone 백엔드를 선택할 수 있습니다. 또한 이 과도기 동안 문제가 발생할 경우를 대비하여 대체 메커니즘으로 런타임에 오존과 레거시 간에 전환할 수 있어야 한다는 요구 사항이 있습니다. 이 작업이 완료되고 wayland 백엔드가 제대로 연마되고 테스트되면 Chromium/Linux 공식 릴리스에 포함될 것입니다.

vscode/electron이 이미 크롬 오존/웨이랜드 위에서 실행될 수 있다는 소식을 듣게 되어 기쁩니다(혼자서 시도해 볼 시간이 필요합니다 :)). 작업하고 공유해 주셔서 감사합니다.

추가 후속 조치를 원하시면 {nickdiego,msisov}@igalia.com으로 연락해 주십시오.

이것이 마침내 일어나고 있다는 것이 믿기지 않습니다. 꿈이 이루어집니다... ppc64le 패치를 병합하는 데 그렇게 오랜 시간이 걸리지 않기를 바랍니다 🤞

아치/스웨이를 실행하고 전자 오존을 구축하는 것이 원활하게 진행되는 것처럼 보이지만 전자를 실행할 때:

electron -i

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

이 두 명령은 무엇을 수행하는지 여기에 남겨주세요.

echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR

보여 주다.

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

나는 @hedgepigdaniel의 사용 @garth과 동일한 오류가 전자 오존 패키지 (I 아치 / 동요에도 해요).

동일한 시스템에서 chromium-ozone 은 잘 실행됩니다(상황에 맞는 메뉴/선택 입력 오류와 같은 일부 사소한 문제 제외: chromium#1052685 ).

좋아, 다음과 같은 방법으로 앱을 실행해 보세요.

WAYLAND_DISPLAY=1 ./내 앱.

지금 작동합니까? 그렇지 않은 경우 WAYLAND_DEBUG=1로 실행하고 출력을 공유하십시오. 감사 해요

나는 @hedgepigdaniel의 사용 @garth과 동일한 오류가 전자 오존 패키지 (I 아치 / 동요에도 해요).

동일한 시스템에서 chromium-ozone 은 잘 실행됩니다(상황에 맞는 메뉴/선택 입력 오류와 같은 일부 사소한 문제 제외: chromium#1052685 ).

나는 그것을 보지 못했다. 여기에 이 ​​링크를 게시해 주셔서 감사합니다. 분류되어 수정됩니다.

흔들리는 중:

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

나는 또한 Gnome으로 테스트했으며 작동합니다.

그것은해야한다

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


내 환경에 따르면 wayland-0이어야하지만 동일한 효과로 0과 1을 시도했습니다. 다음은 디버그 출력입니다.

 ~ 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

놓쳤을 수도 있지만 시스템 사양이 어떻게 되나요?

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 

Mesa를 사용하고 사용중인 GPU가 인텔이라고 가정합니다. 맞습니까?

ui/ozone/platform/wayland/host/wayland_connection.cc[1]로 이동하여 변경하시겠습니까?

display_.reset(wl_display_connect(nullptr));

에게

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

그리고 btw, 시스템 libwayland로 크롬 컴파일이 있습니까? 이것도 문제가 될 수 있습니다.

나는 AUR을 사용하고 있으므로 libwayland에 대해 잘 모르겠습니다. 제안하신 변경 사항을 적용하기 위해 저장소를 동기화하고 있습니다.

그리고 네, Nvidia는 Linux 노트북에 무게를 추가하는 것 외에는 아무것도 하지 않는 불활성 벽돌만 판매하기 때문에 Mesa/Intel을 실행하고 있습니다.

나는 이것을 언급하고 있습니다 - https://cs.chromium.org/chromium/src/third_party/wayland/features.gni?type=cs&q=use_system_libwayland&g=0&l=8

해당 gn 인수를 건드리지 않은 경우 true로 설정하고 다시 컴파일하십시오.

@msisov 제안하고 다시 컴파일한 대로 두 src 파일을 모두 변경했습니다. 불행히도 결과는 동일합니다.

나는 또한 AUR 패키지 electron-ozone 빌드했지만 실패했지만 다음과 같습니다.

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

8.2.1 안정 릴리스 위에 @hedgepigdaniel패치 를 리베이스하여 Wayland에서 Electron을 실행할 수 있었습니다 .

@hedgepigdaniel 이 이러한 변경 사항으로 전자 오존 AUR 패키지를 업데이트하면 좋을 것입니다(도움이된다면 풀 요청을 제출할 수 있습니다).

편집: 전자 오존 AUR 패키지가 이러한 변경 사항으로 업데이트되었습니다.

electron-ozone AUR 패키지가 일부 sway 사용자에게 실패한 이유 중 하나는 sway v1.4(https://github.com/swaywm/sway/)에서 불안정한 xdg-shell v6이 제거되었기 때문일 수 있습니다. pull/4466) Electron 7.1.8/Chromium 78( chromium#997631 )에서 사용되었던 것입니다.

@정말 훌륭합니다!

AUR 패키지의 미러인 https://github.com/hedgepigdaniel/pkgbuild-electron-ozone 을 만들었습니다. PR을 제출해 주시면 게시하겠습니다.

패키지가 업데이트되었습니다. @vially 감사

새 빌드가 sway에서 작동하는지 확인할 수 있습니다.

code-git vscode 빌드에서는 작동하지 않는 것 같지만 - code-gitCode - OSS 두 개의 창을 얻었습니다. 둘 다 비어 있습니다. 하지만 이는 vscode의 문제일 수 있습니다. .

새 빌드가 sway에서 작동하는지 확인할 수 있습니다.

code-git vscode 빌드에서는 작동하지 않는 것 같지만 - code-gitCode - OSS 두 개의 창을 얻었습니다. 둘 다 비어 있습니다. 하지만 이는 vscode의 문제일 수 있습니다. .

VSCode가 전자 8과 함께 작동하도록 업데이트되었다고 생각하지 않습니다. https://github.com/microsoft/vscode/blob/304fc630f7f46db67a33def6b8dd3f8728033546/package.json#L99

아마도 code-git 패키지가 아직 전자가 아닌 전자7에 의존하도록 업데이트되지 않은 실수일 것입니다.

drawio-desktop 와 같은 몇 가지 앱을 더 시도했는데 electron-ozone 빌드와 잘 작동하는 것 같습니다.

Wayland 화면 공유를 지원하기 위해 'rtc_use_pipewire=true' 빌드 플래그를 추가할 가능성이 있습니까?

아치에 있지 않을 때 wayland 빌드를 얻을 수 있는 옵션은 무엇입니까?
전자는 언제 오존과 함께 배송됩니까?

나는 VSCode가 전자 8과 함께 작동하도록 업데이트되었다고 생각하지 않습니다.

유감스럽게도 그게 Wayland를 사용할 수 있게 된 나의 진정한 장애물입니다. XWayland 확장 응용 프로그램은 매우 흐릿하므로 XWyaland에서 사용할 수 없습니다.

나는 electron-8 브랜치를 보았고 그것에 대해 특별한 것이 없는 것 같았습니다. 그들은 단지 전자 버전을 충돌시켰습니다: https://github.com/microsoft/vscode/compare/electron-8.0.x

따라서 vscode가 전자 8과 함께 작동해야 하는 것처럼 보입니다(그러나 여전히 자체 분기에 제한되어 있기 때문에 몇 가지 버그가 있을 수 있습니다).
@nostdm Xorg에서 더 잘 작동하는지 확인해 주시겠습니까?

electron-ozone 빌드(위에서 언급한 버전 8.2.1 )로 vscode 를 시도했지만 시작되지만 몇 가지 문제 가 있어서 내가 해야 할 정도로 자주 충돌을 일으켰습니다. X11/XWayland 버전으로 돌아갑니다.

YMMV와 나는 당신이 그것을 구축하는 것이 매우 간단하기 때문에 그것을 시도하기를 권장합니다. 내 빌드의 경우 이 PKGBUILD 에서 electron7electron바꿨습니다 .

-- _electron=electron7
++ _electron=electron

내가 vscode 에서 본 대부분의 충돌은 chromium-ozone 버전 80(대부분 도구 설명과 관련됨)에서 만난 몇 가지 버그로 인한 것입니다. 좋은 소식은 Igalia 팀의 지속적인 작업 덕분에 이러한 충돌의 대부분이 chromium-ozone 버전 81에서 사라졌다는 것입니다.

저에게 전자 버전 9(크롬 버전 82: #22932)가 Wayland에 있는 크롬 81만큼 안정적인 것으로 판명되면 vscode 를 실행하도록 전환하겠습니다.

Wayland 화면 공유를 지원하기 위해 'rtc_use_pipewire=true' 빌드 플래그를 추가할 가능성이 있습니까?

새로운 8.2.2 버전에서 완료되었습니다.

감사 해요! 좋은 소식입니다. 기회가 되면 테스트 해보겠습니다.

@hedgepigdaniel 작업해주셔서 감사합니다.
나는 당신의 PKGBUILD를 기반으로 Gentoo ebuild를 작성합니다:
https://github.com/12101111/overlay/blob/master/dev-util/electron/electron-8.2.3.ebuild
wayland(sway)에서 실행될 수 있으며 vscode가 로드될 때 충돌할 수 있습니다(electron-8.0.x 분기).
그리고 X 세션에서 열 수 없습니다.

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

오존_플랫폼_x11이 오존_플랫폼_웨이랜드보다 더 불안정합니까?

@12101111 Ozone/X11은 WIP이므로 네, 여전히 상당히 불안정합니다. X 환경에 대한 자세한 정보를 제공할 수 있습니까? DE/WM 및 버전? 나는 그런 문제 없이 다른 DE/WM에서 매일 실행합니다.

@nickdiego 저는 Xorg 서버 1.20.8, mesa 20.0.4, gtk 3.24.18, sway 1.4, Awesome wm 4.3을 사용하고 있습니다.
오존 빌드는 X 또는 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

나는 그 특정한 오류에 부딪힌 적이 없다. 환경에서 Chromium Ozone/x11을 실행할 수 있습니까? 개발이 활발히 진행되고 있기 때문에 최신 버전 을 확인하는 것도 재미있을 것입니다. 그렇다면 gtk/ozone 초기화에서 전자 고유의 것일 수 있습니다. 나는 또한 다른 사용자들이 보고한 문제/수정 사항을 살펴보고 싶습니다:point_up:. 그들 중 일부는 가장 최근 버전에서 안정성 향상을 관찰했습니다.

_어둠 속에서 본 문제 는 내 환경에서 시작 시가 아니라 gtk 대화 상자를 열려고 할 때만 충돌을 일으키는 있을 수 있습니다._

@nickdiego 안정적인 채널을 사용하기 때문이라고 생각합니다. 이 채널의 경우 "80.0.3987.163""입니다. Ozone/X11/Wayland의 경우 지속적으로 트렁크로 가는 변경 사항이 있으므로 신뢰할 수 없습니다.

chromium-83.0.4103.15를 빌드하려고 하는데 wayland에서 작동하고 X에서 실행하려면 chromium --ozone-platform=x11 가 필요합니다.
그러나 전자는 X에서 시작할 수 없습니다.

$ ./electron --ozone-platform=x11

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

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

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

@msisov 네, 이해가 됩니다.

chromium-83.0.4103.15를 빌드하려고 하고 wayland에서 작동하며 X에서 실행하려면 chromium --ozone-platform=x11이 필요합니다.
그러나 전자는 X에서 시작할 수 없습니다.

따라서 Gtk/Ozone 초기화에 전자 관련 문제가 있는 것 같습니다. 아무도 다른 설정에서이 문제를 확인할 수 있습니까? 죄송하지만 현재 조사할 시간이 없습니다(로컬 전자 빌드도 없음).

오존_자동_플랫폼을 true로 변경해야 합니까?

현재 ozone_auto_platforms 는 Linux 데스크톱에서 플랫폼 자동 감지가 아직 없기 때문에 x11을 기본 백엔드로 설정합니다.

CXXFLAGS= -O1 -g 하여 전자 8.2.3을 빌드하고 소스 코드로 역추적을 얻습니다.

$ 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

https://github.com/chromium/chromium/commit/182d586fee5b5f9053b5702fcfc847f18ea5ec79 가 이 문제를 해결하고 이 수정 사항을 크롬 80으로 백포트하려고 합니다.
편집: 이 패치를 적용한 후 또 다른 충돌이 있습니다.

$ 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

wayland 네이티브를 지원하기 위해 전자를 컴파일하는 방법을 아는 사람이 있습니까? (단계적으로) 그리고 wayland(weston 등...)에서 전자 앱을 실행합니다.
전자를 컴파일하는 데 몇 시간이 걸렸고 여러 번 실패했습니다.

@caijw , 당신은 아치 사용자가 아닐 수도 있지만 그것을 구축하는 데 대한 단서를 위해 전자 오존 에 대한

vscode는 다음 버전에서 전자 8을 건너뛰고 전자 9를 사용합니다. 이 버전은 크롬 83을 기반으로 하며 오존-웨이랜드 및 오존-x11에서 매우 안정적으로 작동합니다. 그러나 전자 9는 여전히 오존으로 컴파일하기 위해 일부 패치가 필요합니다.

크롬 내장 오존 플래그가 출시될 예정입니다. https://bugs.chromium.org/p/chromium/issues/detail?id=1085700

다음은 v9.xx에서 전자의 wayland 분기를 리베이스하려는 WIP 시도입니다. https://github.com/electron/electron/compare/9-xy...hedgepigdaniel :arch-9?expand=1

현재 electron-quick-start 를 실행하기에 충분하지만 다른 것은 많지 않습니다. 대부분의 증상은 창이 나타나지 않는 것입니다.

https://aur.archlinux.org/packages/electron-ozone/ 도 업데이트했습니다.

누구든지 무엇이 잘못되었는지 알아낼 수 있다면 도움을 환영합니다. 부담 없이 내 포크에 PR을 작성하십시오. 또한 패치를 자유롭게 사용하여 세련된/병합 가능한 것으로 바꿀 수 있습니다. 이 모든 작업을 직접 수행할 시간이 없습니다.

@hedgepigdaniel을 패치해주셔서 감사합니다.
나는 그것을 컴파일하고 몇 가지 문제를 발견 :

  1. 창을 닫을 수 없습니다( AUR 에 언급됨).
  2. electron-9 --ozone-platform=wayland 했지만 창이 나타나지 않습니다. electron-9 --ozone-platform=x11 는 프로브 없이 작동합니다.
  3. vscode를 시작하려면 ELECTRON_RUN_AS_NODE=1 환경 변수가 필요하지만 ELECTRON_RUN_AS_NODE=1 electron-9 --ozone-platform=x11 에 오류가 발생했습니다. electron-9: bad option: --ozone-platform=x11
  4. 끌어서 놓기가 작동하지 않음(예: 파일 탐색기 또는 vscode의 탭)

图片

아치 패키지를 사용하여 더 많은 테스트를 수행했습니다.

빈 창이나 아무것도 없이 작동합니다. 내가 찾은 주요 문제는 응용 프로그램 메뉴 내에서 마우스 휠을 사용하여 스크롤하면 모든 창이 사라진다는 것입니다. 이 버그는 최신 크롬 버전에서 수정된 것 같습니다.

@hedgepigdaniel 저는 Electron의 패치가 업스트림에 포함되기에 완전히 괜찮다고 생각합니다. 마스터 브랜치에 대한 변경 사항을 병합하기 위해 PR을 만드는 데 관심이 있으십니까?

누구든지 Ubuntu 빌드 파일을 가지고 있습니까? 저는 Wayland 버그 수정을 도울 준비가 되어 있습니다. :)
누군가 btw를 알고 있습니까? 드래그 앤 드롭 지원을 중단한 구성 요소는 무엇입니까? 크롬, 오존, 전자 또는 vscode?

@hedgepigdaniel 창과 메뉴를 닫는

@ninja- Linux의 Chromium에서는 드래그 앤 드롭이 작동하지 않으므로 전자 또는 vscode 버그라고 생각하지 않습니다.

@ninja- Linux의 Chromium에서는 드래그 앤 드롭이 작동하지 않으므로 전자 또는 vscode 버그라고 생각하지 않습니다.

@WhyNotHugo Chromium Ozone/Wayland의 어떤 버전(또는 헤드 커밋)을 사용하고 있습니까? 나는 트렁크의 새로운 빌드를 가지고 있고 DnD는 꽤 잘 작동합니다.

Chromium 85.0.4183.83을 사용하고 있지만 Ozone 버전은 사용하지 않습니다. 소스에서 오존 버전을 빌드할 리소스가 없습니다.

@WhyNotHugo 좋은 소식이 있습니다 :) 이제 Chromium용으로 Ozone이 기본적으로 빌드되었습니다(오늘 3번째로 패치 병합 🤣 ). 곧 dev chrome 릴리스의 일부가 될 것입니다.

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

그러나 패치는 다시 되돌릴 수 있습니다. 붙을 때까지 며칠을 기다려야 합니다.

나는 한 달 전에 처음부터 오존으로 크롬을 구축하려고 시도했고 그것은 완전히 엉망이었습니다 :/ 컴파일 할 수 없었습니다

@nickdiego 창 닫기 문제도 해결되었나요?

@ninja- 오존을 컴파일 하지 못해서 너무 놀랍고 죄송합니다. 하지만 우리 개발자들은 아무 문제 없이 매일 그렇게 하고 있습니다.

어떤 종류의 지침을 사용했습니까? 업스트림에서 오존을 컴파일 했습니까? 아니면 타사 레시피를 사용했습니까? 우리는 그것에 대해 책임을 지지 않으며 그들은 다운스트림 프로젝트의 유지 관리 중입니다.

Chromium 85.0.4183.83을 사용하고 있지만 Ozone 버전은 사용하지 않습니다. 소스에서 오존 버전을 빌드할 리소스가 없습니다.

잡았다. 따라서 이 경우에는 Chromium X11/XWayland입니다. 또한 Sway에서 XWayland에 몇 가지 문제가 발생했습니다.(예: 탭 드래그가 완전히 깨짐 등.

@nickdiego 창 닫기 문제도 해결되었나요?

@ninja- 어느 쪽인가요? crbug.com에 신고하셨나요? 최근에 많은 버그를 수정했으며 그 중 일부는 팝업 창과 관련되어 있습니다.

@nickdiego 나는 그것을 경험하지

그것은 여기에서 매력처럼 작동했습니다. Electron wayland 네이티브는 저에게 많은 위안을 줍니다. 덕분에 (AUR + recompile vscodium)

Electron 앱 유지 관리자로서 여기에서 매우 기쁩니다.

이것은 미래의 전자 빌드가 기본적으로 Wayland를 기본적으로 지원한다는 것을 의미합니까, 아니면 내 앱을 위해 특별한 조치를 취해야 합니까?

당신은 모두 놀랍습니다.

최근에 Gnome으로 Wayland에서 테스트했지만 창 주위에 프레임이 없었습니다.

@MyIsaak 이전 사용자 데이터 디렉토리를 사용하셨습니까? 대답은 예라고 생각합니다. 이전 데이터 디렉토리에서 "시스템 제목 표시줄 및 테두리 사용"으로 크롬 설정을 설정했습니까? 그렇다면 xdg-decorations 지원이 진행 중이기 때문에 예상되는 것입니다.

@msisov 방금 전체 프로젝트를 다시 빌드했지만 여전히 동일한 결과를 얻었습니다. 빌드 후에만 했던 것처럼 빌드하기 전에 크롬 설정을 변경해야 합니까?

기본적으로 chromium은 기존 사용자 데이터 디렉토리를 재사용하려고 시도합니다.

빈 것을 사용해보십시오. 예. - —사용자 데이터 디렉토리=/tmp/blah

@msisov Ok 창을 닫는 것을 제외하고는 프레임리스/테두리 없는 버전으로 전환할 수 "window.titleBarStyle": "custom"settings.json "window.titleBarStyle": "custom" 를 설정하여 같은 방식으로 작동했습니다. 도와 주셔서 감사합니다!

나는 오존을 지원하는 마스터 크롬을 시도했고 그놈 쉘에서 실행하면 영원히 100% CPU 사용량이 발생하고 크롬이 시작되지 않습니다.
그것은 웨스턴에서 잘 시작됩니다 :(

운영 체제: 우분투 20.04

@ninja-, WAYLAND_DEBUG=1로 실행하고 여기에 로그를 붙여넣으세요. https://crbug.com/1123382 와 관련이 있을 수

@msisov 네 바로 이것입니다! 당신은 btw 수 있습니다. gnome shell이 ​​wayland 연결을 끊을 때 케이스를 올바르게 처리합니까? 현재는 100% cpu로 eventfd를 계속 회전하기 때문에 :/

[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- 네. 그럴 게요.

@ninja- , 크롬을 직접 컴파일할 경우 이 패치를 통해 브라우저를 정상적으로 종료할 수 있으며 + libwayland-client가 보내는 오류 메시지를 출력할 수 있으며 이 패치 는 지원되지 않는 버퍼 문제를 해결합니다. 적용하고 문제가 해결되었는지 확인할 수 있습니다.

GNOME과 함께 Fedora 32에서 매력처럼 작동하는 분수 스케일

Chrome 84 대 Chrome Dev 87(wayland 활성화됨)
chrome

이것은 전자 앱과 wayland 사용자를 위한 큰 단계가 될 것입니다

글쎄, 나는 그것이 부분적으로 작동하고 wayland가 전달하는 가치에 달려 있음을 인정해야합니다. 문제는 wl_output이 분수 크기 조정을 지원하지 않는다는 것입니다. 그리고 150%에서 200%로 반올림하면 크롬은 "정확한" 값을 얻습니다.

그렇지 않으면 xdg_output을 사용해야 합니다(Chromium은 디스플레이의 물리적 및 논리적 크기에서 배율을 계산합니다). 그리고 이 작업은 현재 개발 중입니다.

글쎄, 나는 그것이 부분적으로 작동하고 wayland가 전달하는 가치에 달려 있음을 인정해야합니다. 문제는 wl_output이 분수 크기 조정을 지원하지 않는다는 것입니다. 그리고 150%에서 200%로 반올림하면 크롬은 "정확한" 값을 얻습니다.

알겠습니다. 테스트에 150%를 사용했습니다.

@msisov 수정 사항이 마침내 주간 개발 스냅 빌드에 포함되었습니다. 훌륭하게 작동합니다! 감사!

이전에는 Chrome이 몇 초마다 내 PC에서 멈췄습니다. 커널, amdgpu, chromium, xwayland 또는 gnome-shell 버그인지 정말 모르겠습니다./
이제 순수한 Wayland와 함께 더 좋아지길 바랍니다.

@refi64 올려 주셔서 감사합니다! 흥미로운

이것이 더 이상 업스트림에 의해 차단되지 않으므로 앞으로의 계획은 무엇입니까? Chrome 87(현재 베타 버전)은 공식 Chrome PPA에서 google-chrome-beta --enable-features=UseOzonePlatform --ozone-platform=wayland 를 사용하여 활성화할 수 있는 오존 플랫폼으로 wayland와 함께 제공됩니다. 현재 electron@beta 그러나 크롬 버전은 미리 빌드된 바이너리에서 wayland를 지원하지 않는다고 합니다.

이미 빌드에서 미래 WAYLAND 지원을 할 수 있도록 몇 가지 코드를 리팩토링하는 @vially에서 어떤 노력이있는 것 같습니다. 다른 큰 장애물이 있습니까?

TLDR

Electron의 Chromium 종속성현재 Wayland에서 시작할 때 충돌하는 버전을 가리키고 있습니다( chromium#1128997 ).

더 이상 그렇지 않으면(예: 다음 한두 번 크롬 범프 이후 ) 공식 Electron 빌드에서 Wayland 지원을 활성화하기 위해 @hedgepigdaniel패치 를 조정하고 업스트림하려고 할 계획입니다.

기술적 세부 사항

Chromium 87 이전 패치

현재 Wayland 패치 를 업스트림하는 것과 관련된 문제 중 하나는 동일한 빌드( chromium#1085700 )에서 오존 및 비오존 코드 경로를 모두 활성화하는 Electron의 최근 Chromium 버전 87로

이 Electron Wayland 패치는 빌드가 X11 빌드( USE_X11 ) 또는 Ozone 빌드( USE_OZONE )라는 가정 하에 작성되었으며, 이는 버전 87까지는 사실이었지만 더 이상은 아닙니다. 그 이후의 경우.

즉, 이제 USE_X11USE_OZONE 둘 다 동시에 true일 수 있다는 사실을 고려하여 패치를 조정해야 합니다.

Chromium 87 패치 이후

내 계획은 기존 패치를 가져와서 chromium#1085700 ( 이 분기 에서 수행함) 에서 패턴을 차용하여 조정한 다음 Electron으로 업스트림하는 것이었습니다.

그러나 그 동안 Chromium( chromium#1128997 )에서 수정되었지만 아직 Electron에 포함되지 않은 버그로 인해 Wayland 포크는 현재 Wayland에서 시작하지 못하는 빌드를 생성합니다( electron --enable-features=UseOzonePlatform --ozone-platform=wayland 충돌 Chromium 버그 보고서와 동일한 오류가 있음).

Ozone/X11( electron --enable-features=UseOzonePlatform --ozone-platform=x11 )로 동일한 Electron 빌드를 실행하는 것은 이 패치에서 잘 작동하는 것 같습니다. 이는 좋은 신호입니다.

그래서 지금 당장은 Electron에서 현재 문제를 제거해야 하지만 다른 문제 를 밝힐 가능성이 매우 높은 몇 가지 Chromium 범프를 기다리고 있습니다.

그리고 수동으로 chromium#2434928을 백포트 추적 으로 다른 것이 있을 것이라는 것을 알고 있습니다. 현재 왜 이런 일이 발생하는지 또는 이 문제를 해결하는 방법을 모르지만 다음 Chromium 범프에서 자동으로 해결되기를 바랍니다.

누구든지 살펴보는 데 관심이 있는 경우 이것은 스택 추적의 일부입니다. 버퍼 초기화(아마도 chromium#2343545 ?) @msisov 또는 @nickdiego에게 종을


스택 추적

[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

다음 단계

저는 개인적으로 이것을 몇 년 동안 기다려 왔으며 최근 Chromium의 발전으로 이제 정말 가까워 지고 있는 것 같습니다.

그러나 여전히 몇 가지 버그와 문제가 남아 있으므로 Chromium과 Electron을 모두 적극적으로 모니터링하여 이 문제를 약간 더 빠르게 수행하는 데 도움이 될 수 있는 항목이 있는지 확인하고

긍정적인 측면에서, Electron 10 패치는 현재 저에게 잘 작동하고 있으며 현재 몇 주 동안 문제 없이 Wayland에서 기본적으로 Visual Studio Code 및 Slack을 실행하고 있습니다(vscode가 Electron과 호환되도록 하려면 작은 패치 가 필요하지만 10). 그래서 그들이 공식 Electron 빌드에 들어갈 때까지 이것이 현재 Wayland에서 Electron을 실행하는 좋은 방법이라고 생각합니다.

이에 대한 모든 지속적인 노력에 감사드립니다.

@vially Chromium 빌드 플래그 RTC_USE_PIPEWIRE=true 포함하여 이러한 패치를 업스트림할 때 빠른 알림은 Mutter, KDE 및 wlroots 기반 합성기의 전자 앱(MS Teams/Slack 등)과 화면 공유를 활성화합니다.

그 플래그는 전자가 여전히 XWayland에서 실행되는 동안에도 실제로 유용하지만 Wayland 지원이 IMO에 업스트림되면 표준화하는 것이 확실히 합리적입니다.

@vially , 크롬의 버그 추적기에 문제를 보고하시겠습니까? 감사.

물론 그렇게 할 계획이었지만 Chromium 버그인지 완전히 확신할 수 없기 때문에 먼저 좀 더 조사해야 할 것 같습니다.

이것은 Electron Wayland 패치의 버그이거나 업스트림 Chromium에서 이미 수정된 것일 수 있으므로 Chromium 버그를 만들기 전에 제외하고 싶습니다.

약간 벗어난 주제: 이미 알고 있어야 하는 것 같지만 그렇지 않은 경우 현재 Chromium 87.0.4280.11 ( 87.0.4278.0 에는 없었음)에 Chromium을 방지하는 회귀가 도입된 것처럼 보입니다. WAYLAND에 시작 : 크롬 # 1136287 (가 중복 # 1136252 ). 어떤 식으로든 Electron에 영향을 미치지는 않지만(또는 적어도 아직까지는) 그렇지 않은 경우를 대비하여 언급하고 분류하는 데 도움이 될 수 있다고 생각했습니다. @msisov

시간과 노력을 들인 모든 분들께 진심으로 감사드립니다! @msisov 와 Igalia 여러분, 그리고 @vially에게 감사드립니다.

미리 컴파일된 바이너리도 electron-nightly sind와 함께 사용할 수 있으며 이것을 시도하려는 모든 사람을 위해 며칠 동안 사용할 수 있습니다.


이 리포지토리에서 RTC_USE_PIPEWIRE=true 플래그를 찾을 수 없습니다. 이것은 wayland 애플리케이션과 데스크탑 환경을 위한 논리적 단계처럼 보입니다. 이에 대한 별도의 문제가 있어야 합니까?

이 리포지토리에서 RTC_USE_PIPEWIRE=true 플래그를 찾을 수 없습니다. 이것은 wayland 애플리케이션과 데스크탑 환경을 위한 논리적 단계처럼 보입니다. 이에 대한 별도의 문제가 있어야 합니까?

아마도 여기에 포함될 것이라고 예상했습니다. 언제든지 할 수 있는 간단한 수정입니다. 나는 그것이 어디로 가야하는지 최근에 알아 냈으므로 (내 생각에) 내일 PR을 넣으려고 노력할 것입니다. 문제는 테스트할 시간과 샘플 앱이 필요하다는 것입니다.

@danshick 나도 RTC_USE_PIPEWIRE=true 대한 풀 리퀘스트를 제출할 계획이었지만 아직 하지 않은 유일한 이유는 아직 내 컴퓨터에서 크롬으로 화면 공유 작업을 할 수 없었기 때문입니다. (플래그를 활성화한 후). 그리고 제가 테스트할 수 없는 것에 대한 풀 리퀘스트를 제출하고 싶지 않았습니다.

그러나 이것을 테스트할 수 있는 사람이 Electron에서 이를 활성화하고 풀 리퀘스트를 제출하는 방법을 알아낼 수 있다면 좋을 것입니다.

그러나 이것을 테스트할 수 있는 사람이 Electron에서 이를 활성화하고 풀 리퀘스트를 제출하는 방법을 알아낼 수 있다면 좋을 것입니다.

시간나면 한번 해보고 PR 링크 걸어두겠습니다.

시간나면 한번 해보고 PR 링크 걸어두겠습니다.

오, 전자를 얻고 구축하는 것은 힘든 일입니다. 나는 모든 것을 끌어냈고 마침내 다음 며칠 안에 변경하고 빌드하고 테스트할 수 있기를 바랍니다.

편집: --script-executable=/usr/bin/python2 , gn이 python2 충실하다는 것을 잊었습니다.

Edit2: ...아직 충분하지 않았습니다. sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py

Edit3: 전자를 빌드할 수 없었습니다. rtc_use_pipewire=true 플래그와 관련이 없어야 하는 단위 테스트 파일 컴파일에서 오류가 발생했습니다. AUR

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


궁금하신 분들을 위해 제가 만들려고 하는 패치는 바로 이것입니다...

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

이것을 여기에 넣어야 하는지 모르겠지만 지금까지는 electron-nightly--enable-accelerated-mjpeg-decode --enable-accelerated-video --ignore-gpu-blacklist --enable-native-gpu-memory-buffers --enable-gpu-rasterization --enable-features=UseOzonePlatform --ozone-platform=wayland 를 시작 인수로 사용하여 Wayland에서 전자 작업을 하고 있습니다. 한 가지 일이 일어나고 있습니다. 모든 창에 제목 표시줄이 없습니다.

새 문제를 열어야 합니까 아니면 여기에서 논의할 수 있습니까?

@juxuanu 와 어떤 합성기를 사용하고 있습니까? 오존은 더 간단한 합성기를 지원하도록 만들어지지 않았습니다. gnome-shell에서 재현할 수 있다면 아마도 버그일 것입니다.

@ninja- gnome-shell이므로 Mutter입니다. 버그를 찾은 것 같습니다.

Electron은 서버 측 또는 클라이언트 측 장식을 사용합니까? 그놈은 클라이언트 측만 지원합니다.

@juxuanu 오존으로 구축된 안정적인 크롬(86.x...)에서 동일한 경험을 하고 있기 때문에 흥미롭습니다. 따라서 이것은 일부 버그처럼 보이지만 확실히 안정적인 회귀는 아닙니다. 이것이 Mutter의 버그라고 생각하는 이유는 무엇입니까? Chromium을 제외한 다른 모든 Wayland 기본 응용 프로그램은 Gnome에서 작동하는 것 같습니다. 그것은 Mutter 버그보다 Chromium 버그처럼 보입니다.

이것이 Mutter의 버그라고 생각하는 이유는 무엇입니까? Chromium을 제외한 다른 모든 Wayland 기본 응용 프로그램은 Gnome에서 작동하는 것 같습니다. 그것은 Mutter 버그보다 Chromium 버그처럼 보입니다.

Gnome이 서버 측 장식을 지원하지 않기로 결정했기 때문입니다. 즉, 모든 애플리케이션은 자체 장식을 그려야 합니다(https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

즉, Gnome에서 Electron 창이 "정상"으로 보이려면 다음 중 하나가 발생해야 합니다.

  • Gnome은 서버 측 장식 지원을 시작해야 합니다.
  • 누군가 Electron에서 클라이언트 측 장식에 대한 지원을 추가해야 합니다.

@vially 아 제가 잘못 읽은 것 같습니다. 나는 내가 Chromium을 읽고 있다고 생각했지만 그들은 Electron에 대해 이야기하고 있었습니다(Chromium이 클라이언트 측 장식을 하고 있지만 비슷한 문제를 겪고 있었기 때문입니다).

나는 좀 더 이것에 대해 생각 전자는 이미위한 GTK를 사용하는 것을 고려하고있는 몇 가지 어쩌면 그놈에서 실행할 때 너무 제목 표시 줄을 그리기 위해 GTK를 사용하는 것은 매우 어렵지 않을 것입니다. 이것을 시도하려는 사람에게 유용할 경우를 대비하여 Flutter 가 GNOME에서 제목 표시줄 장식을 조건부로 활성화

개인적인 의견

저는 GNOME 사용자가 아니므로 이 경주에서 말이 없지만 여전히 GNOME이 건설적인 피드백을 듣고 이에 대한 그들의 입장을 재고하기를 바랍니다.

또는 libdecoration 이 결국 릴리스되어 이 문제를 다소 완화할 수 있습니다. 특정 합성기 에서 제대로 실행되도록 하기 위해 응용 프로그램이 다른 라이브러리에 연결하도록 요구하는 것이 가장 좋은 결과인지는 확실하지 않습니다.

솔직히, 나는 이 전체 창 장식을 전자에서 구현 하지 않는 것이 좋습니다. 그놈 개발자는 "자신의 방식대로 하지 않은 것은 지원되지 않는다"는 강력한 입장을 취하므로 모든 클라이언트 앱에서 이 문제를 해결해야 하는 것은 모든 다운스트림 앱에 복잡성을 가중시킬 뿐입니다.

개발자가 "그렇게 해야 한다"고 주장하기 때문에 GNOME에서 장식이 깨졌다면 그렇게 하십시오. GNOME 버그를 해결하려고 하면 GNOME이 아닌 환경에 문제나 불일치가 계속 발생합니다.

GNOME에서 제대로 작동하려는 이름으로 이미 많은 앱이 미묘함을 깨뜨렸습니다. 차라리 표준화와 DE 간 호환성에 신경을 쓰는 환경을 지원하는 데 노력을 기울이고 싶습니다.

Chromium에는 GTK를 사용하여 제목 표시줄을 그리는 코드가 이미 있습니다.
https://chromium.googlesource.com/chromium/src/+/master/ui/gtk/native_theme_gtk.cc#695

2020년 11월 14일 토요일 오후 4시 22분에 Hugo Barrera [email protected] 작성했습니다.

솔직히, 나는 오히려이 모든 창 장식 일을하지 않을 거라고
전자로 구현. 그놈 개발자는 다음과 같은 강력한 입장을 취합니다.
"그들의 방식대로 수행되지 않은 것은 지원되지 않습니다", 그래서 그 문제를 해결해야 합니다
모든 클라이언트 앱에서 모든 다운스트림 앱에 복잡성이 추가됩니다.

개발자가 "그놈"이라고 주장하여 GNOME에서 장식이 깨지면
원래대로야." 그놈 버그를 해결하려고 노력 중입니다.
비 GNOME 환경에 문제 또는 불일치를 계속 가져옵니다.

충분한 앱이 작동하려는 이름으로 이미 미묘함을 깨뜨렸습니다.
그놈에서 제대로. 지원 환경에 노력을 기울이고 싶습니다.
표준화 및 DE 간 호환성에 관심이 있습니다.


당신이 언급되었기 때문에 이것을 받는 것입니다.
이 이메일에 직접 답장하고 GitHub에서 확인하세요.
https://github.com/electron/electron/issues/10915#issuecomment-727273382 ,
또는 구독 취소
https://github.com/notifications/unsubscribe-auth/AAM4YSPJBCV2S5L5GULQVOTSP37J7ANCNFSM4EA2BOCA
.

Gnome이 서버 측 장식을 지원하지 않기로 결정했기 때문입니다. 즉, 모든 애플리케이션은 자체 장식을 그려야 합니다(https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

즉, Gnome에서 Electron 창이 "정상"으로 보이려면 다음 중 하나가 발생해야 합니다.

* 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

그러나 연결된 버그 보고서에서 누군가가 지적합니다.

이것은 매우 분명합니다. XDG 데코레이션 사양 자체는 클라이언트의 데코레이션 지원을 요구합니다. 또한 명시적으로 허용합니다.
클라이언트 선호도를 무시하는 합성기.
즉, 구성 이벤트에서 항상 client_side 모드를 사용하는 합성기 구현은 완벽하게 지정됩니다.
준수. 지원을 요구하지만 클라이언트 측 장식을 지원하지 않는 모든 클라이언트는 지원하지 않습니다.

따라서 누군가가 서버 측 장식을 사용하는 것이 바람직하다고 생각하더라도 클라이언트가 wayland를 준수하려면 CSD를 지원해야 하는 것 같습니다.

이것은 매우 분명합니다. XDG 데코레이션 사양 자체는 클라이언트의 데코레이션 지원을 요구합니다. 또한 명시적으로 허용합니다.
클라이언트 선호도를 무시하는 합성기.
즉, 구성 이벤트에서 항상 client_side 모드를 사용하는 합성기 구현은 완벽하게 지정됩니다.
준수. 지원을 요구하지만 클라이언트 측 장식을 지원하지 않는 모든 클라이언트는 지원하지 않습니다.

FWIW, GNOME은 이 규칙을 전혀 따르지 않습니다. 파일 선택기와 같은 항목의 확인 버튼은 "장식"으로 간주되므로 클라이언트 장식을 숨기면 기본 작업 버튼이 숨겨집니다.

즉, 사양이 이렇게 명시적이라면 전자가 이를 지원하는 것이 합리적이라고 생각합니다.

내 유일한 관심사는 응용 프로그램 개발자가 결국 하나 또는 다른 대안을 고려하는 것을 잊어버릴 수 있다는 것입니다. 클라이언트의 이러한 유연성은 개발자가 간과하기 좋은 요소처럼 들립니다.

자동으로 활성화되는 클라이언트 측 장식의 기본 구현이 있을 수 있으며, 앱에 특정한 작업을 더 수행하려는 개발자를 위해 선택 해제할 수 있습니까? 서버 측 장식이 없는 사람들은 최소한 몇 가지 기본 사항을 알고 있습니까?

핵심 wayland 프로토콜에는 장식의 개념이 없습니다. 명시적으로 달리 명시되지 않는 한 클라이언트는 자신의 제목 표시줄을 멀리 그려야 합니다(예: 구현된 경우 xdg_decoration 를 통해 - 간단한 return CLIENT_SIDE 는 유효한 구현일 수 있음을 기억하십시오. 무의미)

나는 그러한 주제에 대해 별도의 문제를 만드는 데 투표할 것입니다. 이 문제의 초기 이유는 이제 야간 채널에서 수행되는 wayland 빌드를 제공하는 것이었습니다. 우리는 wayland와 관련하여 더 많은 문제에 직면하게 될 것이며 이 스레드에서 각각에 대해 논의하면 많은 스팸이 생성될 것입니다.

그러나 제목 표시줄의 주제와 관련하여 나는 이 문제가 크롬에도 존재하며 거기에서도 수정되어야 할 가능성이 있다는 점을 언급할 것입니다. wayland가 비활성화된 이 열린 크롬을 재현하려면 제목 표시줄을 마우스 오른쪽 버튼으로 클릭하여 "시스템 제목 표시줄 및 테두리 사용"이 활성화되어 있는지 확인하십시오. 그런 다음 이번에는 wayland를 활성화한 상태에서 크롬을 다시 시작하면 제목 표시줄이 없는 것을 볼 수 있습니다. 업스트림에서 이 문제가 해결될 때까지 기다리는 것이 가장 좋습니다.

rtc_use_pipewire=true 는 Wayland 빌드에 필요하며 여기에서 논의해야 한다고 생각합니다. @danshick 이 작업 중인 것으로 나타났습니다.

rtc_use_pipewire=true 는 Wayland 빌드에 필요하며 여기에서 논의해야 한다고 생각합니다. @danshick 이 작업 중인 것으로 나타났습니다.

필요하지는 않지만 desktopCapturer가 작동할 경우 확실히 유용합니다. 해당 플래그를 활성화한 결과 수십 가지 빌드 오류가 발생했습니다.

AUR 전자 오존 패키지에 있는 플래그로 빌드할 수 있다는 것을 알고 있지만 desktopCapturer API를 시도할 때마다 해당 패키지에서 segfault가 발생하고 디버깅 기호를 유지하기 위해 해당 PKGBUILD를 수정하는 데 실패했습니다.

이 변경 사항이 단순히 플래그를 추가하고 재구축하는 것보다 더 복잡하고 XWayland에서도 유용하다는 사실을 고려할 때 새로운 발행/PR에 가장 적합하지 않을까 생각합니다.

AUR 전자 오존 패키지에 있는 플래그로 빌드할 수 있다는 것을 알고 있지만 desktopCapturer API를 시도할 때마다 해당 패키지에서 segfault가 발생하고 디버깅 기호를 유지하기 위해 해당 PKGBUILD를 수정하는 데 실패했습니다.

디버깅 기호는 저에게 효과적입니다. 이것은 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)

@hedgepigdaniel 감사합니다. !stripdebug 옵션을 시도했는데 pkgbuild 에서 존중되는 것처럼 보였지만 이러한 추가 컴파일러 플래그 중 일부는 유용해 보입니다.

나는 여전히 이 건물을 git에서 바로 꺼내고 싶지만 적어도 segfault를 더 즉시 진단할 수 있습니다.

이 페이지가 도움이 되었나요?
0 / 5 - 0 등급