pkexec 不显示屏幕键盘

pkexec 不显示屏幕键盘

我有一个在没有物理键盘的电脑上运行的网络应用程序,该应用程序在 Chrome 中打开。我使用以下命令:

pkexec --user <user> google-chrome-stable --force-renderer-accessibility --app "http://my/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'"

相关内容