在 bash 脚本中使用 $WINDOWID

在 bash 脚本中使用 $WINDOWID

我正在编写脚本来获取所有终端的坐标并将xwininfo它们写入文件,但是在终端中单独运行该命令时工作正常,但在 bash 脚本或甚至 C++system()调用中使用它会导致“-id 需要参数”错误。

脚本:

#!/bin/bash

echo $NULL > /etc/WallFade/termInfo
i=1

while test -e "/dev/pts/$i"
do
        echo "/dev/pts/$i"
        echo $WINDOWID
        xwininfo -id $WINDOWID | grep -E 'Absolute upper-left X:  [0-9]{0,4}' | grep -Eo '[0-9]{0,4}' > /dev/pts/$i >> /etc/WallFade/termInfo
        xwininfo -id $WINDOWID | grep -E 'Absolute upper-left Y:  [0-9]{0,4}' | grep -Eo '[0-9]{0,4}' > /dev/pts/$i >> /etc/WallFade/termInfo
        let "i++"
sleep 1s
done

echo $WINDOWID行没有产生任何输出,我不知道为什么当它在脚本之外产生输出时。

答案1

您需要窗口 ID 列表,您可以使用“ xwininfo -tree -root”获取。

例如,这显示了我打开的 7 个 Xterm 的左上角:

for id in `xwininfo -tree -root | grep -i xterm | awk '{print $1}'` ; do xwininfo -id $id | grep 'Absolute upper-left X' ; done
  Absolute upper-left X:  1033
  Absolute upper-left X:  821
  Absolute upper-left X:  8
  Absolute upper-left X:  1687
  Absolute upper-left X:  7
  Absolute upper-left X:  520
  Absolute upper-left X:  7

相关内容