我为您提供了两个Shell脚本。这将帮助您节省窗口位置和大小的安排。如果以某种方式干扰了您所需的窗户布置,您将能够使用这些脚本以所有窗口的确切窗口大小和位置还原这些排列。
wmctrl
除非已经安装,否则需要安装。通过终端安装,
sudo apt-get install wmctrl
保存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
执行时,上面的脚本会将所有打开的窗口的窗口位置和大小保存到一个名为 .my_windows_config.txt
主目录中中。这是一个隐藏的文本文件。
重新加载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
当您执行第二个脚本时,它将以所有窗口的确切大小恢复窗口位置。
用法
将这些脚本保存在$HOME/bin/
目录中。加入$HOME/bin/
您的PATH
。为此,请在您的末尾添加这些行$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
希望它能解决您的问题。这是一个屏幕截图,