È possibile spostare una finestra da una schermata X all'altra sullo stesso host?


16

Sto eseguendo XFCE 4.12 con 3 monitor configurati in due schermi X e due schede video sullo stesso computer. Due dei monitor formano un unico schermo X usando la funzionalità nvidia twinview, che è Screen0 su Device0 nella configurazione di Xorg. Il terzo monitor è per la seconda schermata che è Screen1 su Device1 nella configurazione di Xorg. Posso trascinare bene le finestre tra i monitor su Screen0. Posso anche spostare il mouse liberamente tra Screen0 e Screen1 e persino i dati degli appunti vengono trasportati tra le due schermate X ok.

Entrambi questi schermi X fungono da desktop indipendenti con un proprio set di finestre. Mi piace in questo modo ed è utile per "attaccare" un lato automaticamente. Tuttavia, se avvio un programma su una schermata X, non riesco a spostarlo sull'altra schermata X semplicemente trascinandolo. Se voglio eseguire quel programma sull'altra schermata, devo riavviarlo su quella schermata.

La mia domanda è se c'è modo di spostare il programma mentre è in esecuzione sull'altra schermata usando un comando o un'altra funzione di X windows. Grazie.

Aggiornamento: ho intenzione di iniziare una taglia su questa domanda, ma mi chiedevo da un po 'di tempo. Per guadagnare la taglia, devi fornire una citazione per la prova.


1
xpra offre qualcosa di abbastanza simile a quello che stai chiedendo ...
vlp

googling rivela anche xmove

Non ricordo che ho dovuto cambiare qualcosa su CentOS 5 o 6 per ottenere quel comportamento. Quale distribuzione in quale versione stai usando qui?
Nils,


@NathanFellman Forse, ma nel mio caso non penso nemmeno che sto parlando di spostarmi tra i display. Secondo il mio elenco di processi, eseguo solo una volta l'istanza del processo X, che è: 0. Non c'è: 1 o: 2, ecc. Forse questo è solo un problema con il modo in cui XFCE gestisce più schermi o qualcosa nella mia configurazione. Per quanto riguarda i programmi menzionati finora, nessuno di essi sembra essere ancora mantenuto o disponibile. xmove ha quasi 20 anni e non riesco a trovare una copia di XiMove. xpra sembra anche il tipo sbagliato di programma per quello che sto cercando di fare.
deltaray,

Risposte:


13

Non è possibile spostare un'applicazione X avviata direttamente con il server X su cui l'applicazione viene visualizzata alla fine, ciò è dovuto al fatto che un client X è "legato al server X (display X) su cui è stato avviato per la sua durata" [ 1 ] molto probabilmente ha a che fare con i metadati che il server X detiene sulle finestre di un client che non possono essere facilmente trasferiti tra i server X.

Lo stesso vale per le schermate configurate separatamente (quando non si utilizzano estensioni come Xinerama o Twinview) per i programmi che non hanno esplicitamente il supporto multi-schermo scritto in "" Con questa configurazione non è possibile spostare le finestre tra le schermate, a parte alcuni programmi speciali come GIMP ed Emacs che hanno il supporto multi-schermo. "[ 2 ]

In teoria, se un'applicazione è stata progettata per far fronte a un interruttore di contesto del server X, potrebbe essere fornita con il nuovo numero di display / schermo, salvare lo stato delle sue finestre, connettersi al nuovo server / schermo X e resuscitare le sue finestre, ma pochi le applicazioni verrebbero progettate in questo modo e implicherebbero necessariamente molta piastra di cottura o l'inclusione di una libreria che faciliterebbe in qualche modo ciò.

L'opzione migliore per te è probabilmente quella di utilizzare altre applicazioni che possono fungere da proxy tra un client X e il server X di visualizzazione in un modo simile allo schermo GNU che può essere utilizzato per le applicazioni console e il terminale. Xmove e Xpra [ 3 & 4 ] sembrano essere le implementazioni più utilizzate per farlo. L'avvertenza nell'uso di questi è che le applicazioni che si avvia devono registrarsi con Xmove o Xpra come loro server X per poter passare da un server di visualizzazione all'altro.

Infine c'è un'altra domanda, su SuperUser, che sta ponendo una domanda simile per uno scopo leggermente diverso (riconnettersi a X dopo l'arresto anomalo di X, piuttosto che disconnettere / riconnettere deliberatamente il client) [ 5 ]


2
Grazie per aver cercato di rispondere, ma questo non è il problema. Sto parlando di spostarsi tra gli schermi X nello stesso server, non tra gli X Server.
deltaray,

5
All'inizio mi mancava quella sfumatura, mi scuso. Sfortunatamente senza un'estensione come Xinerama che unisce più schermate in una, sembra che le applicazioni trattino schermate separate sullo stesso server come server logici separati e gestiscano le connessioni separatamente - vedere il collegamento [2] che ho aggiunto nell'ultima modifica. La soluzione alternativa per lo spostamento di un'applicazione tra server X dovrebbe essere valida anche per lo spostamento tra schermi, sarà sufficiente specificare la parte schermo della variabile di ambiente DISPLAY quando (ad esempio) si collega Xpra.
Benjamin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.