Electron: Considere fornecer uma construção para Wayland

Criado em 25 out. 2017  ·  139Comentários  ·  Fonte: electron/electron

  • Versão eletrônica: qualquer
  • Sistema operacional: Linux

Comportamento esperado

O Ubuntu mais recente vem com o Wayland, um servidor de exibição padrão.
Em dispositivos embarcados, o wayland fornece geralmente o melhor desempenho de renderização, pelo menos em comparação com o X11, onde o desempenho geralmente é muito baixo.

Comportamento real

As versões binárias atuais do linux / arm / arm64 são ótimas, mas funcionam muito mal, de acordo com minha experiência em dispositivos embarcados. Todos eles estão vinculados a libx11 / gtk, o que os torna inutilizáveis ​​para o wayland.

O libGtk pode ser construído com --wayland-backend e então o elétron pode ser construído contra ele

Eu realmente gostaria que a equipe do elétron considerasse o fornecimento de binários pré-construídos utilizáveis ​​com wayland, que abriria uma nova gama de possibilidades, especialmente em dispositivos embarcados.

blockeupstream ❌ enhancement platforlinux

Comentários muito úteis

Atualização : Nós (Igalia) estamos atualmente trabalhando na migração do Chromium / Linux legado (também conhecido como Aura / X11) para o Ozone ( crbug.com/789065 ), para que o back-end do X11 ou Wayland Ozone possa ser selecionado de acordo em tempo de execução. Além disso, há um requisito de poder alternar entre o ozônio e o legado em tempo de execução como um mecanismo de fallback no caso de algo dar errado durante este período de transição. Uma vez feito isso, e o back-end do wayland devidamente polido e testado, com sorte, ele chegará aos lançamentos oficiais do Chromium / Linux.

É ótimo saber que vscode / electron já é capaz de rodar em cima de cromo ozônio / wayland (preciso encontrar algum tempo para tentar sozinho :)). Obrigado por trabalhar e compartilhar isso.

Para mais informações, entre em contato conosco em {nickdiego, msisov} @ igalia.com

Todos 139 comentários

Depois de ler um pouco, parece que a melhor maneira de conseguir isso seria habilitar o ozônio na construção de cromo. Então, eu queria saber se alguém já fez isso ou se eu poderia obter algumas dicas para experimentar.
Além disso, existem outras partes do elétron que teriam fortes dependências do X11? GTK3 não deveria neste momento, mas está se perguntando se coisas como o Brightray o fizeram?

Uma análise mais aprofundada na construção mostra que o elétron depende do cromo libgtkui.
O libgtkui no chromium tem dependências meio fortes no X11 e não será compilado em nada além do X11 / OSX / Win neste ponto.

Não tenho certeza para que libgtkui em cromo é usado (isso não está em libgtk3).
parece que serve para criar ícones de status e indicadores de aplicativos.
Eu me pergunto se seria possível tornar isso opcional ...

Consegui corrigir o libchromiumcontent para torná-lo compilado sem o X11.
Isso exigiu alguns patches e não é realmente adequado.

O libchromiumcontent pode ser construído nesse caso com use_aura=true use_ozone=true e mais alguns parâmetros. para obter mais detalhes, consulte meus patches aqui https://github.com/LongChair/libchromiumcontent/commits/upgrade-to-chromium-61

Então comecei a construção de elétrons e a situação é semelhante. Embora a maior parte do código tenha algumas partes de #if defined(USE_AURA) , ele claramente não pode ser construído para aura com ozônio neste ponto, embora libgtk3ui não dependa disso.

Também há bits nos arquivos GYP do brightray que o tornam dependente do X11, uma versão wayland precisaria lá para vincular com as bibliotecas do gerenciador de exibição corretas ( wayland-client, ... ).

Eu acredito que a melhor maneira de torná-lo compilável sem muitos problemas no linux e sem suporte ao X11, seria tornar o uso do componente libgtk3ui opcional na compilação. Mas não conheço elétron o suficiente para saber o que isso quebraria / tornaria indisponível. parece que são principalmente ícones da barra de tarefas, o que não importa muito, já que não há barra de tarefas no weston de qualquer maneira :)

Acho que vou parar minha tentativa aqui, pois isso gera muitos patches e não houve nenhum interesse / feedback da equipe do elétron neste momento :)

Isso permitiria a execução por meio de um hack no ChromeOS também.

Isso permitiria a execução por meio de um hack no ChromeOS também.

Isso despertou meu interesse um pouco, você pode explicar como isso funcionaria?

Os dispositivos Chromeos mais recentes, aqueles que agrupam o tempo de execução do Android, usam o wayland para exibir aplicativos não Chrome.

Compilei e executei com sucesso uma demonstração de Olá wayland.

ChromeOS usa Aura & Ozone, com Wayland ou GBM / KMS.
Ainda assim, os problemas mencionados acima são os mesmos. libgtkui ainda é o principal problema para fazer uma construção, tanto no cromo quanto no elétron.

Bom progresso @LongChair !
Eu também estava investigando isso, mas preferi testar o Chrome (Chromium) para o Wayland primeiro. Eu acho que o motor V8 é a maior parte da migração, tanto no Chrome quanto no Electron.
Igalia tem uma bifurcação de cromo próxima à montante: https://github.com/Igalia/chromium
Talvez possamos integrar os patches Igalia em sua construção Electron?
Bem, ainda não consegui executar o Chromium no Wayland ...

Consegui compilar e rodar o chromium com patches wayland! Veja o script de compilação aqui: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=chromium-wayland-git

@onny : bem como eu quis dizer antes, parece que muitas das dependências do X11 ainda estão no próprio elétron porque se usa libgtkui na compilação do libcc.

Até onde eu vi, o elétron também lida com AURA como um parâmetro de construção, mas assume que aura / x11 é usado. então não há maneira de fazê-lo compilar sem o X11.

ele será executado em Xwayland / Wayland, mas isso está longe de trazer o desempenho do wayland, especialmente em embarcados.

Oh, isso é interessante:

Electron agora está usando GTK3 no branch master, será enviado na próxima versão secundária / principal.
https://github.com/electron/electron/issues/2927#issuecomment -347092515

👍

@onny : sim, é isso que o cromo 61 traz. isso é progresso.

O que estou procurando é uma versão wayland nativa completa do elétron, já que o X11 (Xwayland) tende a diminuir bastante o desempenho geral.
Para isso, há dois problemas, mesmo que o Chromium seja compilado e executado em wayland nativo, isso é o que a libgtkui importa. a dependência que a libcc está adicionando ao próprio chromium build parece depender muito do X11 neste ponto.
Além do cromo, o próprio código do elétron depende tanto do libcc: gtkui , quanto de um monte de funções X11 que não estão disponíveis no wayland nativo.

Não tenho certeza de como essa dependência do X11 poderia ser superada. Os seguintes itens seriam necessários:

  • Livre-se em elétron da necessidade licbc gtkui. ? se não for possível, faça com que o cromo torne-o compatível com X11 / Wayland
  • Livre-se das dependências obrigatórias do X11. O código de elétrons parece usar AURA, mas assume que é AURA X11, onde poderia ser AURA / Wayland. Não tenho certeza se há algum equivalente para as funções do X11 usadas.

Teria sido bom se alguns desenvolvedores de elétrons pudessem avaliar isso ou trazer algum feedback / considerações técnicas aqui :)

Alguma novidade sobre isso?

Oi! Eu só queria compartilhar que nós (da Igalia) temos suporte para Wayland nos níveis de Chromium (o navegador) e Conteúdo (a camada de incorporação) em https://github.com/Igalia/chromium/.

Portanto, dependendo de como se configura o elétron em cima de uma compilação regular de cromo / x11 hoje, pode ser muito simples experimentá-lo em cima de cromo / wayland.

As maiores diferenças são:

  • as compilações de chromium / wayland têm "ozônio" habilitado.
  • chromium / wayland é executado no topo do "serviço UI" em desenvolvimento, em chromium-land.

por favor, entre em contato comigo em \ tonikitoo em igalia dot com \, se alguém quiser acompanhar isso.

Alguém encontrou uma solução para rodar o Electron sem o X11?

@tonikitoo , você tem alguma indicação de quando seu trabalho no Wayland será integrado ao upstream?

@luispabon o trabalho está sendo desenvolvido ativamente. Estimamos que cerca de 85% já esteja na linha principal do cromo.

/ cc @msisov

@tonikitoo excelente 👍

oi @tonikitoo , alguma boa notícia sobre elétron com xwayland, wayland ou weston?

não estamos trabalhando no elétron, mas adicionando suporte para wayland no Chromium :)

crbug.com/578890

Alguma notícia sobre o suporte wayland? Eu adoraria ver o VSCode rodando nativamente no wayland ao invés do Xwayland.

@GitHubRepositoryX siga o progresso do problema crbug no comentário anterior ao seu, ele ainda está sendo atualizado ativamente.

Percebi que o cromo foi corrigido recentemente para oferecer suporte a libgtkui no ozônio (X11 e Wayland): https://chromium-review.googlesource.com/c/chromium/src/+/1744372

Isso provavelmente resolveria o problema que @LongChair mencionou, já que libgtkui ainda pode ser usado em wayland de ozônio.

Eu tentei ligar os sinalizadores de construção de ozônio / wayland e resolvi alguns problemas, e consegui fazer com que funcionasse! O código ainda precisa ser limpo, testado e separado em mudanças menores antes de fazer PRs, mas aqui está o branch: https://github.com/electron/electron/compare/master...hedgepigdaniel : ozone? Expand = 1

Conscientização de mudança de DPI (https://github.com/electron/electron/issues/11050) funciona perfeitamente como faz em builds de cromo de ozônio / wayland, e as partes ausentes estão igualmente quebradas, por exemplo, nenhuma caixa de diálogo aberta ainda (embora Eu acho que eles estão sendo trabalhados agora).

Para a maior parte, a mudança é apenas separar o uso de USE_X11 define (que anteriormente combinava linux e X11) com combinações de OS_LINUX e USE_X11 ou USE_OZONE .

USE_X11 será removido da base de código de cromo assim que estivermos nos aproximando de ter o Ozone / X11 e o Ozone / Wayland sem o X11 simples.

Além disso, para poder usar diálogos de arquivo e gtk, você deve compilar ozônio com use_glib = true habilitado. IIRC, use_gtk é definido como verdadeiro por padrão.

Portanto, é uma ideia melhor substituir if use_x11 por if !use_ozone and os_linux ? Ou outra coisa?

Vou tentar com o sinalizador use_glib. Presumo que as caixas de diálogo dos arquivos estão funcionando, então?

Sim certo. Porém, a modalidade ainda não funciona. Mas você pode usá-los.

isso seria realmente fenomenal. Talvez pudéssemos também fazer a rolagem no Linux ser tão boa quanto no Windows. (cinética)

Usuários do Arch: https://aur.archlinux.org/packages/electron-ozone

Ele está funcionando com o VSCode mais recente ( code-git só precisa ser corrigido para usar electron vez de electron6 seguindo https://github.com/microsoft/vscode/pull/ 83796)

Há alguns sintomas estranhos (provavelmente eu comentando o código que não entendo) - mas funciona. Tão nítido e com o tamanho correto!

@hedgepigdaniel , você criaria PRs com suas mudanças? Eu apenas tentei verificar e compilar o elétron usando os sinalizadores gn do seu PKGBUILD, mas recebo erros de compilação ... coisas como:

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

parece que isso pode ser corrigido por seus commits?

Atualização : Nós (Igalia) estamos atualmente trabalhando na migração do Chromium / Linux legado (também conhecido como Aura / X11) para o Ozone ( crbug.com/789065 ), para que o back-end do X11 ou Wayland Ozone possa ser selecionado de acordo em tempo de execução. Além disso, há um requisito de poder alternar entre o ozônio e o legado em tempo de execução como um mecanismo de fallback no caso de algo dar errado durante este período de transição. Uma vez feito isso, e o back-end do wayland devidamente polido e testado, com sorte, ele chegará aos lançamentos oficiais do Chromium / Linux.

É ótimo saber que vscode / electron já é capaz de rodar em cima de cromo ozônio / wayland (preciso encontrar algum tempo para tentar sozinho :)). Obrigado por trabalhar e compartilhar isso.

Para mais informações, entre em contato conosco em {nickdiego, msisov} @ igalia.com

Eu não posso acreditar que isso está finalmente acontecendo, um sonho se torna realidade ... Espero que não demore tanto para mesclar os patches ppc64le 🤞

Executando arco / oscilação, construção de ozônio-elétron parece ocorrer sem problemas, mas então, quando eu executo o elétron:

electron -i

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

por favor deixe aqui o que fazem esses dois comandos

echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR

exposição.

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

Recebo exatamente o mesmo erro que @garth usando o pacote elétron-ozônio de @hedgepigdaniel (também estou em arco / oscilação).

Na mesma máquina, o cromo-ozônio funciona bem (exceto por alguns problemas menores, como menu de contexto / seleção de entrada incorreta :

ok, tente executar o aplicativo da seguinte maneira:

WAYLAND_DISPLAY = 1 ./your-app.

Funciona agora? Caso contrário, tente executar com WAYLAND_DEBUG = 1 e compartilhe a saída. Obrigado

Recebo exatamente o mesmo erro que @garth usando o pacote elétron-ozônio de @hedgepigdaniel (também estou em arco / oscilação).

Na mesma máquina, o cromo-ozônio funciona bem (exceto por alguns problemas menores, como menu de contexto / seleção de entrada incorreta :

Eu não vi isso. Obrigado por postar este link aqui. Ele será triado e corrigido.

Sob o controle:

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

Eu também testei com o Gnome e funciona.

deveria ser

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


De acordo com meu env, deve ser wayland-0, mas tentei 0 e 1 com o mesmo efeito. Aqui está a saída de depuração.

 ~ 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

Posso ter esquecido, mas quais são as especificações do seu sistema?

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 

Suponho que você use Mesa e sua GPU em uso é a Intel, certo?

Você pode ir para ui / ozone / platform / wayland / host / wayland_connection.cc [1] e alterar isso

display_.reset(wl_display_connect(nullptr));

para

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

e, aliás, você tem cromo compilar com o sistema libwayland? isso também pode ser um problema.

Estou usando AUR, então não tenho certeza sobre a libwayland. Estou sincronizando o repo para fazer a alteração que você sugeriu.

E sim, estou executando o Mesa / Intel, já que a Nvidia só vende tijolos inertes que não fazem nada mais do que adicionar peso a um laptop Linux.

Estou me referindo a isso - https://cs.chromium.org/chromium/src/third_party/wayland/features.gni?type=cs&q=use_system_libwayland&g=0&l=8

Se você não tocou naquele argumento gn, tente configurá-lo como verdadeiro e recompilar.

@msisov Eu mudei ambos os arquivos src conforme você sugeriu e recompilei. Infelizmente, o resultado é o mesmo.

Também criei o pacote AUR electron-ozone e ele também falha, mas com o seguinte:

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

Consegui executar o Electron sob o Wayland rebaseando os patches de @hedgepigdaniel no topo da versão estável 8.2.1 .

Seria bom se @hedgepigdaniel atualizasse o pacote AUR elétron-ozônio com essas alterações (posso enviar uma solicitação de pull se isso ajudar).

Edit: O pacote AUR elétron-ozônio foi atualizado com essas mudanças.

Uma possível razão pela qual o pacote electron-ozone AUR estava falhando para alguns usuários do sway pode ter sido devido à remoção do xdg-shell v6 instável no sway v1.4 (https://github.com/swaywm/sway/ pull / 4466), que é o que estava sendo usado no Electron 7.1.8 / Chromium 78 ( cromo # 997631 ).

@vially excelente!

Criei https://github.com/hedgepigdaniel/pkgbuild-electron-ozone que é um espelho do pacote AUR - você pode enviar um PR e eu o publicarei.

O pacote foi atualizado, obrigado @vially

Pode confirmar que a nova construção funciona em balanço .

Embora não pareça funcionar com o code-git build do vscode - eu obtenho duas janelas code-git e Code - OSS ambas em branco - mas talvez isso seja um problema com o vscode .

Pode confirmar que a nova construção funciona em balanço .

Embora não pareça funcionar com o code-git build do vscode - eu obtenho duas janelas code-git e Code - OSS ambas em branco - mas talvez isso seja um problema com o vscode .

Não acho que o VSCode foi atualizado para funcionar com o elétron 8: https://github.com/microsoft/vscode/blob/304fc630f7f46db67a33def6b8dd3f8728033546/package.json#L99

Provavelmente é um erro que o pacote code-git ainda não tenha sido atualizado para depender do elétron7 ao invés do elétron.

Entendo, tentei mais alguns aplicativos, como drawio-desktop e eles parecem funcionar bem com a construção de electron-ozone .

Alguma chance de adicionar o sinalizador de construção 'rtc_use_pipewire = true' para oferecer suporte ao compartilhamento de tela do Wayland?

Quando não está no arco, quais são as opções para construir o wayland?
quando o elétron será enviado com o ozônio?

Não acho que o VSCode foi atualizado para funcionar com o elétron 8

Que pena, esse é o meu verdadeiro obstáculo para poder usar o Wayland. Não é possível usá-lo no XWyaland porque os aplicativos em escala do XWayland são muito borrados.

Eu olhei para o ramo do elétron-8 e parece que não há nada de especial nele, eles apenas superaram a versão do elétron: https://github.com/microsoft/vscode/compare/electron-8.0.x

Portanto, parece que vscode deve funcionar com o elétron 8 (mas pode haver alguns bugs, porque ele ainda está confinado em seu próprio ramo).
@nostdm, você pode verificar se funciona melhor no Xorg?

Eu tentei vscode com o electron-ozone build (versão 8.2.1 mencionada acima) e ele inicializa, mas tem alguns problemas que o fazem travar com frequência o suficiente para que eu precise volte para a versão X11 / XWayland.

YMMV e eu encorajamos você a experimentá-lo, pois é muito simples de construir. Para minha construção, acabei de substituir electron7 por electron neste PKGBUILD :

-- _electron=electron7
++ _electron=electron

A maioria dos travamentos que vi com vscode foi devido a alguns bugs que também encontrei na chromium-ozone versão 80 (a maioria deles relacionados a dicas de ferramentas). A boa notícia é que a maioria dessas falhas acabou agora na versão 81 de chromium-ozone graças ao trabalho contínuo feito pela equipe do Igalia.

Para mim, se a versão 9 do elétron (que será baseada na versão 82 do cromo: # 22932) for tão estável quanto o cromo 81 é em Wayland, é quando irei fazer a troca para executar vscode nativamente em Wayland e vala XWayland para sempre. Ou esse é o plano, pelo menos: smiley:

Alguma chance de adicionar o sinalizador de construção 'rtc_use_pipewire = true' para oferecer suporte ao compartilhamento de tela do Wayland?

Foi feito na nova versão 8.2.2.

Obrigado! Excelente notícia. Vou fazer um teste quando tiver chance.

Obrigado por trabalhar @hedgepigdaniel.
Eu escrevo um ebuild do Gentoo baseado em seu PKGBUILD:
https://github.com/12101111/overlay/blob/master/dev-util/electron/electron-8.2.3.ebuild
Ele pode ser executado no wayland (oscilação) e travar quando o vscode estiver carregando (ramificação do elétron-8.0.x).
E não pode abrir na sessão X:

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

Ozone_platform_x11 é mais instável do que ozone_platform_wayland?

@ 12101111 Ozone / X11 é WIP, então sim, ainda é bastante instável. Você poderia fornecer mais detalhes sobre o seu ambiente X? DE / WM e versão? Eu o executo diariamente em diferentes DEs / WMs sem problemas como esse.

@nickdiego Estou usando o servidor Xorg 1.20.8, mesa 20.0.4, gtk 3.24.18, sway 1.4, incrível wm 4.3.
A construção de ozônio não roda em X ou Xwayland

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

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

lldb:

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

Nunca cheguei a esse erro específico. Você consegue executar o Chromium ozone / x11 em seu env? Como está em forte desenvolvimento, seria interessante conferir as versões mais

_Como um tiro no escuro, pode estar relacionado a este problema , que no meu ambiente costumava causar travamentos apenas ao tentar abrir caixas de diálogo gtk, não na inicialização._

@nickdiego Suponho que seja porque eles usam o canal estável, que no caso deles é "" 80.0.3987.163 "". Não é confiável no caso do Ozone / X11 / Wayland, pois há mudanças constantemente indo para o porta-malas.

Tento construir o chromium-83.0.4103.15, funciona no wayland e preciso de chromium --ozone-platform=x11 para rodar no X.
Mas o elétron não pode ser lançado em 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 Sim, faz sentido.

Tento construir o chromium-83.0.4103.15, funciona em wayland e preciso de cromo --ozone-platform = x11 para rodar em X.
Mas o elétron não pode ser lançado em X:

Portanto, parece haver algum problema específico de elétron na inicialização de Gtk / Ozônio. Alguém poderia confirmar esse problema em outras configurações? Desculpe, mas no momento não tenho tempo para investigar isso (nem mesmo tenho uma construção de elétron local).

Preciso alterar ozone_auto_platforms para true?

Atualmente ozone_auto_platforms apenas define x11 como back-end padrão, pois ainda não temos detecção automática de plataforma no desktop Linux.

Eu construo o elétron 8.2.3 com CXXFLAGS = -O1 -g e recebo um backtrace com o código-fonte:

$ 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

Acho que https://github.com/chromium/chromium/commit/182d586fee5b5f9053b5702fcfc847f18ea5ec79 vai consertar isso e vou tentar retroceder essa correção para o chromium 80
Editar: há outra falha após aplicar este patch

$ 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

Alguém sabe como compilar elétron para suportar wayland nativo? (passo a passo) E execute aplicativos de elétrons em wayland (weston etc ...).
Demorei horas para compilar o elétron e falhei muitas vezes.

@caijw , você pode não ser um usuário do arch, mas você pode olhar o PKGBUILD para elétron-ozônio para obter dicas sobre como construí-lo. Meu entendimento é que ainda é muito experimental.

O vscode irá pular o elétron 8 e usar o elétron 9 na próxima versão, que é baseada no cromo 83 e funciona de forma muito estável com ozone-wayland e ozone-x11. Mas o elétron 9 ainda precisa de alguns patches para compilar com o ozônio

Os sinalizadores de ozônio integrados do Chromium estão a caminho https://bugs.chromium.org/p/chromium/issues/detail?id=1085700

Aqui está minha tentativa de WIP de rebase meu ramo wayland de elétron em v9.xx: https://github.com/electron/electron/compare/9-xy...hedgepigdaniel : arch-9? Expandir = 1

Atualmente é bom o suficiente para executar electron-quick-start , mas não muito mais. Na maioria das vezes, o sintoma é que as janelas não aparecem.

Também atualizei https://aur.archlinux.org/packages/electron-ozone/

Eu gostaria de receber ajuda se alguém puder descobrir o que está errado - fique à vontade para fazer um PR para o meu fork. Também fique à vontade para pegar meus patches e transformá-los em algo polido / mesclável - eu realmente não tenho tempo para fazer tudo sozinho.

Obrigado por seus patches @hedgepigdaniel.
Compilei e encontrei alguns problemas:

  1. Não é possível fechar a janela (o que é mencionado no AUR)
  2. execute electron-9 --ozone-platform=wayland mas a janela não aparece. electron-9 --ozone-platform=x11 funciona sem problemas
  3. vscode precisa da variável de ambiente ELECTRON_RUN_AS_NODE=1 para iniciar, mas ELECTRON_RUN_AS_NODE=1 electron-9 --ozone-platform=x11 obteve um erro: electron-9: bad option: --ozone-platform=x11
  4. Arrastar e soltar não funciona (por exemplo: explorador de arquivos ou guias em vscode)

图片

Eu fiz mais alguns testes usando os pacotes arch,

Funciona, sem janelas vazias nem nada. O principal problema que descobri é que, se você rolar usando a roda do mouse dentro dos menus do aplicativo, todas as janelas desaparecem. Acho que esse bug foi corrigido nas versões mais recentes do chromium.

@hedgepigdaniel Eu acho que seus patches no Electron estão totalmente bem para serem incluídos no upstream. Você está interessado em criar um PR para mesclar as mudanças no branch master?

Alguém tem buildfiles do Ubuntu? Estou aberto para ajudar a consertar bugs do Wayland :)
Alguém sabe btw. qual componente quebrou o suporte de arrastar e soltar? Cromo, ozônio, elétron ou vscode?

@hedgepigdaniel qual é o problema de fechar janelas e menus? qualquer coisa que eu pudesse começar se eu quisesse trabalhar em uma correção?

@ ninja- Arrastar e soltar não funciona no Chromium no Linux, então não acho que seja um bug de elétron ou vscode.

@ ninja- Arrastar e soltar não funciona no Chromium no Linux, então não acho que seja um bug de elétron ou vscode.

@WhyNotHugo Qual versão (ou head commit) do Chromium Ozone / Wayland você está usando? Eu tenho uma nova construção de tronco e DnD funciona muito bem.

Estou usando o Chromium 85.0.4183.83, mas não a versão Ozone. Não tenho recursos para construir a versão Ozone da fonte.

@WhyNotHugo , temos boas notícias para você :) O ozônio é construído por padrão para o Chromium agora (mesclou o patch pela terceira vez hoje 🤣). Em breve, ele também deverá se tornar parte dos lançamentos do dev chrome.

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

Porém, o patch pode ser revertido novamente. precisamos esperar alguns dias até que adira.

Eu tentei construir cromo com ozônio do zero um mês atrás e foi uma bagunça total: Não consegui compilar

@nickdiego também foi corrigido o problema de fechamento da janela?

@ ninja- Estou muito surpreso e arrependido ao mesmo tempo que você não conseguiu compilar o ozônio. No entanto, nós, os desenvolvedores, fazemos isso todos os dias sem problemas.

Que tipo de orientação você usou? Você compilou o ozônio a partir do rio acima? Ou você usou algumas receitas de terceiros? Observe que não somos responsáveis ​​por eles e estão em manutenção em projetos de downstream.

Estou usando o Chromium 85.0.4183.83, mas não a versão Ozone. Não tenho recursos para construir a versão Ozone da fonte.

Peguei vocês. Então, Chromium X11 / XWayland, neste caso. Também tenho enfrentado alguns problemas com o XWayland no Sway :( por exemplo: arrastar guia totalmente quebrado, etc.

@nickdiego também foi corrigido o problema de fechamento da janela?

@ ninja- Qual? Você relatou isso em crbug.com? Temos corrigido muitos bugs recentemente, vários deles relacionados a janelas pop-up.

@nickdiego Eu não experimentei isso, apenas lendo os comentários do AUR, disse que era um grande bloqueador

funcionou como um encanto aqui. Electron wayland native me traz muito conforto, obrigado (AUR + recompile vscodium)

Muito animado aqui como mantenedor de aplicativos Electron.

Isso significa que uma futura construção de elétrons oferecerá suporte nativo ao Wayland, ou terei que fazer algo especial para meu aplicativo?

Vocês são todos incríveis.

Recentemente testei no Wayland com o Gnome, porém não havia nenhuma moldura ao redor da janela.

@MyIsaak você usou seu diretório de dados de usuário anterior? Eu acho que a resposta é sim. Suas configurações do Chrome estão definidas para "usar a barra de título e as bordas do sistema" do diretório de dados antigo? Se sim, isso é esperado, porque o suporte a xdg-decorations está a caminho.

@msisov Acabei de reconstruir todo o projeto novamente e ainda

Por padrão, o chromium tentará reutilizar o diretório de dados do usuário existente.

Tente usar algo vazio. Por exemplo. - —user-data-dir = / tmp / blah

@msisov Ok, funcionou mudar para a versão sem moldura / sem "window.titleBarStyle": "custom" em settings.json . Obrigado pela ajuda!

Eu tentei master chromium com suporte a ozônio e executá-lo no gnome shell resultou em 100% de uso da CPU para sempre e o cromo não começou :(
Tudo começa bem no Weston :(

SO: Ubuntu 20.04

@ ninja-, execute com WAYLAND_DEBUG = 1 e cole o log aqui. Possivelmente relacionado a https://crbug.com/1123382 . A correção está a caminho.

@msisov sim, é isso! Você poderia btw. lidar com o caso corretamente quando o gnome shell desconecta sua conexão wayland? Porque atualmente ele continua girando eventfd com 100% cpu: /

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

@ ninja-, sim. Eu irei.

@ ninja-, No caso de você mesmo compilar o chromium, este patch torna possível desligar o navegador normalmente + torna possível imprimir a mensagem de erro que o libwayland-client envia e este patch corrige o problema com o buffer não suportado. Você pode aplicá-los e verificar se o problema foi corrigido.

Escala fracionária funcionando perfeitamente no Fedora 32 com GNOME

Chrome 84 vs Chrome Dev 87 (wayland ativado)
chrome

Este será um grande passo para aplicativos de elétrons e usuários wayland

bem, tenho que admitir que funciona em parte e depende do valor que wayland passa. O problema é que wl_output não suporta escalonamento fracionário. E se arredondar 150% a 200%, o cromo terá o valor "correto".

Caso contrário, xdg_output deve ser usado (o Chromium calculará a escala a partir do tamanho físico e lógico de uma tela). E este trabalho está em desenvolvimento agora.

bem, tenho que admitir que funciona em parte e depende do valor que wayland passa. O problema é que wl_output não suporta escalonamento fracionário. E se arredondar 150% a 200%, o cromo terá o valor "correto".

Entendo, faz sentido, estava usando 150% para o teste

@msisov sua correção finalmente pousou em uma compilação de snap de desenvolvimento semanal - funciona muito bem! obrigado!

Anteriormente, o Chrome congelava no meu pc a cada dois segundos - eu realmente não tenho ideia se isso é um bug do kernel, amdgpu, chromium, xwayland ou gnome-shell: /
Espero que seja melhor agora com o puro Wayland.

@ refi64 muito obrigado por trazer isso à tona! interessante

Como isso não está mais bloqueado pelo upstream, qual é o plano daqui para frente? Chrome 87 (agora em Beta) vem com wayland como uma plataforma de ozônio que pode ser habilitada usando google-chrome-beta --enable-features=UseOzonePlatform --ozone-platform=wayland do Chrome PPA oficial. Atualmente electron@beta no entanto, que é enviado, a versão do Chrome não suporta wayland no binário pré-construído.

Já parece haver algum esforço de @vially para refatorar algum código para permitir suporte futuro a wayland nas compilações. Existem outros obstáculos importantes?

TLDR

A dependência do atualmente apontando para uma versão que falha na inicialização do Wayland ( chromium # 1128997 ).

Uma vez que não seja mais o caso (por exemplo: após as próximas uma ou duas saliências de cromo ), estou planejando ajustar e tentar fazer o upstream dos patches de @hedgepigdaniel para habilitar o suporte a Wayland nas compilações oficiais do Electron.

Detalhes técnicos

Patches pré-Chromium 87

Um dos desafios com o upstreaming dos patches Wayland atuais é devido ao aumento recente de Chromium da Electron para a versão 87, que permite caminhos de código de ozônio e não-ozônio na mesma compilação ( cromo # 1085700 ).

Esses patches do Electron Wayland foram escritos com a suposição de que uma construção é X11 ( USE_X11 ) ou Ozônio ( USE_OZONE ), o que era verdade até a versão 87, mas não é mais o caso depois disso.

Isso significa que os patches precisam ser ajustados para levar em conta o fato de que agora USE_X11 e USE_OZONE podem ser ambos verdadeiros ao mesmo tempo.

Patches pós-Chromium 87

Meu plano era pegar os patches existentes, ajustá-los pegando emprestado os padrões do cromo # 1085700 (o que fiz neste ramo ) e, em seguida, transferi-los para o Electron.

No entanto, devido a um bug que foi corrigido nesse ínterim no Chromium ( chromium # 1128997 ), mas ainda não chegou ao Electron, meu fork do Wayland atualmente gera uma compilação que falha ao iniciar no Wayland ( electron --enable-features=UseOzonePlatform --ozone-platform=wayland travamentos com o mesmo erro do relatório de bug do Chromium).

Executar a mesma compilação do Electron com Ozone / X11 ( electron --enable-features=UseOzonePlatform --ozone-platform=x11 ) parece funcionar bem com esses patches, o que é um bom sinal, eu acho.

Então, no momento, estou apenas esperando por mais alguns solavancos de cromo no Electron que devem eliminar o problema atual , mas muito provavelmente descobrirão outro .

E eu sei que haverá outro, já que retrocedi manualmente o

Isso faz parte do rastreamento de pilha se alguém estiver interessado em dar uma olhada. Parece sugerir que também pode estar relacionado à inicialização do buffer (talvez cromo # 2343545 ?), Mas não posso dizer com certeza. Talvez toque uma campainha para @msisov ou @nickdiego.


Rastreamento de pilha

[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

Próximos passos

Eu estou esperando por isso pessoalmente há alguns anos e com o progresso recente do Chromium, parece que está ficando muito perto agora.

Mas ainda existem alguns bugs e problemas restantes e é por isso que estou monitorando ativamente o Chromium e o Electron para ver se há algo em que eu possa ajudar para que isso aconteça um pouco mais rápido. E, a julgar pelo interesse nesta questão, tenho quase certeza de que há outros que estão fazendo o mesmo, o que me dá confiança de que isso pode realmente ser implementado em breve.

Por outro lado, os patches do Electron 10 estão funcionando muito bem para mim e estou executando o Visual Studio Code e o Slack nativamente no Wayland há algumas semanas (embora o vscode exija um pequeno patch para torná-lo compatível com o Electron 10). Então, até que eles cheguem às compilações oficiais do Electron, acho que é uma ótima maneira de executar o Electron no Wayland atualmente.

Muito obrigado por todos os seus esforços contínuos nisso.

@vially Lembrete rápido ao atualizar esses patches, incluindo o sinalizador de compilação do Chromium RTC_USE_PIPEWIRE=true habilitaria o compartilhamento de tela com aplicativos de elétrons (MS Teams / Slack / etc.) de Mutter, KDE e compositores baseados em wlroots.

Essa sinalização seria útil mesmo enquanto o elétron ainda estivesse em execução no XWayland, mas definitivamente faz sentido padronizá-la uma vez que o suporte ao Wayland seja enviado à IMO.

@vialmente , você poderia relatar o problema ao rastreador de bug do chromium? obrigado.

Claro, eu estava planejando fazer isso, mas como não tenho certeza se é um bug do Chromium, acho que vou investigá-lo um pouco mais primeiro.

É totalmente possível que seja um bug nos patches do Electron Wayland ou talvez seja algo que já foi corrigido no Chromium upstream, então quero descartá-lo antes de criar um bug do Chromium.

Um pouco offtopic: acho que você já deve estar ciente disso, mas se não, parece que há uma regressão introduzida no Chromium 87.0.4280.11 (que não estava lá em 87.0.4278.0 ) que impede o Chromium de lançando na Wayland: cromo # 1136287 (duplicado por # 1136252 ). Não está afetando o Electron de forma alguma (ou pelo menos não ainda), mas pensei em mencioná-lo caso você não tenha visto e possa ajudar a fazer a triagem. @msisov

@vialmente , deveria ter sido corrigido por https://chromium-review.googlesource.com/c/chromium/src/+/2464347 .

Um grande obrigado a todos que colocaram tempo e esforço nisso! Obrigado @msisov e ao pessoal da Igalia e obrigado @vially.

Um binário pré-compilado também está disponível com electron-nightly alguns dias para todos que desejam experimentar.


Não consegui encontrar a sinalização RTC_USE_PIPEWIRE=true em nenhum lugar deste repositório. Este parece ser um passo lógico para (mas não apenas) aplicativos wayland e ambientes de desktop. Deve haver um problema separado para isso?

Não consegui encontrar a sinalização RTC_USE_PIPEWIRE=true em nenhum lugar deste repositório. Este parece ser um passo lógico para (mas não apenas) aplicativos wayland e ambientes de desktop. Deve haver um problema separado para isso?

Provavelmente, eu esperava que fosse incluído aqui. É uma solução simples que pode ser feita a qualquer momento. Recentemente, descobri para onde deveria ir (eu acho), então tentarei fazer um PR amanhã. O problema é que preciso de tempo e de um aplicativo de amostra para testá-lo.

@danshick Eu estava planejando enviar uma solicitação de pull para RTC_USE_PIPEWIRE=true também, mas a única razão de ainda não ter feito isso é porque ainda não consegui fazer o compartilhamento de tela funcionar com cromo em minha máquina (depois de habilitar o sinalizador). E eu não queria enviar uma solicitação de pull para algo que não posso testar.

Mas seria ótimo se alguém capaz de testar isso pudesse descobrir como habilitá-lo no Electron e enviar uma solicitação de pull.

Mas seria ótimo se alguém capaz de testar isso pudesse descobrir como habilitá-lo no Electron e enviar uma solicitação de pull.

Vou tentar e vincular o PR aqui quando tiver tempo

Vou tentar e vincular o PR aqui quando tiver tempo

Oh cara, obter e construir elétrons é uma tarefa árdua. Arranjei tudo, finalmente, por isso espero poder fazer a alteração, compilá-lo e testá-lo nos próximos dias.

Editar: --script-executable=/usr/bin/python2 , esqueci que gn é um robusto python2.

Edit2: ... e isso ainda não era suficiente sed -i '1s|python$|&2|' third_party/dom_distiller_js/protoc_plugins/*.py

Edit3: Não consegui fazer o electron construir, obtendo erros na compilação do arquivo de teste de unidade que não deveriam estar relacionados ao sinalizador rtc_use_pipewire=true . Sei que pode ser feito porque o pacote elétron-ozônio no AUR inclui esse sinalizador como um argumento extra para gn.

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


Para quem está curioso, o patch que estou tentando construir é apenas este ...

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

Não sei se devo colocar isso aqui, mas até agora tenho o elétron trabalhando em Wayland usando electron-nightly e --enable-accelerated-mjpeg-decode --enable-accelerated-video --ignore-gpu-blacklist --enable-native-gpu-memory-buffers --enable-gpu-rasterization --enable-features=UseOzonePlatform --ozone-platform=wayland como argumentos de lançamento. Há uma coisa acontecendo, embora: não há barras de título em nenhuma janela.

Devo abrir uma nova edição ou podemos discuti-la aqui?

@juxuanu e qual compositor você está usando? ozônio não foi feito para suportar compositores mais simples. se você pode reproduzir no gnome-shell, provavelmente é um bug.

@ ninja- É gnome-shell, então, Mutter. Acho que encontramos um bug, então.

O Electron usa decorações do lado do servidor ou do lado do cliente? GNOME suporta apenas o lado do cliente.

@juxuanu Isso é interessante porque estou experimentando o mesmo no cromo estável (86.x ...) construído com ozônio. Portanto, isso parece algum bug, mas certamente não é uma regressão do estável. Por que você acha que isso é um bug no Mutter? Todos os outros aplicativos nativos do Wayland parecem funcionar no Gnome, exceto o Chromium. Isso parece mais um bug do Chromium do que um bug do Mutter.

Por que você acha que isso é um bug no Mutter? Todos os outros aplicativos nativos do Wayland parecem funcionar no Gnome, exceto o Chromium. Isso parece mais um bug do Chromium do que um bug do Mutter.

Isso porque o Gnome decidiu não suportar decorações do lado do servidor, o que significa que todos os aplicativos devem desenhar suas próprias decorações (https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

Isso significa que, para que as janelas de elétrons pareçam "sãs" no Gnome, qualquer um dos seguintes precisa acontecer:

  • O Gnome precisa começar a oferecer suporte a decorações do lado do servidor (lendo o problema vinculado, isso parece improvável), ou
  • alguém precisa adicionar suporte para decorações do lado do cliente no Electron

@vially Oh, eu acho que

Eu pensei sobre isso um pouco mais e considerando que Electron já está usando GTK para algumas coisas, talvez não seja muito difícil usar GTK para desenhar a barra de título também quando executado no GNOME. Caso seja útil para alguém disposto a tentar, é isso que o Flutter parece estar fazendo para habilitar condicionalmente as decorações da barra de título no GNOME.

Opinião pessoal

Não sou um usuário GNOME, então não tenho um cavalo nesta corrida, mas ainda gostaria que o GNOME ouvisse comentários construtivos e reconsiderasse sua posição sobre isso.

Ou talvez a libdecoration eventualmente seja lançada, o que pode aliviar um pouco esse problema. Embora eu não tenha certeza se exigir que os aplicativos se vinculem a outra biblioteca para que sejam executados adequadamente em um compositor específico (mesmo que seja um tanto popular) é o melhor resultado para isso.

Honestamente, eu prefiro que toda essa coisa de decoração de janela não seja implementada em elétron. Os desenvolvedores do GNOME afirmam que "tudo que não é feito do jeito deles não é suportado", então ter que contornar isso em todos os aplicativos cliente apenas adiciona complexidade a todos os aplicativos posteriores.

Se as decorações estão quebradas no GNOME porque os desenvolvedores insistem "é assim que deve ser", então que seja. Tentar contornar os bugs do GNOME continua trazendo problemas ou inconsistências para ambientes não GNOME.

Muitos aplicativos já quebraram sutilezas em nome de tentar funcionar corretamente no GNOME. Prefiro que o esforço seja colocado em ambientes de suporte que se preocupam com a padronização e compatibilidade entre DE.

O Chromium já tem um código para desenhar a barra de título usando GTK:
https://chromium.googlesource.com/chromium/src/+/master/ui/gtk/native_theme_gtk.cc#695

No sábado, 14 de novembro de 2020, 4:22 PM Hugo Barrera [email protected] escreveu:

Honestamente, prefiro que toda essa coisa de decoração de janela não seja
implementado em elétron. Os desenvolvedores do GNOME assumem uma postura forte de que
"tudo o que não for feito da maneira deles não é suportado", então ter que contornar isso
em todos os aplicativos cliente apenas adiciona complexidade a todos os aplicativos downstream.

Se as decorações estão quebradas no GNOME porque os desenvolvedores insistem "isso é
do jeito que deveria ser ", então que seja. Tentando contornar os bugs do GNOME
continua trazendo problemas ou inconsistências para ambientes não GNOME.

Muitos aplicativos já quebraram sutilezas em nome da tentativa de trabalhar
corretamente no GNOME. Prefiro que o esforço seja colocado em ambientes de suporte
que se preocupam com a padronização e compatibilidade entre DE.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/electron/electron/issues/10915#issuecomment-727273382 ,
ou cancelar
https://github.com/notifications/unsubscribe-auth/AAM4YSPJBCV2S5L5GULQVOTSP37J7ANCNFSM4EA2BOCA
.

Isso porque o Gnome decidiu não suportar decorações do lado do servidor, o que significa que todos os aplicativos devem desenhar suas próprias decorações (https://gitlab.gnome.org/GNOME/mutter/-/issues/217).

Isso significa que, para que as janelas de elétrons pareçam "sãs" no Gnome, qualquer um dos seguintes precisa acontecer:

* 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

Mas, no relatório de bug vinculado, alguém aponta:

Isso é bastante claro, a própria especificação de decoração XDG exige suporte de decoração dos clientes. Também permite explicitamente
compositores para desconsiderar a preferência do cliente.
Ou seja, uma implementação de compositor que sempre usa um modo de client_side em eventos de configuração seria perfeitamente especificada
complacente. Qualquer cliente que alega suporte, mas não oferece suporte a decorações do lado do cliente, não é.

Portanto, mesmo que alguém pense que é preferível usar decorações do lado do servidor, parece que para um cliente ser compatível com o wayland, ele deve oferecer suporte a CSD.

Isso é bastante claro, a própria especificação de decoração XDG exige suporte de decoração dos clientes. Também permite explicitamente
compositores para desconsiderar a preferência do cliente.
Ou seja, uma implementação de compositor que sempre usa um modo de client_side em eventos de configuração seria perfeitamente especificada
complacente. Qualquer cliente que alega suporte, mas não oferece suporte a decorações do lado do cliente, não é.

FWIW, GNOME não segue esta regra de forma alguma. O botão de confirmação em coisas como um seletor de arquivo é considerado "decoração", portanto, ocultar as decorações do cliente oculta o botão de ação principal.

Dito isso, se a especificação for tão explícita, então acho que faz sentido para o elétron apoiar isso.

Minha única preocupação é que os desenvolvedores de aplicativos possam acabar se esquecendo de contemplar uma ou outra alternativa - tanta flexibilidade no cliente parece um bom fator para o desenvolvedor ignorar.

Pode haver uma implementação padrão de decorações do lado do cliente que é ativada automaticamente e, em seguida, um opt-out para desenvolvedores que desejam fazer algo mais específico do aplicativo? Só para que as pessoas sem decorações do lado do servidor, pelo menos, obtenham algumas noções básicas?

O protocolo central do wayland não tem nenhum conceito de decoração, os clientes devem sempre desenhar sua própria barra de título, a menos que seja explicitamente instruído de outra forma (por exemplo, via xdg_decoration se implementado - e lembre-se de que um simples return CLIENT_SIDE seria uma implementação válida, embora um inútil)

Eu, pelo menos, votaria para criar um assunto separado para tais tópicos. A razão inicial para esse problema foi fornecer uma construção de wayland que agora é feita no canal noturno. Certamente teremos mais problemas com wayland e discutir cada um deles neste tópico criará muito spam.

No entanto, em relação ao tópico da barra de título, também mencionarei que o problema também existe no Chrome e provavelmente precisará ser corrigido lá também. Para reproduzir este cromo aberto com wayland desabilitado, clique com o botão direito na barra de título para garantir que "Usar barra de título e bordas do sistema" esteja habilitado. Depois reinicie o Chrome desta vez com o wayland ativado e você verá que não há barra de título. Provavelmente, é melhor esperar que isso seja corrigido no upstream.

rtc_use_pipewire=true é necessário para qualquer construção do Wayland e acho que deve ser discutido aqui. Vejo que

rtc_use_pipewire=true é necessário para qualquer construção do Wayland e acho que deve ser discutido aqui. Vejo que

Não é necessário, mas certamente útil se o desktopCapturer funcionar. Habilitar esse sinalizador me levou a dezenas de erros de compilação pelos quais estou nadando.

Sei que é possível construir com esse sinalizador, pois o pacote elétron-ozônio AUR tem, mas esse pacote falha em mim sempre que tento a API desktopCapturer e não tenho conseguido modificar esse PKGBUILD para manter os símbolos de depuração.

Considerando que essa mudança parece mais envolvente do que apenas adicionar a bandeira e reconstruir, e o fato de ser útil até mesmo para o XWayland, acho que pode ser melhor para uma nova edição / PR.

Sei que é possível construir com esse sinalizador, pois o pacote elétron-ozônio AUR tem, mas esse pacote falha em mim sempre que tento a API desktopCapturer e não tenho conseguido modificar esse PKGBUILD para manter os símbolos de depuração.

Os símbolos de depuração funcionam para mim - estas são as partes provavelmente relevantes do meu 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)

Obrigado @hedgepigdaniel , tentei as !strip e debug , que pareciam ser respeitadas no pkgbuild, mas algumas dessas sinalizações adicionais do compilador parecem úteis.

Eu ainda gostaria de obter este edifício como deveria direto do git, mas pelo menos posso diagnosticar o segfault mais imediatamente.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

christiangenco picture christiangenco  ·  3Comentários

chonsser picture chonsser  ·  3Comentários

dangan-ronpa picture dangan-ronpa  ·  3Comentários

sindresorhus picture sindresorhus  ·  3Comentários

cniaulin picture cniaulin  ·  3Comentários