如何从进程ID获取窗口ID

nig*_*d3r 11 process xdotool

此命令将获取xterm启动进程的 PID :

xterm & export APP_PID=$!
Run Code Online (Sandbox Code Playgroud)

如何获取与该进程关联的xterm窗口 ID (窗口 ID)?我的意思是,xdotool selectwindow点击xterm窗口后会返回的 ID 。

phi*_*294 14

您可以通过以下方式获取匹配窗口的列表

 xdotool search --pid [pid]
Run Code Online (Sandbox Code Playgroud)

另见 xdotool help search


Tho*_*key 7

它已在“其他”论坛中讨论过:

首先,@Patrick指出xwininfo可以返回所有窗口的信息,通过使用xprop每个窗口,您可以检查_NET_WM_PID属性,将其与您的进程 ID 进行匹配。


SHW*_*SHW 6

我将使用这个简单的命令来获取十六进制格式的窗口 ID

wmctrl -l | grep -i xterm | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

对于十进制格式,bc可以使用命令进行转换

echo "ibase=16; `wmctrl -l | grep -i xterm | cut -c 3-11 | tr a-z A-Z`" | bc
Run Code Online (Sandbox Code Playgroud)

  • 如果您的 xterm 窗口标题已设置,例如,设置为不包含“xterm”的字符串,`wmctrl -l` 不会给出有用的结果。 (2认同)
  • 您可以添加一些选项。`-p` 给出 PID,`-G` 给出位置和尺寸。就我而言,`wmctrl -l -p | { pidof firefox vlc | 读取 line && grep ${line// /\\|} }`,并可选择直接从那里获取 xwininfo:`| 同时阅读id垃圾;做 xwininfo -id $id; 完成`。我正在使用 zsh,我不确定该正则表达式是否完全可移植。 (2认同)