6 votes

Comment faire pour que mon programme QML utilise les notifications de Unity7 ? Existe-t-il une API que je peux utiliser ?

Je suis en train de développer une application de capture d'écran en QML, et je souhaite utiliser Notifications d'Unity 7 Le système est similaire à celui utilisé par Rhythmbox pour avertir l'utilisateur du début d'une nouvelle chanson ou d'un changement de volume.

Existe-t-il une API pour cela ? Un petit exemple de codage serait utile.

2voto

Sylvain Pineau Points 59212

Pour autant que je sache, aucune API n'existe pour appeler libnotify à partir d'un composant QML.

Pour éviter de créer un plugin C++ juste pour obtenir des notifications pour une application de bureau, j'utiliserais pyotherside pour appeler un petit module Python pour faire le travail :


Préalable : :

Installez pyotherside : sudo ap-get install pyotherside


D'abord le 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() {});
        }
    }
}

Et le code Python (gardez les deux dans le même répertoire), un fichier nommé notify.py :

#!/usr/bin/env python3

import subprocess

def pressme():
    subprocess.call(["notify-send", "hello", "world"])

Après avoir appuyé sur le bouton QML, vous obtiendrez une notification comme celle-ci :

enter image description here

Veuillez lire le page de manuel notify-send pour d'autres options.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X