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?
Hat du denn Wayland laufen oder eventuell noch X11?
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.
Ε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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.