Wayland är ett protokoll för bildservern. Det är tänkt att bli efterföljaren till X Window System. Du kan hitta en jämförelse mellan Wayland och Xorg på Wikipedia.
Displayservrar som använder Wayland-protokollet kallas kompositorer eftersom de också fungerar som kompositära fönsterhanterare. Nedan hittar du en lista över Wayland-kompositorer.
För bakåtkompatibilitet för att sömlöst köra äldre X11-program kan XWayland användas, vilket ger en X-server i Wayland.
- Krav
- Compositors
- Tiling
- Stacking
- Andra
- Avbildningshanterare
- GUI-bibliotek
- GTK
- Qt
- Clutter
- SDL2
- GLFW
- GLEW
- EFL
- winit
- XWayland
- Felsökning
- Färgkorrigering
- Långsamma rörelser, grafiska störningar och krascher
- Kan inte öppna display: :0 med Electron-baserade program
- Fjärrskärm
- Ingångsgrabbing i spel, fjärrskrivbord och VM-fönster
- Se även
Krav
De flesta Wayland-kompositorer fungerar endast på system som använder inställningen Kernel mode. Wayland i sig tillhandahåller inte någon grafisk miljö; för detta behöver du också en kompositör (se följande avsnitt), eller en skrivbordsmiljö som innehåller en kompositör (t.ex. GNOME eller KDE).
För att GPU-drivrutinen och Wayland-kompositorn ska vara kompatibla måste de ha stöd för samma buffert-API. Det finns två huvudsakliga API:er: GBM och EGLStreams.
Buffer API | Stöd för GPU-drivrutin | Stöd för Wayland compositor |
---|---|---|
GBM | Alla utom NVIDIA | Alla |
EGLStreams | NVIDIA | GNOME, KDE, Weston (med en tredjepartspatch) |
Compositors
Se Window manager#Types för skillnaden mellan Tiling och Stacking.
Tiling
- Cagebreak – Baserad på cage, inspirerad av ratpoison.
https://github.com/project-repo/cagebreak || cagebreakAUR cagebreak-binAUR
- Cardboard – Rullande kompositor, inspirerad av PaperWM, baserad på wlroots.
https://gitlab.com/cardboardwm/cardboard || inte paketerad? sök i AUR
- dwl – dwm-liknande Waylandkompositör baserad på wlroots.
https://github.com/djpohly/dwl || dwlAUR
- japokwm – Dynamic wayland tiling compositor based around creating layouts, based on wlroots.
https://github.com/werererer/japokwm || not packaged? search in AUR
- river – Dynamic tiling Wayland compositor inspirerad av dwm och bspwm.
https://github.com/ifreund/river || river-gitAUR
- Sway – i3-kompatibel Wayland compositor baserad på wlroots.
https://github.com/swaywm/sway || sway
- Velox – Enkel fönsterhanterare baserad på swc, inspirerad av dwm och xmonad.
https://github.com/michaelforney/velox || veloxAUR
- waymonad – Waylandkompositör inspirerad av xmonad skriven i Haskell.
https://github.com/waymonad/waymonad ||inte paketerad? sök i AUR
Stacking
- Enlightenment – Se Enlightenment#Manually. Mer information:
https://www.enlightenment.org/ || enlightenment
- Greenfield – Körs i en webbläsare och kan visa fjärrprogram.
https://greenfield.app/ || not packaged? search in AUR
- Grefsen – Qt/Wayland-compositor som ger en minimal skrivbordsmiljö.
https://github.com/ec1oud/grefsen || not packaged? search in AUR
- hikari – wlroots-baserad kompositör inspirerad av cwm som aktivt utvecklas på FreeBSD men även stöder Linux.
https://hikari.acmelabs.space/ || hikariAUR
- KDE KWin – Se KDE#Starting Plasma.
https://userbase.kde.org/KWin || kwin
- Liri Shell – Del av Liri, byggd med hjälp av QtQuick och QtCompositor som kompositor för Wayland.
https://github.com/lirios/shell || liri-shell-gitAUR
- labwc – wlroots-baserad kompositör inspirerad av Openbox.
https://github.com/johanmalm/labwc || labwc-gitAUR
- Mutter – Se GNOME#Starting.
https://gitlab.gnome.org/GNOME/mutter || mutter
- wayfire – 3D-kompositor inspirerad av Compiz och baserad på wlroots.
https://wayfire.org/ || wayfireAUR
- Weston – referensimplementation av en Wayland-kompositor.
https://gitlab.freedesktop.org/wayland/weston || weston
- wio – wlroots-baserad kompositör som syftar till att replikera utseendet och känslan hos Plan 9:s Rio-skrivbord.
https://wio-project.org/ || inte paketerad? sök i AUR
Andra
- Cage – Visar en enskild fullskärmsapplikation som en kiosk.
https://www.hjdskes.nl/projects/cage/ || cage
- Maze Compositor – Renderar fönster i en 3D-labyrint med hjälp av Qt.
https://github.com/imbavirus/mazecompositor || inte paketerad? search in AUR
- Motorcar – Wayland compositor för att utforska 3D-fönsterritning med hjälp av virtuell verklighet.
https://github.com/evil0sheep/motorcar || not packaged? search in AUR
En del av ovanstående kan ha stöd för display managers. Kontrollera /usr/share/wayland-sessions/compositor.desktop
för att se hur de startas.
Avbildningshanterare
Avbildningshanterare som listas nedan stöder start av Wayland-kompositorer. Kolumnen ”Typ” anger om displayhanteraren har stöd för att köra sig själv på Wayland eller inte.
Namn | Typ | Beskrivning |
---|---|---|
GDM | Kör sig själv på Wayland | Gnome displayhanterare. |
greetd | Inloggningsdemon | Minimal och flexibel inloggningsdemon. |
LightDM | Körs på X11 | Displayhanterare för flera skrivbord. |
Ly | Körning i konsol | TUI-displayhanterare skriven i C |
SDDM | Körning i X11 | QML-baserad displayhanterare. |
tbsm | Körning i konsolen | Enklare CLI-sessionslansering skriven i ren bash. |
GUI-bibliotek
Se detaljer på den officiella webbplatsen.
GTK
Paketen gtk3 och gtk4 har Wayland backend aktiverad. GTK kommer som standard att använda Wayland-backend, men det är möjligt att åsidosätta det till Xwayland genom att ändra en miljövariabel: GDK_BACKEND=x11
.
Qt
För att aktivera Wayland-stödet i Qt 5 eller 6 installerar du paketet qt5-wayland respektive qt6-wayland.
För att köra en Qt-applikation med Wayland-insticksmodulen använder du -platform wayland
eller QT_QPA_PLATFORM=wayland
miljövariabel. Använd QT_QPA_PLATFORM=xcb
för att tvinga fram användningen av X11 i en Wayland-session. Detta kan vara nödvändigt för vissa proprietära program som inte använder systemets implementering av Qt, t.ex. zoomAUR.
På vissa kompositorer, t.ex. sway, kan Qt-program som körs nativt sakna funktionalitet. Till exempel kommer KeepassXC inte att kunna minimera till facket. Detta kan lösas genom att installera qt5ct och ställa in QT_QPA_PLATFORMTHEME=qt5ct
innan programmet körs.
Clutter
Verktygslådan Clutter har en Wayland-backend som gör att den kan köras som en Wayland-klient. Baksidan aktiveras i clutter-paketet.
För att köra en Clutter-applikation på Wayland ställer du in CLUTTER_BACKEND=wayland
.
SDL2
För att köra en SDL2-applikation på Wayland ställer du in SDL_VIDEODRIVER=wayland
.
SDL_VIDEODRIVER=wayland
. För att tvinga programmet att köras med XWayland, sätt SDL_VIDEODRIVER=x11
.GLFW
Om du vill använda GLFW med Wayland-baksidan installerar du paketet glfw-wayland (istället för glfw-x11).
GLEW
Paketet glew-waylandAUR fungerar för närvarande fortfarande inte med många GLEW-baserade program, så det enda alternativet är att använda glew med Xwayland. Se FS#62713.
EFL
EFL har fullständigt stöd för Wayland. För att köra en EFL-applikation på Wayland, se Wayland-projektets sida.
winit
Winit är ett fönsterhanteringsbibliotek i Rust. Det kommer som standard att använda Wayland-backend, men det är möjligt att åsidosätta det till Xwayland genom att ändra en miljövariabel: WINIT_UNIX_BACKEND=x11
.
XWayland
XWayland är en X Server som körs under Wayland. Den ger bakåtkompatibilitet för äldre X11-program.
För att använda den installerar du paketet xorg-xwayland.
XWayland startas via en kompositör, så du bör kontrollera om XWayland är kompatibelt med XWayland och instruktioner om hur du startar XWayland, med den kompositör som du väljer.
- Säkerhetsfrågor: XWayland är en X Server, så den har inte samma säkerhetsfunktioner som Wayland!
- För tillfället stöder den proprietära drivrutinen från Nvidia inte GPU-acceleration för XWayland. Se denna eller denna pull request för status för stöd för XWayland.
Felsökning
Färgkorrigering
Se Bakgrundsbelysning#Färgkorrigering.
Långsamma rörelser, grafiska störningar och krascher
Användare av gnome-shell kan uppleva visningsproblem när de byter till Wayland från X. En av grundorsakerna kan vara den CLUTTER_PAINT=disable-clipped-redraws:disable-culling
som du själv har ställt in för Xorg-baserad gnome-shell. Försök bara att ta bort den från /etc/environment
eller andra rc-filer för att se om allt går tillbaka till det normala.
Kan inte öppna display: :0 med Electron-baserade program
Säkerställ att du inte har satt GDK_BACKEND=wayland. Om du ställer in det globalt kommer Electron-applikationer att gå sönder.
Fjärrskärm
- (20200206) wlroots (används av sway) erbjuder en VNC-backend via wayvncAUR sedan version 0.10. RDP-backend har tagits bort. .
- (20180401) mutter har nu fjärrskrivbord aktiverat vid kompilering, se och gnome-remote-desktop för detaljer.
- Det fanns en sammanslagning av FreeRDP i Weston 2013, aktiverat via en kompileringsflagga. Weston-paketet har det aktiverat sedan version 6.0.0.0.
- waypipe-gitAUR är en transparent proxy för Wayland-applikationer, med ett omslagskommando för att köras över SSH
Ingångsgrabbing i spel, fjärrskrivbord och VM-fönster
Till skillnad från Xorg tillåter Wayland inte exklusivt ingångsregistrering, även känt som aktiv eller explicit grabbing (e.t.ex. tangentbord, mus), utan är istället beroende av Wayland-kompositorn för att skicka tangentbordsgenvägar och begränsa pekarenheten till programfönstret.
Denna förändring av input grabbing bryter mot nuvarande applikationers beteende, vilket innebär:
- Hotkey-kombinationer och modifieringar kommer att fångas upp av kompositorn och kommer inte att skickas till fjärrskrivbord och fönster för virtuella maskiner.
- Muspekaren kommer inte att begränsas till programmets fönster vilket kan orsaka en parallaxeffekt där muspekarens placering i den virtuella maskinens eller fjärrskrivbordets fönster förskjuts från värdens muspekare.
Wayland löser detta genom att lägga till protokollförlängningar för Wayland och XWayland. Stöd för dessa tillägg behövs för att läggas till i Wayland-kompositorerna. När det gäller inhemska Wayland-klienter måste de använda widget-verktygslådorna (t.ex. GTK, Qt) ha stöd för dessa tillägg eller programmen själva om ingen widget-verktygslåda används. När det gäller Xorg-applikationer behövs inga ändringar i applikationerna eller widget-verktygslådorna eftersom XWayland-stödet är tillräckligt.
Dessa tillägg ingår redan i wayland-protocols och stöds av xorg-xwayland.
De relaterade tilläggen är:
- XWayland keyboard grabbing protocol
- Compositor shortcuts inhibit protocol
- Relative pointer protocol
- Pointer constraints protocol
Stöd för Wayland-kompositorer:
- Mutter, GNOME:s kompositorer sedan release 3.28
- wlroots stöder relativ-pointer och pointer-constraints
Stöd för widget-verktygslådor:
- GTK sedan release 3.22.18.
Se även
- Wayland-dokumentation online
- Official Wayland Git Repo
- Fedora:Hur man felsöker Wayland-problem
- Vackra Wayland-projekt
- Kursortema
- Arch Linux-forumdiskussion
- i3 Migrationsguide – Vanliga X11-program som används på i3 med Wayland-alternativ