I wrote a python code for getting random text into a .txt file. Now I want to send this random text into notification area via 'notify-send' command. How do we do that?
We can always call notify-send as a subprocess, e.g like that:
#!/usr/bin/env python #-*- coding: utf-8 -*- import subprocess def sendmessage(message): subprocess.Popen(['notify-send', message]) return
Alternatively we could also install python-notify and call the notification through that:
import pynotify def sendmessage(title, message): pynotify.init("Test") notice = pynotify.Notification(title, message) notice.show() return
Note that there's no python3-notify package available in Ubuntu. If you're using Python 3, you will need to use python3-notify2. The API for notify2 is the same: just replace
Whilst you can call
subprocess it is arguably more consistent with GTK3 based programming to use the Notify gobject-introspection class.
A small example will show this in action:
from gi.repository import GObject from gi.repository import Notify class MyClass(GObject.Object): def __init__(self): super(MyClass, self).__init__() # lets initialise with the application name Notify.init("myapp_name") def send_notification(self, title, text, file_path_to_icon=""): n = Notify.Notification.new(title, text, file_path_to_icon) n.show() my = MyClass() my.send_notification("this is a title", "this is some text")
To answer Mehul Mohan question as well as propose the shortest way to push a notification with title and message sections:
import os os.system('notify-send "TITLE" "MESSAGE"')
Putting this in function might be a bit confusing due to quotes in quotes
import os def message(title, message): os.system('notify-send "'+title+'" "'+message+'"')
For anyone looking at this in +2018, I can recommend the notify2 package.
This is a pure-python replacement for notify-python, using python-dbus to communicate with the notifications server directly. It’s compatible with Python 2 and 3, and its callbacks can work with Gtk 3 or Qt 4 applications.
You should use notify2 package, it is a replacement for python-notify. Use it as followed.
pip install notify2
And the code:
import notify2 notify2.init('app name') n = notify2.Notification('title', 'message') n.show()