Wayland

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

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.

Observera: Många proprietära spel levereras tillsammans med gamla versioner av SDL, som inte har stöd för Wayland och som kan gå helt sönder om du ställer in 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.

Notera:

  • 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

Lämna ett svar

Din e-postadress kommer inte publiceras.