使用 dash 脚本交换窗口

使用 dash 脚本交换窗口

我编写了一堆破折号脚本,可以调整窗口大小和移动窗口以提高效率。

结构如下:我有一排 8 个窗口,它们堆叠在屏幕底部,如果你愿意的话,就像缩略图一样。我们将每个窗口称为 miniportal_1,...,miniportal_8

当我想使用其中一个时,脚本会在行上方调整其大小,以便它占据屏幕的剩余部分并成为主门户

为了更好地可视化,该概念的灵感来自战斗机 F-35 显示器(看图片

我想要做的是,如果已经存在一个主门户,则我调整大小的迷你门户窗口会替换它,而且主门户窗口也会调整大小并移动到前一个迷你门户图像。简而言之,我想交换迷你门户和门户窗口。

我认为我需要做这样的事情:

1/使用wmctrl存储所有可见窗口的ID、几何形状和坐标

visible_windows_ID_array=wmctrl -l -G | awk '{print S1}'
visible_windows_geometry=same but with different awk option
visible_windows_coordinates= same but with different awk option

2/使用 if 测试执行 for 循环以获取主门户窗口的 ID

for((i=0;i<${#get_visible_windows_ID_array[@]}; i++ )) do

这就是我找不到 If 测试的正确语法的地方。我想做这样的事情:

if visible_windows_geometry[i]= mainportal geometry  && visible_windows_coordinates[i]= mainportal coordinates then
get visible_windows_ID[i]
fi
done

一旦我有了主门户窗口 ID,我就可以使用 wmctrl -r 来调整它的大小。

知道我该怎么做吗?

答案1

找到解决方案,这里是一个示例,查找已存在的微型门户窗口的 ID,以防您可以将门户窗口移回微型门户,从而将微型门户窗口切换到门户。

function getportalwindowID {
IFS=$'\n'
W=5
H=6
X=3
Y=4
ID=1
windowsID=($(wmctrl -l -G | awk -v ID=$ID  '{print $ID}'))
windowsgeometry_w=($(wmctrl -l -G | awk -v W=$W  '{print $W}'))
windowsgeometry_h=($(wmctrl -l -G | awk -v H=$H  '{print $H}'))
windowscoordinates_x=($(wmctrl -l -G | awk -v X=$X  '{print $X}'))
windowscoordinates_y=($(wmctrl -l -G | awk -v Y=$Y  '{print $Y}'))


for ((i=0; i<${#windowsID[*]}; i++));
do
if [ ${windowsgeometry_h[i]} = 180 ] && [ ${windowsgeometry_w[i]} = 320 ] && [ ${windowscoordinates_x[i]} = $(($activescreendisthorizontal+ 0)) ] && [ ${windowscoordinates_y[i]} = 1260 ]; then

portalwindowid=${windowsID[i]}

echo $portalwindowid

fi

done

}

相关内容