pkexecがスクリーンキーボードを表示しない

pkexecがスクリーンキーボードを表示しない

実際のキーボードなしでパソコンでウェブアプリケーションを実行していますが、そのアプリケーションはChromeで開きます。次のコマンドを使用します。

pkexec --user <user> google-chrome-stable --force-renderer-accessibility --app "http://my/url"

これにより、正しいURLが表示されますが、テキストフィールドを選択すると画面キーボードが表示されません。 pkexecを削除すると画面キーボードが表示されます。 pkexecでも動作させるにはどうすればよいですか?

私はDebian 9.4を使用しており、OSKはGNOMEオンスクリーンキーボードです。

gedit iso chromeでテストすると正しく動作することがわかりました。

pkexec --user <user> gedit

どちらの実行ファイルにも同様のポリシーファイルがあります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="org.freedesktop.policykit.pkexec.run-chrome">
    <message>Authentication is required to run Chrome</message>
    <description>Run Chrome</description>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/google-chrome-stable</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

キーボードを表示するためのdbus呼び出しはもはやpkexec。 dbus-monitor を見ると、コマンドの実行時に呼び出しが入ります。

google-chrome-stable --force-renderer-accessibility --app "http://my/url"

pkexec --user <user>ただし、コマンドに追加すると、次のdbusメッセージは送信されなくなります。

method call time=1710323137.837430 sender=:1.101 -> destination=org.gnome.Caribou.Keyboard serial=2172 path=/org/gnome/Caribou/Keyboard; interface=org.gnome.Caribou.Keyboard; member=Show

答え1

解決策が見つかりました。環境変数をコピーする必要があるようです。

pkexec --user <user> env QT_ACCESSIBILITY=$QT_ACCESSIBILITY bash -c "google-chrome-stable --force-renderer-accessibility --app='http://my/url'"

関連情報