0

Linux で acpi イベントがトリガーされたときに、PyQt アプリケーションを使用して画像を表示したいと考えています。

私はすでにイベントの構成を設定しており、イベントがトリガーされたときにPythonスクリプトが実行されますが、プログラムがQApplicationの作成に到達すると

app = QApplication(sys.argv)

エラーなく停止します。現在のユーザーと同じ DISPLAY および PATH 環境変数を設定しようとしましたが、うまくいきません。

これは私のイベントファイルです:

event=sony/hotkey SNC 00000001 00000011
action=/etc/acpi/vaio-tools/brightness/sonybright.sh up 2>&1>/tmp/vaio-tools_brightness.log

/tmp/vaio-tools_brightness.log でエラーを見つけようとしましたが、コードで QApp の作成に到達した後、何もログに記録されません。

ヒントはありますか??

4

1 に答える 1

0

アプリケーションは、ユーザーの X ディスプレイにアクセスできない root によって実行されます。

ユーザーが使用する X 権限ファイルのパスに $XAUTHORITY を設定するか、次のようなものを使用します (未テスト):

su your_user -l -c "xauth extract - $DISPLAY" | xauth merge -

詳細については、 xauthおよびXsecurityの man ページを参照してください。

より良い解決策は、ACPI イベントで DBus 経由でメッセージを送信し、そのメッセージをリッスンしているユーザーのセッションでアプリケーションを実行することです。

于 2010-06-12T00:53:45.500 に答える