web stats
Featured image of post Solucionar el cierre de Microsoft Edge en Linux (Wayland) al descargar Archivos

Solucionar el cierre de Microsoft Edge en Linux (Wayland) al descargar Archivos

Cómo solucionar el cierre de Microsoft Edge en Linux al descargar Archivos, cuando estamos en una sesión Wayland.

Si eres usuario de escritorio de Linux, probablemente estés usando Wayland, como servidor gráfico. Y si también eres de esas personas que utilizas Microsoft Edge, es posible que te hayas topado con un problema frustrante en las últimas versiones del navegador: se cierra por completo (crashea) en el instante en que intentas descargar un archivo cualquiera.

No parece que sea algo puntual. Afortunadamente, el problema tiene un diagnóstico claro y una solución bastante sencilla. Vamos a solucionar este problema paso a paso:

¿Qué está pasando?

Cuando el navegador crashea, lo primero que debemos hacer es ejecutarlo desde una terminal para ver qué nos dice. Si ejecutas microsoft-edge y provocas el fallo, probablemente verás un registro de error similar a este de libwayland: exported surface had an invalid role

1
2
3
4
5
❯ microsoft-edge
[...errores omitidos...]
[505387:505387:1104/130749.871196:ERROR:ui/events/platform/wayland/wayland_event_watcher.cc:47] libwayland: zxdg_exporter_v2#25: error 0: exported surface had an invalid role
[...errores omitidos...]
[1]    505387 trace trap (core dumped)  microsoft-edge

Para los de la Logse: Cuando intentas descargar algo, Edge (basado en Chromium) intenta abrir el diálogo de “Guardar como” usando el protocolo nativo de Wayland. Sin embargo, le asigna un “rol” (un tipo de ventana) que tu compositor de Wayland (como Mutter en GNOME o KWin en KDE) no entiende o considera inválido. Este desacuerdo causa un error fatal y el navegador se cierra sin más explicaciones.

La Solución, Paso a Paso

La solución es forzar a Microsoft Edge a no usar Wayland de forma nativa, sino que se ejecute a través de XWayland, una capa de compatibilidad para aplicaciones X11, que existe especialmente para este tipo de situaciones.

Paso 1: Verificar la Solución

Primero, vamos a confirmar que esta es la solución. Cierra por completo todas las ventanas de Microsoft Edge que pudieras tener abiertas.

Luego, abre una terminal y ejecuta el siguiente comando:

1
microsoft-edge --ozone-platform=x11

Este comando le dice a Edge: “Ignora Wayland y ejecútate usando la capa de compatibilidad X11 (XWayland)”.

Ahora, con el navegador abierto desde esa terminal, intenta descargar un archivo. El diálogo de “Guardar como” debería aparecer sin problemas y el navegador ya no se cierra.

Nota: Es posible que en la terminal veas algunos errores nuevos, como GetVSyncParametersIfAvailable() failed. ¡No te preocupes! Estos son avisos menores no fatales, relacionados con la capa de compatibilidad, y puedes ignorarlos con seguridad. Lo importante es que el crash ha desaparecido.

Paso 2: Aplicar la Solución Permanente

Ahora que ya sabemos cual es el problema, y cómo corregirlo, vamos a hacer que este cambio sea permanente para que Edge siempre se inicie con esta configuración, sin importar si lo abres desde el icono de tu dock o desde el menú de aplicaciones.

Para ello, modificaremos el archivo .desktop (el lanzador) de la aplicación.

  • Copiar el lanzador a tu directorio local:

No vamos a editar el archivo del sistema directamente, ya que un sudo es innecesario y una actualización del navegador podría borrar nuestros cambios. En su lugar, lo copiaremos a nuestro perfil de usuario. Ten en cuenta que el nombre del archivo podría variar dependiendo de si utilizar la version estable, dev, etc.

1
cp /usr/share/applications/microsoft-edge.desktop ~/.local/share/applications/
  • Abrir el archivo para editarlo:

Ahora, abre este nuevo archivo con un editor de texto. Tomemos nano como ejemplo:

1
nano ~/.local/share/applications/microsoft-edge.desktop
  • Modificar las líneas Exec:

Dentro de este archivo, verás varias líneas que comienzan con Exec=. Estas líneas le dicen al sistema cómo ejecutar el programa. Tienes que encontrar todas las líneas Exec= que ejecuten el binario principal (como Exec=/usr/bin/microsoft-edge-stable %U o Exec=/usr/bin/microsoft-edge-stable --in-private-browsing) y añadirles el flag --ozone-platform=x11.

Hay que asegurarse de añadirlo después del comando pero antes de cualquier variable como %U o --new-window.

Ejemplo (Antes):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Desktop Entry]
...
Exec=/usr/bin/microsoft-edge-stable %U
...
[Desktop Action new-window]
...
Exec=/usr/bin/microsoft-edge-stable --new-window
...
[Desktop Action new-private-window]
...
Exec=/usr/bin/microsoft-edge-stable --in-private-browsing

Ejemplo (Después):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Desktop Entry]
...
Exec=/usr/bin/microsoft-edge-stable --ozone-platform=x11 %U
...
[Desktop Action new-window]
...
Exec=/usr/bin/microsoft-edge-stable --ozone-platform=x11 --new-window
...
[Desktop Action new-private-window]
...
Exec=/usr/bin/microsoft-edge-stable --ozone-platform=x11 --in-private-browsing
  • Guardar y Salir:

Por seguir con el ejemplo anterior, en nano, guardamos pulsando Ctrl + O (Enter) y luego salir con Ctrl + X.

¡Y eso es todo! Ahora usaremos automáticamente el lanzador modificado y completamente operativo :)

PD: Imagen de banner generada con I.A.

comments powered by Disqus
Creado con Hugo-Extended & theme Stack