0

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

このエラーが発生する理由と解決方法を知っている人はいますか?

4

3 に答える 3

0

私はそれを働かせました。最終的にこのチュートリアルを見つけ、そこからいくつかのアイデアを使用しました。同様の問題を抱えている可能性のある人々のために解決策を投稿します。

これは、/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 スクリプトをシェル スクリプトに変更し、次のコードを挿入しました。

sleep 20
$WIN=$(xdotool search --onlyvisible --class Iceweasel|head -1)
xdotool key --window $WIN c

while:
do
    sleep 300
done

最後の while ループは、Xserver がスクリプトへの接続を失った瞬間からクラッシュしたため、私が追加したものです。スクリプトを終了するためのよりクリーンなソリューションをまだ探していますが、これは今のところ機能します。このアンサーを見つけたら更新します。

助けてくれたセバスチャン・スティグラーに感謝!

于 2015-05-25T10:32:12.987 に答える
0

ウィンドウマネージャーを実行する前に xdo_test.sh を呼び出します

于 2016-03-24T18:58:26.477 に答える
0

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 を引用符で囲んでみてください。

于 2015-05-18T15:26:56.633 に答える