GDK Backend: wayland (HelloWorldGuiApp:91366): Gtk-WARNING **: 22:44:58.503: не удается открыть дисплей: :0

Вопрос или проблема

Я создаю простое приложение с графическим интерфейсом “Hello World” с использованием .net и sdk, и когда я конвертирую его в snap и запускаю, я получаю эту ошибку. Сначала я добавил пакет x11, но я хочу, чтобы мое приложение использовало только сервер Wayland для отображения, так как я создаю это приложение для Ubuntu Core.

GDK Backend: wayland (HelloWorldGuiApp:91366):Gtk-WARNING **: 22:44:58.503: невозможно открыть дисплей: :0

Это мой snapcraft.yaml для моего .net apk.

{
name: helloworldguiapp

base: core22

version: ‘1.0’

summary: Простое приложение Hello World с графическим интерфейсом

description: | Это простое .NET Gtk# приложение Hello World, разработанное для работы в режиме киоска с использованием ubuntu-frame.

grade: stable

confinement: strict

architectures:

build-on: amd64
build-on: arm64
apps:

helloworldguiapp:

command: HelloWorldGuiApp
daemon: simple
restart-condition: always
plugs:
  - wayland
  - opengl
  - network
  - content[graphics-core22]  # Добавил отсутствующий плагин graphics-core22
environment:
  WAYLAND_DISPLAY: wayland-0
parts:

helloworldguiapp:

plugin: dotnet
dotnet-build-configuration: Release
dotnet-self-contained-runtime-identifier: linux-x64
source: .
build-packages:
  - dotnet-sdk-8.0
stage-packages:
  - libgtk-3-0
  - libglib2.0-0
  - libwayland-client
}

Какие изменения мне нужно внести в мой файл yaml?

Я пытался запустить .net snap на Ubuntu Core и ожидал, что он откроет графический интерфейс “Hello World” на Ubuntu Core, но это привело к этому предупреждению=>

GDK Backend: wayland (HelloWorldGuiApp:91366):Gtk-WARNING **: 22:44:58.503: невозможно открыть дисплей: :0

Ответ или решение

Ошибка, с которой вы столкнулись, связана с попыткой вашего приложения открывать графический дисплей в среде Wayland в Ubuntu Core. Сообщение о предупреждении Gtk-WARNING **: cannot open display: :0 указывает на то, что ваше приложение не может подключиться к дисплею, так как на самом деле вы используете Wayland, а не X11, как это указано в вашем конфигурационном файле Snap. Давайте подробно рассмотрим, как вы можете решить эту проблему и исправить ваш файл snapcraft.yaml.

Причина проблемы

При использовании Wayland, ваша программа не может открыть дисплей по умолчанию :0, поскольку он в основном относится к X11. Вместо этого, для Wayland используется специальный переменная окружения WAYLAND_DISPLAY, которая, как правило, имеет значение wayland-0.

Рекомендуемые изменения в файле snapcraft.yaml

Чтобы обеспечить правильную работу вашего приложения в среде Wayland, внесите следующие изменения в ваш файл snapcraft.yaml:

  1. Убедитесь, что плоги указаны правильно. Плагин Wayland, который позволяет вашему приложению получить доступ к графическим ресурсам, должен быть прописан в секции plugs.

  2. Добавьте зависимость к пакету libwayland-server. Это может быть необходимо для работы вашего приложения с Wayland.

Вот пример обновленного snapcraft.yaml:

name: helloworldguiapp

base: core22

version: '1.0'

summary: A simple Hello World GUI app

description: | 
  This is a simple .NET Gtk# Hello World GUI application designed to run in kiosk mode using ubuntu-frame.

grade: stable

confinement: strict

architectures:
  - amd64
  - arm64

apps:
  helloworldguiapp:
    command: HelloWorldGuiApp
    daemon: simple
    restart-condition: always
    plugs:
      - wayland
      - opengl
      - network
      - content[graphics-core22]
    environment:
      WAYLAND_DISPLAY: wayland-0

parts:
  helloworldguiapp:
    plugin: dotnet
    dotnet-build-configuration: Release
    dotnet-self-contained-runtime-identifier: linux-x64
    source: .
    build-packages:
      - dotnet-sdk-8.0
    stage-packages:
      - libgtk-3-0
      - libglib2.0-0
      - libwayland-client
      - libwayland-server  # Добавьте эту строку

Дополнительные рекомендации

  1. Запуск приложения в правильной сессии Wayland: Убедитесь, что вы запускаете ваше приложение в сессии Wayland и что ваше приложение имеет соответствующие разрешения. Вы можете проверить, доступен ли браузер к дисплею, выполнив echo $WAYLAND_DISPLAY в терминале перед запуском приложения.

  2. Используйте отладочные сообщения: Поскольку ваше приложение может не открываться по другим причинам, полезно включить дополнительную отладочную информацию. Попробуйте использовать G_MESSAGES_DEBUG=all перед запуском вашего приложения, чтобы увидеть все сообщения от GDK/GTK.

  3. Проверьте зависимости: Убедитесь, что на целевой системе присутствуют все необходимые зависимости для работы вашего приложения под Wayland.

Выполнение этих шагов должно помочь вам устранить ошибку и успешно запустить ваше приложение на Wayland в Ubuntu Core. Если проблемы продолжаются, полезно будет обратиться к документации Gtk и разрабатывать с учетом особенностей вашей среды.

Оцените материал
Добавить комментарий

Капча загружается...