繁体   English   中英

如何从GNOME下的HUD DBus服务获得结果?

[英]How can I get results from the HUD DBus service under GNOME?

我想(以编程方式)访问GNOME 3.6下Ubuntu的抬头显示(HUD)菜单服务的结果。 我一直在玩HUD的DBus接口取得了一些成功,但是无法让它在Unity之外工作。 例如,以下Python脚本将在Unity下登录时从终端运行时显示一些结果:

#!/usr/bin/env python
import dbus

session_bus = dbus.SessionBus()
proxy_obj = session_bus.get_object('com.canonical.hud', '/com/canonical/hud')
hud_iface = dbus.Interface(proxy_obj, dbus_interface='com.canonical.hud')
query_result = hud_iface.StartQuery("ope", 5)

for res in query_result[1]:
    print res[0].encode('utf8')

hud_iface.CloseQuery(query_result[2])

在Unity下运行它(在12.10中)我得到:

$ ./hud.py
File &gt; <b>Open</b> Tab
File &gt; <b>Open</b> Terminal
dropbox &gt; <b>Open</b> Dropbox Folder
View &gt; Zoom <b>Out</b>
Terminal &gt; Set Character Encoding &gt; Add <b>or</b> Remove…

...但是在GNOME 3.6下我没有得到任何结果(没有错误,没有错误)。

看起来这些服务都涉及到,因为它们在Unity下不断运行但不是GNOME:

/usr/lib/indicator-appmenu/hud-service
/usr/lib/x86_64-linux-gnu/indicator-application-service
/usr/lib/indicator-(whatever)/indicator-(whatever)-service

但是如果我在GNOME下启动它们,它们很快就会退出

$ /usr/lib/indicator-session/indicator-session-service

(process:4921): libindicator-WARNING **: No watchers, service timing out.

如果我设法在那个狭窄的时间窗口中运行我的脚本,那么我会得到结果! 但是如何保持这些服务的运行? 首先是什么启动它们? 它们是否包含应用程序菜单内容,还是由其他服务提供的内容?

您似乎使用了错误的服务名称。 我现在没有GNOME 3.6可用,但您可以列出dbus服务

dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

此外,您应该在启动Gnome之前export UBUNTU_MENUPROXY=libappmenu.so ,或者在/ etc / environment中定义它

还要检查是否已安装指标 - 应用程序

阅读这里经过然而在这里 ,我想的是,GNOME桌面不使用这样的服务:

在此输入图像描述

因此,我确认您应该寻找另一个特定于Gnome的DBus服务(使用不同的API)。

我假设该项目没有任何活动。 然而,很多人真的喜欢为gnome hud的想法! 您在此处发布的脚本是否包含了所有相关的工作,或者您是否有更好的文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM