有两个New Connection标题的窗口,其中一个是顶级窗口,xdotool如何获取顶级窗口id
时间: 2024-03-08 08:49:22 浏览: 14
如果你使用的是 Linux 操作系统,并且已经安装了 xdotool 工具,可以通过以下命令获取 New Connection 的顶级窗口 ID:
```bash
xdotool search --name "New Connection" getwindowpid $(xdotool search --name "New Connection" | head -n 1)
```
其中,`xdotool search --name "New Connection"` 可以获取所有窗口标题为 "New Connection" 的窗口 ID,`head -n 1` 取第一个窗口 ID,`getwindowpid` 可以获取该窗口的进程 ID。
如果你只需要获取顶级窗口的 ID,可以使用以下命令:
```bash
xdotool search --name "New Connection" | xargs -I % sh -c 'xdotool getwindowpid % | xargs -I {} ps -o ppid= -p {} | xargs -I {} ps -o ppid= -p {} | xargs -I {} [ {} -eq 1 ] && echo %'
```
其中,`xdotool search --name "New Connection"` 可以获取所有窗口标题为 "New Connection" 的窗口 ID,`xargs -I % sh -c '...'` 可以将每个窗口 ID 替换为 `...` 中的命令,并执行该命令。在这个命令中,`xdotool getwindowpid %` 可以获取窗口 ID 对应的进程 ID,`ps -o ppid= -p {}` 可以获取该进程的父进程 ID,`[ {} -eq 1 ]` 判断父进程 ID 是否为 1(即 init 进程),如果是,则说明该进程为顶级窗口的进程,`echo %` 输出该窗口的 ID。