首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Xdotool键入Libreoffice文档

使用Xdotool键入Libreoffice文档
EN

Ask Ubuntu用户
提问于 2021-10-27 16:06:46
回答 2查看 237关注 0票数 0

我经常想知道如何使用xdotool实现libreoffice的自动化。我知道窗口必须从窗口堆栈中选择出来,我尝试将它作为一个窗口bash变量在bash脚本中的xdotool下编程。然后我试着发送下一个按键到窗口,但没有结果。现在,我想将ctrl+N命令传递给libre窗口,以打开一个新文档。

代码语言:javascript
复制
#!/bin/bash
/usr/bin/libreoffice
mywindow=$(xdotool search --class libreoffice)
xdotool windowactivate $mywindow && xdotool key --window $mywindow Next
xdotool key ctrl+n

我确实得到了一个错误代码

代码语言:javascript
复制
There are no windows in the stack.
Invalid window '%1'
Usage: windowactivate [options] [window=%1]
--sync - only exit once window is active (is visible + active)
If no window is given, %1 is used. See WINDOW STACK in xdotool(1)
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2021-10-27 16:26:40

  • 若要更有选择地查找LibreOffice Writer窗口(例如,不查找Calc窗口),请使用以下命令:mywindow=$(xdotool search --class libreoffice-writer)。您可以通过命令wmctrl -lx看到打开窗口的类。它列出了由一个点分隔的更多的泛型类名和更具体的类。对于libreoffice,它是libreoffice.libreoffice-writer
  • 注意:xdotool search命令将检索某个类的所有窗口。因此,对于多个窗口,变量将包含由空格分隔的多个标识符,例如66167017 65540686。然而,windowactivate只支持一个参数。
  • 执行libreoffice命令后,进程将分叉到后台。还没有创建任何窗口。这就是为什么winactivate失败的原因。使用--sync选项让winactivate命令等待窗口的有效创建:mywindow=$(xdotool search --sync --class libreoffice.writer)
票数 1
EN

Ask Ubuntu用户

发布于 2021-10-27 16:22:31

一个简单的解决方法是将LO放在后台,然后在xdotool命令之间添加延迟。

代码语言:javascript
复制
#!/bin/bash
/usr/bin/libreoffice &
sleep 10
mywindow=$(xdotool search --class libreoffice)
xdotool windowactivate $mywindow && xdotool key --window $mywindow Next
xdotool key ctrl+n
票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1371975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档