Ubuntu 22.04
我需要通过 ssh 远程启动 chrome。
我发现我可以使用 dbus 来做到这一点。
我创建了一个全局快捷方式来启动谷歌浏览器。
我在以下位置找到了快捷方式名称qdbusviewer
:
google_chrome_desktop
据我所知,我需要使用
qdbus org.kde.kglobalaccel /component/google_chrome_desktop
但除此之外,我还是搞不懂。
/component/google_chrome_desktop
没有列出任何方法,如启动、调用或触发。
一些关于触发快捷方式的旧帖子说invokeShortcut
,但我明白了method does not exist
。
有人能给我提示吗?谢谢。
编辑
我想要一个脚本,当我通过 ssh 连接到该计算机时可以运行该脚本,该脚本将在该计算机上启动 chrome,chrome 将显示在该计算机上。
我可以从计算机上打开的终端执行 google-chrome-stable,chrome 启动时不会出错。如果我尝试在通过 ssh
export DISPLAY=:0
google-chrome-stable连接时执行相同的
操作,我会收到很多错误(身份令牌、钱包、dbus 等),并且我在 chrome 中丢失了 google 身份验证。我假设 ssh 终端与在 kde 环境中启动的 konsole 不同。所以我想找一种方法来让 kde 命令启动 chrome,因此 dbus
答案1
我列出了方法
qdbus org.kde.kglobalaccel /component/google_chrome_desktop
property read QString org.kde.kglobalaccel.Component.friendlyName
property read QString org.kde.kglobalaccel.Component.uniqueName
signal void org.kde.kglobalaccel.Component.globalShortcutPressed(QString componentUnique, QString shortcutUnique, qlonglong timestamp)
signal void org.kde.kglobalaccel.Component.globalShortcutReleased(QString componentUnique, QString shortcutUnique, qlonglong timestamp)
method {D-Bus type "a(ssssssaiai)"} org.kde.kglobalaccel.Component.allShortcutInfos()
method {D-Bus type "a(ssssssaiai)"} org.kde.kglobalaccel.Component.allShortcutInfos(QString context)
method bool org.kde.kglobalaccel.Component.cleanUp()
method QStringList org.kde.kglobalaccel.Component.getShortcutContexts()
method void org.kde.kglobalaccel.Component.invokeShortcut(QString shortcutName)
method void org.kde.kglobalaccel.Component.invokeShortcut(QString shortcutName, QString context)
method bool org.kde.kglobalaccel.Component.isActive()
method QStringList org.kde.kglobalaccel.Component.shortcutNames()
method QStringList org.kde.kglobalaccel.Component.shortcutNames(QString context)
signal void org.freedesktop.DBus.Properties.PropertiesChanged(QString interface_name, QVariantMap changed_properties, QStringList invalidated_properties)
method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface_name, QString property_name)
method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface_name)
method void org.freedesktop.DBus.Properties.Set(QString interface_name, QString property_name, QDBusVariant value)
method QString org.freedesktop.DBus.Introspectable.Introspect()
method QString org.freedesktop.DBus.Peer.GetMachineId()
method void org.freedesktop.DBus.Peer.Ping()
通过这个我得到了 google-chrome 的快捷方式名称
qdbus org.kde.kglobalaccel /component/google_chrome_desktop org.kde.kglobalaccel.Component.shortcutNames
_launch
new-window
new-private-window
然后我启动了谷歌浏览器
qdbus org.kde.kglobalaccel /component/google_chrome_desktop org.kde.kglobalaccel.Component.invokeShortcut "_launch"