Estou criando um aplicativo GUI simples do tipo Hello World usando .net e SDK e quando o converto em um snap e o executo, recebo este erro. Primeiro, adicionei o pacote x11, mas quero que meu aplicativo use apenas o servidor Wayland para exibição, pois estou criando este aplicativo para o núcleo do Ubuntu.
GDK Backend: wayland (HelloWorldGuiApp:91366):Gtk-WARNING **: 22:44:58.503: cannot open display: :0
Este é meu snapcraft.yaml para meu apk .net.
{
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:
build-on: amd64
build-on: arm64
apps:
helloworldguiapp:
command: HelloWorldGuiApp
daemon: simple
restart-condition: always
plugs:
- wayland
- opengl
- network
- content[graphics-core22] # Added the missing graphics-core22 plug
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
}
que mudanças devo fazer no meu arquivo yaml?
Tentei executar o snap .net no núcleo do Ubuntu e esperava que ele abrisse a interface gráfica Hello World no núcleo do Ubuntu, mas resultou neste aviso=>
GDK Backend: wayland (HelloWorldGuiApp:91366):Gtk-WARNING **: 22:44:58.503: cannot open display: :0
Não sei sobre as partes .net, mas, como parece ser baseado em gtk, isso deve ser um bom começo:
https://mir-server.io/docs/packaging-a-gtk3-application-as-an-iot-gui
Parece que seu aplicativo está tentando usar portais de desktop. Mas não há sessão de desktop. Se seu aplicativo não rodar sem dbus, veja o exemplo do Qt.
Isso parece uma tentativa de acessar um
XKB_CONFIG_ROOT
fora do snap, que não funcionará em um sistema central onde os arquivos esperados não existirão. Tente adicionar isso ao seu app.environment:Talvez você também precise preparar o cenário,
xkb-data
caso isso ainda não tenha sido feito.Bem, possivelmente como resultado do exposto acima, seu aplicativo apresentou falha de segmentação.
Não há nenhuma razão óbvia para que isso não funcione. Mas os aplicativos podem precisar de alguma configuração para que funcionem com o confinamento de snap.