Bir pencereyi aynı ana bilgisayarda bir X ekranından diğerine taşımak mümkün mü?


16

Aynı monitörde iki X ekran ve iki ekran kartına 3 monitör kurulumuyla XFCE 4.12 kullanıyorum. Monitörlerden ikisi, Xorg yapılandırmasında Device0'da Screen0 olan nvidia twinview işlevini kullanarak tek bir X ekranı oluşturur. 3. monitör, Xorg yapılandırmasındaki Aygıt1'de Ekran1 olan ikinci ekran içindir. Windows0'daki monitörler arasında pencereleri iyi sürükleyebilirim. Ayrıca faremi Screen0 ve Screen1 arasında serbestçe hareket ettirebilirim ve hatta pano verileri iki X ekran arasında taşınır.

Bu X ekranların her ikisi de kendi görünüm portlarına sahip bağımsız masaüstü bilgisayarlar olarak işlev görür. Ben bu şekilde seviyorum ve bir tarafı otomatik olarak "sopa" yapmak için yararlı. Ancak bir X ekranında bir program başlatırsam, onu sürükleyerek diğer X ekranına taşıyamam. O programı diğer ekranda çalıştırmak istersem, o ekranda yeniden başlatmam gerekir.

Benim sorum, bazı pencereleri veya X pencerelerinin başka bir işlevini kullanarak programı çalışırken diğer ekrana taşımanın bir yolu olup olmadığıdır. Teşekkürler.

Güncelleme: Bu soruya bir lütuf başlatacağım ama bir süredir bunu merak ediyorum. Ödül kazanmak için kanıt için bazı alıntılar yapmanız gerekir.


1
xpra , sorduğunuza oldukça benzer bir şey sunuyor ...
vlp

googling ayrıca xmove'yi de ortaya koyuyor

Bu davranışı elde etmek için CentOS 5 veya 6'da bir şeyleri değiştirmek zorunda olduğumu hatırlamıyorum. Burada hangi sürümü kullanıyorsunuz?
Nils


@NathanFellman Muhtemelen, ama benim durumumda ekranlar arasında hareket etmekten bahsettiğimi bile düşünmüyorum. İşlem listeme göre, X işleminin yalnızca bir kez örneğini çalıştırıyorum, yani: 0. Hayır: 1 veya: 2, vb. Yoktur. Belki de bu sadece XFCE'nin yapılandırmamdaki birden çok ekranı veya başka bir şeyi yönetme sorunudur. Şimdiye kadar bahsi geçen programlar ile ilgili olarak, bunların hiçbiri hala korunmamış veya mevcut görünmemektedir. xmove neredeyse 20 yaşında ve XiMove'un bir kopyasını bulamıyorum. xpra da yapmaya çalıştığım şey için yanlış bir program gibi görünüyor.
deltaray

Yanıtlar:


13

Doğrudan başlatılan bir X uygulamasını uygulamanın sonuçta görüntülendiği X sunucusuyla taşıyamazsınız, bunun nedeni bir X istemcisinin "ömrü boyunca başlatıldığı X sunucusuna (X ekran) bağlı olmasıdır" [ 1 ] büyük olasılıkla X sunucusunun bir istemcinin X sunucuları arasında kolayca aktarılamayan pencereleri hakkında tuttuğu meta verilerle ilgilidir.

Aynısı, açıkça yazılmış çoklu ekran desteği olmayan programlar için ayrı olarak yapılandırılmış ekranlar (Xinerama veya Twinview gibi uzantılar kullanılmadığında) için de geçerlidir - "Bu yapılandırma ile pencereleri ekranlar arasında taşımak, çoklu ekran desteği olan GIMP ve Emacs gibi birkaç özel program. "[ 2 ]

Teoride, bir uygulama bir X sunucusu bağlam anahtarıyla başa çıkmak için tasarlanmışsa, yeni ekran / ekran numarası ile sağlanabilir, pencerelerinin durumunu kaydedebilir, yeni X sunucusuna / ekrana bağlanabilir ve pencerelerini yeniden canlandırabilir, ancak birkaç başvurular bu şekilde tasarlanacaktır ve mutlaka çok fazla kaynatma plakası ya da bunu bir şekilde kolaylaştıracak bir kütüphane bulunmasını gerektirecektir.

Sizin için en iyi seçenek, büyük olasılıkla bir X istemcisi ile görüntülenen X sunucusu arasında proxy işlevi görebilen diğer uygulamaları, GNU ekranının konsol uygulamaları ve terminal için kullanılabileceği şekilde kullanmasıdır. Xmove ve Xpra [ 3 & 4 ] bunu yapmak için en yaygın kullanılan uygulamalar gibi görünmektedir. Bunları kullanmanın uyarısı, başlattığınız uygulamaların farklı ekran sunucuları arasında bağlam geçişi yapabilmek için Xmove veya Xpra'ya X sunucusu olarak kaydolmaları gerektiğidir.

Son olarak, SuperUser'da, biraz farklı bir amaç için benzer bir soru soran başka bir soru var (istemcinin kasıtlı olarak kesilmesi / yeniden bağlanması yerine X çökmesinden sonra X'e yeniden bağlanın) [ 5 ]


2
Cevaplamaya çalıştığınız için teşekkürler, ancak sorun bu değil. X Sunucular arasında değil, aynı sunucudaki X ekranlar arasında geçiş yapmaktan bahsediyorum.
deltaray

5
Bu nüansı özür dilerim, özür dilerim. Ne yazık ki, birkaç ekranı bir araya getiren Xinerama gibi bir uzantı olmadan, uygulamaların aynı sunucudaki ayrı ekranları ayrı mantıksal sunucularla ele aldığı ve bunlara bağlantıları ayrı ayrı yönettiği görülüyor - son düzenlemede eklediğim bağlantıya [2] bakın. Bir uygulamayı X sunucuları arasında taşımak için geçici çözüm de ekranlar arasında hareket etmek için tutulmalıdır, sadece Xpra eklerken (örneğin) DISPLAY ortam değişkeninin ekran kısmını belirtmeniz gerekecektir.
Benjamin
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.