桌面气泡通知 (Desktop notifications )
2016-01-12 16:13
776 查看
效果图:
![](http://img.blog.csdn.net/20160112180955930?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160112181019197?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
守护进程中调用不生效,因为守护进程对图形和终端有一定的限制。可以打印信息到文件里,或者写syslog。
Libnotify 是Qt和GTK图形的一个扩展,已经广泛的应用于许多开源程序,如:Evolution和Pidgin。Libnotify会在安装libnotify时被安装。
使用libnotify必须安装 notification server.
下面的桌面环境中使用自己实现的显示通知,你不能代替他们。他们的通知服务器在登录时自动启动通过的DBus接收来自应用程序的通知。
Cinnamon provides
a notification server itself. Notifications are displayed at the top right corner of the screen.
Enlightenment provides
a notification server through its Notification extension. Notification options are
configurable.
GNOME provides a notification
server itself. Notifications are displayed at the top of the screen.
KDE
Plasma provides a notification server itself. Notifications are displayed at the bottom right corner of the screen.
在其他的桌面环境中, notification server 需要通过 WM's/DE's "autostart" 选项启动. (它可以通过的DBus第一个i会话被推出,但是这不是很理想,因为它需要全局配置.)
You can choose one of the following implementations:
Avant
Window Navigator — A notification-daemon applet is available for AWN.
https://github.com/p12tic/awn-extras || awn-extras-appletsAUR
Deepin Notifications — Notification server for Deepin.
https://github.com/linuxdeepin/deepin-notifications || deepin-notifications
Dunst — Minimalistic notification daemon for Linux designed to fit nicely into minimalistic windowmanagers like dwm.
http://www.knopwob.org/dunst/ || dunst
LXQt Notification Daemon — Notification server for LXQt.
https://github.com/lxde/lxqt-notificationd || lxqt-notificationd
Notification Daemon — The notification server used by GNOME
Flashback.
https://github.com/GNOME/notification-daemon || notification-daemonYou can run it manually using
MATE Notification Daemon — Notification server for MATE.
https://github.com/mate-desktop/mate-notification-daemon/ ||
GTK+ 2: mate-notification-daemon,
GTK+ 3 (experimental): mate-notification-daemon-gtk3
Notify OSD — Notification server for Unity.
https://launchpad.net/notify-osd || notify-osd
statnot — Small, lightweight notification daemon that can output notifications to the root window's title, stdout or FIFO pipes, making it integrate very well with tiling window managers.
https://github.com/halhen/statnot || statnotAUR
twmn — Notification system for tiling window managers.
https://github.com/sboli/twmn || twmn-gitAUR
Xfce Notification Daemon — Notification server for Xfce.
http://goodies.xfce.org/projects/applications/xfce4-notifyd || xfce4-notifyd
Tip: To configure xfce4-notifyd, run the following command:
在许多编程语言中,您可以通过 GObject-Introspection或bindings很容易地编写你自己的libnotify显示消息,也可以简单地使用bash。
下面是实现“Hello world”气泡消息的简单示例
Bash
Dependency: libnotify
Tip:
可用的内置图标概述e...http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html(也可以自定义图标)
要以root运行一个后台脚本发送桌面通知(更换用户与用户运行的X):
Boo
Dependency: notify-sharp-3 (boo)
Makedependency: boo
Build with:
Run with:
C
Dependency: libnotify
Build with:
C++
Dependency: libnotifymmAUR
Build with:
C#
Dependency: notify-sharp-3
Build with:
Run with:
Cobra
Dependency: notify-sharp-3
Makedependency: cobraAUR[broken
link: archived in aur-mirror]
Build with:
Run with:
F#
Dependency: notify-sharp-3
Makedependency: fsharpAUR
Build with:
Run with:
Genie
Dependency: libnotify
Makedependency: vala
Build with:
Groovy
Dependencies: groovy, java-gnomeAUR
Build with:
Run with:
Java
Dependency: java-gnomeAUR
Makedependency: java-environment
Build with:
Run with:
JavaScript
Dependencies: libnotify, gjs (works
also with seed)
Lua
Dependencies: libnotify, lua-lgi
Perl
Dependencies: libnotify, perl-glib-object-introspectionAUR
Python
Dependencies: libnotify, python-gobject (or python2-gobject for
Python 2)
Ruby
Dependencies: libnotify, ruby-gir_ffiAUR[broken
link: archived in aur-mirror]
Rust
Dependencies: rust and cargo-binAUR (or
just multirustAUR)
notification crate: notify-rust
Scala
Dependency: java-gnomeAUR (and scala)
Makedependency: scala
Build with:
Run with:
Vala
Dependency: libnotify
Makedependency: vala
Build with:
Visual Basic .NET
Dependency: notify-sharp-3
Makedependency: mono-basic
Build with:
Run with:
Libnotify 手册:https://developer.gnome.org/libnotify/
C 实例:http://milky.manishsinha.net/2009/03/29/working-with-libnotify/
Python 实例(french article):https://hashbang.fr/tutoriel-notify.html
官网资料:https://wiki.archlinux.org/index.php/Desktop_notifications
气泡中图标资料:http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
守护进程中调用不生效,因为守护进程对图形和终端有一定的限制。可以打印信息到文件里,或者写syslog。
Libnotify
Libnotify 是Qt和GTK图形的一个扩展,已经广泛的应用于许多开源程序,如:Evolution和Pidgin。Libnotify会在安装libnotify时被安装。使用libnotify必须安装 notification server.
Notification servers
内置
下面的桌面环境中使用自己实现的显示通知,你不能代替他们。他们的通知服务器在登录时自动启动通过的DBus接收来自应用程序的通知。Cinnamon provides
a notification server itself. Notifications are displayed at the top right corner of the screen.
Enlightenment provides
a notification server through its Notification extension. Notification options are
configurable.
GNOME provides a notification
server itself. Notifications are displayed at the top of the screen.
KDE
Plasma provides a notification server itself. Notifications are displayed at the bottom right corner of the screen.
独立
在其他的桌面环境中, notification server 需要通过 WM's/DE's "autostart" 选项启动. (它可以通过的DBus第一个i会话被推出,但是这不是很理想,因为它需要全局配置.)You can choose one of the following implementations:
Avant
Window Navigator — A notification-daemon applet is available for AWN.
https://github.com/p12tic/awn-extras || awn-extras-appletsAUR
Deepin Notifications — Notification server for Deepin.
https://github.com/linuxdeepin/deepin-notifications || deepin-notifications
Dunst — Minimalistic notification daemon for Linux designed to fit nicely into minimalistic windowmanagers like dwm.
http://www.knopwob.org/dunst/ || dunst
LXQt Notification Daemon — Notification server for LXQt.
https://github.com/lxde/lxqt-notificationd || lxqt-notificationd
Notification Daemon — The notification server used by GNOME
Flashback.
https://github.com/GNOME/notification-daemon || notification-daemonYou can run it manually using
/usr/lib/notification-daemon-1.0/notification-daemon.
MATE Notification Daemon — Notification server for MATE.
https://github.com/mate-desktop/mate-notification-daemon/ ||
GTK+ 2: mate-notification-daemon,
GTK+ 3 (experimental): mate-notification-daemon-gtk3
Notify OSD — Notification server for Unity.
https://launchpad.net/notify-osd || notify-osd
statnot — Small, lightweight notification daemon that can output notifications to the root window's title, stdout or FIFO pipes, making it integrate very well with tiling window managers.
https://github.com/halhen/statnot || statnotAUR
twmn — Notification system for tiling window managers.
https://github.com/sboli/twmn || twmn-gitAUR
Xfce Notification Daemon — Notification server for Xfce.
http://goodies.xfce.org/projects/applications/xfce4-notifyd || xfce4-notifyd
Tip: To configure xfce4-notifyd, run the following command:
xfce4-notifyd-config.
在程序中用法
在许多编程语言中,您可以通过 GObject-Introspection或bindings很容易地编写你自己的libnotify显示消息,也可以简单地使用bash。下面是实现“Hello world”气泡消息的简单示例
Bash
Dependency: libnotify
hello_world.sh
#!/bin/bash notify-send 'Hello world!' 'This is an example notification.' --icon=dialog-information
Tip:
可用的内置图标概述e...http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html(也可以自定义图标)
要以root运行一个后台脚本发送桌面通知(更换用户与用户运行的X):
# sudo -u X_user DISPLAY=:0 notify-send 'Hello world!' 'This is an example notification.'
Boo
Dependency: notify-sharp-3 (boo)
Makedependency: boo
Build with:
booc hello_world.boo
Run with:
mono hello_world.exe(or
booi hello_world.boo)
hello_world.boo
import Notifications from "notify-sharp" Hello = Notification() Hello.Summary = "Hello world!" Hello.Body = "This is an example notification." Hello.IconName = "dialog-information" Hello.Show()
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); g_object_unref(G_OBJECT(Hello)); notify_uninit(); }
C++
Dependency: libnotifymmAUR
Build with:
g++ -o hello_world `pkg-config --cflags --libs libnotifymm-1.0` hello_world.cc
hello_world.cc
#include <libnotifymm.h> int main(int argc, char *argv[]) { Notify::init("Hello world!"); Notify::Notification Hello("Hello world", "This is an example notification.", "dialog-information"); Hello.show(); }
C#
Dependency: notify-sharp-3
Build with:
mcs -pkg:notify-sharp-3.0 hello_world.cs
Run with:
mono hello_world.exe
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(); } }
Cobra
Dependency: notify-sharp-3
Makedependency: cobraAUR[broken
link: archived in aur-mirror]
Build with:
cobra -c hello_world
Run with:
mono hello_world.exe
hello_world.cs
@args -pkg:notify-sharp-3.0 use Notifications class HelloWorld def main hello = Notification() hello.summary = "Hello world!" hello.body = "This is an example notification." hello.iconName = "dialog-information" hello.show
F#
Dependency: notify-sharp-3
Makedependency: fsharpAUR
Build with:
fsharpc -r:notify-sharp.dll -I:/usr/lib/mono/notify-sharp-3.0/ -I:/usr/lib/mono/gtk-sharp-3.0/ hello_world.fs
Run with:
mono hello_world.exe
hello_world.fs
open Notifications let 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 ()
Groovy
Dependencies: groovy, java-gnomeAUR
Build with:
groovyc -cp /usr/share/java/gtk.jar HelloWorld.groovy && jar cfe HelloWorld.jar HelloWorld HelloWorld.class
Run with:
java -cp /usr/share/groovy/embeddable/groovy-all.jar:/usr/share/java/gtk.jar:HelloWorld.jar HelloWorld(or
groovy -cp /usr/share/java/gtk.jar HelloWorld.groovy)
HelloWorld.groovy
import org.gnome.gtk.* import org.gnome.notify.* Gtk.init() Notify.init("Hello world") def Hello = new Notification("Hello world!", "This is an example notification.", "dialog-information") Hello.show()
Java
Dependency: java-gnomeAUR
Makedependency: java-environment
Build with:
javac -cp /usr/share/java/gtk.jar HelloWorld.java && jar cfe HelloWorld.jar HelloWorld HelloWorld.class
Run with:
java -cp /usr/share/java/gtk.jar:HelloWorld.jar HelloWorld
HelloWorld.java
import org.gnome.gtk.Gtk; import org.gnome.notify.Notify; import org.gnome.notify.Notification; public class HelloWorld { public static void main(String[] args) { Gtk.init(args); Notify.init("Hello world"); Notification Hello = new Notification("Hello world!", "This is an example notification.", "dialog-information"); Hello.show(); } }
JavaScript
Dependencies: libnotify, gjs (works
also with seed)
hello_world.js
#!/usr/bin/gjs const Notify = imports.gi.Notify; Notify.init ("Hello world"); var Hello=new Notify.Notification ({summary: "Hello world!", body: "This is an example notification.", "icon-name": "dialog-information"}); Hello.show ();
Lua
Dependencies: libnotify, lua-lgi
hello_world.lua
#!/usr/bin/lua lgi = require 'lgi' Notify = lgi.require('Notify') Notify.init("Hello world") Hello=Notify.Notification.new("Hello world","This is an example notification.","dialog-information") Hello:show()
Perl
Dependencies: libnotify, perl-glib-object-introspectionAUR
hello_world.pl
#!/usr/bin/perl use Glib::Object::Introspection; Glib::Object::Introspection->setup ( basename => 'Notify', version => '0.7', package => 'Notify'); Notify->init; my $hello = Notify::Notification->new("Hello world!", "This is an example notification.", "dialog-information"); $hello->show;
Python
Dependencies: libnotify, python-gobject (or python2-gobject for
Python 2)
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()
Ruby
Dependencies: libnotify, ruby-gir_ffiAUR[broken
link: archived in aur-mirror]
hello_world.rb
#!/usr/bin/ruby require 'gir_ffi' GirFFI.setup :Notify Notify.init("Hello world") Hello = Notify::Notification.new("Hello world!", "This is an example notification.", "dialog-information") Hello.show
Rust
Dependencies: rust and cargo-binAUR (or
just multirustAUR)
notification crate: notify-rust
hello_world.rs
extern crate notify_rust; use notify_rust::Notification; fn main(){ Notification::new() .summary("Hello world") .body("This is an example notification") .icon("dialog-information") .show(); }
Scala
Dependency: java-gnomeAUR (and scala)
Makedependency: scala
Build with:
scalac -cp /usr/share/java/gtk.jar -d HelloWorld.jar HelloWorld.scala
Run with:
java -cp /usr/share/java/gtk.jar:HelloWorld.jar HelloWorld(or
scala -cp /usr/share/java/gtk.jar HelloWorld.scala)
HelloWorld.scala
import org.gnome.gtk._ import org.gnome.notify._ object HelloWorld { def main(args: Array[String]) { Gtk.init(args) Notify.init("Hello world") var Hello = new Notification("Hello world!", "This is an example notification.", "dialog-information") Hello.show() } }
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 (); } }
Visual Basic .NET
Dependency: notify-sharp-3
Makedependency: mono-basic
Build with:
vbnc -r:/usr/lib/mono/notify-sharp-3.0/notify-sharp.dll hello_world.vb
Run with:
mono hello_world.exe
hello_world.vb
Imports Notifications Public Class Hello Public Shared Sub Main Dim Hello As New Notification Hello.Summary = "Hello world!" Hello.Body = "This is an example notification." Hello.IconName = "dialog-information" Hello.Show End Sub End Class
另见
Libnotify 手册:https://developer.gnome.org/libnotify/C 实例:http://milky.manishsinha.net/2009/03/29/working-with-libnotify/
Python 实例(french article):https://hashbang.fr/tutoriel-notify.html
官网资料:https://wiki.archlinux.org/index.php/Desktop_notifications
气泡中图标资料:http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
相关文章推荐
- Sqoop操作实践
- Sqoop操作实践
- CentOS7下Firewall防火墙配置用法详解
- qt 版本和linux下字符编码问题
- OpenCV2:Mat属性type,depth,step
- .net网站报错:对象的当前状态使该操作无效
- xshell密钥登录和密钥登录注意
- YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
- docker run hello-world的工作流程
- ubuntu-14.04.3上单机安装hadoop2.6
- Nginx: error while loading shared libraries: libpcre.so.1解决
- 将Linux代码移植到Windows的简单方法
- java.lang.SecurityException: Filter of class org.apache.catalina.ssi.SSIFilter is privileged and cannot be loaded by this web application
- Linux文件的三个时间详解
- linux 防火墙--firewalld学习
- Linux shell下的颜色含义
- linux :安装中文输入法
- 关于linux - Centos 7 下DHCP服务的安装与配置
- linux cron实战:定时github
- 监控web页面的性能指标。