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


12

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

xdotool getactivewindow

结果保存到窗口堆栈。我想从此窗口堆栈获取Widnow ID。命令

xdotool getactivewindow getwindowpid

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

Answers:


11

我想xdotool getactivewindow是您想要的-您尝试过吗?

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

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


xdotool与其他用于窗口处理的工具一起 使用时会很复杂:

虽然xdotool输出使用十进制数字表示窗口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

我试过xdotool getactivewindow命令,问题是它不会在终端中显示结果。它将结果保存到窗口堆栈。该命令打印一些数字,但不是窗口ID(例如35651588)
Mariusz

为什么您认为35651588不是窗口ID?
Volker Siegel

是的,我认为35651588不是窗口ID。您可以通过xwininfo命令查看Windows ID,例如xwininfo -root -tree-此命令将打印所有窗口,并且窗口具有其他类型的编号。
Mariusz 2014年

1
xwininfo将窗口ID显示为十六进制数字,而xdotool显示十进制数字,但它是相同的。
Volker Siegel 2014年

你是对的。35651588 = 0x2200004。 xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz 2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.