【发布时间】:2016-02-18 00:38:25
【问题描述】:
我希望能够运行一个 bash 脚本,它将按键和点击发送到多个窗口。这不一定必须用 xdotool 来完成,如果有替代品我会很乐意使用它。最好它可以与 bash 一起使用。
所以,如果我有三个窗口,我想将“w”键发送到所有这些窗口,我需要执行一些操作,例如将活动窗口设置为快速连续的每个窗口,然后发送 w 键。
我希望能够同时进行,所以这不会很好。
【问题讨论】:
我希望能够运行一个 bash 脚本,它将按键和点击发送到多个窗口。这不一定必须用 xdotool 来完成,如果有替代品我会很乐意使用它。最好它可以与 bash 一起使用。
所以,如果我有三个窗口,我想将“w”键发送到所有这些窗口,我需要执行一些操作,例如将活动窗口设置为快速连续的每个窗口,然后发送 w 键。
我希望能够同时进行,所以这不会很好。
【问题讨论】:
您需要事先知道窗口名称,即在运行脚本之前......您可以这样做
#!/bin/bash
for winname in "$@"
do
xdotool type --window $(xwininfo -int -name "$winname" | egrep -o 'Window id: [0-9]+' | cut -d ' ' -f 3) w
done
输出
$./script1.bash "*Untitled 1 - Mousepad" "*(Untitled)" "[No Name] + - GVIM"
以上脚本将w 击键发送到命令行上指定的所有窗口名称。
PS:对我来说,我按以下顺序打开了 3 个编辑器:Mousepad、Leafpad 和 GVIM
【讨论】:
您可以使用xdotool 为您完成繁重的工作。
它将使用名称、类或类名搜索窗口(使用 xprop 或 xwininfo 获取详细信息)。
这是一个将“Hello World”输出到所有运行的 libreoffice writer 文档的示例。
#!/bin/bash
for pid in $(xdotool search --class "libreoffice-writer")
do
xdotool type --window $pid 'Hello World'
done
【讨论】: