Wayland altındaki bir kapta grafik uygulamayı nasıl çalıştırabilirim?


15

Bir X11 masaüstü kullandığımda, $DISPLAYdeğişken ve /tmp/X11-unixdizini paylaşarak docker kapsayıcılarında grafik uygulamaları çalıştırabilirim . Örneğin:

docker run -ti -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix some:ubuntu xclock

Şimdi, Wayland'ı çalıştıran Fedora 25'deyim, bu yüzden konteynerle paylaşacak X11 altyapısı yok. Kapsayıcıda grafik bir uygulamayı nasıl başlatabilirim ve masaüstümde görünmesini sağlayabilirim? XWayland'da bağlanmanın bir yolu var mı?


Sorunuzu doğru şekilde nasıl yanıtlayacağınızdan emin değilim (daha önce hiç yapmadım) ama sistemimde Wayland tarafından kullanılan unix alan soketi /run/user/1000/wayland-0kişisel masaüstümde.
Bratchley

Yanıtlar:


16

Dediğin gibi Fedora 25'i Wayland ile çalıştırıyorsun, sanırım Gnome-Wayland masaüstünü kullanıyorsun.

Gnome-Wayland, X uygulamalarını desteklemek için Xwayland'ı çalıştırır. Xwayland erişimini daha önce yaptığınız gibi Xorg ile paylaşabilirsiniz .

Örnek komutunuz özlüyor XAUTHORITYve siz bahsetmiyorsunuz xhost. Docker'daki X uygulamalarının Xwayland'a (veya herhangi bir X) erişmesine izin vermek için bu yollardan birine ihtiyacınız vardır. Tüm bunlar Wayland ile ilgili olmadığından, GUI uygulamalarını docker kapsayıcısında nasıl çalıştırabilirim? X uygulamalarının docker'da nasıl çalıştırılacağı hakkında.

Kısaca xhost ile iki çözüm:

  1. Yerel kullanıcılarınızın xhost: aracılığıyla erişmesine izin verin xhost +SI:localuser:$(id -un)ve docker çalıştırma seçeneği ile benzer bir kullanıcı oluşturun:--user=$(id -u):$(id -g)
  2. Vazgeçildi: ile X'e kök erişimine izin ver xhost +SI:localuser:root

İlgili Pitfall : X normalde paylaşılan belleği kullanır (X uzantısı MIT-SHM). Docker kapları yalıtılmıştır ve paylaşılan belleğe erişemez. Bu, aksaklıklara ve RAM erişim hatalarına neden olabilir. Docker çalıştırma seçeneği ile bundan kaçınabilirsiniz --ipc=host. IPC ad boşluğunu devre dışı bıraktığı için kapsayıcı yalıtımını etkiler. Karşılaştır: https://github.com/jessfraz/dockerfiles/issues/359


Çalıştırmak için Wayland X olmadan docker uygulamaları, sen Gnome-Wayland veya Weston gibi çalışan bir wayland dizgici gerekir. Wayland soketini paylaşmalısınız. İçinde bulursunuz XDG_RUNTIME_DIRve adı depolanır WAYLAND_DISPLAY. Gibi XDG_RUNTIME_DIRsadece sahibi için erişim sağlar, ana bilgisayardaki olarak konteyner içinde aynı kullanıcıyı gerekir. Misal:

docker run -e XDG_RUNTIME_DIR=/tmp \
           -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
           -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY  \
           --user=$(id -u):$(id -g) \
           imagename waylandapplication

QT5 uygulamaları da gerekir -e QT_QPA_PLATFORM=waylandve başlatılmalıdır.imagename dbus-launch waylandapplication


Docker'daki X ve Wayland uygulamaları için x11docker hepsi bir arada çözümdür. Ayrıca, kapsayıcı yalıtımını korumayı da önemsiyor (örneğin, ana bilgisayar X ekranını paylaşmanız durumunda kayboluyor).


Çalıştırmak istediğim uygulamanın X veya Wayland olduğundan emin değilseniz ne olur? XWayland'ın gerekli olup olmadığını otomatik olarak belirleyebilmesi için geçebileceğim genel bir şey var mı?
Oxwivi


1
@ShN Weston'u başka bir Wayland bestecisinde istemci olarak çalıştırmak mümkündür. Bu istemcinin Weston içinde Xwayland'ı X uygulamalarıyla çalıştırabilirsiniz. X11docker ile:x11docker --weston-xwayland imagename application
mviereck

1
Ayrıca bir Wayland istemcisi olarak doğrudan Xwayland çalıştırabilirsiniz @Shn: Xwayland :20 & sleep 3 && docker run -e DISPLAY=:20 -v /tmp/.X11-unix:/tmp/.X11-unix imagename application. Xwayland tüm ekranı kaplayacak; <Super> <LeftMouseButton> ile hareket ettirebilirsiniz. X11docker ile: x11docker --xwayland imagename application.
Mart'ta

1
@ShN Her durumda bir X sunucusuna ihtiyacınız var. Ana bilgisayarda X önlemek için x11docker / xwayland sağlar . Bir gün xpraGTK3 + python3'e taşınırsa , kesintisiz pencerelerle daha fazla olasılık sağlayacaktır. XvfbKapta görünmez kurulumlar mümkündür . Ayrıntılı tartışma için github'da bir bilet açabilirsiniz .
Mart'ta

0

Google'dan Sommelier'i öneririm. Wayland OR X11 uygulamalarını başlatmanıza izin verir ve mevcut uygulama sunucusuna almak için bu uygulamaların aradığı soketleri sağlar. https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier/

ChromeOS'ta yalnızca Crouton / Crostini üzerinde değil, herhangi bir sistemde çalışması gereken basit bir nasıl yapılır.

https://github.com/dnschneid/crouton/wiki/Sommelier-(A-more-native-alternative-to-xiwi)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.