Forum: PC-Programmierung opensuse Leap 15.6 KDE Wayland - Programmierung


von Josef G. (bome) Benutzerseite


Lesenswert?

Habe diesen Code getestet (obere Version für clients)
https://wayland-book.com/wayland-display/creation.html
und erhalte die Meldung "Failed to connect to Wayland display".

Hat jemand eine Idee für Abhilfe?

von Thomas F. (tommf)


Lesenswert?

Hat du denn Wayland laufen oder eventuell noch X11?

von Εrnst B. (ernst)


Lesenswert?

Josef G. schrieb:
> Hat jemand eine Idee für Abhilfe?

Irgendwo geht die Information zu Wayland verloren.

Teste "echo $WAYLAND_DISPLAY" an der Konsole. Wenn das nix ausgibt, hast 
du an der Stelle kein Wayland.

Ansonsten enthält "$WAYLAND_DISPLAY" den Namen eines Sockets im 
"$XDG_RUNTIME_DIR" (also z.B. /run/user/1000/wayland-0). Diese Datei 
muss für dein Programm auch erreichbar und benutzbar sein.

Wenn diese Environment-Variablen nicht gesetzt sind, könntest du den 
Pfad zum Socket auch als Parameter zu wl_display_connect angeben, ist 
aber meist eine schlechte Idee.

Environment-Variablen vererben sich nicht (automatisch) durch sudo, su, 
docker-container usw.

von Josef G. (bome) Benutzerseite


Lesenswert?

Εrnst B. schrieb:
> Teste "echo $WAYLAND_DISPLAY" an der Konsole.
> Wenn das nix ausgibt, hast du an der Stelle kein Wayland.

Hat nichts ausgegeben, obwohl ich bei der Anmeldung (erstmals) Wayland 
ausgewählt hatte. Habe mich jetzt nochmal abgemeldet und wieder 
angemeldet. Jetzt klappt es. "echo $WAYLAND_DISPLAY" liefert jetzt 
"wayland-0" und das Programm "Connection established!".

Allerdings wird jetzt immer wieder mal der Bildschirm etwa eine Sekunde 
lang schwarz. Aber erst mal Danke. Werde vermutlich noch weitere Fragen 
haben.

von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Josef G. schrieb:
> Allerdings wird jetzt immer wieder mal der Bildschirm etwa eine Sekunde
> lang schwarz.

Das ist ein Fehler im Wayland. Das passiert bei den verschiedenen 
Screenshot-Programmen ebenfalls.

von Josef G. (bome) Benutzerseite


Lesenswert?

Habe den Code etwas umgeschrieben und erweitert:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <wayland-client.h>
4
#include <wayland-egl.h>
5
6
int main(){ struct wl_display *display;
7
            struct wl_surface *surface;
8
            struct wl_egl_window *egl_window;
9
10
    display = wl_display_connect(NULL);
11
    if (!display) { printf("Failed\n"); return(0);}
12
13
    egl_window = wl_egl_window_create(surface,480,360);
14
    wl_egl_window_destroy(egl_window);
15
16
    wl_display_disconnect(display);
17
    return(0);}

Versuch zu Compilieren mittels
1
gcc -o wltest wltest.c -lwayland-client
liefert die Fehlermeldungen

undefined reference to `wl_egl_window_create'
undefined reference to `wl_egl_window_destroy'

Weiss jemand warum? Was fehlt in der #include-Liste?

von Josef G. (bome) Benutzerseite


Lesenswert?

Hat sich erledigt.

Compilieren mit
1
gcc -o wltest wltest.c -lwayland-client -lwayland-egl
funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.