web-dev-qa-db-fra.com

Existe-t-il un environnement de bureau convivial multi-moniteur dynamique disponible pour Ubuntu?

J'utilise un ordinateur portable et j'aime migrer pendant la journée d'un lieu de travail (physique) à un autre et me connecter à un moniteur externe, le cas échéant.

Je dois aussi beaucoup faire plusieurs choses à la fois, alors j’ai beaucoup de fenêtres ouvertes à tout moment et beaucoup d’espaces de travail (virtuels) pour les organiser.

Mais chaque fois que je connecte/déconnecte le moniteur externe, tout mon arrangement est parti. Cela me rend vraiment fo .

Existe-t-il un environnement de bureau qui laisse les fenêtres seules lorsque vous connectez/déconnectez un deuxième moniteur? Ou mieux encore, cela vous rappelle la disposition des fenêtres par disposition du moniteur? Ainsi, lorsque je suis passé de mon bureau à la maison (moniteur 17 "au-dessus de l'écran du portable) à mon lieu de travail habituel (moniteur 21" à gauche de l'écran du portable) ou du bureau de mon collègue (moniteur 19 "à droite du moniteur latop), le les fenêtres finissent là où elles étaient la dernière fois que le moniteur a été connecté - ou restent en place s’ils ne voyaient jamais ce moniteur.

La façon dont l'unité "gère" les moniteurs externes me rend juste triste et souhaite ne pas avoir tous ces moniteurs supplémentaires à connecter et une fois que je me connecte, cela me lie à cet arrangement, comme si j'avais un ordinateur de bureau cloué au sol.

14
artm

Je vous fournis deux scripts Shell. Cela vous aidera à enregistrez votre disposition des positions et de la taille des fenêtres. Si d'une manière ou d'une autre vos arrangements de fenêtres souhaités sont perturbés, vous serez en mesure de restaurer ces arrangements avec une taille et des positions de fenêtres exactes pour toutes les fenêtres utilisant ce script.

Vous devez installer wmctrl sauf si vous l'avez déjà. Installer via un terminal,

Sudo apt-get install wmctrl

Script pour enregistrer la configuration de 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

À l'exécution, le script ci-dessus enregistrera la position et la taille de toutes vos fenêtres ouvertes dans un fichier nommé .my_windows_config.txt dans votre répertoire personnel. C'est un fichier texte caché.

Script pour recharger la configuration de 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

Lorsque vous exécutez le deuxième script, il restaurera la position de votre fenêtre avec une taille exacte pour toutes vos fenêtres.

Usage

Enregistrez ces scripts dans votre répertoire $HOME/bin/. Ajoutez $HOME/bin/ dans votre PATH. Pour cela, ajoutez ces lignes à la fin de votre $HOME/.bashrc

PATH=$HOME/bin:$PATH
export PATH

Cela vous permettra d'exécuter ces scripts avec leur nom uniquement. Donner l'autorisation d'exécution des scripts,

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

Pour enregistrer la configuration dans votre $HOME/.my_windows_config.txt

Après avoir ouvert et ajusté toutes vos fenêtres dans le terminal,

save_window_conf.sh

Pour recharger la configuration depuis votre $HOME/.my_windows_config.txt

load_window_conf.sh

J'espère que cela résoudra votre problème. Voici une capture d'écran,

enter image description here

10
souravc