在Ubuntu桌面上,我可以使用xdotool
鼠标单击(例如单击链接)并在不在前面的窗口(例如Firefox的窗口)上按一些键(例如Ctrl+ ),以便我可以在另一个不同的窗口上工作s需要位于其他窗口之上,同时让其xdotool
在隐藏窗口上工作?
谢谢。
答案1
要获取窗口 ID,请运行:
sleep 5; xdotool getactivewindow
这将等待 5 秒钟,然后获取活动窗口 ID。运行此命令,单击 Firefox,然后等待其完成。在下一步中使用该 ID。
您可以通过执行以下命令将击键直接发送到特定窗口:
xdotool type --window [window ID] Hello World
使用命令man xdotool
来获取命令和功能的完整列表!
Xdotool 将生成按键事件并将它们直接发送到窗口 Firefox。但是,将击键发送到特定窗口使用的 API 与简单地在活动窗口中键入不同的 API,并且许多应用程序只是忽略它们。
答案2
是的
Xdotool 可用于将输入发送到不在前面的窗口。但是,并非所有窗口都会接受此类输入。例如,xterm
除非您选中“允许发送事件”选项,否则不会。Chromium
也没有。然而,至少从 2019 年开始,Firefox 确实可以工作。
以下是在所有 Firefox 窗口中重新加载当前选项卡的示例:
xdotool search --class firefox key --window %@ Ctrl+F5
答案3
您可以使用以下命令自动激活此窗口并返回到之前激活的窗口:(例如将 Space 发送到 Firefox)
activewindow=$(xdotool getactivewindow)
xdotool windowactivate --sync $(xdotool search --name "Firefox") key space
xdotool windowactivate "$activewindow"
答案4
这对我有用,但略有改变。我无法使用内联执行让它工作。
activewindow=$(xdotool getactivewindow)
wantedwindow=$(xdotool search --name "Firefox")
xdotool windowactivate $wantedwindow
(xdotool commands here, starting with xdotool e.g. xdotool mousemove 0 0)
xdotool windowactivate $activewindow