Wayland ve Xorg Sorunsalı

Bu makaleyi okuyorsanız çok çok büyük ihtimalle popüler ekran kayıt etme yazılımlarından birini denemiş ve başarısız olmuşsunuzdur.

Popüler ekran kayıt etme yazılımlarından biri olan vokoscreenNG aşağıdaki “Wayland desktop session detected. To time Wayland is not supported. A screencast show a black screen. Please logout and start X11 Desktop session” hatasını oluşturuyorsa veya diğer popüler ekran kayıt etme yazılımı olan SimpleScreenRecorderYou are using a non X11 window system (e.g. Wayland) whic is currently not supported by SimpleScreenRecorder. Several features will most likely not work properly. In order to solve this, you should log out, choose a X11/Xorg session at the login screen, and then log back in.” uyarısını oluşturuyorsa bunun sebebi görüntü sunucusu olarak Wayland kullanmanızdır.

Wayland desktop session detected

you are sunig a non x-11 windows system

Wayland, X11’e göre daha yeni bir görüntü sunucusudur. X11’in hantallığı, oldukça fazla yama görmesi, pencere pozisyon hesaplamalarındaki hataları, multi pencerelerde izolasyon sağlamaması gibi bir çok mimari sorunlardan dolayı Wayland tasarlanmıştır.

Wayland, X11’e göre daha hızlı ve sorunsuz çalışır. Çünkü Wayland istemci ile görüntü sunucusu doğrudan iletişim kurar. Arada herhangi bir protokol olmaz. En temel fark budur.

Wayland mimarisinde çekirdek, klavye, mouse v.s gibi giriş aygıtlarından yapılan bir girişi algılar. (giriş algılama evdev protokülü üzerinden olur). Bu bilgilerin görüntü ile ilgili olanları hesaplanmak üzere Compositor’e iletir. Compositor, olayı yani girişi inceler ve hangi pencereye yönlendireceğine karar verir veya ters dönüşümleri algılayarak ekran konumlarını pencere konumlarına göre ayarlar. Mesela sürükle bırak ile pencerenin taşınması veya tıklama girdi olayı ile büyütülüp/küçültülmesi gibi v.s.

X11 mimarisinde ise çekirdek girişleri algılar, bunları XServere yönlendirir, Xserver görüntü ile ilgili olanlar için konum bilgilerini oluşturması için Compositore yönlendirir, Compositor hesaplamaları yapar ve XServer’a geri gönderir, Xserver görüntüyü oluşturarak kullanıcıya sunar.

Xserver pencere konumlarını bilmez. Compositor bilir ki bu büyük bir sorundur. Çünkü XServer, bir olayı hangi pencerenin alacağına karar veremez. Compositore danışır. Xserver, hem inputları almakta, hem Compositor ile konuşmakta(danışmakta), hem hangi bilginin nereye gideceğine karar vermektedir. Bu da onun görevini zorlaştırmakta ve ağırlaştırmaktadır.

Wayland architecture

Wayland mimarisi

x11 architecture

XServer mimarisi

Hangi görüntü sunucusunu kullandığınızı öğrenmek için aşağıdaki komutu yazın:

echo $XDG_SESSION_TYPE

Bu komutun çıktısı Wayland yada X11’dir.

Wayland, Ubuntu ile birlikte bir zamanlar default gelmiş olsa da, Ubuntu’nun LTSC olmasından ötürü tekrar X11’e geri dönüş sağlanmıştır. Lakin her distro böyle karar vermemiştir. Örneğin openSuse Leap 15.2, varsayılan olarak Wayland ile gelir. Değiştirmek tabiki mümkündür ve çok basittir. Bunun için:

  1. Logoff olun.
  2. Başlangıç ekranındaki çark düğmesinden “Gnome on Xorg” seçerek login olun.
dav

Artık X11 kullanıyorsunuz. Bu şekilde login olduğunuzda makalenin başındaki hataları almayacaksınız. Eğer Wayland kullanmaya devam etmek istereniz tekrar logoff olun ve bu kez “GNOME” seçin.

Biz kullanıcılar, ikisinin arasındaki farkı pek hissetmeyiz. Aşağıdaki video Raspery Pi üzerinde çekilmiş güzel bir örnekle Wayland ve X11 farkını anlamamıza yardımcı oluyor.

Faydalı olması dileklerimle.