如何使xdotool与matchbow-window-manager一起工作



我在使用xdotool来模拟浏览器中的简单按键时遇到了问题。

现在我的浏览器通过在'/home/pi/.xintirc'中添加以下代码启动

#!/bin/sh
xset -dpms
xset s off
xset s noblank
// not sure if this is needed.
killall -TERM matchbox-window-manager 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
exec matchbox-window-manager -use_titlebar no &
iceweasel [someURL]
python /etc/xdo_test.py

/etc/xdo_test.py如下所示:

import time
import subprocess
time.sleep(20)
subprocess.call(["xdotool", "key", "c"]);

当我在启动时使用它时,我没有这个文件的任何输出,但是如果我在另一个控制台中执行它,我得到以下输出:

Error: Can't open display: (null)
Failed creating new xdo instance

有没有人知道为什么我得到这个错误,以及如何解决它?

在python脚本中使用subprocess.call命令。此调用不设置子流程中当前设置的环境变量。因此缺少展示。直接调用.xinitrc文件中的xdotool命令。


#!/bin/sh
xset -dpms
xset s off
xset s noblank
// not sure if this is needed.
killall -TERM matchbox-window-manager 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
exec matchbox-window-manager -use_titlebar no &
iceweasel [someURL] &           #<--- add ampersand
sleep 20
# you have to determine the window to which you want to send the keystroke
WIN=`xdotool search --sync --onlyvisible --class iceweasel | head -1`
# then activate it
xdotool windowactivate $WIN
# and send the keystroke
xdotool key --window $WIN c

如果您在iceweasel呼叫中有与符号的问题,请尝试在URL周围加上引号。

我让它工作了。我最终找到了这个教程,并使用了其中的一些想法。我将把解决办法贴出来给那些可能有类似问题的人。

这是我放在/home/pi/。xinitrc文件:

#!/bin/sh
xset -dpms
xset s off
xset s noblank
// not sure if this is needed.
killall -TERM matchbox-window-manager 2>/dev/null;
killall -9 matchbox-window-manager 2>/dev/null;
exec matchbox-window-manager -use_titlebar no &
iceweasel [someURL] &
sudo /etc/xdo_test.sh

我将python脚本改为shell脚本,并插入以下代码:

sleep 20
$WIN=$(xdotool search --onlyvisible --class Iceweasel|head -1)
xdotool key --window $WIN c
while:
do
    sleep 300
done

末尾的while循环是我添加的,因为Xserver在失去与脚本的连接时崩溃了。我仍然在寻找一个更干净的解决方案来结束脚本,但这是目前的工作。当我找到一个时,我会更新这个浏览器。

感谢Sebastian Stigler的帮助!

在运行窗口管理器之前调用xdo_test.sh

相关内容

  • 没有找到相关文章

最新更新