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.
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_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_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.
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,