私はラップトップを使用し、日中に1つの(物理的な)職場から別の職場に移行し、可能であれば外部モニターに接続します。
また、多くのマルチタスクを行う必要があるため、特定の時間に多数のウィンドウを開いて、それらを整理するための多くの(仮想)ワークスペースを用意します。
しかし、外部モニターを接続/切断するたびに、私の注意深い配置はすべてなくなります。これにより、私は 本当に気違い になります。
2台目のモニターを接続/切断するときに、ウィンドウをそのままにするデスクトップ環境はありますか?それとも、モニター配置ごとのウィンドウ配置を覚えているでしょうか?ホームオフィス(ラップトップ画面の上部にある17インチモニター)から通常の職場(ラップトップ画面の左側にある21インチモニター)または同僚の机(ラップトップ画面の右側にある19インチモニター)に移動したとき、ウィンドウは、最後にモニターが接続された場所になります-このモニターを見たことがない場合は、そのままにしておきます。
外部モニターを団結して「処理」する方法は悲しく、接続する余分なモニターがすべてなかったらいいのにと思います。一度接続すると、床に釘付けされたデスクトップマシンがあるように、この配置にチェーンされます。
2つのシェルスクリプトを提供しています。 ウィンドウの位置とサイズの配置を保存するに役立ちます。どういうわけか目的のウィンドウの配置が乱れた場合、復元これらのスクリプトを使用して、すべてのウィンドウの正確なウィンドウサイズと位置を持つ配置を行うことができます。
既にインストールしていない限り、wmctrl
をインストールする必要があります。ターミナル経由でインストール、
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
実行時に、上記のスクリプトは、開いているすべてのウィンドウのウィンドウの位置とサイズを、ホームディレクトリの.my_windows_config.txt
という名前のファイルに保存します。非表示のテキストファイルです。
# 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
2番目のスクリプトを実行すると、すべてのウィンドウの正確なサイズでウィンドウの位置が復元されます。
これらのスクリプトを$HOME/bin/
ディレクトリに保存します。 PATH
に$HOME/bin/
を追加します。このため、$HOME/.bashrc
の最後にこれらの行を追加します
PATH=$HOME/bin:$PATH
export PATH
これらのスクリプトを名前のみで実行できます。スクリプトの実行許可を与えます。
chmod +x $HOME/bin/save_window_conf.sh
chmod +x $HOME/bin/load_window_conf.sh
構成を$HOME/.my_windows_config.txt
に保存するには
ターミナルで実行するすべてのウィンドウを開いて調整した後、
save_window_conf.sh
$HOME/.my_windows_config.txt
から設定を再読み込みするには
load_window_conf.sh
それがあなたの問題を解決することを願っています。これがスクリーンショットです