我正在编写脚本来获取所有终端的坐标并将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