我需要活动或聚焦窗口的 ID。我尝试使用xdotool
命令。有命令:
xdotool getactivewindow
结果保存到窗口堆栈中。我想从这个窗口堆栈中获取widnow id。命令
xdotool getactivewindow getwindowpid
不满足我。我不想通过进程 ID 获取窗口 ID。
答案1
我想xdotool getactivewindow
这就是你想要的——你尝试过吗?
如果命令行上没有其他 xdotool 子命令,它将打印窗口 id(来自窗口堆栈)。
例如xdotool getactivewindow getwindowpid
, getactivewindow
将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 的窗口。