From: Florian Forster Date: Wed, 4 Jun 2008 21:28:54 +0000 (+0200) Subject: notify_desktop plugin: Renamed the desktop_notification plugin. X-Git-Tag: collectd-4.5.0~126 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=105436ca4a5de47c87f7bb7e31896878dc4ae97b;p=collectd.git notify_desktop plugin: Renamed the desktop_notification plugin. This way it's more consistent with the notify_email plugin. --- diff --git a/configure.in b/configure.in index 856aa827..13228c15 100644 --- a/configure.in +++ b/configure.in @@ -2512,7 +2512,7 @@ AC_PLUGIN([battery], [$plugin_battery], [Battery statistics]) AC_PLUGIN([cpu], [$plugin_cpu], [CPU usage statistics]) AC_PLUGIN([cpufreq], [$plugin_cpufreq], [CPU frequency statistics]) AC_PLUGIN([csv], [yes], [CSV output plugin]) -AC_PLUGIN([desktop_notification], [$with_libnotify], [Desktop notifications]) +AC_PLUGIN([notify_desktop], [$with_libnotify], [Desktop notifications]) AC_PLUGIN([df], [$plugin_df], [Filesystem usage statistics]) AC_PLUGIN([disk], [$plugin_disk], [Disk usage statistics]) AC_PLUGIN([dns], [$with_libpcap], [DNS traffic analysis]) @@ -2674,7 +2674,6 @@ Configuration: cpu . . . . . . . . . $enable_cpu cpufreq . . . . . . . $enable_cpufreq csv . . . . . . . . . $enable_csv - desktop_notification $enable_desktop_notification df . . . . . . . . . $enable_df disk . . . . . . . . $enable_disk dns . . . . . . . . . $enable_dns @@ -2699,6 +2698,7 @@ Configuration: network . . . . . . . $enable_network nfs . . . . . . . . . $enable_nfs nginx . . . . . . . . $enable_nginx + notify_desktop . . . $enable_notify_desktop notify_email . . . . $enable_notify_email ntpd . . . . . . . . $enable_ntpd nut . . . . . . . . . $enable_nut diff --git a/src/Makefile.am b/src/Makefile.am index 149ecb32..efbe0d73 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -182,15 +182,6 @@ collectd_LDADD += "-dlopen" csv.la collectd_DEPENDENCIES += csv.la endif -if BUILD_PLUGIN_DESKTOP_NOTIFICATION -pkglib_LTLIBRARIES += desktop_notification.la -desktop_notification_la_SOURCES = desktop_notification.c -desktop_notification_la_CFLAGS = $(LIBNOTIFY_CFLAGS) -desktop_notification_la_LDFLAGS = -module -avoid-version $(LIBNOTIFY_LIBS) -collectd_LDADD += "-dlopen" desktop_notification.la -collectd_DEPENDENCIES += desktop_notification.la -endif - if BUILD_PLUGIN_DF pkglib_LTLIBRARIES += df.la df_la_SOURCES = df.c @@ -478,6 +469,15 @@ collectd_LDADD += "-dlopen" nginx.la collectd_DEPENDENCIES += nginx.la endif +if BUILD_PLUGIN_NOTIFY_DESKTOP +pkglib_LTLIBRARIES += notify_desktop.la +notify_desktop_la_SOURCES = notify_desktop.c +notify_desktop_la_CFLAGS = $(LIBNOTIFY_CFLAGS) +notify_desktop_la_LDFLAGS = -module -avoid-version $(LIBNOTIFY_LIBS) +collectd_LDADD += "-dlopen" notify_desktop.la +collectd_DEPENDENCIES += notify_desktop.la +endif + if BUILD_PLUGIN_NOTIFY_EMAIL pkglib_LTLIBRARIES += notify_email.la notify_email_la_SOURCES = notify_email.c diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 2b3dedf7..df5f2423 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -278,32 +278,6 @@ number. =back -=head2 Plugin C - -This plugin sends a desktop notification to a notification daemon, as defined -in the Desktop Notification Specification. To actually display the -notifications, B is required and B has to be -able to access the X server. - -The Desktop Notification Specification can be found at -L. - -=over 4 - -=item B I - -=item B I - -=item B I - -Set the I, in milliseconds, after which to expire the notification -for C, C and C severities respectively. If zero has -been specified, the displayed notification will not be closed at all - the -user has to do so herself. These options default to 5000. If a negative number -has been specified, the default is used as well. - -=back - =head2 Plugin C =over 4 @@ -896,6 +870,32 @@ and are checked by default depends on the distribution you use. =back +=head2 Plugin C + +This plugin sends a desktop notification to a notification daemon, as defined +in the Desktop Notification Specification. To actually display the +notifications, B is required and B has to be +able to access the X server. + +The Desktop Notification Specification can be found at +L. + +=over 4 + +=item B I + +=item B I + +=item B I + +Set the I, in milliseconds, after which to expire the notification +for C, C and C severities respectively. If zero has +been specified, the displayed notification will not be closed at all - the +user has to do so herself. These options default to 5000. If a negative number +has been specified, the default is used as well. + +=back + =head2 Plugin C =over 4 diff --git a/src/desktop_notification.c b/src/desktop_notification.c deleted file mode 100644 index 3b6af07f..00000000 --- a/src/desktop_notification.c +++ /dev/null @@ -1,160 +0,0 @@ -/** - * collectd - src/desktop_notification.c - * Copyright (C) 2008 Sebastian Harl - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; only version 2 of the License is applicable. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Author: - * Sebastian Harl - **/ - -/* - * This plugin sends desktop notifications to a notification daemon. - */ - -#include "collectd.h" -#include "plugin.h" -#include "configfile.h" - -#include -#include - -#define log_info(...) INFO ("desktop_notification: " __VA_ARGS__) -#define log_warn(...) WARNING ("desktop_notification: " __VA_ARGS__) -#define log_err(...) ERROR ("desktop_notification: " __VA_ARGS__) - -#define DEFAULT_TIMEOUT 5000 - -static int okay_timeout = DEFAULT_TIMEOUT; -static int warn_timeout = DEFAULT_TIMEOUT; -static int fail_timeout = DEFAULT_TIMEOUT; - -static int set_timeout (oconfig_item_t *ci, int *timeout) -{ - if ((0 != ci->children_num) || (1 != ci->values_num) - || (OCONFIG_TYPE_NUMBER != ci->values[0].type)) { - log_err ("%s expects a single number argument.", ci->key); - return 1; - } - - *timeout = (int)ci->values[0].value.number; - if (0 > *timeout) - *timeout = DEFAULT_TIMEOUT; - return 0; -} /* set_timeout */ - -static int c_notify_config (oconfig_item_t *ci) -{ - int i = 0; - - for (i = 0; i < ci->children_num; ++i) { - oconfig_item_t *c = ci->children + i; - - if (0 == strcasecmp (c->key, "OkayTimeout")) - set_timeout (c, &okay_timeout); - else if (0 == strcasecmp (c->key, "WarningTimeout")) - set_timeout (c, &warn_timeout); - else if (0 == strcasecmp (c->key, "FailureTimeout")) - set_timeout (c, &fail_timeout); - } - return 0; -} /* c_notify_config */ - -static int c_notify (const notification_t *n) -{ - NotifyNotification *notification = NULL; - NotifyUrgency urgency = NOTIFY_URGENCY_LOW; - int timeout = okay_timeout; - - char summary[1024]; - - if (NOTIF_WARNING == n->severity) { - urgency = NOTIFY_URGENCY_NORMAL; - timeout = warn_timeout; - } - else if (NOTIF_FAILURE == n->severity) { - urgency = NOTIFY_URGENCY_CRITICAL; - timeout = fail_timeout; - } - - ssnprintf (summary, sizeof (summary), "collectd %s notification", - (NOTIF_FAILURE == n->severity) ? "FAILURE" - : (NOTIF_WARNING == n->severity) ? "WARNING" - : (NOTIF_OKAY == n->severity) ? "OKAY" : "UNKNOWN"); - - notification = notify_notification_new (summary, n->message, NULL, NULL); - if (NULL == notification) { - log_err ("Failed to create a new notification."); - return -1; - } - - notify_notification_set_urgency (notification, urgency); - notify_notification_set_timeout (notification, timeout); - - if (! notify_notification_show (notification, NULL)) - log_err ("Failed to display notification."); - - g_object_unref (G_OBJECT (notification)); - return 0; -} /* c_notify */ - -static int c_notify_shutdown (void) -{ - plugin_unregister_init ("desktop_notification"); - plugin_unregister_notification ("desktop_notification"); - plugin_unregister_shutdown ("desktop_notification"); - - if (notify_is_initted ()) - notify_uninit (); - return 0; -} /* c_notify_shutdown */ - -static int c_notify_init (void) -{ - char *name = NULL; - char *vendor = NULL; - char *version = NULL; - char *spec_version = NULL; - - if (! notify_init (PACKAGE_STRING)) { - log_err ("Failed to initialize libnotify."); - return -1; - } - - if (! notify_get_server_info (&name, &vendor, &version, &spec_version)) - log_warn ("Failed to get the notification server info. " - "Check if you have a notification daemon running."); - else { - log_info ("Found notification daemon: %s (%s) %s (spec version %s)", - name, vendor, version, spec_version); - free (name); - free (vendor); - free (version); - free (spec_version); - } - - plugin_register_notification ("desktop_notification", c_notify); - plugin_register_shutdown ("desktop_notification", c_notify_shutdown); - return 0; -} /* c_notify_init */ - -void module_register (void) -{ - plugin_register_complex_config ("desktop_notification", c_notify_config); - plugin_register_init ("desktop_notification", c_notify_init); - return; -} /* module_register */ - -/* vim: set sw=4 ts=4 tw=78 noexpandtab : */ - diff --git a/src/notify_desktop.c b/src/notify_desktop.c new file mode 100644 index 00000000..822b5066 --- /dev/null +++ b/src/notify_desktop.c @@ -0,0 +1,160 @@ +/** + * collectd - src/notify_desktop.c + * Copyright (C) 2008 Sebastian Harl + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; only version 2 of the License is applicable. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: + * Sebastian Harl + **/ + +/* + * This plugin sends desktop notifications to a notification daemon. + */ + +#include "collectd.h" +#include "plugin.h" +#include "configfile.h" + +#include +#include + +#define log_info(...) INFO ("notify_desktop: " __VA_ARGS__) +#define log_warn(...) WARNING ("notify_desktop: " __VA_ARGS__) +#define log_err(...) ERROR ("notify_desktop: " __VA_ARGS__) + +#define DEFAULT_TIMEOUT 5000 + +static int okay_timeout = DEFAULT_TIMEOUT; +static int warn_timeout = DEFAULT_TIMEOUT; +static int fail_timeout = DEFAULT_TIMEOUT; + +static int set_timeout (oconfig_item_t *ci, int *timeout) +{ + if ((0 != ci->children_num) || (1 != ci->values_num) + || (OCONFIG_TYPE_NUMBER != ci->values[0].type)) { + log_err ("%s expects a single number argument.", ci->key); + return 1; + } + + *timeout = (int)ci->values[0].value.number; + if (0 > *timeout) + *timeout = DEFAULT_TIMEOUT; + return 0; +} /* set_timeout */ + +static int c_notify_config (oconfig_item_t *ci) +{ + int i = 0; + + for (i = 0; i < ci->children_num; ++i) { + oconfig_item_t *c = ci->children + i; + + if (0 == strcasecmp (c->key, "OkayTimeout")) + set_timeout (c, &okay_timeout); + else if (0 == strcasecmp (c->key, "WarningTimeout")) + set_timeout (c, &warn_timeout); + else if (0 == strcasecmp (c->key, "FailureTimeout")) + set_timeout (c, &fail_timeout); + } + return 0; +} /* c_notify_config */ + +static int c_notify (const notification_t *n) +{ + NotifyNotification *notification = NULL; + NotifyUrgency urgency = NOTIFY_URGENCY_LOW; + int timeout = okay_timeout; + + char summary[1024]; + + if (NOTIF_WARNING == n->severity) { + urgency = NOTIFY_URGENCY_NORMAL; + timeout = warn_timeout; + } + else if (NOTIF_FAILURE == n->severity) { + urgency = NOTIFY_URGENCY_CRITICAL; + timeout = fail_timeout; + } + + ssnprintf (summary, sizeof (summary), "collectd %s notification", + (NOTIF_FAILURE == n->severity) ? "FAILURE" + : (NOTIF_WARNING == n->severity) ? "WARNING" + : (NOTIF_OKAY == n->severity) ? "OKAY" : "UNKNOWN"); + + notification = notify_notification_new (summary, n->message, NULL, NULL); + if (NULL == notification) { + log_err ("Failed to create a new notification."); + return -1; + } + + notify_notification_set_urgency (notification, urgency); + notify_notification_set_timeout (notification, timeout); + + if (! notify_notification_show (notification, NULL)) + log_err ("Failed to display notification."); + + g_object_unref (G_OBJECT (notification)); + return 0; +} /* c_notify */ + +static int c_notify_shutdown (void) +{ + plugin_unregister_init ("notify_desktop"); + plugin_unregister_notification ("notify_desktop"); + plugin_unregister_shutdown ("notify_desktop"); + + if (notify_is_initted ()) + notify_uninit (); + return 0; +} /* c_notify_shutdown */ + +static int c_notify_init (void) +{ + char *name = NULL; + char *vendor = NULL; + char *version = NULL; + char *spec_version = NULL; + + if (! notify_init (PACKAGE_STRING)) { + log_err ("Failed to initialize libnotify."); + return -1; + } + + if (! notify_get_server_info (&name, &vendor, &version, &spec_version)) + log_warn ("Failed to get the notification server info. " + "Check if you have a notification daemon running."); + else { + log_info ("Found notification daemon: %s (%s) %s (spec version %s)", + name, vendor, version, spec_version); + free (name); + free (vendor); + free (version); + free (spec_version); + } + + plugin_register_notification ("notify_desktop", c_notify); + plugin_register_shutdown ("notify_desktop", c_notify_shutdown); + return 0; +} /* c_notify_init */ + +void module_register (void) +{ + plugin_register_complex_config ("notify_desktop", c_notify_config); + plugin_register_init ("notify_desktop", c_notify_init); + return; +} /* module_register */ + +/* vim: set sw=4 ts=4 tw=78 noexpandtab : */ +