Mungkinkah memindahkan jendela dari satu layar X ke yang lain pada host yang sama?

16

Saya menjalankan XFCE 4.12 dengan 3 monitor diatur ke dalam dua layar X dan dua kartu video pada komputer yang sama. Dua monitor membentuk layar X tunggal menggunakan fungsi nvidia twinview, yaitu Screen0 pada Device0 pada konfigurasi Xorg. Monitor ke-3 adalah untuk layar kedua yaitu Screen1 pada Device1 pada konfigurasi Xorg. Saya dapat menyeret windows dengan baik di antara monitor di Screen0. Saya juga bisa menggerakkan mouse saya dengan bebas antara Screen0 dan Screen1 dan bahkan data clipboard dilakukan antara dua layar X ok.

Kedua layar X ini bertindak sebagai desktop independen yang memiliki set viewports sendiri. Saya suka cara ini dan berguna untuk membuat satu sisi "menempel" secara otomatis. Namun jika saya memulai program pada satu layar X, saya tidak bisa memindahkannya ke layar X lainnya hanya dengan menariknya. Jika saya ingin menjalankan program itu di layar lain saya harus me-restart di layar itu.

Pertanyaan saya adalah apakah ada cara untuk memindahkan program sambil berjalan ke layar lain menggunakan beberapa perintah atau fungsi X windows lainnya. Terima kasih.

Pembaruan: Saya akan memulai hadiah untuk pertanyaan ini, tetapi saya sudah lama bertanya-tanya tentang hal ini. Untuk mendapatkan hadiah, Anda harus memberikan beberapa kutipan sebagai bukti.

deltaray
sumber
1
xpra menawarkan sesuatu yang mirip dengan apa yang Anda tanyakan ...
vlp
googling juga mengungkapkan
Saya tidak ingat bahwa saya harus mengubah sesuatu pada CentOS 5 atau 6 untuk mendapatkan perilaku itu. Distribusi apa dalam versi apa yang Anda gunakan di sini?
Nils
Ini terlihat seperti duplikat dari unix.stackexchange.com/questions/152291/…
Nathan Fellman
@NathanFellman Mungkin, tapi saya bahkan tidak berpikir dalam kasus saya, saya sedang berbicara tentang berpindah antar layar. Menurut daftar proses saya, saya hanya menjalankan satu kali proses X, yaitu: 0. Tidak ada: 1 atau: 2, dll. Mungkin ini hanya masalah bagaimana XFCE mengelola beberapa layar atau sesuatu dalam konfigurasi saya. Mengenai program yang disebutkan sejauh ini, tidak satu pun dari mereka yang tampaknya masih dipertahankan atau tersedia. xmove hampir 20 tahun dan saya tidak dapat menemukan salinan XiMove. xpra juga sepertinya jenis program yang salah untuk apa yang saya coba lakukan.
deltaray

Jawaban:

13

Anda tidak dapat memindahkan aplikasi X yang dimulai langsung dengan X server tempat aplikasi tersebut akhirnya ditampilkan, hal ini disebabkan klien X sedang "terikat dengan X server (tampilan X) yang dimulai sejak awal" " 1 Ini adalah kemungkinan besar berkaitan dengan metadata yang dimiliki server X tentang windows klien yang tidak dapat dengan mudah ditransfer antara server X.

Hal yang sama berlaku untuk layar yang dikonfigurasikan secara terpisah (ketika tidak menggunakan ekstensi seperti Xinerama atau Twinview) untuk program yang tidak memiliki dukungan multi-layar secara eksplisit ditulis dalam - "Dengan konfigurasi ini tidak mungkin untuk memindahkan jendela di antara layar, selain dari beberapa program khusus seperti GIMP dan Emacs yang memiliki dukungan multi-layar. "[ 2 ]

Secara teori jika aplikasi dirancang untuk mengatasi saklar konteks server X, itu dapat diberikan dengan tampilan / nomor layar baru, menyimpan keadaan windows itu, terhubung ke server X baru / layar dan menghidupkan kembali windows itu, tetapi sedikit aplikasi akan dirancang dengan cara ini dan tentu akan melibatkan banyak boilerplate atau dimasukkannya perpustakaan yang akan memfasilitasi ini entah bagaimana.

Pilihan terbaik bagi Anda adalah menggunakan aplikasi lain yang dapat bertindak sebagai proxy antara klien X dan server X yang ditampilkan dengan cara yang sama seperti layar GNU dapat digunakan untuk aplikasi konsol dan terminal. Xmove dan Xpra [ 3 & 4 ] tampaknya menjadi implementasi yang paling banyak digunakan untuk melakukan ini. Peringatan menggunakan itu adalah bahwa aplikasi yang Anda mulai harus mendaftar dengan Xmove atau Xpra sebagai server X mereka untuk dapat mengubah konteks antara server tampilan yang berbeda.

Akhirnya ada pertanyaan lain, pada SuperUser, yaitu mengajukan pertanyaan serupa untuk tujuan yang sedikit berbeda (menyambung kembali ke X setelah X crash, daripada memutuskan / menyambung kembali klien dengan sengaja) [ 5 ]

Benjamin
sumber
2
Terima kasih telah mencoba menjawab tetapi ini bukan masalahnya. Saya berbicara tentang berpindah antar layar X di server yang sama, bukan antara Server X.
deltaray
5
Saya melewatkan nuansa itu awalnya, permintaan maaf. Sayangnya tanpa ekstensi seperti Xinerama yang menggabungkan beberapa layar menjadi satu, sepertinya aplikasi memperlakukan layar terpisah pada server yang sama sebagai server logis terpisah, dan mengelola koneksi ke mereka secara terpisah - lihat tautan [2] yang telah saya tambahkan dalam edit terakhir. Solusi untuk memindahkan aplikasi antara server X juga harus tahan untuk berpindah antar layar, Anda hanya perlu menentukan bagian layar dari variabel lingkungan DISPLAY ketika (misalnya) memasang Xpra.
Benjamin