Desktop notifications

From ArchWiki
Revision as of 05:53, 4 November 2011 by City-busz (Talk | contribs) (Apply style guides)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Libnotify is an easy way to display desktop notifications and information in a small dialog. It's used in much open source apps like Evolution, Pidgin, etc. It has support for Gtk+ and Qt applications and is desktop independent.

Installation

Libnotify can be installed with the package libnotify, available in the Official Repositories.

In order to use libnotify, you have to install a notification server:

GNOME

Note: notification-daemon is a required component for GNOME Fallback mode. You can't login without it.

KDE

KDE uses knotify4 from kdebase-runtime package to display notifications. If you are using KDE, this package is already installed.

XFCE

To get notifications in XFCE, you need to install xfce4-notifyd, available in the Official Repositories.

Tip: To configure xfce4-notifyd, run the following command in the terminal: xfce4-notifyd-config.

Unity

Unity uses Notify OSD, which is available in Arch User Repository: notify-osdAUR.

Other DEs

Other desktop environments could use notification-daemon (should be launched explicitly), xfce4-notifyd or notify-osdAUR (automatically launched by D-Bus on request).

Tips and tricks

Write your own notify app

You can write your own libnotify display messages easily in many programming languages through GObject-Introspection or bindings, or you can simply use bash.

The following examples display simple a "Hello world" notification.

Bash

hello_world.sh
#!/bin/bash
notify-send 'Hello world!' 'This is an example notification.' --icon=dialog-information

C

  • Dependency: libnotify
  • Build with: gcc -o hello_world `pkg-config --cflags --libs libnotify` hello_world.c
hello_world.c
#include <libnotify/notify.h>
void main () {
	notify_init ("Hello world!");
	NotifyNotification * Hello = notify_notification_new ("Hello world", "This is an example notification.", "dialog-information");
	notify_notification_show (Hello, NULL);
	notify_uninit ();
}

C#

hello_world.cs
using Notifications;
public class HelloWorld {
	static void Main() {
		var Hello = new Notification();
		Hello.Summary  = "Hello world!";
		Hello.Body     = "This is an example notification.";
		Hello.IconName = "dialog-information";
		Hello.Show();
	}
}

Genie

  • Dependency: libnotify
  • Makedependency: vala
  • Build with: valac --pkg libnotify hello_world.gs
hello_world.gs
uses 
	Notify

init
	Notify.init ("Hello world")
	var Hello=new Notification ("Hello world!","This is an example notification.","dialog-information")
	Hello.show ()
	Notify.uninit ()

JavaScript (gjs)

hello_world.js
#!/usr/bin/gjs
Notify = imports.gi.Notify;
Notify.init ("Hello world");
Hello=Notify.Notification.new ("Hello world!","This is an example notification.","dialog-information");
Hello.show ();
Notify.uninit ();

JavaScript (seed)

hello_world.js
#!/usr/bin/seed
Notify = imports.gi.Notify;
Notify.init ("Hello world");
Hello=new Notify.Notification ({summary: "Hello world!",
                                body: "This is an example notification.",
                                "icon-name": "dialog-information"});
Hello.show ();
Notify.uninit ();

Perl

hello_world.pl
#!/usr/bin/perl
use Gtk2::Notify -init, "Hello world";
my $hello = Gtk2::Notify->new("Hello world!", "This is an example notification.", "dialog-information");
$hello->show;

Python

hello_world.py
#!/usr/bin/python
from gi.repository import Notify
Notify.init ("Hello world")
Hello=Notify.Notification.new ("Hello world","This is an example notification.","dialog-information")
Hello.show ()
Notify.uninit ()

Python 2 (python-notify)

hello_world.py
#!/usr/bin/python2
import pynotify
pynotify.init ("Hello world")
Hello=pynotify.Notification ("Hello world!","This is an example notification.","dialog-information")
Hello.show ()
pynotify.uninit ()

Ruby

hello_world.rb
#!/usr/bin/ruby
require 'RNotify'
Notify.init("Hello world")
Hello = Notify::Notification.new("Hello world!", "This is an example notification.", "dialog-information")
Hello.show
Notify.uninit

Vala

  • Dependency: libnotify
  • Makedependency: vala
  • Build with: valac --pkg libnotify hello_world.vala
hello_world.vala
using Notify;
public class HelloWorld {
	static void main () {
		Notify.init ("Hello world");
		var Hello = new Notification("Hello world!", "This is an example notification.", "dialog-information");
		Hello.show ();
		Notify.uninit ();
	}
}

See also