xdotool先后出现两个New Connection窗口,获取最后出现的那个窗口id
时间: 2024-03-07 22:50:35 浏览: 17
你可以使用以下命令来获取最后出现的那个New Connection窗口的ID:
```
win_name="New Connection" # 设置窗口标题
win_list=$(xdotool search --onlyvisible --name "$win_name") # 查找所有可见的窗口
last_win=$(echo "$win_list" | tail -n 1) # 获取最后一个窗口ID
if [ "$(xdotool getwindowname $last_win)" != "$win_name" ]; then
last_win=""
fi
echo "最后一个New Connection窗口ID: $last_win" # 输出最后一个New Connection窗口ID
```
这个命令首先使用`xdotool search`命令查找所有可见的New Connection窗口,然后使用`tail -n 1`命令获取最后一个窗口ID。接着,使用`xdotool getwindowname`命令获取该窗口的标题,并检查是否为"New Connection",如果不是则将`last_win`设为空字符串。最后,使用`echo`命令输出最后一个New Connection窗口的ID。
相关问题
xdotool怎么获取窗口标题为New Connection的窗口id
要获取窗口标题为 "New Connection" 的窗口ID,可以使用以下命令:
```
xdotool search --onlyvisible --name "New Connection"
```
这个命令会查找所有可见窗口中标题为 "New Connection" 的窗口,并返回它们的ID。如果你想获取最后一个符合条件的窗口ID,可以在命令末尾加上 `tail -n 1`:
```
xdotool search --onlyvisible --name "New Connection" | tail -n 1
```
这个命令会返回最后一个标题为 "New Connection" 的窗口的ID。
有两个New Connection标题的窗口,其中一个是顶级窗口,xdotool如何获取顶级窗口id
如果你使用的是 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。