Esiste un ambiente desktop dinamico per monitor multipli disponibile per Ubuntu?


14

Uso un laptop e mi piace migrare durante il giorno da un luogo di lavoro (fisico) a un altro e connettermi a un monitor esterno, se disponibile.

Devo anche multitasking molto, quindi ho molte finestre aperte in qualsiasi momento e molte aree di lavoro (virtuali) su cui organizzarle.

Ma ogni volta che collego / disconnetto il monitor esterno, tutte le mie disposizioni accurate scompaiono. Questo mi fa davvero arrabbiare .

Esiste un ambiente desktop che lascia solo Windows solo quando colleghi / disconnetti un secondo monitor? O ancora meglio, che ricorda la disposizione della finestra per disposizione del monitor? In modo che quando sono passato dal mio ufficio (monitor da 17 "nella parte superiore dello schermo del laptop) al mio solito posto di lavoro (monitor da 21" a sinistra dello schermo del laptop) o alla scrivania del mio collega (monitor da 19 "a destra dello schermo latop), il le finestre finiscono dove erano state l'ultima volta che il monitor è stato collegato - o rimani fermo se non hanno mai visto questo monitor.

Il modo in cui l'unità "gestisce" i monitor esterni mi rende triste e vorrei che non avessi tutti quei monitor extra da collegare e una volta che mi collego mi rende incatenato a questa disposizione, come se avessi una macchina desktop inchiodata al pavimento.


Questo succede con qualsiasi gestore di finestre? GNOME 3, KDE, LXDE, XFCE?
Braiam,

Non lo so. Succede con l'unità.
articolo

Hai trovato una buona soluzione a questo? Sono stato costretto a usare un laptop Dell su cui ho installato Ubuntu, ma sono abituato al mio MacBook Pro. Sul Mac c'è un programma chiamato Stay, che è indispensabile, perché ricorda le posizioni delle finestre per ogni configurazione del monitor. Collega un monitor, tutte le finestre si spostano dove erano. Collega un secondo monitor, tutti si spostano di nuovo. Scollega, tornano tutti dove erano. Inoltre, il Mac è abbastanza intelligente anche senza rimanere per assicurarsi che tutte le finestre siano visibili. Su questo laptop Ubuntu continuo a trovare le finestre che sono fuori dallo schermo.
Greywire,

Non riesco a trovare nulla di simile a rimanere su Linux. Sembra che tu possa ottenere tutte le informazioni e il controllo dai singoli comandi e gli script seguenti si avvicinano. Sto lavorando per migliorarli per ottenere le funzionalità di cui ho bisogno ...
Greywire,

Rimanere suona come quello che mi manca. No, non ho trovato una soluzione.
artm

Risposte:


10

Ti sto fornendo due script di shell. Ti aiuterà a salvare la disposizione delle posizioni e delle dimensioni delle finestre . Se in qualche modo i tuoi arrangiamenti di Windows desiderati vengono disturbati, sarai in grado di ripristinarli con le dimensioni e le posizioni esatte di tutte le finestre usando questi script.

Devi installare a wmctrlmeno che tu non lo abbia già. Installa tramite terminale,

sudo apt-get install wmctrl

Script per salvare la configurazione di Windows

# Script_Name: save_window_conf.sh
#!/bin/bash
if [ -f $HOME/.my_windows_config.txt ]; then
    echo -e "Information: Previous configuration file \"$HOME/.my_windows_config.txt\" already exists.\nTo save a new configuration remove it manually using the following command,\n\n\trm $HOME/.my_windows_config.txt"
    exit 1
else
    wmctrl -p -G -l | awk '($2 != -1)&&($3 != 0)&&($NF != "Desktop")' | awk '{print $1}' | while read mywinid
    do
        xwininfo -id "$mywinid" >> $HOME/.my_windows_config.txt
    done
fi

Al momento dell'esecuzione, lo script precedente salva la posizione e le dimensioni di Windows per tutte le finestre aperte in un file denominato .my_windows_config.txtnella directory principale. È un file di testo nascosto.

Script per ricaricare la configurazione di Windows

# Script_Name: load_window_conf.sh
#!/bin/bash

file=$HOME/.my_windows_config.txt
declare -a mywinid
declare -a x
declare -a y
declare -a width
declare -a height

nl=$(cat "$file" | grep xwininfo |wc -l)

for i in $(seq 1 $nl)
do
    mywinid[i]=$(cat "$file" | grep "xwininfo" | awk -v p="$i" '{if(NR==p) print $4}')
    x[i]=$(cat "$file" | grep "Absolute upper-left X" | awk -v p="$i" '{if(NR==p) print $NF}')
    y[i]=$(cat "$file" | grep "Absolute upper-left Y" | awk -v p="$i" '{if(NR==p) print $NF}')
    width[i]=$(cat "$file" | grep "Width" | awk -v p="$i" '{if(NR==p) print $NF}')
    height[i]=$(cat "$file" | grep "Height" | awk -v p="$i" '{if(NR==p) print $NF}')
done

for it in $(seq 1 $nl)
do
    wmctrl -i -r "${mywinid[$it]}" -e 0,"${x[$it]}","${y[$it]}","${width[it]}","${height[it]}"
done

Quando esegui il secondo script, ripristinerà la posizione di Windows con le dimensioni esatte per tutte le finestre.

uso

Salva questi script nella tua $HOME/bin/directory. Aggiungi $HOME/bin/nel tuo PATH. Per questo aggiungi queste righe alla fine del tuo$HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

Ti consentirà di eseguire quegli script solo con il loro nome. Autorizza l'esecuzione degli script,

chmod +x $HOME/bin/save_window_conf.sh
chmod +x $HOME/bin/load_window_conf.sh

Per salvare la configurazione nel tuo $HOME/.my_windows_config.txt

Dopo aver aperto e regolato tutte le finestre eseguite nel terminale,

save_window_conf.sh

Per ricaricare la configurazione dal tuo $HOME/.my_windows_config.txt

load_window_conf.sh

Spero che risolva il tuo problema. Ecco una schermata,

inserisci qui la descrizione dell'immagine


Wow, grazie, questo sembra promettente. Proverò gli script.
artm

@artm Ho modificato un piccolo problema tecnico e un errore di battitura, ora sembra ok. L'ho provato su Unity e Gnome-fallback-session, dovrebbe funzionare su gnome3. Fammi sapere se hai problemi.
souravc,

@artm dovrebbe essere una tua decisione quando desideri rimuovere .my_windows_config.txt. Se si desidera caricare più volte la stessa configurazione di Windows per le finestre esistenti, è possibile conservarla. Ma se avvii una sessione completamente nuova, l'id di Windows sarà diverso e in tal caso è meglio rimuovere il vecchio file di configurazione in $HOME/.my_windows_config.txt. È necessario rimuovere manualmente il file di configurazione salvato prima di salvare una nuova configurazione.
souravc,

Su XFCE4 in Ubuntu 18.04 ho dovuto modificare la gravità (primo "0" nel parametro -e) su 31, altrimenti le finestre sono state ripristinate circa 31 px a destra e in basso rispetto a dove si trovavano. Penso che potrebbe essere la dimensione del pannello XFCE predefinito. Grazie per il codice!
Akom,

-1

La guida comune è qui: Risoluzione

Le tue soluzioni sulla risoluzione dinamica sono vicine a Xorg & XrandR o Xinerama

Hai:
quattro metodi per l'installazione

  1. Per sessione con .xprofile.

  2. Dinamicamente usando lo strumento xrandr

  3. Staticamente impostando in xorg.conf.

  4. Interfaccia grafica grafica Xrandr.

La buona risposta è che le impostazioni per più monitor non sono memorizzate

Per aggirare la gestione delle finestre in tutte le aree di lavoro è possibile utilizzare il sistema di profilazione fornito da Compiz Config Manager


2
Non ho problemi con le risoluzioni o le disposizioni di visualizzazione: funzionano come previsto.
artm

Quindi QUALSIASI ambiente desktop è AMICO per te. Non dare la colpa al pubblico, per favore.
rapido

Non incolpo nessuno. Voglio solo che le finestre aperte rimangano dove le metto quando si collegano / disconnettono i monitor.
artm

Quindi hai quattro soluzioni con riferimento ufficiale. La mia risposta copre adeguatamente la tua "follia";)
rapida

2
Oh, provalo tu stesso: apri una finestra su ogni area di lavoro, quindi collega un monitor che appare nella parte superiore dello schermo originale e vedi dove finiscono le finestre. Quindi dimmi quanto xrandr è rilevante per impedire alle finestre di saltare in modo casuale quando è collegato un monitor.
artm
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.