我有一个在没有物理键盘的电脑上运行的网络应用程序,该应用程序在 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'"