正确处理 Unity Dash 中的应用程序 URI

正确处理 Unity Dash 中的应用程序 URI

在我编写的应用程序中,当应用程序从 Unity Dash 拖放到 Gtk 窗口时,Unity 更改了它返回的 Uri 类型。在 13.04(Unity 7.0)中,数据回调收到带有完整路径的 text/uri-list,例如 file://usr/share/applications/APP.desktop

但是现在,它是一个这样的测试/uri 列表:application://APP.desktop

我如何让它提供 APP.desktop 的完整路径?或者我可以使用 uri 获取 AppInfo 对象吗?

答案1

看看文档,您应该能够使用 AppInfoManager 对象的 get_path

在 Python 解释器中运行以下命令:

>>> 从 gi.repository 导入 Unity
>>> a = Unity.AppInfoManager.get_instance()
>>> a.get_path("gedit.desktop")
‘/usr/share/applications/gedit.desktop’

如您所见,只需传递桌面文件名即可返回桌面文件名的完整路径。

因此,从您的拖放应用程序中 - 确保添加 uri 目标:

widget.drag_dest_add_uri_targets()

连接到 drag_data_get 方法

connect("drag-data-get", self.on_drag_data_get)

def on_drag_data_received(self, widget, drag_context, x,y, data,info, time):
    print (data.get_uris())

application://app.desktop从( )中分离出来string.split(str, 1)[1]并将其输入到appinfomanager.get_path()方法中

相关内容