如何从 xdotool 窗口堆栈获取窗口 id

如何从 xdotool 窗口堆栈获取窗口 id

我需要活动或聚焦窗口的 ID。我尝试使用xdotool命令。有命令:

xdotool getactivewindow

结果保存到窗口堆栈中。我想从这个窗口堆栈中获取widnow id。命令

xdotool getactivewindow getwindowpid

不满足我。我不想通过进程 ID 获取窗口 ID。

答案1

我想xdotool getactivewindow这就是你想要的——你尝试过吗?

如果命令行上没有其他 xdotool 子命令,它将打印窗口 id(来自窗口堆栈)。

例如xdotool getactivewindow getwindowpidgetactivewindow将id放入窗口堆栈中,并getwindowpid使用该id来查询PID。请注意,在终端中运行该命令将始终返回终端窗口的 ID,因为它是活动的。为了从另一个窗口获取 ID,请尝试sleep 2s && xdotool getactivewindow在两秒的时间范围内选择感兴趣的窗口。


xdotool与其他窗口处理工具一起 使用时会出现一些复杂情况:

虽然xdotool输出使用十进制数作为windwo id,但大多数其他工具使用十六进制输出数字(它们通常支持输入)。

例如,如果您找到带有 的窗口,则您将不会在列出所有窗口xdotool getactivewindow的 输出中找到结果。xwininfo -root -tree需要先将其转换为十六进制数:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


将十进制转换为十六进制:

printf 0x%x 69206716

将十六进制转换为十进制:

printf %i 0x42002bc

答案2

这个命令对我有用

xdotool key --window "$(xdotool getactivewindow)" F5

xdotool版本3.20160805.1

答案3

我知道这是一个老问题。也许有人会发现这个答案很有用。

xdotool selectwindow getmouselocation --shell

然后单击您想要其 ID 的窗口。

相关内容