如何让我的 QML 程序使用 Unity7 通知?有我可以使用的 API 吗?

Asy*_*ync 6 notification indicator application-development qml ubuntu-sdk

我正在 QML 中开发一个屏幕截图应用程序,我希望利用Unity 7 通知,类似于 Rhythmbox 在通知用户新歌曲已经开始或音量改变时使用的通知。

是否存在用于此的 API?一个小的编码示例会有所帮助。

Syl*_*eau 2

据我所知,不存在可以libnotify从 QML 组件调用的 API。

为了避免创建 C++ 插件只是为了获取桌面应用程序的通知,我将使用pyotherside调用一个小型 python 模块来完成这项工作:


先决条件

安装pyotherside:sudo ap-get install pyotherside


首先是 QML:

import QtQuick 2.0
import Ubuntu.Components 1.1
import io.thp.pyotherside 1.2

Rectangle {
    width: 200
    height: 200

    Button {
        text: "press"
        anchors.centerIn: parent
        onClicked: {
            py.call('notify.pressme', [], function() {});
        }
    }

    Python {
        id: py
        Component.onCompleted: {
            addImportPath(Qt.resolvedUrl('.'));
            importModule('notify', function() {});
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和 python 代码(将两者保存在同一目录中),一个名为notify.py

#!/usr/bin/env python3

import subprocess

def pressme():
    subprocess.call(["notify-send", "hello", "world"])
Run Code Online (Sandbox Code Playgroud)

按下 QML 按钮后,您将收到如下通知:

在此输入图像描述

请阅读通知发送手册页以获取更多选项。