Compare commits
136 Commits
Author | SHA1 | Date |
---|---|---|
|
80121a3b8c | |
|
650f2f123e | |
|
a8374698c4 | |
|
359443f70f | |
|
3d81394cd2 | |
|
5e6a52fa4f | |
|
532608248e | |
|
adb3e0c7bf | |
|
13718b6ea0 | |
|
f3eb807464 | |
|
c6534a144c | |
|
543d636153 | |
|
9e9cb423b9 | |
|
cc30d8b8dd | |
|
e8ea0c39d0 | |
|
74f87250a3 | |
|
07a2b2e32c | |
|
8ce5daac4f | |
|
9d28fa3600 | |
|
4e40a460ce | |
|
8162b1d397 | |
|
4d68baf5ef | |
|
596d09a78f | |
|
f5b9619b2f | |
|
afef1e98b3 | |
|
ecb1d4ec08 | |
|
6d8e38bc69 | |
|
6e6d52340b | |
|
1fba04bc03 | |
|
a674e610ee | |
|
c99aacdb91 | |
|
997115b459 | |
|
e8a57f7245 | |
|
ed43da3479 | |
|
02f2f91c3d | |
|
d6f4734adf | |
|
6e871a4047 | |
|
59553a5af2 | |
|
2674c76f53 | |
|
d138596c78 | |
|
d07785959c | |
|
47400a2ff7 | |
|
1da6996491 | |
|
e05030875e | |
|
12d4b90623 | |
|
6c707d2dfd | |
|
a396dd9af9 | |
|
00a7e74774 | |
|
652b4d6911 | |
|
f9c1cf1b71 | |
|
997e2e374a | |
|
0d86d8c8d5 | |
|
b2d6712b15 | |
|
961f45f44c | |
|
e72396e8ca | |
|
d21b8140a8 | |
|
c4d5ea8baf | |
|
d348a36a05 | |
|
d5a888fa31 | |
|
736fcea1d0 | |
|
2accd4ceab | |
|
333f7c5d32 | |
|
7f31e29e62 | |
|
1ad4630107 | |
|
e35921f10f | |
|
edb1dc8394 | |
|
a228f1e84d | |
|
05112e2a5b | |
|
39575f7c6f | |
|
dfaa76109e | |
|
48e64c39bc | |
|
698a05fcc4 | |
|
50cf335a34 | |
|
4e2971be0c | |
|
d9ba514b15 | |
|
98a4bf483a | |
|
d30f73d628 | |
|
ea61ec4301 | |
|
b95d41283e | |
|
edfd97f4a9 | |
|
a599a04de6 | |
|
162d195869 | |
|
2e8ed8add3 | |
|
55eb69247f | |
|
44f9222212 | |
|
f5a845dd00 | |
|
d3277ac331 | |
|
9862ab85e8 | |
|
3f71a3b3ba | |
|
b7351a39fb | |
|
593f260722 | |
|
a1bedfa65e | |
|
43aac613f1 | |
|
46e8b1cfad | |
|
5398ecfe3f | |
|
c954cabaad | |
|
6b03c47e04 | |
|
da7a6a229b | |
|
2f2c5649ef | |
|
dafa138886 | |
|
da49c8c599 | |
|
5a486c5490 | |
|
fc6cba771d | |
|
f9355ca357 | |
|
2b4ab4d22f | |
|
9128042026 | |
|
6982957661 | |
|
20721a3351 | |
|
5e3654b70b | |
|
b6e1f7f1a2 | |
|
bc612b9fc8 | |
|
b873c61ecc | |
|
6a63ae0e8a | |
|
2fe1748295 | |
|
34aa27f600 | |
|
bd385da02a | |
|
3a60c433fd | |
|
f6638ebfb7 | |
|
edfabdf078 | |
|
e8ecbfb036 | |
|
11d46bf9fd | |
|
fb7790f5b4 | |
|
a5ad7b6063 | |
|
52cb20bb53 | |
|
d12145208a | |
|
1c40dfaff4 | |
|
ae361b0d96 | |
|
00203dda48 | |
|
9fd7ac3008 | |
|
10ea1f0e65 | |
|
cdc6f37dd8 | |
|
b73380b586 | |
|
9fae742d43 | |
|
b20752a2e5 | |
|
a967c61e5b | |
|
277f40c872 |
|
@ -0,0 +1,37 @@
|
|||
variables:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
|
||||
stages:
|
||||
- build
|
||||
|
||||
build:ubuntu:
|
||||
stage: build
|
||||
image: ubuntu:devel
|
||||
before_script:
|
||||
- apt-get update &&
|
||||
- apt-get install -q -y --no-install-recommends
|
||||
gobject-introspection
|
||||
gtk-doc-tools
|
||||
libgdk-pixbuf2.0-dev
|
||||
libgirepository1.0-dev
|
||||
libglib2.0-dev
|
||||
libgtk-3-dev
|
||||
libpopt-dev
|
||||
xmlto
|
||||
ninja-build
|
||||
python3-pip
|
||||
python3-setuptools
|
||||
xsltproc
|
||||
docbook-xsl-ns
|
||||
- pip3 install meson
|
||||
script:
|
||||
- meson _build -Ddocbook_docs=enabled
|
||||
- ninja -C _build install
|
||||
artifacts:
|
||||
expose_as: "Build artifacts"
|
||||
paths:
|
||||
- _build/docs/notification-spec.html
|
||||
- _build/docs/reference/html
|
||||
- _build/docs/reference/html/index.html
|
||||
- _build/meson-logs
|
||||
|
984
ChangeLog
984
ChangeLog
|
@ -1,984 +0,0 @@
|
|||
Sun Jun 14 14:50:00 UTC 2009 Andre Klapper <a9016009@gmx.de>
|
||||
* libnotify/notification.c:
|
||||
- Remove deprecated GLib symbols.
|
||||
|
||||
========================= 0.4.5 =========================
|
||||
|
||||
Thu Nov 20 03:16:53 PST 2008 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/reference/tmpl/notification.sgml:
|
||||
* ChangeLog:
|
||||
* configure.ac:
|
||||
* NEWS:
|
||||
- Bump to version 0.4.5.
|
||||
|
||||
Thu Sep 25 18:45:41 PDT 2008 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
- Prevent a backwards-compatibility breakage introduced where the
|
||||
"reason" code was added to the "closed" signal. This meant that
|
||||
existing signal handlers that passed extra data would break. We now
|
||||
require that you call notify_notification_get_closed_reason() to get
|
||||
this data.
|
||||
|
||||
Thu Sep 25 18:05:38 PDT 2008 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.h:
|
||||
* NEWS:
|
||||
- Fixed a breakage where we were including gtkversion.h directly.
|
||||
Reported by Richard Hughes.
|
||||
|
||||
Tue Mar 18 21:51:32 PDT 2008 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify-marshal.list:
|
||||
* NEWS:
|
||||
- Add support for sending the closed reason in the signal handler.
|
||||
Closes ticket #139.
|
||||
|
||||
Sat Aug 25 18:08:01 PDT 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tools/notify-send.c:
|
||||
- Relicense notify-send under the LGPL in order to keep licensing
|
||||
simple and to allow reuse in more projects. Fixes bug #124.
|
||||
|
||||
Sun Apr 29 02:45:20 PDT 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* configure.ac:
|
||||
- Bump to version 0.4.4.90.
|
||||
|
||||
Sun Apr 29 00:39:32 PDT 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/reference/tmpl/notification.sgml:
|
||||
* libnotify/notification.c:
|
||||
- Patch by Lucas Rocha to add GObject property accessors for
|
||||
notification IDs.
|
||||
|
||||
========================= 0.4.4 =========================
|
||||
|
||||
Tue Feb 27 21:11:36 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* NEWS:
|
||||
* configure.ac:
|
||||
- Bump to version 0.4.4.
|
||||
|
||||
Thu Feb 15 03:10:39 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* NEWS:
|
||||
- Update with all the fixes in this release.
|
||||
|
||||
Thu Feb 15 02:44:16 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Prevent a crash when the handler for a notification's closed signal
|
||||
removes the last reference to the notification. We attempted to set
|
||||
the ID of the notification after emitting this signal, but the
|
||||
notification was destroyed already. So, keep a reference while doing
|
||||
all this. This fixes bug #116.
|
||||
|
||||
Thu Feb 15 02:29:01 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Get rid of format_func.
|
||||
|
||||
Thu Feb 15 02:06:11 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Fix some memory leaks when appending data to a message. Scary,
|
||||
horrible, traumatizing memory leaks. Actually it's pretty bad,
|
||||
though, so new release coming up soon. This fixes bug #112.
|
||||
|
||||
Thu Feb 15 01:58:52 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/test-image.c:
|
||||
- Use a more common (I hope) icontheme icon for the test.
|
||||
|
||||
Thu Feb 15 00:52:56 PST 2007 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Fix a bug in notify_notification_add_action where the function
|
||||
to free the user data was never called, causing memory leaks.
|
||||
This fixes bug #119.
|
||||
|
||||
Mon Nov 13 23:42:07 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/Makefile.am:
|
||||
A tests/test-size-changes.c:
|
||||
* tests/test-default-action.c:
|
||||
- Added a test program that displays three notifications and then
|
||||
changes the amount of text in one of them.
|
||||
|
||||
Sun Nov 05 12:06:01 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Patch by Giacomo Lozito to fix a problem where the dbus proxy was
|
||||
not being freed on notify_uninit, which led to problems when libnotify
|
||||
was used in a loadable module. This fixes bug #92.
|
||||
|
||||
Sun Nov 05 11:54:10 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* configure.ac:
|
||||
* NEWS:
|
||||
- Bump to version 0.4.3.90.
|
||||
|
||||
Sun Nov 05 11:50:44 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Patch by jylefort to only reset a notification's ID to 0 if it
|
||||
was the notification closed. This fixes bug #94.
|
||||
|
||||
========================= 0.4.3 =========================
|
||||
|
||||
Sun Oct 08 13:21:20 EDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* configure.ac:
|
||||
* NEWS:
|
||||
- Bump the version to 0.4.3.
|
||||
- Add the release datestamp.
|
||||
|
||||
Sun Sep 03 23:48:29 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* NEWS:
|
||||
- Patch by lucasr to fix an invalid assertion in
|
||||
notify_notification_new_with_status_icon. This closes bug #85.
|
||||
|
||||
Sun Sep 03 23:44:01 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* NEWS:
|
||||
- Patch by berndth to stop using g_atexit, as this can fail in the
|
||||
case of a dynamically loaded module. Applications should now call
|
||||
notify_uninit() on exit or on plugin unload. This closes bug #86.
|
||||
|
||||
Mon Jul 31 19:40:10 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Emit the property change notification for "status-icon" and not
|
||||
"attach-icon". This closes bug #81.
|
||||
|
||||
Sat Jul 29 03:02:18 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Patch by Ed Catmur to reset a notification's ID if
|
||||
notify_notification_show() is called on a notification that had
|
||||
already been closed. This causes the notification to receive a new
|
||||
ID. This closes ticket #78.
|
||||
|
||||
Thu Jul 13 00:44:29 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* configure.ac:
|
||||
- Patch by compnerd to check for glib 2.6+ during configure, as that
|
||||
is now required. This closes ticket #69.
|
||||
|
||||
Thu Jul 13 00:41:16 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* AUTHORS:
|
||||
* configure.ac:
|
||||
- Patch by mderezynski to send an array of UCHARs as expected by
|
||||
notification-daemon rather than an array of CHARs. This closes
|
||||
ticket #68.
|
||||
- Bump to version 0.4.2.90.
|
||||
|
||||
========================= 0.4.2 =========================
|
||||
|
||||
Sat Jun 17 19:17:05 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/internal.h:
|
||||
* libnotify/notify.h:
|
||||
* configure.ac:
|
||||
- Add G_BEGIN_DECLS and G_END_DECLS to notify.h, so that libnotify can
|
||||
be used in C++ applications properly.
|
||||
- Bump to version 0.4.2.
|
||||
|
||||
========================= 0.4.1 =========================
|
||||
|
||||
Sat Jun 17 18:17:28 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* Makefile.am:
|
||||
* NEWS:
|
||||
D libnotify.spec.in:
|
||||
* configure.ac:
|
||||
- Fix make distcheck and remove the old RPM spec file.
|
||||
- Update the news.
|
||||
- Bump the version to 0.4.1.
|
||||
|
||||
Thu Jun 15 02:14:14 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Fix a build error on gtk 2.9.2+. This fixes bug #65.
|
||||
|
||||
Tue Jun 06 12:44:48 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/reference/tmpl/notification.sgml:
|
||||
* libnotify/notification.h:
|
||||
- Small random fixes.
|
||||
|
||||
Tue Jun 06 01:45:46 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/reference/libnotify-docs.sgml:
|
||||
* docs/reference/tmpl/libnotify-docs.sgml:
|
||||
- Fix up some references to files.
|
||||
|
||||
Tue Jun 06 01:29:20 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/reference/libnotify-sections.txt:
|
||||
* docs/reference/tmpl/notification.sgml:
|
||||
* docs/reference/tmpl/notify.sgml:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
- Provide more documentation.
|
||||
|
||||
Tue Jun 06 00:27:50 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/reference/tmpl/notification.sgml:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
- Update notify_notification_set_geometry_hints() to take a x, y
|
||||
instead of a GdkRectangle. We don't need the width and height
|
||||
information.
|
||||
|
||||
Tue Jun 06 00:14:00 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
A docs/reference/libnotify-docs.sgml:
|
||||
A docs/reference/libnotify-overrides.txt:
|
||||
A docs/reference/libnotify-sections.txt:
|
||||
A docs/reference/tmpl:
|
||||
A docs/reference/tmpl/libnotify-docs.sgml:
|
||||
A docs/reference/tmpl/libnotify-unused.sgml:
|
||||
A docs/reference/tmpl/notification.sgml:
|
||||
A docs/reference/tmpl/notify.sgml:
|
||||
A docs/reference/Makefile.am:
|
||||
A docs/Makefile.am:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
* libnotify/notify.c:
|
||||
D Doxyfile.in:
|
||||
* Makefile.am:
|
||||
* autogen.sh:
|
||||
* configure.ac:
|
||||
- Add some gtk-doc documentation.
|
||||
|
||||
Sun Jun 04 17:44:27 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
- Patch by chpe to add support for using the new GtkStatusIcon in
|
||||
GTK+ 2.9.x. These functions are #ifdef'd to only be provided in
|
||||
supported versions of GTK. The patch also added support for GObject
|
||||
properties on the NotifyNotification objects. This closes ticket #60.
|
||||
|
||||
Sun Jun 04 16:12:05 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Set _initted to FALSE in notify_uninit(), so that notify_is_initted()
|
||||
won't return TRUE.
|
||||
|
||||
Fri Jun 02 15:56:05 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* AUTHORS:
|
||||
* configure.ac:
|
||||
* libnotify.pc.in:
|
||||
- Improve libnotify.pc by pushing dependencies into Requires: instead of
|
||||
Cflags: and Libs:. This closes ticket #58.
|
||||
- Bump the version to 0.4.0.90.
|
||||
|
||||
========================= 0.4.0 =========================
|
||||
|
||||
Wed Apr 26 01:15:20 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/Makefile.am:
|
||||
- Bundle applet-critical.png.
|
||||
|
||||
Wed Apr 26 01:07:34 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/test-replace.c:
|
||||
- Set the second, replaced notification to have a default expiration.
|
||||
|
||||
Tue Apr 25 23:52:42 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/Makefile.am:
|
||||
* libnotify/notify.h:
|
||||
* NEWS:
|
||||
* configure.ac:
|
||||
- Add GTypes for the enums.
|
||||
- Bump to version 0.4.0.
|
||||
|
||||
Fri Apr 21 15:35:40 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tools/notify-send.c:
|
||||
- Use fprintf instead of g_warning.
|
||||
|
||||
Fri Apr 21 14:38:04 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* AUTHORS:
|
||||
- Add some names to the patch writers list.
|
||||
|
||||
Fri Apr 21 14:35:30 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/test-server-info.c:
|
||||
* NEWS:
|
||||
- Patch by jensgr to fix some C99 usage in the tests code.
|
||||
|
||||
Fri Apr 21 14:21:47 PDT 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tools/Makefile.am:
|
||||
* tools/notify-send.c:
|
||||
* NEWS:
|
||||
* configure.ac:
|
||||
- Patch by M.S. to switch notify-send to use GOption instead of popt,
|
||||
to add -v, --version, -h, and --hint options, and to rename
|
||||
-T, --type to -c, --category. This also fixes assertions when calling
|
||||
notify-send "". This closes ticket #41.
|
||||
|
||||
Mon Mar 20 14:12:15 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tools/notify-send.c:
|
||||
- Change the help for notify-send to indicate that --expire-timeout
|
||||
requires milliseconds, not seconds. This fixes bug #28.
|
||||
- Fixed the short flag for --type to be -T. This fixes bug #18.
|
||||
|
||||
Sat Mar 18 14:47:53 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tools/notify-send.c:
|
||||
- Fix notify-send on PPC.
|
||||
|
||||
Sat Feb 04 17:18:38 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Don't complain about an unknown action when the action is "default"
|
||||
|
||||
Sat Feb 04 13:29:22 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
A tests/test-xy-actions.c:
|
||||
* tests/Makefile.am:
|
||||
- Add test-xy-actions.
|
||||
|
||||
Sat Feb 04 12:41:03 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/test-multi-actions.c:
|
||||
- Running out of disk space is a critical notification. Set the
|
||||
urgency level in test-multi-actions.
|
||||
|
||||
Sat Feb 04 02:04:13 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/test-urgency.c:
|
||||
- It's a good thing to actually set the urgency levels in the
|
||||
urgency test.
|
||||
|
||||
Sat Feb 04 01:47:00 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
A tests/test-urgency.c:
|
||||
* tests/Makefile.am:
|
||||
- Add a test-urgency testcase.
|
||||
|
||||
Sun Jan 29 13:26:31 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* Doxyfile.in:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
- More Doxygen happiness. Still no NotifyNotification docs yet though.
|
||||
|
||||
Sun Jan 29 13:17:43 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.h:
|
||||
- Make Doxygen happy.
|
||||
|
||||
========================= 0.3.2 =========================
|
||||
|
||||
Mon Jan 23 01:31:59 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.h:
|
||||
- Removed notify_notification_{ref,unref} from notification.h.
|
||||
|
||||
Mon Jan 23 01:30:45 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/Makefile.am:
|
||||
- Make distcheck happy.
|
||||
|
||||
Mon Jan 23 01:20:36 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/ChangeLog:
|
||||
* NEWS:
|
||||
* configure.ac:
|
||||
- Bumped the version to 0.3.2.
|
||||
- Added news.
|
||||
|
||||
Mon Jan 23 01:10:23 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/internal.h:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notify.c:
|
||||
* tests/test-replace-widget.c:
|
||||
- Make a best attempt at clearing away notifications that require
|
||||
actions or that exist until clicked when the calling application
|
||||
exits. This doesn't always work.
|
||||
|
||||
Sun Jan 22 23:46:27 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/notification-spec.xml:
|
||||
- Fix some errors in the spec file. Some pieces were not updated when
|
||||
the specification was changed, and some pieces were invalid XML.
|
||||
|
||||
Sun Jan 22 13:21:52 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
- Raw images are broken in D-BUS versions less than 0.60. Don't crash
|
||||
under this case, and warn the user.
|
||||
|
||||
Sat Jan 21 00:37:03 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/internal.h:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notify.c:
|
||||
* tests/test-image.c:
|
||||
- Use one D-BUS connection, one GProxy, total. This is better than the
|
||||
one per notification, and fixes a few bugs.
|
||||
|
||||
Fri Jan 20 20:49:31 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Some small code cleanups.
|
||||
|
||||
Fri Jan 20 02:19:29 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
* tests/test-basic.c:
|
||||
* tools/notify-send.c:
|
||||
- Remove notify_notification_show_and_forget(). It's less confusing to
|
||||
have one show function, and require that the user unref. It also
|
||||
simplifies the code quite a bit.
|
||||
|
||||
Fri Jan 20 02:10:50 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
* tests/test-default-action.c:
|
||||
* tests/test-multi-actions.c:
|
||||
- Implement per-action user data.
|
||||
|
||||
Fri Jan 20 01:59:26 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/notification-spec.xml:
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
* tests/test-default-action.c:
|
||||
* tests/test-image.c:
|
||||
* tests/test-multi-actions.c:
|
||||
* tools/notify-send.c:
|
||||
- Fix some weird argument ordering in the calls to
|
||||
dbus_g_proxy_call_*().
|
||||
- Re-order the arguments as per the spec.
|
||||
- Change NOTIFY_TIMEOUT_* to NOTIFY_EXPIRES_*.
|
||||
- Update the spec to 0.9.
|
||||
|
||||
Fri Jan 20 01:37:42 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notification.c:
|
||||
* libnotify/notification.h:
|
||||
* libnotify/notify.c:
|
||||
- Clean up a lot of the API. Several functions returned gboolean when
|
||||
there was very little point in doing so.
|
||||
- Add assertions to all the functions.
|
||||
- Remove the notify_notification_{set,get}_user_data() functions. These
|
||||
are useless, since this is a GObject, and we get it for free.
|
||||
|
||||
Thu Jan 19 22:07:41 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
A libnotify/internal.h:
|
||||
A libnotify/notification.c:
|
||||
A libnotify/notification.h:
|
||||
D libnotify/notifycommon.h:
|
||||
D libnotify/notifynotification.c:
|
||||
D libnotify/notifynotification.h:
|
||||
* libnotify/Makefile.am:
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Do some rearranging of the files in libnotify, and include things
|
||||
properly so people can actually use the library without fudging with
|
||||
include paths.
|
||||
|
||||
Thu Jan 19 21:56:29 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/Makefile.am:
|
||||
D libnotify/dbus-compat.h:
|
||||
* libnotify/notify.c:
|
||||
- Get rid of dbus-compat.h.
|
||||
|
||||
Thu Jan 19 21:55:08 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/dbus-compat.h:
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notifycommon.h:
|
||||
* libnotify/notify.h:
|
||||
* libnotify/notifynotification.c:
|
||||
* libnotify/notifynotification.h:
|
||||
- Fixed the coding style.
|
||||
|
||||
Thu Jan 19 01:34:57 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tools/notify-send.c:
|
||||
- Make notify-send work again when a body isn't specified.
|
||||
|
||||
Wed Jan 18 22:24:10 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notifynotification.h:
|
||||
* tests/test-xy-stress.c:
|
||||
- Remove the config.h include from notifynotification.h.
|
||||
|
||||
Sun Jan 15 17:52:39 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* docs/notification-spec.xml:
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
* libnotify/notifynotification.c:
|
||||
* tests/Makefile.am:
|
||||
A tests/test-server-info.c:
|
||||
* tests/test-xy.c:
|
||||
- Add back notify_get_server_info() and notify_get_server_caps().
|
||||
|
||||
Thu Jan 12 2006 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* libnotify/notifynotification.c (notify_notification_set_user_data):
|
||||
fix free function addition
|
||||
(notify_notification_get_user_data): added method for actually
|
||||
getting the user data (fd.o bug# 5418)
|
||||
- patches provided by Duarte Henriques
|
||||
<duarte.henriques at gmail dot com>
|
||||
|
||||
|
||||
Tue Jan 10 23:33:47 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* configure.ac:
|
||||
- Require D-BUS 0.36+.
|
||||
|
||||
Tue Jan 10 22:55:35 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/test-default-action.c:
|
||||
* tools/notify-send.c:
|
||||
- Fix some C99 usage.
|
||||
|
||||
Tue Jan 10 16:20:27 MST 2006 David Trowbridge <trowbrds@gmail.com>
|
||||
|
||||
* libnotify/Makefile.am:
|
||||
- Make sure marshal files actually get built
|
||||
|
||||
Mon Jan 09 11:13:15 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/Makefile.am:
|
||||
* libnotify/Makefile.in:
|
||||
A libnotify/notify-marshal.list:
|
||||
D libnotify/notifymarshal.c:
|
||||
D libnotify/notifymarshal.h:
|
||||
* libnotify/notifynotification.c:
|
||||
* configure.ac:
|
||||
- Generate the marshal files automatically. We shouldn't be doing it
|
||||
by hand.
|
||||
|
||||
Mon Jan 09 10:15:57 PST 2006 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/Makefile.in:
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notifynotification.c:
|
||||
* tests/test-default-action.c:
|
||||
* tests/test-image.c:
|
||||
* tests/test-multi-actions.c:
|
||||
* tests/test-replace-widget.c:
|
||||
* tests/test-xy-stress.c:
|
||||
- Clean up lots of warnings.
|
||||
|
||||
========================= 0.3.0 =========================
|
||||
|
||||
Tue Dec 13 2005 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* Release 0.3.0
|
||||
|
||||
* tests/Makefile.am, tools/Makefile.am: patch from Rodney
|
||||
Dawes <dobey at novell.com> fixing make distcheck
|
||||
|
||||
* tools/notify-send.c: use show_and_forget
|
||||
|
||||
Fri Dec 09 2005 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* libnotify/notifymarshal.[c|h]: new files where GLib callback
|
||||
marshalers are added
|
||||
|
||||
* libnotify/notifynotification.c (notify_notifiaction_init): Add a
|
||||
marshaller for signals with uint, string parameters
|
||||
(_gslist_to_string_array): new internal method that coverts
|
||||
a GSList to a NULL terminated array of strings
|
||||
(_notify_notification_show_internal): send the actions list as an
|
||||
array of strings, not a GSList which does not work with the bindings
|
||||
|
||||
* libnotify/Makefile.am: notifymarshal.[c|h] added
|
||||
|
||||
* tests/test-multi-actions.c: working example of using actions
|
||||
|
||||
|
||||
Fri Dec 02 2005 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* libnotify/notifynotification.c (notify_notification_add_action):
|
||||
implement adding actions
|
||||
(_action_signal_handler): handle actions coming from the server
|
||||
(notify_notifcation_clear_actions): new method for clearning out
|
||||
the actions list and hash
|
||||
|
||||
Fri Dec 02 2005 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* libnotify/notifynotification.c (notify_notification_show_and_forget):
|
||||
new method that shows and then unrefs the NotifyNotification object.
|
||||
use this if you just want to fire off a quick notification.
|
||||
|
||||
* various compiler warning cleanups
|
||||
|
||||
Fri Dec 02 2005 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* libnotify/notifynotification.c (SIGNAL_TYPE_CLOSED): "closed" glib
|
||||
signal added
|
||||
(notify_notification_clear_hints): New API for clearing out the
|
||||
hints hash
|
||||
(notify_notification_ref, notify_notification_unref): removed - use
|
||||
g_object_ref/unref
|
||||
|
||||
* tests/*: Various changes to the test binaries
|
||||
|
||||
Thu Nov 10 14:00:00 EST 2005 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* Complete rewrite and first import to libnotify-ng module in SVN
|
||||
|
||||
Mon Jul 04 02:13:56 PDT 2005 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/Makefile.am:
|
||||
* tests/test-markup.c:
|
||||
A tests/test-xy-stress.c:
|
||||
* configure.ac:
|
||||
- Conditionally build gdk-dependent test apps if we have gdk.
|
||||
- Added a X, Y stress test that will be used to help test
|
||||
accurately positioning the arrows.
|
||||
|
||||
Thu Jun 30 21:09:18 PDT 2005 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* tests/Makefile.am:
|
||||
- Don't install the test programs during make install.
|
||||
|
||||
Thu Jun 30 21:03:30 PDT 2005 Christian Hammond <chipx86@chipx86.com>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
* tests/test-animation.c:
|
||||
* tests/test-basic.c:
|
||||
* tests/test-default-action.c:
|
||||
* tests/test-error.c:
|
||||
* tests/test-image.c:
|
||||
* tests/test-markup.c:
|
||||
* tests/test-multi-actions.c:
|
||||
* tests/test-replace.c:
|
||||
* tools/notify-send.c:
|
||||
- Added support for hints in the API.
|
||||
|
||||
Mon Jun 20 06:13:02 PDT 2005 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Be a little better at not crashing. Just a bit better. There's
|
||||
still another crash I'm trying to track down.
|
||||
|
||||
Mon Jun 20 04:53:29 PDT 2005 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Close the right container in D-BUS 0.3x.
|
||||
|
||||
Mon Jun 20 02:49:27 PDT 2005 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/Makefile.am:
|
||||
A libnotify/dbus-compat.h:
|
||||
- Add dbus-compat.h.
|
||||
|
||||
Mon Jun 20 02:43:26 PDT 2005 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* configure.ac:
|
||||
- Add support for compiling under D-BUS 0.3x. Actually running
|
||||
has not yet been tested!
|
||||
|
||||
Fri Apr 01 09:21:26 PST 2005 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Updated to work with 0.6 of the notification spec.
|
||||
|
||||
Sat Nov 06 15:40:48 PST 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.h:
|
||||
- Move our TODO list to the Doxygen @todo commands, so we'll get it
|
||||
in a nice little page of its own in the API docs.
|
||||
|
||||
Sat Nov 06 15:35:52 PST 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.h:
|
||||
- Move the emacs mode string out of the Doxygen comment and into its
|
||||
own.
|
||||
|
||||
Sat Nov 06 15:11:53 PST 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.h:
|
||||
A Doxyfile.in:
|
||||
* Makefile.am:
|
||||
* configure.ac:
|
||||
- Add a Doxyfile.in and update things so we can get doxygen
|
||||
docs.
|
||||
|
||||
Wed Nov 03 23:39:23 PST 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Use glib's memory allocation stuff instead of libc's.
|
||||
|
||||
Wed Nov 03 23:34:10 PST 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
* tests/test-animation.c:
|
||||
* tests/test-image.c:
|
||||
- Patch from Mike Hearn to do a bunch of stuff, like handling icons
|
||||
and animations better.
|
||||
|
||||
Wed Nov 03 01:19:42 PST 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* configure.ac:
|
||||
A libnotify.spec.in:
|
||||
- Fix make distcheck.
|
||||
|
||||
Wed Sep 29 22:34:03 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* tools/notify-send.c:
|
||||
- Don't flush the D-BUS connection, and make sure we disconnect from it.
|
||||
|
||||
Wed Sep 29 21:53:15 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
* tests/test-animation.c:
|
||||
* tests/test-basic.c:
|
||||
* tests/test-default-action.c:
|
||||
* tests/test-error.c:
|
||||
* tests/test-image.c:
|
||||
* tests/test-markup.c:
|
||||
* tests/test-multi-actions.c:
|
||||
* tests/test-replace.c:
|
||||
* tools/notify-send.c:
|
||||
- Updated to match the spec.
|
||||
|
||||
Sat Sep 25 12:59:26 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* tests/test-animation.c:
|
||||
* tests/test-default-action.c:
|
||||
- Fixed to compile.
|
||||
|
||||
Wed Sep 01 00:39:23 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* docs/ChangeLog:
|
||||
* SPECIFICATION:
|
||||
- Moved specification documentation.
|
||||
- Moved specification ChangeLog.
|
||||
|
||||
Wed Sep 01 00:30:53 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* docs/notification-spec.xml:
|
||||
- Finishing adding the rest of the signals to the spec.
|
||||
|
||||
Sun Aug 29 22:27:42 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
A docs/notification-spec.ps:
|
||||
A docs/notification-spec.xml:
|
||||
- Added the notification spec in docbook format. It's not finished.
|
||||
I'm just tired of working on it.
|
||||
|
||||
Wed Jul 14 02:11:48 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* libnotify/notify.c: Use pointers instead of GINT_TO_POINTER
|
||||
* tools/test-replace.c: Test replacing notifications
|
||||
|
||||
Tue Jul 13 23:58:54 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* SPECIFICATION: CloseNotification sends NotificationClosed signal.
|
||||
|
||||
Mon Jul 5 00:12:03 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* tools/notify-send.c (main): Treat expiry times < current time
|
||||
as timeouts from current instant
|
||||
|
||||
Sun Jul 4 22:54:44 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* libnotify/notify.c: Use a direct hash rather than an int hash
|
||||
|
||||
Sun Jul 04 14:32:46 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Don't make IDs of 0 bad. They just want to be loved, too.
|
||||
|
||||
Sun Jul 04 14:08:59 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
* tools/notify-send.c:
|
||||
* SPECIFICATION:
|
||||
- Changed timeouts to expire times.
|
||||
- Install notify-send.
|
||||
|
||||
Sun Jul 04 13:46:32 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* tools/notify-send.c:
|
||||
- Don't initialize the library until we're ready to talk to it.
|
||||
|
||||
Sun Jul 04 13:34:14 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* SPECIFICATION:
|
||||
- Added the urgency level to the spec, and made it a byte.
|
||||
|
||||
Sun Jul 04 13:28:51 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
A tools/:
|
||||
R tests/:
|
||||
* Makefile.am:
|
||||
* configure.ac:
|
||||
- Renamed tests to tools.
|
||||
|
||||
Sun Jul 04 13:28:00 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* tests/Makefile.am:
|
||||
A tests/notify-send.c:
|
||||
- Added the notify-send tool.
|
||||
|
||||
Sat Jul 03 12:35:35 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Added support for GetCapabilities.
|
||||
|
||||
Sat Jul 03 12:27:58 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Add support for GetServerInformation.
|
||||
|
||||
Sat Jul 03 12:21:05 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Remove the application info sent on calls to Notify for now,
|
||||
until/if something gets added to the spec about it.
|
||||
|
||||
Sat Jul 03 12:14:48 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Removed the last of the request implementation.
|
||||
- More work toward migrating the code to the specification.
|
||||
- Simplified the action implementation a little bit.
|
||||
|
||||
Sat Jul 03 11:26:03 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Cleaned up some things and updated some stuff to be compliant with
|
||||
the spec. More will come soon.
|
||||
|
||||
Thu Jul 1 23:46:28 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* SPECIFICATION: Add info on icons/sounds, add some
|
||||
protocol requests. Change "buttons" in the overview to "actions".
|
||||
|
||||
Wed Jun 30 14:03:51 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* SPECIFICATION: Initial version
|
||||
|
||||
Wed Jun 30 13:28:18 GMT 2004 Mike Hearn <mike@navi.cx>
|
||||
* libnotify/notify.[ch]: Add file variables for emacs to match
|
||||
the settings Christian is using.
|
||||
|
||||
Wed Jun 30 02:53:36 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Free up the handle memory for a closed notification.
|
||||
|
||||
Tue Jun 29 19:33:43 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Due to the new icon struct, a lot of redundant functions have now
|
||||
been removed.
|
||||
|
||||
Tue Jun 29 19:26:58 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Added a NotifyIcon struct and the beginnings of the API.
|
||||
|
||||
Tue Jun 29 18:49:38 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Replaced the guint32 ID numbers that were passed around to represent
|
||||
notifications and requests and replaced them with an opaque data
|
||||
structure that abstracts that and other stuff.
|
||||
|
||||
Tue Jun 29 18:21:05 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Changed 8 space to 4 space tabs.
|
||||
|
||||
Tue Jun 29 14:49:51 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Patch by Mike Hearn to add a print_error() function for dumping
|
||||
extra info when we have an error.
|
||||
|
||||
Sun Jun 27 21:50:33 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* configure.ac:
|
||||
- Pass 0.0.1 as the version number to AC_INIT().
|
||||
|
||||
Sun Jun 27 21:39:13 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Added support for the NotificationClosed and RequestClosed signals,
|
||||
along with request callbacks. I wonder if any of this works.
|
||||
|
||||
Sun Jun 27 20:23:00 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Keep track of request IDs so that we can do callback stuff in a bit.
|
||||
|
||||
Sun Jun 27 20:02:09 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Send the list of button texts as a string array, rather than appending
|
||||
each one individually.
|
||||
|
||||
Sun Jun 27 18:30:19 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Split notify_close() into notify_close_notification() and
|
||||
notify_close_request().
|
||||
- Implement notify_send_request() and
|
||||
notify_send_request_with_icon_data(), and add versions of those
|
||||
functions that take a va_list for the buttons.
|
||||
|
||||
Sun Jun 27 16:46:32 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Added a utility function for doing most of the D-BUS message
|
||||
creation.
|
||||
- Implemented notify_close_notification() and notify_close_request().
|
||||
|
||||
Sun Jun 27 16:38:42 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
- Make sure we include our config.h if we have one.
|
||||
|
||||
Sun Jun 27 16:37:30 PDT 2004 Christian Hammond <chipx86@gnupdate.org>
|
||||
|
||||
* libnotify/notify.c:
|
||||
* libnotify/notify.h:
|
||||
- Added the initial header file and connection code.
|
||||
|
229
INSTALL
229
INSTALL
|
@ -1,229 +0,0 @@
|
|||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
will cause the specified gcc to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
46
Makefile.am
46
Makefile.am
|
@ -1,46 +0,0 @@
|
|||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
SUBDIRS = libnotify docs tools tests
|
||||
|
||||
pcdata_DATA = libnotify.pc
|
||||
pcdatadir = $(libdir)/pkgconfig
|
||||
|
||||
EXTRA_DIST = \
|
||||
AUTHORS NEWS INSTALL COPYING README \
|
||||
ChangeLog \
|
||||
autogen.sh \
|
||||
configure.ac \
|
||||
libnotify.pc.in
|
||||
|
||||
$(OBJECTS): libtool
|
||||
libtool: $(LIBTOOL_DEPS)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
doxygen:
|
||||
@echo "Running doxygen..."
|
||||
@doxygen Doxyfile
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
$(srcdir)/INSTALL \
|
||||
$(srcdir)/aclocal.m4 \
|
||||
$(srcdir)/autoscan.log \
|
||||
$(srcdir)/compile \
|
||||
$(srcdir)/config.guess \
|
||||
$(srcdir)/config.h.in \
|
||||
$(srcdir)/config.sub \
|
||||
$(srcdir)/configure.scan \
|
||||
$(srcdir)/depcomp \
|
||||
$(srcdir)/install-sh \
|
||||
$(srcdir)/ltmain.sh \
|
||||
$(srcdir)/missing \
|
||||
$(srcdir)/mkinstalldirs \
|
||||
$(srcdir)/omf.make \
|
||||
$(srcdir)/xmldocs.make \
|
||||
$(srcdir)/gtk-doc.make \
|
||||
$(srcdir)/ChangeLog \
|
||||
`find "$(srcdir)" -type f -name Makefile.in -print`
|
||||
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
127
NEWS
127
NEWS
|
@ -1,3 +1,130 @@
|
|||
New in 0.8.1
|
||||
============
|
||||
|
||||
* Keep version of bindings at 0.7 (#27) [Marco]
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan
|
||||
|
||||
New in 0.8.0
|
||||
============
|
||||
|
||||
* Use Desktop Portal Notification when running confined (snap and flatpak)
|
||||
Now the library acts like a wrapper in such scenario, with some limited
|
||||
capabilities, but this will enforce security and user control over the
|
||||
allowed notifications. [Marco]
|
||||
* notify-send: Handles SIGINT gracefully, closing waiting notification [Marco]
|
||||
* Use NotifyClosedReason enum as closed reason return value [Marco]
|
||||
* Bump dependency on GLib 2.38 [Marco]
|
||||
* Various introspection docs improvements and fixes [Marco]
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan
|
||||
|
||||
New in 0.7.12
|
||||
=============
|
||||
|
||||
* docs/notify-send: Add --transient option to manpage [Marco]
|
||||
* notify-send: Move server capabilities check to a separate function [Marco]
|
||||
* notify-send: Add debug message about server not supporting persistence
|
||||
[Marco]
|
||||
* notification: Include sender-pid hint by default if not provided [Marco]
|
||||
* Delete unused notifynotification.xml [Patrick; !25]
|
||||
* notification: Bookend calling NotifyActionCallback with temporary ref
|
||||
[Logan; #25, !26]
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan, Patrick Griffis, Logan Rathbone
|
||||
|
||||
New in 0.7.11
|
||||
=============
|
||||
* Fix potential build errors with old glib version we require
|
||||
* notify-send: Add support for boolean hints
|
||||
* notify-send: Support passing any hint value, by parsing variant strings
|
||||
* notify-send: Add explicit option to create transient notifications
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan
|
||||
|
||||
New in 0.7.10
|
||||
=============
|
||||
* notify-send: Support commas in icon filenames [Thorsten; !15]
|
||||
* notify-send: Give failing exit code if showing notification fails [Ray, !13]
|
||||
* notify-send: Support for replacing an existing notification [Paul; !17]
|
||||
* notify-send: Add option to wait until notification has been closed [Ben; !18]
|
||||
* notify-send: Add support for notification actions and responses [Ben; !18]
|
||||
* notification: Send the application ID when possible [Corentin; !1]
|
||||
* notification: Use g_memdup2 when available [Marco; !22]
|
||||
* notification: Improve SNAP detection and confined desktop ID [Marco; !23]
|
||||
* notification: Add support for getting actions activation token [Marco; !24]
|
||||
* notify: Use application ID if any to set the fallback app name [Marco; !18]
|
||||
* Build fixes and improvements [Marco; !22]
|
||||
* Docs updates [Boris, David; !14, !20]
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan, Boris Shtrasman, Matthias Sweertvaegher, Thorsten Wißmann,
|
||||
Ray Strode, Maximiliano Sandoval R, David King, Corentin Noël, Paul Collins,
|
||||
Matthias Sweertvaegher, Ben Blain
|
||||
|
||||
New in 0.7.9
|
||||
============
|
||||
* Fixed linking in darwin [Iain, Marco; !5]
|
||||
* Added man page for notify-send [Jan; !6]
|
||||
* Dropped autotools [Jan; !11]
|
||||
|
||||
Contributors:
|
||||
Iain Lane, Jan Tojnar, Marco Trevisan
|
||||
|
||||
New in 0.7.8
|
||||
============
|
||||
* Support meson build system [Marco; !3]
|
||||
* notify-send: Support full URLs as hint values [Marco; !4]
|
||||
* Mic. bug fixes [Ting-Wei, Florian; #760438, !8]
|
||||
|
||||
Contributors:
|
||||
Emmanuele Bassi, Abderrahim Kitouni, Ting-Wei Lan, Iain Lane, Florian Müllner,
|
||||
Jan Tojnar, Marco Trevisan (Treviño), Marco Trevisan
|
||||
|
||||
New in 0.7.7
|
||||
============
|
||||
|
||||
- Introspection fixes (Evan Nemerson)
|
||||
- Allow to disable tests at build time (Quentin Glidic)
|
||||
|
||||
New in 0.7.6
|
||||
============
|
||||
|
||||
- Fix annotation for add_action (Giovanni Campagna)
|
||||
- Clarify documentation for set-timeout (Matthias Clasen)
|
||||
|
||||
New in 0.7.5
|
||||
============
|
||||
|
||||
- Build fixes (Colin Walters)
|
||||
- Documentation improvements (Javier Jardón)
|
||||
- Spec clarifications (Matthias Clasen)
|
||||
|
||||
New in 0.7.4
|
||||
============
|
||||
|
||||
- Improve documentation of supported image data formats (Colin Walters)
|
||||
- Honor aclocal flags (Craig Keogh)
|
||||
- Update autotools configuration (Javier Jardón)
|
||||
- Test notification removal (William Jon McCann)
|
||||
|
||||
NEW in 0.7.3:
|
||||
==============
|
||||
|
||||
- Add a way to change the application name for
|
||||
individual notifications (Richard Hughes)
|
||||
|
||||
NEW in 0.7.2:
|
||||
==============
|
||||
|
||||
- Add a way to change the application name (William Jon McCann)
|
||||
- Mark image_path as deprecated (William Jon McCann)
|
||||
- Allow properties to be set in any order (Matthias Clasen)
|
||||
|
||||
NEW in 0.7.1:
|
||||
==============
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# libnotify
|
||||
|
||||
## Description
|
||||
|
||||
libnotify is a library for sending desktop notifications to a notification
|
||||
daemon, as defined in the [org.freedesktop.Notifications][fdo-spec] Desktop
|
||||
Specification. These notifications can be used to inform the user about an event
|
||||
or display some form of information without getting in the user's way.
|
||||
|
||||
It is also a simple wrapper to send cross-desktop Notifications for sandboxed
|
||||
applications using the [XDG Portal Notification API][portal].
|
||||
|
||||
## Notice
|
||||
|
||||
For GLib based applications the [GNotification][gnotif] API should be used
|
||||
instead.
|
||||
|
||||
[fdo-spec]: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html
|
||||
[gnotif]: https://docs.gtk.org/gio/class.Notification.html
|
||||
[portal]: https://github.com/flatpak/xdg-desktop-portal/blob/main/data/org.freedesktop.portal.Notification.xml
|
22
autogen.sh
22
autogen.sh
|
@ -1,22 +0,0 @@
|
|||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="libnotify"
|
||||
REQUIRED_AUTOMAKE_VERSION=1.9
|
||||
|
||||
(test -f $srcdir/configure.ac \
|
||||
&& test -d $srcdir/libnotify) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level $PKG_NAME directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common."
|
||||
exit 1
|
||||
}
|
||||
|
||||
. gnome-autogen.sh
|
|
@ -0,0 +1,4 @@
|
|||
/* config.h.meson */
|
||||
|
||||
/* Version number of package */
|
||||
#mesondefine VERSION
|
221
configure.ac
221
configure.ac
|
@ -1,221 +0,0 @@
|
|||
dnl Process this file with autoconf to create configure.
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Initialize autoconf
|
||||
dnl ################################################################
|
||||
AC_INIT([libnotify],[0.7.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=libnotify],[libnotify])
|
||||
AC_PREREQ(2.50)
|
||||
AC_CONFIG_SRCDIR(config.h.in)
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Version information
|
||||
dnl ################################################################
|
||||
LIBNOTIFY_MAJOR_VERSION=0
|
||||
LIBNOTIFY_MINOR_VERSION=7
|
||||
LIBNOTIFY_MICRO_VERSION=1
|
||||
LIBNOTIFY_DEVEL_VERSION=0
|
||||
|
||||
AC_SUBST(LIBNOTIFY_MAJOR_VERSION)
|
||||
AC_SUBST(LIBNOTIFY_MINOR_VERSION)
|
||||
AC_SUBST(LIBNOTIFY_MICRO_VERSION)
|
||||
|
||||
LIBNOTIFY_VERSION=$LIBNOTIFY_MAJOR_VERSION.$LIBNOTIFY_MINOR_VERSION.$LIBNOTIFY_MICRO_VERSION
|
||||
|
||||
if test "x$LIBNOTIFY_DEVEL_VERSION" != "x0"; then
|
||||
LIBNOTIFY_VERSION=$LIBNOTIFY_VERSION.$LIBNOTIFY_DEVEL_VERSION
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(LIBNOTIFY_MAJOR_VERSION, $LIBNOTIFY_MAJOR_VERSION,
|
||||
[libnotify major version.])
|
||||
AC_DEFINE_UNQUOTED(LIBNOTIFY_MINOR_VERSION, $LIBNOTIFY_MINOR_VERSION,
|
||||
[libnotify minor version.])
|
||||
AC_DEFINE_UNQUOTED(LIBNOTIFY_MICRO_VERSION, $LIBNOTIFY_MICRO_VERSION,
|
||||
[libnotify micro version.])
|
||||
AC_DEFINE_UNQUOTED(LIBNOTIFY_VERSION, "$LIBNOTIFY_VERSION",
|
||||
[libnotify version.])
|
||||
|
||||
|
||||
dnl ################################################################
|
||||
dnl # libtool versioning
|
||||
dnl ################################################################
|
||||
dnl #
|
||||
dnl # +1 : 0 : +1 == new interface that does not break old one.
|
||||
dnl # +1 : 0 : 0 == removed an interface. Breaks old apps.
|
||||
dnl # ? : +1 : ? == internal changes that doesn't break anything.
|
||||
dnl #
|
||||
dnl # CURRENT : REVISION : AGE
|
||||
dnl #
|
||||
LT_CURRENT=4
|
||||
LT_REVISION=0
|
||||
LT_AGE=0
|
||||
|
||||
LT_RELEASE=$LIBNOTIFY_MAJOR_VERSION.$LIBNOTIFY_MINOR_VERSION.$LIBNOTIFY_MICRO_VERSION
|
||||
|
||||
AC_SUBST(LT_RELEASE)
|
||||
AC_SUBST(LT_CURRENT)
|
||||
AC_SUBST(LT_REVISION)
|
||||
AC_SUBST(LT_AGE)
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Initialize automake
|
||||
dnl ################################################################
|
||||
VERSION=$LIBNOTIFY_VERSION
|
||||
PACKAGE=libnotify
|
||||
|
||||
AM_INIT_AUTOMAKE([1.10 no-dist-gzip dist-bzip2])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Specify a header configuration file
|
||||
dnl ################################################################
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Check for some standard stuff.
|
||||
dnl ################################################################
|
||||
AC_PROG_CC
|
||||
#AC_ARG_PROGRAM
|
||||
AC_PROG_CPP
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AC_C_CONST
|
||||
AC_TYPE_SIZE_T
|
||||
AC_EXEEXT
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
REQ_GTK_VERSION=2.90
|
||||
REQ_GLIB_VERSION=2.26.0
|
||||
|
||||
pkg_modules="gdk-pixbuf-2.0 glib-2.0 >= $REQ_GLIB_VERSION gio-2.0 >= $REQ_GLIB_VERSION"
|
||||
PKG_CHECK_MODULES(PACKAGE, [$pkg_modules])
|
||||
AC_SUBST(PACKAGE_LIBS)
|
||||
AC_SUBST(PACKAGE_CFLAGS)
|
||||
AC_SUBST(pkg_modules)
|
||||
|
||||
tests_modules="gtk+-3.0 >= $REQ_GTK_VERSION"
|
||||
PKG_CHECK_MODULES(TESTS, [$tests_modules])
|
||||
AC_SUBST(TESTS_LIBS)
|
||||
AC_SUBST(TESTS_CFLAGS)
|
||||
|
||||
GLIB_GENMARSHAL=`pkg-config --variable=glib_genmarshal glib-2.0`
|
||||
AC_SUBST(GLIB_GENMARSHAL)
|
||||
|
||||
GOBJECT_INTROSPECTION_CHECK([0.9.12])
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Set up gtk-doc
|
||||
dnl ################################################################
|
||||
GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl - DocBook Documentation
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
AC_ARG_ENABLE(docbook-docs,
|
||||
[AC_HELP_STRING([--enable-docbook-docs],
|
||||
[build documentation (requires xmlto)])],
|
||||
enable_docbook_docs=$enableval,enable_docbook_docs=no)
|
||||
AC_PATH_PROG(XMLTO, xmlto, no)
|
||||
AC_MSG_CHECKING([whether to build DocBook documentation])
|
||||
if test x$XMLTO = xno ; then
|
||||
have_docbook=no
|
||||
else
|
||||
have_docbook=yes
|
||||
fi
|
||||
if test x$enable_docbook_docs = xauto ; then
|
||||
if test x$have_docbook = xno ; then
|
||||
enable_docbook_docs=no
|
||||
else
|
||||
enable_docbook_docs=yes
|
||||
fi
|
||||
fi
|
||||
if test x$enable_docbook_docs = xyes; then
|
||||
if test x$have_docbook = xno; then
|
||||
AC_MSG_ERROR([Building DocBook docs explicitly required, but DocBook not found])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(DOCBOOK_DOCS_ENABLED, test x$enable_docbook_docs = xyes)
|
||||
AC_MSG_RESULT(yes)
|
||||
|
||||
AC_ARG_VAR([XMLTO],[Define/override the `xmlto' location.])
|
||||
AC_ARG_VAR([XMLTO_FLAGS],[Define/override `xmlto' options, like `--skip-validation'.])
|
||||
|
||||
|
||||
# Turn on the additional warnings last
|
||||
|
||||
AC_ARG_ENABLE(more-warnings,
|
||||
AS_HELP_STRING([--enable-more-warnings],
|
||||
[Maximum compiler warnings]),
|
||||
set_more_warnings="$enableval",[
|
||||
if test -d $srcdir/.git; then
|
||||
set_more_warnings=yes
|
||||
else
|
||||
set_more_warnings=no
|
||||
fi])
|
||||
|
||||
AC_MSG_CHECKING(for more warnings)
|
||||
if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
CFLAGS="\
|
||||
-Wall \
|
||||
-Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
|
||||
-Wnested-externs -Wpointer-arith \
|
||||
-Wcast-align -Wsign-compare -Wp,-D_FORTIFY_SOURCE=2 \
|
||||
$CFLAGS"
|
||||
|
||||
for option in -Wno-strict-aliasing -Wno-sign-compare; do
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $option"
|
||||
AC_MSG_CHECKING([whether gcc understands $option])
|
||||
AC_TRY_COMPILE([], [],
|
||||
has_option=yes,
|
||||
has_option=no,)
|
||||
if test $has_option = no; then
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
fi
|
||||
AC_MSG_RESULT($has_option)
|
||||
unset has_option
|
||||
unset SAVE_CFLAGS
|
||||
done
|
||||
unset option
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
AC_SUBST(CFLAGS)
|
||||
|
||||
dnl ################################################################
|
||||
dnl # Output the Makefiles
|
||||
dnl ################################################################
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
docs/Makefile
|
||||
docs/reference/Makefile
|
||||
libnotify.pc
|
||||
libnotify/Makefile
|
||||
libnotify/notify-features.h
|
||||
tests/Makefile
|
||||
tools/Makefile
|
||||
])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
echo "
|
||||
$PACKAGE $VERSION
|
||||
========================
|
||||
|
||||
prefix: ${prefix}
|
||||
exec_prefix: ${exec_prefix}
|
||||
bindir: ${bindir}
|
||||
datadir: ${datadir}
|
||||
source code location: ${srcdir}
|
||||
cflags: ${CFLAGS}
|
||||
|
||||
Build docs: ${enable_docbook_docs}
|
||||
|
||||
"
|
|
@ -1,25 +0,0 @@
|
|||
NULL =
|
||||
|
||||
SUBDIRS = reference
|
||||
|
||||
SPEC_XML_FILES = \
|
||||
notification-spec.xml \
|
||||
$(NULL)
|
||||
|
||||
if DOCBOOK_DOCS_ENABLED
|
||||
|
||||
htmldocdir = $(docdir)/spec
|
||||
htmldoc_DATA = notification-spec.html
|
||||
|
||||
notification-spec.html: $(SPEC_XML_FILES)
|
||||
$(XMLTO) $(XMLTO_FLAGS) xhtml-nochunks -m $(top_srcdir)/docs/config.xsl notification-spec.xml
|
||||
|
||||
endif # DOCBOOK_DOCS_ENABLED
|
||||
|
||||
|
||||
EXTRA_DIST = \
|
||||
ChangeLog \
|
||||
$(SPEC_XML_FILES) \
|
||||
$(NULL)
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
|
@ -3,4 +3,5 @@
|
|||
xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version="1.0">
|
||||
<xsl:param name="html.stylesheet" select="'docbook.css'"/>
|
||||
<xsl:param name="generate.consistent.ids" select="1"/>
|
||||
</xsl:stylesheet>
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
docbook_docs = get_option('docbook_docs')
|
||||
if not docbook_docs.disabled()
|
||||
xmlto = find_program('xmlto', required: docbook_docs.enabled())
|
||||
|
||||
if xmlto.found()
|
||||
spec_files = ['notification-spec']
|
||||
|
||||
foreach spec: spec_files
|
||||
custom_target(spec + '.html',
|
||||
output: spec + '.html',
|
||||
input: spec + '.xml',
|
||||
depend_files: 'config.xsl',
|
||||
command: [xmlto,
|
||||
'xhtml-nochunks',
|
||||
'-m', join_paths(meson.current_source_dir(), 'config.xsl'),
|
||||
'-o', '@OUTDIR@',
|
||||
'@INPUT@'
|
||||
],
|
||||
install: true,
|
||||
install_dir: join_paths(docdir, 'spec'))
|
||||
endforeach
|
||||
endif
|
||||
endif
|
||||
|
||||
if get_option('gtk_doc')
|
||||
subdir('reference')
|
||||
endif
|
||||
|
||||
if get_option('man')
|
||||
manpages = ['notify-send']
|
||||
|
||||
foreach page : manpages
|
||||
custom_target(page + '-man',
|
||||
input: page + '.xml',
|
||||
output: page + '.1',
|
||||
command: xsltproc_command,
|
||||
install: true,
|
||||
install_dir: man1dir)
|
||||
endforeach
|
||||
endif
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<article id="index">
|
||||
<articleinfo>
|
||||
<title>Desktop Notifications Specification</title>
|
||||
|
@ -349,7 +349,7 @@
|
|||
</para>
|
||||
<para>
|
||||
The icon is defined by the "app_icon" parameter.
|
||||
The image can be defined by the "image_path", the "image_data" hint or the
|
||||
The image can be defined by the "image-path", the "image-data" hint or the
|
||||
deprecated "icon_data" hint.
|
||||
</para>
|
||||
<sect2>
|
||||
|
@ -358,8 +358,8 @@
|
|||
An implementation which only displays one image or icon must choose which one
|
||||
to display using the following order:
|
||||
<orderedlist>
|
||||
<listitem><para>"image_data"</para></listitem>
|
||||
<listitem><para>"image_path"</para></listitem>
|
||||
<listitem><para>"image-data"</para></listitem>
|
||||
<listitem><para>"image-path"</para></listitem>
|
||||
<listitem><para>app_icon parameter</para></listitem>
|
||||
<listitem><para>for compatibility reason, "icon_data"</para></listitem>
|
||||
</orderedlist>
|
||||
|
@ -370,8 +370,8 @@
|
|||
icon from the "app_icon" parameter and choose which image to display using
|
||||
the following order:
|
||||
<orderedlist>
|
||||
<listitem><para>"image_data"</para></listitem>
|
||||
<listitem><para>"image_path"</para></listitem>
|
||||
<listitem><para>"image-data"</para></listitem>
|
||||
<listitem><para>"image-path"</para></listitem>
|
||||
<listitem><para>for compatibility reason, "icon_data"</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
|
@ -380,12 +380,21 @@
|
|||
<sect2 id="icons-and-images-formats" xreflabel="Icons and Images Formats">
|
||||
<title>Formats</title>
|
||||
<para>
|
||||
The "image_data" and "icon_data" hints should be a raw image data structure
|
||||
of signature (iiibiiay) which describes the width, height, rowstride, has
|
||||
alpha, bits per sample, channels and image data respectively.
|
||||
The "image-data" and "icon_data" hints should be a DBus structure
|
||||
of signature (iiibiiay). The components of this structure are as follows:
|
||||
<orderedlist>
|
||||
<listitem><para>width (i): Width of image in pixels</para></listitem>
|
||||
<listitem><para>height (i): Height of image in pixels</para></listitem>
|
||||
<listitem><para>rowstride (i): Distance in bytes between row starts</para></listitem>
|
||||
<listitem><para>has_alpha (b): Whether the image has an alpha channel</para></listitem>
|
||||
<listitem><para>bits_per_sample (i): Must always be 8</para></listitem>
|
||||
<listitem><para>channels (i): If has_alpha is TRUE, must be 4, otherwise 3</para></listitem>
|
||||
<listitem><para>data (ay): The image data, in RGB byte order</para></listitem>
|
||||
</orderedlist>
|
||||
This image format is derived from <ulink url="http://developer.gnome.org/gdk-pixbuf/stable/">gdk-pixbuf</ulink>.
|
||||
</para>
|
||||
<para>
|
||||
The "app_icon" parameter and "image_path" hint should be either an URI
|
||||
The "app_icon" parameter and "image-path" hint should be either an URI
|
||||
(file:// is the only URI schema supported right now) or a name in a
|
||||
freedesktop.org-compliant icon theme (not a GTK+ stock ID).
|
||||
</para>
|
||||
|
@ -654,7 +663,7 @@
|
|||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><literal>"action-icons"</literal></entry>
|
||||
<entry>boolean</entry>
|
||||
<entry>BOOLEAN</entry>
|
||||
<entry>
|
||||
When set, a server that has the "action-icons" capability will
|
||||
attempt to interpret any action identifier as a named icon.
|
||||
|
@ -666,7 +675,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"category"</literal></entry>
|
||||
<entry>string</entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
The type of notification this is.
|
||||
</entry>
|
||||
|
@ -674,7 +683,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"desktop-entry"</literal></entry>
|
||||
<entry>string</entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
This specifies the name of the desktop filename representing the
|
||||
calling program. This should be the same as the prefix used for the
|
||||
|
@ -685,34 +694,50 @@
|
|||
<entry/>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>"image_data"</literal></entry>
|
||||
<entry><literal>"image-data"</literal></entry>
|
||||
<entry>(iiibiiay)</entry>
|
||||
<entry>
|
||||
This is a raw data image format which describes the width, height,
|
||||
rowstride, has alpha, bits per sample, channels and image data
|
||||
respectively.
|
||||
</entry>
|
||||
<entry>>= 1.1</entry>
|
||||
<entry>>= 1.2</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>"image_path"</literal></entry>
|
||||
<entry>string</entry>
|
||||
<entry><literal>"image_data"</literal></entry>
|
||||
<entry>(iiibiiay)</entry>
|
||||
<entry>
|
||||
<emphasis>Deprecated</emphasis>. Use image-data instead.
|
||||
</entry>
|
||||
<entry>= 1.1</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>"image-path"</literal></entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
Alternative way to define the notification image. See <xref linkend="icons-and-images"/>.
|
||||
</entry>
|
||||
<entry>>= 1.1</entry>
|
||||
<entry>>= 1.2</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>"image_path"</literal></entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
<emphasis>Deprecated</emphasis>. Use image-path instead.
|
||||
</entry>
|
||||
<entry>= 1.1</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>"icon_data"</literal></entry>
|
||||
<entry>(iiibiiay)</entry>
|
||||
<entry>
|
||||
<emphasis>Deprecated</emphasis>. Use image_data instead.
|
||||
<emphasis>Deprecated</emphasis>. Use image-data instead.
|
||||
</entry>
|
||||
<entry>< 1.1</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>"resident"</literal></entry>
|
||||
<entry>boolean</entry>
|
||||
<entry>BOOLEAN</entry>
|
||||
<entry>
|
||||
When set the server will not automatically remove the
|
||||
notification when an action has been invoked. The notification
|
||||
|
@ -724,7 +749,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"sound-file"</literal></entry>
|
||||
<entry>string</entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
The path to a sound file to play when the notification pops up.
|
||||
</entry>
|
||||
|
@ -732,7 +757,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"sound-name"</literal></entry>
|
||||
<entry>string</entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
A themeable named sound from the freedesktop.org
|
||||
<ulink url="http://0pointer.de/public/sound-naming-spec.html">sound naming specification</ulink>
|
||||
|
@ -743,7 +768,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"suppress-sound"</literal></entry>
|
||||
<entry>boolean</entry>
|
||||
<entry>BOOLEAN</entry>
|
||||
<entry>
|
||||
Causes the server to suppress playing any sounds, if it has that
|
||||
ability. This is usually set when the client itself is going to
|
||||
|
@ -753,7 +778,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"transient"</literal></entry>
|
||||
<entry>boolean</entry>
|
||||
<entry>BOOLEAN</entry>
|
||||
<entry>
|
||||
When set the server will treat the notification as transient
|
||||
and by-pass the server's persistence capability, if it should
|
||||
|
@ -763,7 +788,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"x"</literal></entry>
|
||||
<entry>int</entry>
|
||||
<entry>INT32</entry>
|
||||
<entry>
|
||||
Specifies the X location on the screen that the notification should
|
||||
point to. The <literal>"y"</literal> hint must also be specified.
|
||||
|
@ -772,7 +797,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"y"</literal></entry>
|
||||
<entry>int</entry>
|
||||
<entry>INT32</entry>
|
||||
<entry>
|
||||
Specifies the Y location on the screen that the notification should
|
||||
point to. The <literal>"x"</literal> hint must also be specified.
|
||||
|
@ -781,7 +806,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><literal>"urgency"</literal></entry>
|
||||
<entry>byte</entry>
|
||||
<entry>BYTE</entry>
|
||||
<entry>
|
||||
The urgency level.
|
||||
</entry>
|
||||
|
@ -806,7 +831,7 @@
|
|||
<title><literal>org.freedesktop.Notifications.GetCapabilities</literal></title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>STRING_ARRAY
|
||||
<funcdef>as
|
||||
<function>org.freedesktop.Notifications.GetCapabilities</function>
|
||||
</funcdef>
|
||||
<void/>
|
||||
|
@ -929,8 +954,8 @@
|
|||
<paramdef>STRING <parameter>app_icon</parameter></paramdef>
|
||||
<paramdef>STRING <parameter>summary</parameter></paramdef>
|
||||
<paramdef>STRING <parameter>body</parameter></paramdef>
|
||||
<paramdef>ARRAY <parameter>actions</parameter></paramdef>
|
||||
<paramdef>DICT <parameter>hints</parameter></paramdef>
|
||||
<paramdef>as <parameter>actions</parameter></paramdef>
|
||||
<paramdef>a{sv} <parameter>hints</parameter></paramdef>
|
||||
<paramdef>INT32 <parameter>expire_timeout</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
|
@ -988,7 +1013,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><parameter>actions</parameter></entry>
|
||||
<entry>ARRAY</entry>
|
||||
<entry>as</entry>
|
||||
<entry>
|
||||
Actions are sent over as a list of pairs. Each even element in
|
||||
the list (starting at index 0) represents the identifier for the
|
||||
|
@ -998,7 +1023,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry><parameter>hints</parameter></entry>
|
||||
<entry>DICT</entry>
|
||||
<entry>a{sv}</entry>
|
||||
<entry>
|
||||
Optional hints that can be passed to the server from the client
|
||||
program. Although clients and servers should never assume each other
|
||||
|
@ -1247,6 +1272,65 @@
|
|||
</para>
|
||||
</note>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="signal-activation-token">
|
||||
<title><literal>org.freedesktop.Notifications.ActivationToken</literal></title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>
|
||||
<function>org.freedesktop.Notifications.ActivationToken</function>
|
||||
</funcdef>
|
||||
<paramdef>UINT32 <parameter>id</parameter></paramdef>
|
||||
<paramdef>STRING <parameter>activation_token</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
This signal can be emitted before a <literal>ActionInvoked</literal>
|
||||
signal. It carries an activation token that can be used to activate a
|
||||
toplevel.
|
||||
</para>
|
||||
<table>
|
||||
<title>ActivationToken Parameters</title>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Name</entry>
|
||||
<entry>Type</entry>
|
||||
<entry>Description</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><parameter>id</parameter></entry>
|
||||
<entry>UINT32</entry>
|
||||
<entry>
|
||||
The ID of the notification emitting the <literal>ActionInvoked</literal>
|
||||
signal.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><parameter>activation_token</parameter></entry>
|
||||
<entry>STRING</entry>
|
||||
<entry>
|
||||
An activation token. This can be either an X11-style startup ID (see
|
||||
<ulink url="https://specifications.freedesktop.org/startup-notification-spec/startup-notification-latest.txt">Startup notification protocol</ulink>)
|
||||
or a
|
||||
<ulink url="https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/staging/xdg-activation">Wayland xdg-activation</ulink>
|
||||
token.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
<note>
|
||||
<para>
|
||||
Clients should not assume the server will generate this signal. Some
|
||||
servers may not support user interaction at all, or may not support
|
||||
the concept of being able to generate an activation token for a
|
||||
notification.
|
||||
</para>
|
||||
</note>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</article>
|
||||
|
|
|
@ -0,0 +1,138 @@
|
|||
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<info>
|
||||
<date>November 2005</date>
|
||||
<productname>libnotify</productname>
|
||||
<authorgroup>
|
||||
<author>
|
||||
<personname>Andre Filipe de Assuncao e Brito</personname>
|
||||
<email>decko@noisemakers.org</email>
|
||||
<contrib>Original author</contrib>
|
||||
</author>
|
||||
<author>
|
||||
<personname>Paul van Tilburg</personname>
|
||||
<email>paulvt@debian.org</email>
|
||||
<contrib>Original author</contrib>
|
||||
</author>
|
||||
<author>
|
||||
<personname>Riccardo Setti</personname>
|
||||
<email>giskard@debian.org</email>
|
||||
<contrib>Original author</contrib>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</info>
|
||||
<refmeta>
|
||||
<refentrytitle>notify-send</refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
<refmiscinfo class="manual">User Commands</refmiscinfo>
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname>notify-send</refname>
|
||||
<refpurpose>a program to send desktop notifications</refpurpose>
|
||||
</refnamediv>
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>notify-send</command>
|
||||
<arg choice="opt">
|
||||
<replaceable>OPTIONS</replaceable>
|
||||
</arg>
|
||||
<arg choice="req">
|
||||
<replaceable>summary</replaceable>
|
||||
</arg>
|
||||
<arg choice="opt">
|
||||
<replaceable>body</replaceable>
|
||||
</arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
<refsection>
|
||||
<info><title>Description</title></info>
|
||||
|
||||
<para>With <command>notify-send</command> you can send desktop notifications to the user via a notification daemon from the command line. These notifications can be used to inform the user about an event or display some form of information without getting in the user’s way.</para>
|
||||
</refsection>
|
||||
<refsection>
|
||||
<info><title>Options</title></info>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-?</option>, <option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Show help and exit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-a</option>, <option>--app-name</option>=<replaceable>APP_NAME</replaceable></term>
|
||||
<listitem>
|
||||
<para>Specifies the app name for the notification.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-A</option>, <option>--action</option>=[<replaceable>NAME</replaceable>=]<replaceable>Text...</replaceable></term>
|
||||
<listitem>
|
||||
<para>Specifies the actions to display to the user. Implies <option>--wait</option> to wait for user input. May be set multiple times. The <replaceable>NAME</replaceable> of the action is output to <literal>stdout</literal>. If <replaceable>NAME</replaceable> is not specified, the numerical index of the option is used (starting with <literal>1</literal>).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-u</option>, <option>--urgency</option>=<replaceable>LEVEL</replaceable></term>
|
||||
<listitem>
|
||||
<para>Specifies the urgency level (<literal>low</literal>, <literal>normal</literal>, <literal>critical</literal>).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-t</option>, <option>--expire-time</option>=<replaceable>TIME</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>The duration, in milliseconds, for the notification to appear on screen.</para>
|
||||
<para>Not all implementations use this parameter. GNOME Shell and Notify OSD always ignore it, while Plasma ignores it for notifications with the critical urgency level.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-i</option>, <option>--icon</option>=<replaceable>ICON</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>Specifies an icon filename or stock icon to display.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-c</option>, <option>--category</option>=<replaceable>TYPE</replaceable>[,<replaceable>TYPE</replaceable>…]
|
||||
</term>
|
||||
<listitem>
|
||||
<para>Specifies the notification category.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option>, <option>--hint</option>=<replaceable>TYPE</replaceable>:<replaceable>NAME</replaceable>:<replaceable>VALUE</replaceable> </term>
|
||||
<listitem>
|
||||
<para>Specifies basic extra data to pass. Valid types are <literal>BOOLEAN</literal>, <literal>INT</literal>, <literal>DOUBLE</literal>, <literal>STRING</literal>, <literal>BYTE</literal> and <literal>VARIANT</literal>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-p</option>, <option>--print-id</option></term>
|
||||
<listitem>
|
||||
<para>Print the notification ID.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-r</option>, <option>--replace-id</option>=<replaceable>REPLACE_ID</replaceable></term>
|
||||
<listitem>
|
||||
<para>The ID of the notification to replace.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-w</option>, <option>--wait</option></term>
|
||||
<listitem>
|
||||
<para>Wait for the notification to be closed before exiting. If the <option>expire-time</option> is set, it will be used as the maximum waiting time.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-e</option>, <option>--transient</option></term>
|
||||
<listitem>
|
||||
<para>Show a transient notification. Transient notifications by-pass the server's persistence capability, if any. And so it won't be preserved until the user acknowledges it.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsection>
|
||||
<refsection>
|
||||
<info><title>See also</title></info>
|
||||
|
||||
<para>The Desktop Notification Spec on <link xlink:href="https://specifications.freedesktop.org/notification-spec/">https://specifications.freedesktop.org/notification-spec/</link>.</para>
|
||||
</refsection>
|
||||
</refentry>
|
|
@ -1,83 +0,0 @@
|
|||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
# We require automake 1.6 at least.
|
||||
AUTOMAKE_OPTIONS = 1.6
|
||||
|
||||
# This is a blank Makefile.am for using gtk-doc.
|
||||
# Copy this to your project's API docs directory and modify the variables to
|
||||
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
||||
# of using the various options.
|
||||
|
||||
# The name of the module, e.g. 'glib'.
|
||||
DOC_MODULE=libnotify
|
||||
|
||||
# The top-level SGML file. You can change this if you want to.
|
||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
|
||||
|
||||
# The directory containing the source code. Relative to $(srcdir).
|
||||
# gtk-doc will search all .c & .h files beneath here for inline comments
|
||||
# documenting the functions and macros.
|
||||
# e.g. DOC_SOURCE_DIR=../../../gtk
|
||||
DOC_SOURCE_DIR=../../libnotify
|
||||
|
||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||
SCANGOBJ_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-scan.
|
||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
||||
SCAN_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb.
|
||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
|
||||
MKDB_OPTIONS=--sgml-mode --output-format=xml
|
||||
|
||||
# Extra options to supply to gtkdoc-mktmpl
|
||||
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||
MKTMPL_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||
FIXXREF_OPTIONS=
|
||||
|
||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||
HFILE_GLOB=$(top_srcdir)/libnotify/*.h
|
||||
CFILE_GLOB=$(top_srcdir)/libnotify/*.c
|
||||
|
||||
# Header files to ignore when scanning.
|
||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
|
||||
IGNORE_HFILES= \
|
||||
notify-enum-types.h \
|
||||
notify-marshal.h \
|
||||
internal.h
|
||||
|
||||
# Images to copy into HTML directory.
|
||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||
HTML_IMAGES=
|
||||
|
||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||
content_files=
|
||||
|
||||
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||
# These files must be listed here *and* in content_files
|
||||
# e.g. expand_content_files=running.sgml
|
||||
expand_content_files=
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||
# signals and properties.
|
||||
# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
||||
INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(PACKAGE_CFLAGS)
|
||||
GTKDOC_LIBS=$(PACKAGE_LIBS) $(top_builddir)/libnotify/libnotify.la
|
||||
|
||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
||||
include $(top_srcdir)/gtk-doc.make
|
||||
|
||||
# Other files to distribute
|
||||
# e.g. EXTRA_DIST += version.xml.in
|
||||
EXTRA_DIST +=
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
|
@ -4,6 +4,10 @@
|
|||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
||||
<bookinfo>
|
||||
<title>Libnotify Reference Manual</title>
|
||||
<releaseinfo>
|
||||
The latest version of this documentation can be found on-line at
|
||||
<ulink role="online-location" url="http://developer.gnome.org/libnotify/unstable/">http://developer.gnome.org/libnotify/unstable/</ulink>.
|
||||
</releaseinfo>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
|
@ -11,4 +15,16 @@
|
|||
<xi:include href="xml/notify.xml"/>
|
||||
<xi:include href="xml/notification.xml"/>
|
||||
</chapter>
|
||||
|
||||
<index id="api-index-full">
|
||||
<title id="index-all">Index</title>
|
||||
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
<index id="api-index-deprecated" role="deprecated">
|
||||
<title>Index of deprecated symbols</title>
|
||||
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
|
||||
</book>
|
||||
|
|
|
@ -4,12 +4,14 @@ NOTIFY_EXPIRES_DEFAULT
|
|||
NOTIFY_EXPIRES_NEVER
|
||||
<TITLE>NotifyNotification</TITLE>
|
||||
NotifyNotification
|
||||
NotifyClosedReason
|
||||
NotifyUrgency
|
||||
NotifyActionCallback
|
||||
NOTIFY_ACTION_CALLBACK
|
||||
notify_notification_new
|
||||
notify_notification_update
|
||||
notify_notification_show
|
||||
notify_notification_set_app_name
|
||||
notify_notification_set_timeout
|
||||
notify_notification_set_category
|
||||
notify_notification_set_urgency
|
||||
|
@ -17,6 +19,7 @@ notify_notification_set_icon_from_pixbuf
|
|||
notify_notification_set_image_from_pixbuf
|
||||
notify_notification_set_hint
|
||||
notify_notification_set_hint_int32
|
||||
notify_notification_set_hint_uint32
|
||||
notify_notification_set_hint_double
|
||||
notify_notification_set_hint_string
|
||||
notify_notification_set_hint_byte
|
||||
|
@ -25,6 +28,8 @@ notify_notification_clear_hints
|
|||
notify_notification_add_action
|
||||
notify_notification_clear_actions
|
||||
notify_notification_close
|
||||
notify_notification_get_activation_token
|
||||
notify_notification_get_closed_reason
|
||||
<SUBSECTION Standard>
|
||||
NotifyNotificationPrivate
|
||||
NOTIFY_NOTIFICATION
|
||||
|
@ -42,6 +47,7 @@ notify_init
|
|||
notify_uninit
|
||||
notify_is_initted
|
||||
notify_get_app_name
|
||||
notify_set_app_name
|
||||
notify_get_server_caps
|
||||
notify_get_server_info
|
||||
</SECTION>
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
gnome.gtkdoc(meson.project_name(),
|
||||
mode: 'sgml',
|
||||
main_sgml: meson.project_name() + '-docs.sgml',
|
||||
src_dir: join_paths(meson.source_root(), meson.project_name()),
|
||||
dependencies: libnotify_dep,
|
||||
gobject_typesfile: meson.project_name() + '.types',
|
||||
ignore_headers: ['notify-enum-types.h', 'notify-marshal.h', 'internal.h'],
|
||||
scan_args: [ '--deprecated-guards=LIBNOTIFY_DISABLE_DEPRECATED' ],
|
||||
install: true,
|
||||
)
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN"
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
|
||||
<article id="index">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN"
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
|
||||
<article id="index">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN"
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
|
||||
<article id="index">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN"
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
|
||||
<article id="index">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<article id="index">
|
||||
<articleinfo>
|
||||
<title>Desktop Notifications Specification</title>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE article PUBLIC "-//OASIS/DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<article id="index">
|
||||
<articleinfo>
|
||||
<title>Desktop Notifications Specification</title>
|
||||
|
|
184
git.mk
184
git.mk
|
@ -1,184 +0,0 @@
|
|||
# git.mk
|
||||
#
|
||||
# Copyright 2009, Red Hat, Inc.
|
||||
# Written by Behdad Esfahbod
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# are permitted in any medium without royalty provided the copyright
|
||||
# notice and this notice are preserved.
|
||||
#
|
||||
# The canonical source for this file is pango/git.mk, or whereever the
|
||||
# header of pango/git.mk suggests in the future.
|
||||
#
|
||||
# To use in your project, import this file in your git repo's toplevel,
|
||||
# then do "make -f git.mk". This modifies all Makefile.am files in
|
||||
# your project to include git.mk.
|
||||
#
|
||||
# This enables automatic .gitignore generation. If you need to ignore
|
||||
# more files, add them to the GITIGNOREFILES variable in your Makefile.am.
|
||||
# But think twice before doing that. If a file has to be in .gitignore,
|
||||
# chances are very high that it's a generated file and should be in one
|
||||
# of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES.
|
||||
#
|
||||
# The only case that you need to manually add a file to GITIGNOREFILES is
|
||||
# when remove files in one of mostlyclean-local, clean-local, distclean-local,
|
||||
# or maintainer-clean-local.
|
||||
#
|
||||
# Note that for files like editor backup, etc, there are better places to
|
||||
# ignore them. See "man gitignore".
|
||||
#
|
||||
# If "make maintainer-clean" removes the files but they are not recognized
|
||||
# by this script (that is, if "git status" shows untracked files still), send
|
||||
# me the output of "git status" as well as your Makefile.am and Makefile for
|
||||
# the directories involved.
|
||||
#
|
||||
# For a list of toplevel files that should be in MAINTAINERCLEANFILES, see
|
||||
# pango/Makefile.am.
|
||||
#
|
||||
# Don't EXTRA_DIST this file. It is supposed to only live in git clones,
|
||||
# not tarballs. It serves no useful purpose in tarballs and clutters the
|
||||
# build dir.
|
||||
#
|
||||
# This file knows how to handle autoconf, automake, libtool, gtk-doc,
|
||||
# gnome-doc-utils, intltool.
|
||||
#
|
||||
#
|
||||
# KNOWN ISSUES:
|
||||
#
|
||||
# - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the
|
||||
# submodule doesn't find us. If you have configure.{in,ac} files in
|
||||
# subdirs, add a proxy git.mk file in those dirs that simply does:
|
||||
# "include $(top_srcdir)/../git.mk". Add more ..'s to your taste.
|
||||
# And add those files to git. See vte/gnome-pty-helper/git.mk for
|
||||
# example.
|
||||
#
|
||||
|
||||
git-all: git-mk-install
|
||||
|
||||
git-mk-install:
|
||||
@echo Installing git makefile
|
||||
@any_failed=; find $(top_srcdir) -name Makefile.am | while read x; do \
|
||||
if grep 'include .*/git.mk' $$x >/dev/null; then \
|
||||
echo $$x already includes git.mk; \
|
||||
else \
|
||||
failed=; \
|
||||
echo "Updating $$x"; \
|
||||
{ cat $$x; \
|
||||
echo ''; \
|
||||
echo '-include $$(top_srcdir)/git.mk'; \
|
||||
} > $$x.tmp || failed=1; \
|
||||
if test x$$failed = x; then \
|
||||
mv $$x.tmp $$x || failed=1; \
|
||||
fi; \
|
||||
if test x$$failed = x; then : else \
|
||||
echo Failed updating $$x; >&2 \
|
||||
any_failed=1; \
|
||||
fi; \
|
||||
fi; done; test -z "$$any_failed"
|
||||
|
||||
.PHONY: git-all git-mk-install
|
||||
|
||||
|
||||
### .gitignore generation
|
||||
|
||||
$(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk
|
||||
$(AM_V_GEN) \
|
||||
{ \
|
||||
if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \
|
||||
for x in \
|
||||
$(DOC_MODULE)-decl-list.txt \
|
||||
$(DOC_MODULE)-decl.txt \
|
||||
tmpl/$(DOC_MODULE)-unused.sgml \
|
||||
"tmpl/*.bak" \
|
||||
xml html \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test "x$(DOC_MODULE)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \
|
||||
for x in \
|
||||
$(_DOC_C_DOCS) \
|
||||
$(_DOC_LC_DOCS) \
|
||||
$(_DOC_OMF_ALL) \
|
||||
$(_DOC_DSK_ALL) \
|
||||
$(_DOC_HTML_ALL) \
|
||||
$(_DOC_POFILES) \
|
||||
"*/.xml2po.mo" \
|
||||
"*/*.omf.out" \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test -f $(srcdir)/po/Makefile.in.in; then \
|
||||
for x in \
|
||||
po/Makefile.in.in \
|
||||
po/Makefile.in \
|
||||
po/Makefile \
|
||||
po/POTFILES \
|
||||
po/stamp-it \
|
||||
po/.intltool-merge-cache \
|
||||
"po/*.gmo" \
|
||||
"po/*.mo" \
|
||||
po/$(GETTEXT_PACKAGE).pot \
|
||||
intltool-extract.in \
|
||||
intltool-merge.in \
|
||||
intltool-update.in \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
if test -f $(srcdir)/configure; then \
|
||||
for x in \
|
||||
autom4te.cache \
|
||||
configure \
|
||||
config.h \
|
||||
stamp-h1 \
|
||||
libtool \
|
||||
config.lt \
|
||||
; do echo /$$x; done; \
|
||||
fi; \
|
||||
for x in \
|
||||
.gitignore \
|
||||
$(GITIGNOREFILES) \
|
||||
$(CLEANFILES) \
|
||||
$(PROGRAMS) \
|
||||
$(check_PROGRAMS) \
|
||||
$(EXTRA_PROGRAMS) \
|
||||
$(LTLIBRARIES) \
|
||||
so_locations \
|
||||
.libs _libs \
|
||||
$(MOSTLYCLEANFILES) \
|
||||
"*.$(OBJEXT)" \
|
||||
"*.lo" \
|
||||
$(DISTCLEANFILES) \
|
||||
$(am__CONFIG_DISTCLEAN_FILES) \
|
||||
$(CONFIG_CLEAN_FILES) \
|
||||
TAGS ID GTAGS GRTAGS GSYMS GPATH tags \
|
||||
"*.tab.c" \
|
||||
$(MAINTAINERCLEANFILES) \
|
||||
$(BUILT_SOURCES) \
|
||||
$(DEPDIR) \
|
||||
Makefile \
|
||||
Makefile.in \
|
||||
"*.orig" \
|
||||
"*.rej" \
|
||||
"*.bak" \
|
||||
"*~" \
|
||||
".*.sw[nop]" \
|
||||
; do echo /$$x; done; \
|
||||
} | \
|
||||
sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \
|
||||
sed 's@/[.]/@/@g' | \
|
||||
LC_ALL=C sort | uniq > $@.tmp && \
|
||||
mv $@.tmp $@;
|
||||
|
||||
all: $(srcdir)/.gitignore gitignore-recurse-maybe
|
||||
gitignore-recurse-maybe:
|
||||
@if test "x$(SUBDIRS)" = "x$(DIST_SUBDIRS)"; then :; else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) gitignore-recurse; \
|
||||
fi;
|
||||
gitignore-recurse:
|
||||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse || echo "Skipping $$subdir"); \
|
||||
done
|
||||
gitignore: $(srcdir)/.gitignore gitignore-recurse
|
||||
|
||||
maintainer-clean: gitignore-clean
|
||||
gitignore-clean:
|
||||
-rm -f $(srcdir)/.gitignore
|
||||
|
||||
.PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe
|
|
@ -5,19 +5,24 @@
|
|||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
<name xml:lang="en">Desktop notification library</name>
|
||||
<shortname>libnotify</shortname>
|
||||
<category rdf:resource="http://api.gnome.org/doap-extensions#core" />
|
||||
<programming-language>C</programming-language>
|
||||
<shortdesc xml:lang="en">libnotify is a library for sending desktop notifications</shortdesc>
|
||||
<description>Library to send desktop notifications that follows the FDO
|
||||
specifications:
|
||||
https://gitlab.freedesktop.org/xdg/xdg-specs/-/blob/master/notification/notification-spec.xml</description>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Christian Hammond</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:chipx86@chipx86.com" />
|
||||
<gnome:userid>chipx86</gnome:userid>
|
||||
<foaf:name>Marco Trevisan</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:mail@3v1n0.net" />
|
||||
<gnome:userid>marcotrevi</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>William Jon McCann</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:william.jon.mccann@gmail.com" />
|
||||
<gnome:userid>mccann</gnome:userid>
|
||||
<foaf:name>Logan Rathbone</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:poprocks@gmail.com" />
|
||||
<gnome:userid>larathbone</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
</Project>
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: libnotify
|
||||
Description: Notifications Library
|
||||
Version: @VERSION@
|
||||
Requires: @pkg_modules@
|
||||
Libs: -L${libdir} -lnotify
|
||||
Cflags: -I${includedir}
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
notifyincdir = $(includedir)/libnotify
|
||||
|
||||
MARSHAL_PREFIX = notify_marshal
|
||||
MARSHAL_FILE = notify-marshal
|
||||
ENUM_FILE = notify-enum-types
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I. \
|
||||
-I.. \
|
||||
-I$(top_srcdir) \
|
||||
-DG_LOG_DOMAIN=\"libnotify\" \
|
||||
$(PACKAGE_CFLAGS)
|
||||
|
||||
lib_LTLIBRARIES = libnotify.la
|
||||
|
||||
notify_headers = \
|
||||
notify.h \
|
||||
notify-features.h \
|
||||
notification.h
|
||||
|
||||
notifyinc_HEADERS = \
|
||||
$(notify_headers) \
|
||||
$(ENUM_FILE).h
|
||||
|
||||
noinst_HEADERS = \
|
||||
notify-marshal.h \
|
||||
internal.h
|
||||
|
||||
BUILT_SOURCES = \
|
||||
$(ENUM_FILE).h \
|
||||
$(ENUM_FILE).c \
|
||||
notify-marshal.c \
|
||||
notify-marshal.h
|
||||
|
||||
libnotify_la_SOURCES = \
|
||||
notify.c \
|
||||
notification.c \
|
||||
notify-enum-types.c \
|
||||
notify-marshal.c
|
||||
|
||||
libnotify_la_LIBADD = \
|
||||
$(PACKAGE_LIBS)
|
||||
|
||||
libnotify_la_LDFLAGS = \
|
||||
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
|
||||
-export-symbols-regex "^notify_.*"
|
||||
|
||||
notify-marshal.h: notify-marshal.list
|
||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=$(MARSHAL_PREFIX) notify-marshal.list \
|
||||
--header > notify-marshal.h
|
||||
|
||||
notify-marshal.c: notify-marshal.list
|
||||
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=$(MARSHAL_PREFIX) notify-marshal.list \
|
||||
--header --body > notify-marshal.c
|
||||
|
||||
$(ENUM_FILE).h: s-enum-types-h
|
||||
@true
|
||||
s-enum-types-h: $(notify_headers) Makefile
|
||||
$(AM_V_GEN) ( cd $(srcdir) && glib-mkenums \
|
||||
--fhead "#ifndef _NOTIFY_ENUM_TYPES_H_\n#define _NOTIFY_ENUM_TYPES_H_\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
|
||||
--fprod "/* enumerations from \"@filename@\" */\n" \
|
||||
--vhead "GType @enum_name@_get_type(void);\n#define NOTIFY_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \
|
||||
--ftail "G_END_DECLS\n\n#endif /* _NOTIFY_ENUM_TYPES_H_ */" \
|
||||
$(notify_headers) ) > tmp-$(ENUM_FILE).h \
|
||||
&& (cmp -s tmp-$(ENUM_FILE).h $(ENUM_FILE).h || cp tmp-$(ENUM_FILE).h $(ENUM_FILE).h ) \
|
||||
&& rm -f tmp-$(ENUM_FILE).h \
|
||||
&& echo timestamp > $(@F)
|
||||
|
||||
$(ENUM_FILE).c: s-enum-types-c
|
||||
@true
|
||||
s-enum-types-c: $(notify_headers) Makefile
|
||||
$(AM_V_GEN) ( cd $(srcdir) && glib-mkenums \
|
||||
--fhead "#include <libnotify/notify.h>" \
|
||||
--fprod "\n/* enumerations from \"@filename@\" */" \
|
||||
--vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \
|
||||
--vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
|
||||
--vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \
|
||||
$(notify_headers) ) > tmp-$(ENUM_FILE).c \
|
||||
&& (cmp -s tmp-$(ENUM_FILE).c $(ENUM_FILE).c || cp tmp-$(ENUM_FILE).c $(ENUM_FILE).c ) \
|
||||
&& rm -f tmp-$(ENUM_FILE).c \
|
||||
&& echo timestamp > $(@F)
|
||||
|
||||
|
||||
if HAVE_INTROSPECTION
|
||||
|
||||
-include $(INTROSPECTION_MAKEFILE)
|
||||
INTROSPECTION_GIRS = Notify-0.7.gir
|
||||
INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_srcdir) --add-include-path=$(top_builddir) --warn-all -I$(top_srcdir)
|
||||
INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)
|
||||
|
||||
Notify-0.7.gir: libnotify.la
|
||||
Notify_0_7_gir_INCLUDES = GLib-2.0 GdkPixbuf-2.0
|
||||
Notify_0_7_gir_LIBS = libnotify.la
|
||||
Notify_0_7_gir_FILES = $(notify_headers) $(libnotify_la_SOURCES)
|
||||
Notify_0_7_gir_PACKAGES = glib-2.0 gobject-2.0 gdk-pixbuf-2.0
|
||||
|
||||
girdir = $(datadir)/gir-1.0
|
||||
dist_gir_DATA = $(INTROSPECTION_GIRS)
|
||||
|
||||
typelibdir = $(libdir)/girepository-1.0
|
||||
typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
|
||||
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
notify-marshal.list \
|
||||
$(ENUM_FILE).h
|
||||
|
||||
CLEANFILES = \
|
||||
notify-marshal.c \
|
||||
notify-marshal.h \
|
||||
$(ENUM_FILE).c \
|
||||
$(ENUM_FILE).h \
|
||||
s-enum-types-c \
|
||||
s-enum-types-h
|
||||
|
||||
if HAVE_INTROSPECTION
|
||||
CLEANFILES += \
|
||||
$(dist_gir_DATA) \
|
||||
$(typelib_DATA)
|
||||
endif
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
|
@ -26,6 +26,10 @@
|
|||
#define NOTIFY_DBUS_CORE_INTERFACE "org.freedesktop.Notifications"
|
||||
#define NOTIFY_DBUS_CORE_OBJECT "/org/freedesktop/Notifications"
|
||||
|
||||
#define NOTIFY_PORTAL_DBUS_NAME "org.freedesktop.portal.Desktop"
|
||||
#define NOTIFY_PORTAL_DBUS_CORE_INTERFACE "org.freedesktop.portal.Notification"
|
||||
#define NOTIFY_PORTAL_DBUS_CORE_OBJECT "/org/freedesktop/portal/desktop"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
GDBusProxy * _notify_get_proxy (GError **error);
|
||||
|
@ -36,6 +40,14 @@ gint _notify_notification_get_timeout (const NotifyNotific
|
|||
gboolean _notify_notification_has_nondefault_actions (const NotifyNotification *n);
|
||||
gboolean _notify_check_spec_version (int major, int minor);
|
||||
|
||||
const char * _notify_get_snap_name (void);
|
||||
const char * _notify_get_snap_path (void);
|
||||
const char * _notify_get_snap_app (void);
|
||||
|
||||
const char * _notify_get_flatpak_app (void);
|
||||
|
||||
gboolean _notify_uses_portal_notifications (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* _LIBNOTIFY_INTERNAL_H_ */
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
global:
|
||||
notify_*;
|
||||
local:
|
||||
*;
|
||||
};
|
|
@ -0,0 +1,86 @@
|
|||
libnotify_includesubdir = meson.project_name()
|
||||
libnotify_includedir = join_paths(includedir, libnotify_includesubdir)
|
||||
|
||||
headers = [
|
||||
'notify.h',
|
||||
'notification.h',
|
||||
]
|
||||
|
||||
sources = [
|
||||
'notify.c',
|
||||
'notification.c',
|
||||
]
|
||||
|
||||
features_data = configuration_data()
|
||||
features_data.set('LIBNOTIFY_MAJOR_VERSION', VERSION_ARRAY[0])
|
||||
features_data.set('LIBNOTIFY_MINOR_VERSION', VERSION_ARRAY[1])
|
||||
features_data.set('LIBNOTIFY_MICRO_VERSION', VERSION_ARRAY[2])
|
||||
|
||||
headers += configure_file(
|
||||
input: 'notify-features.h.in',
|
||||
output: 'notify-features.h',
|
||||
configuration: features_data)
|
||||
|
||||
enum_types = gnome.mkenums_simple('@0@-enum-types'.format(LIBNAME),
|
||||
sources : headers,
|
||||
install_header: true,
|
||||
install_dir: libnotify_includedir
|
||||
)
|
||||
|
||||
marshal = gnome.genmarshal('@0@-marshal'.format(LIBNAME),
|
||||
prefix: '@0@_marshal'.format(LIBNAME),
|
||||
sources: '@0@-marshal.list'.format(LIBNAME),
|
||||
)
|
||||
|
||||
libnotify_cflags = [
|
||||
'-DG_LOG_DOMAIN="libnotify"',
|
||||
]
|
||||
|
||||
mapfile = meson.project_name() + '.map'
|
||||
libnotify_ldflags = cc.get_supported_link_arguments([
|
||||
'-Wl,--version-script,'+join_paths(meson.current_source_dir(), mapfile),
|
||||
])
|
||||
|
||||
notify_dep = declare_dependency(
|
||||
include_directories: default_includes,
|
||||
dependencies: libnotify_deps,
|
||||
compile_args: libnotify_cflags,
|
||||
sources: headers + [enum_types[1]] + [marshal[1]],
|
||||
link_args: libnotify_ldflags,
|
||||
)
|
||||
|
||||
libnotify_lib = shared_library(LIBNAME,
|
||||
dependencies: notify_dep,
|
||||
sources: sources + enum_types + marshal,
|
||||
version: '@0@.@1@.@2@'.format(LT_CURRENT, LT_REVISION, LT_AGE),
|
||||
soversion: LT_CURRENT,
|
||||
install: true,
|
||||
)
|
||||
|
||||
libnotify_dep = declare_dependency(
|
||||
dependencies: notify_dep,
|
||||
link_with: libnotify_lib
|
||||
)
|
||||
|
||||
pkgconfig.generate(libnotify_lib,
|
||||
name: meson.project_name(),
|
||||
libraries: libnotify_deps,
|
||||
description: 'Notifications Library',
|
||||
)
|
||||
|
||||
introspection = get_option('introspection')
|
||||
g_ir_scanner = find_program('g-ir-scanner', required: introspection.enabled())
|
||||
|
||||
if g_ir_scanner.found() and not introspection.disabled()
|
||||
gnome.generate_gir(libnotify_lib,
|
||||
sources: headers + sources + enum_types,
|
||||
namespace: 'Notify',
|
||||
nsversion: MODULE_VERSION,
|
||||
export_packages: meson.project_name(),
|
||||
includes: ['GLib-2.0', 'GdkPixbuf-2.0'],
|
||||
extra_args: '--c-include=@0@/@1@.h'.format(meson.project_name(), LIBNAME),
|
||||
install: true
|
||||
)
|
||||
endif
|
||||
|
||||
install_headers(headers, subdir: libnotify_includesubdir)
|
File diff suppressed because it is too large
Load Diff
|
@ -55,6 +55,11 @@ typedef struct _NotifyNotification NotifyNotification;
|
|||
typedef struct _NotifyNotificationClass NotifyNotificationClass;
|
||||
typedef struct _NotifyNotificationPrivate NotifyNotificationPrivate;
|
||||
|
||||
/**
|
||||
* NotifyNotification:
|
||||
*
|
||||
* A passive pop-up notification.
|
||||
*/
|
||||
struct _NotifyNotification
|
||||
{
|
||||
/*< private >*/
|
||||
|
@ -88,11 +93,34 @@ typedef enum
|
|||
|
||||
} NotifyUrgency;
|
||||
|
||||
|
||||
/**
|
||||
* NotifyClosedReason:
|
||||
* @NOTIFY_CLOSED_REASON_UNSET: Notification not closed.
|
||||
* @NOTIFY_CLOSED_REASON_EXPIRED: Timeout has expired.
|
||||
* @NOTIFY_CLOSED_REASON_DISMISSED: It has been dismissed by the user.
|
||||
* @NOTIFY_CLOSED_REASON_API_REQUEST: It has been closed by a call to
|
||||
* notify_notification_close().
|
||||
* @NOTIFY_CLOSED_REASON_UNDEFIEND: Closed by undefined/reserved reasons.
|
||||
*
|
||||
* The reason for which the notification has been closed.
|
||||
*
|
||||
* Since: 0.8.0
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
NOTIFY_CLOSED_REASON_UNSET = -1,
|
||||
NOTIFY_CLOSED_REASON_EXPIRED = 1,
|
||||
NOTIFY_CLOSED_REASON_DISMISSED = 2,
|
||||
NOTIFY_CLOSED_REASON_API_REQUEST = 3,
|
||||
NOTIFY_CLOSED_REASON_UNDEFIEND = 4,
|
||||
} NotifyClosedReason;
|
||||
|
||||
/**
|
||||
* NotifyActionCallback:
|
||||
* @notification:
|
||||
* @action:
|
||||
* @user_data:
|
||||
* @notification: a #NotifyActionCallback notification
|
||||
* @action: (transfer none): The activated action name
|
||||
* @user_data: (nullable) (transfer none): User provided data
|
||||
*
|
||||
* An action callback function.
|
||||
*/
|
||||
|
@ -132,11 +160,13 @@ void notify_notification_set_category (NotifyNotificatio
|
|||
void notify_notification_set_urgency (NotifyNotification *notification,
|
||||
NotifyUrgency urgency);
|
||||
|
||||
void notify_notification_set_icon_from_pixbuf (NotifyNotification *notification,
|
||||
GdkPixbuf *icon);
|
||||
void notify_notification_set_image_from_pixbuf (NotifyNotification *notification,
|
||||
GdkPixbuf *pixbuf);
|
||||
|
||||
#ifndef LIBNOTIFY_DISABLE_DEPRECATED
|
||||
void notify_notification_set_icon_from_pixbuf (NotifyNotification *notification,
|
||||
GdkPixbuf *icon);
|
||||
|
||||
void notify_notification_set_hint_int32 (NotifyNotification *notification,
|
||||
const char *key,
|
||||
gint value);
|
||||
|
@ -160,11 +190,15 @@ void notify_notification_set_hint_byte_array (NotifyNotificatio
|
|||
const char *key,
|
||||
const guchar *value,
|
||||
gsize len);
|
||||
#endif
|
||||
|
||||
void notify_notification_set_hint (NotifyNotification *notification,
|
||||
const char *key,
|
||||
GVariant *value);
|
||||
|
||||
void notify_notification_set_app_name (NotifyNotification *notification,
|
||||
const char *app_name);
|
||||
|
||||
void notify_notification_clear_hints (NotifyNotification *notification);
|
||||
|
||||
void notify_notification_add_action (NotifyNotification *notification,
|
||||
|
@ -174,6 +208,8 @@ void notify_notification_add_action (NotifyNotificatio
|
|||
gpointer user_data,
|
||||
GFreeFunc free_func);
|
||||
|
||||
const char *notify_notification_get_activation_token (NotifyNotification *notification);
|
||||
|
||||
void notify_notification_clear_actions (NotifyNotification *notification);
|
||||
gboolean notify_notification_close (NotifyNotification *notification,
|
||||
GError **error);
|
||||
|
|
|
@ -43,10 +43,14 @@
|
|||
|
||||
static gboolean _initted = FALSE;
|
||||
static char *_app_name = NULL;
|
||||
static char *_snap_name = NULL;
|
||||
static char *_snap_app = NULL;
|
||||
static char *_flatpak_app = NULL;
|
||||
static GDBusProxy *_proxy = NULL;
|
||||
static GList *_active_notifications = NULL;
|
||||
static int _spec_version_major = 0;
|
||||
static int _spec_version_minor = 0;
|
||||
static int _portal_version = 0;
|
||||
|
||||
gboolean
|
||||
_notify_check_spec_version (int major,
|
||||
|
@ -74,6 +78,26 @@ _notify_get_server_info (char **ret_name,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
if (_notify_uses_portal_notifications ()) {
|
||||
if (ret_name) {
|
||||
*ret_name = g_strdup ("Portal Notification");
|
||||
}
|
||||
|
||||
if (ret_vendor) {
|
||||
*ret_vendor = g_strdup ("Freedesktop");
|
||||
}
|
||||
|
||||
if (ret_version) {
|
||||
*ret_version = g_strdup_printf ("%u", _portal_version);
|
||||
}
|
||||
|
||||
if (ret_spec_version) {
|
||||
*ret_spec_version = g_strdup ("1.2");
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
result = g_dbus_proxy_call_sync (proxy,
|
||||
"GetServerInformation",
|
||||
g_variant_new ("()"),
|
||||
|
@ -119,33 +143,290 @@ _notify_update_spec_version (GError **error)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
set_app_name (const char *app_name)
|
||||
{
|
||||
g_return_val_if_fail (app_name != NULL, FALSE);
|
||||
g_return_val_if_fail (*app_name != '\0', FALSE);
|
||||
|
||||
g_free (_app_name);
|
||||
_app_name = g_strdup (app_name);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* notify_set_app_name:
|
||||
* @app_name: The name of the application
|
||||
*
|
||||
* Sets the application name.
|
||||
*
|
||||
*/
|
||||
void
|
||||
notify_set_app_name (const char *app_name)
|
||||
{
|
||||
set_app_name (app_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* notify_init:
|
||||
* @app_name: The name of the application initializing libnotify.
|
||||
* @app_name: (nullable): The name of the application initializing libnotify.
|
||||
*
|
||||
* Initialized libnotify. This must be called before any other functions.
|
||||
*
|
||||
* Starting from 0.8, if the provided @app_name is %NULL, libnotify will
|
||||
* try to figure it out from the running application.
|
||||
* Before it was not allowed, and was causing libnotify not to be initialized.
|
||||
*
|
||||
* Returns: %TRUE if successful, or %FALSE on error.
|
||||
*/
|
||||
gboolean
|
||||
notify_init (const char *app_name)
|
||||
{
|
||||
g_return_val_if_fail (app_name != NULL, FALSE);
|
||||
g_return_val_if_fail (*app_name != '\0', FALSE);
|
||||
|
||||
if (_initted)
|
||||
return TRUE;
|
||||
|
||||
g_free (_app_name);
|
||||
_app_name = g_strdup (app_name);
|
||||
if (app_name == NULL) {
|
||||
GApplication *application;
|
||||
|
||||
g_type_init ();
|
||||
app_name = _notify_get_snap_app ();
|
||||
if (app_name == NULL) {
|
||||
app_name = _notify_get_flatpak_app ();
|
||||
}
|
||||
|
||||
if (app_name == NULL &&
|
||||
(application = g_application_get_default ())) {
|
||||
app_name = g_application_get_application_id (application);
|
||||
}
|
||||
}
|
||||
|
||||
if (!set_app_name (app_name)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
_initted = TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_initialize_snap_names (void)
|
||||
{
|
||||
gchar *cgroup_contents = NULL;
|
||||
gchar *found_snap_name = NULL;
|
||||
gchar **lines;
|
||||
gint i;
|
||||
|
||||
if (!g_file_get_contents ("/proc/self/cgroup", &cgroup_contents,
|
||||
NULL, NULL)) {
|
||||
g_free (cgroup_contents);
|
||||
return;
|
||||
}
|
||||
|
||||
lines = g_strsplit (cgroup_contents, "\n", -1);
|
||||
g_free (cgroup_contents);
|
||||
|
||||
for (i = 0; lines[i]; ++i) {
|
||||
gchar **parts = g_strsplit (lines[i], ":", 3);
|
||||
gchar *basename;
|
||||
gchar **ns;
|
||||
guint ns_length;
|
||||
|
||||
if (g_strv_length (parts) != 3) {
|
||||
g_strfreev (parts);
|
||||
continue;
|
||||
}
|
||||
|
||||
basename = g_path_get_basename (parts[2]);
|
||||
g_strfreev (parts);
|
||||
|
||||
if (!basename) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ns = g_strsplit (basename, ".", -1);
|
||||
ns_length = g_strv_length (ns);
|
||||
g_free (basename);
|
||||
|
||||
if (ns_length < 2 || !g_str_equal (ns[0], "snap")) {
|
||||
g_strfreev (ns);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_snap_name == NULL) {
|
||||
g_free (found_snap_name);
|
||||
found_snap_name = g_strdup (ns[1]);
|
||||
}
|
||||
|
||||
if (ns_length < 3) {
|
||||
g_strfreev (ns);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (_snap_name == NULL) {
|
||||
_snap_name = found_snap_name;
|
||||
found_snap_name = NULL;
|
||||
g_debug ("SNAP name: %s", _snap_name);
|
||||
}
|
||||
|
||||
if (g_str_equal (ns[1], _snap_name)) {
|
||||
_snap_app = g_strdup (ns[2]);
|
||||
g_strfreev (ns);
|
||||
break;
|
||||
}
|
||||
|
||||
g_strfreev (ns);
|
||||
}
|
||||
|
||||
if (_snap_name == NULL && found_snap_name != NULL) {
|
||||
_snap_name = found_snap_name;
|
||||
found_snap_name = NULL;
|
||||
g_debug ("SNAP name: %s", _snap_name);
|
||||
}
|
||||
|
||||
if (_snap_app == NULL) {
|
||||
_snap_app = g_strdup (_snap_name);
|
||||
}
|
||||
|
||||
g_debug ("SNAP app: %s", _snap_app);
|
||||
|
||||
g_strfreev (lines);
|
||||
g_free (found_snap_name);
|
||||
}
|
||||
|
||||
const char *
|
||||
_notify_get_snap_path (void)
|
||||
{
|
||||
static const char *snap_path = NULL;
|
||||
static gsize snap_path_set = FALSE;
|
||||
|
||||
if (g_once_init_enter (&snap_path_set)) {
|
||||
snap_path = g_getenv ("SNAP");
|
||||
|
||||
if (!snap_path || *snap_path == '\0' ||
|
||||
!strchr (snap_path, G_DIR_SEPARATOR)) {
|
||||
snap_path = NULL;
|
||||
} else {
|
||||
g_debug ("SNAP path: %s", snap_path);
|
||||
}
|
||||
|
||||
g_once_init_leave (&snap_path_set, TRUE);
|
||||
}
|
||||
|
||||
return snap_path;
|
||||
}
|
||||
|
||||
const char *
|
||||
_notify_get_snap_name (void)
|
||||
{
|
||||
static gsize snap_name_set = FALSE;
|
||||
|
||||
if (g_once_init_enter (&snap_name_set)) {
|
||||
if (!_snap_name) {
|
||||
const char *snap_name_env = g_getenv ("SNAP_NAME");
|
||||
|
||||
if (!snap_name_env || *snap_name_env == '\0')
|
||||
snap_name_env = NULL;
|
||||
|
||||
_snap_name = g_strdup (snap_name_env);
|
||||
g_debug ("SNAP name: %s", _snap_name);
|
||||
}
|
||||
|
||||
g_once_init_leave (&snap_name_set, TRUE);
|
||||
}
|
||||
|
||||
return _snap_name;
|
||||
}
|
||||
|
||||
const char *
|
||||
_notify_get_snap_app (void)
|
||||
{
|
||||
static gsize snap_app_set = FALSE;
|
||||
|
||||
if (g_once_init_enter (&snap_app_set)) {
|
||||
_initialize_snap_names ();
|
||||
g_once_init_leave (&snap_app_set, TRUE);
|
||||
}
|
||||
|
||||
return _snap_app;
|
||||
}
|
||||
|
||||
const char *
|
||||
_notify_get_flatpak_app (void)
|
||||
{
|
||||
static gsize flatpak_app_set = FALSE;
|
||||
|
||||
if (g_once_init_enter (&flatpak_app_set)) {
|
||||
GKeyFile *info = g_key_file_new ();
|
||||
|
||||
if (g_key_file_load_from_file (info, "/.flatpak-info",
|
||||
G_KEY_FILE_NONE, NULL)) {
|
||||
const char *group = "Application";
|
||||
|
||||
if (g_key_file_has_group (info, "Runtime")) {
|
||||
group = "Runtime";
|
||||
}
|
||||
|
||||
_flatpak_app = g_key_file_get_string (info, group,
|
||||
"name", NULL);
|
||||
}
|
||||
|
||||
g_key_file_free (info);
|
||||
g_once_init_leave (&flatpak_app_set, TRUE);
|
||||
}
|
||||
|
||||
return _flatpak_app;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_notify_is_running_under_flatpak (void)
|
||||
{
|
||||
return !!_notify_get_flatpak_app ();
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_notify_is_running_under_snap (void)
|
||||
{
|
||||
return !!_notify_get_snap_app ();
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_notify_is_running_in_sandbox (void)
|
||||
{
|
||||
static gsize use_portal = 0;
|
||||
enum {
|
||||
IGNORE_PORTAL = 1,
|
||||
TRY_USE_PORTAL = 2,
|
||||
FORCE_PORTAL = 3
|
||||
};
|
||||
|
||||
if (g_once_init_enter (&use_portal)) {
|
||||
if (G_UNLIKELY (g_getenv ("NOTIFY_IGNORE_PORTAL"))) {
|
||||
g_once_init_leave (&use_portal, IGNORE_PORTAL);
|
||||
} else if (G_UNLIKELY (g_getenv ("NOTIFY_FORCE_PORTAL"))) {
|
||||
g_once_init_leave (&use_portal, FORCE_PORTAL);
|
||||
} else {
|
||||
g_once_init_leave (&use_portal, TRY_USE_PORTAL);
|
||||
}
|
||||
}
|
||||
|
||||
if (use_portal == IGNORE_PORTAL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return use_portal == FORCE_PORTAL ||
|
||||
_notify_is_running_under_flatpak () ||
|
||||
_notify_is_running_under_snap ();
|
||||
}
|
||||
|
||||
gboolean
|
||||
_notify_uses_portal_notifications (void)
|
||||
{
|
||||
return _portal_version != 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* notify_get_app_name:
|
||||
*
|
||||
|
@ -195,6 +476,15 @@ notify_uninit (void)
|
|||
_proxy = NULL;
|
||||
}
|
||||
|
||||
g_free (_snap_name);
|
||||
_snap_name = NULL;
|
||||
|
||||
g_free (_snap_app);
|
||||
_snap_app = NULL;
|
||||
|
||||
g_free (_flatpak_app);
|
||||
_flatpak_app = NULL;
|
||||
|
||||
_initted = FALSE;
|
||||
}
|
||||
|
||||
|
@ -211,6 +501,46 @@ notify_is_initted (void)
|
|||
return _initted;
|
||||
}
|
||||
|
||||
GDBusProxy *
|
||||
_get_portal_proxy (GError **error)
|
||||
{
|
||||
GError *local_error = NULL;
|
||||
GDBusProxy *proxy;
|
||||
GVariant *res;
|
||||
|
||||
proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
||||
G_DBUS_PROXY_FLAGS_NONE,
|
||||
NULL,
|
||||
NOTIFY_PORTAL_DBUS_NAME,
|
||||
NOTIFY_PORTAL_DBUS_CORE_OBJECT,
|
||||
NOTIFY_PORTAL_DBUS_CORE_INTERFACE,
|
||||
NULL,
|
||||
&local_error);
|
||||
|
||||
if (proxy == NULL) {
|
||||
g_debug ("Failed to get portal proxy: %s", local_error->message);
|
||||
g_clear_error (&local_error);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
res = g_dbus_proxy_get_cached_property (proxy, "version");
|
||||
if (!res) {
|
||||
g_object_unref (proxy);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_portal_version = g_variant_get_uint32 (res);
|
||||
g_assert (_portal_version > 0);
|
||||
|
||||
g_warning ("Running in confined mode, using Portal notifications. "
|
||||
"Some features and hints won't be supported");
|
||||
|
||||
g_variant_unref (res);
|
||||
|
||||
return proxy;
|
||||
}
|
||||
|
||||
/*
|
||||
* _notify_get_proxy:
|
||||
* @error: (allow-none): a location to store a #GError, or %NULL
|
||||
|
@ -226,6 +556,14 @@ _notify_get_proxy (GError **error)
|
|||
if (_proxy != NULL)
|
||||
return _proxy;
|
||||
|
||||
if (_notify_is_running_in_sandbox ()) {
|
||||
_proxy = _get_portal_proxy (error);
|
||||
|
||||
if (_proxy != NULL) {
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
||||
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
|
||||
NULL,
|
||||
|
@ -234,6 +572,8 @@ _notify_get_proxy (GError **error)
|
|||
NOTIFY_DBUS_CORE_INTERFACE,
|
||||
NULL,
|
||||
error);
|
||||
|
||||
out:
|
||||
if (_proxy == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -271,6 +611,15 @@ notify_get_server_caps (void)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (_notify_uses_portal_notifications ()) {
|
||||
list = g_list_prepend (list, g_strdup ("actions"));
|
||||
list = g_list_prepend (list, g_strdup ("body"));
|
||||
list = g_list_prepend (list, g_strdup ("body-images"));
|
||||
list = g_list_prepend (list, g_strdup ("icon-static"));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
result = g_dbus_proxy_call_sync (proxy,
|
||||
"GetCapabilities",
|
||||
g_variant_new ("()"),
|
||||
|
|
|
@ -35,6 +35,7 @@ void notify_uninit (void);
|
|||
gboolean notify_is_initted (void);
|
||||
|
||||
const char *notify_get_app_name (void);
|
||||
void notify_set_app_name (const char *app_name);
|
||||
|
||||
GList *notify_get_server_caps (void);
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<node name="/org/freedesktop/Notification">
|
||||
|
||||
<interface name="org.freedesktop.NotificationListener">
|
||||
|
||||
</interface>
|
||||
</node>
|
|
@ -0,0 +1,85 @@
|
|||
project('libnotify',
|
||||
'c',
|
||||
version: '0.8.1',
|
||||
meson_version: '>= 0.47.0')
|
||||
|
||||
gnome = import('gnome')
|
||||
pkgconfig = import('pkgconfig')
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
|
||||
################################################################
|
||||
# libtool versioning
|
||||
################################################################
|
||||
#
|
||||
# +1 : 0 : +1 == new interface that does not break old one.
|
||||
# +1 : 0 : 0 == removed an interface. Breaks old apps.
|
||||
# ? : +1 : ? == internal changes that doesn't break anything.
|
||||
#
|
||||
# CURRENT : REVISION : AGE
|
||||
#
|
||||
LT_CURRENT=4
|
||||
LT_REVISION=0
|
||||
LT_AGE=0
|
||||
|
||||
API_VERSION = 7
|
||||
|
||||
VERSION_ARRAY = meson.project_version().split('.')
|
||||
# Minor version is hardcoded until we have a real API break
|
||||
MODULE_VERSION = '@0@.@1@'.format(VERSION_ARRAY[0], API_VERSION)
|
||||
LIBNAME = meson.project_name().split('lib')[1]
|
||||
|
||||
default_includes = include_directories('.')
|
||||
|
||||
prefix = get_option('prefix')
|
||||
includedir = join_paths(prefix, get_option('includedir'))
|
||||
docdir = join_paths(prefix, get_option('datadir'), 'doc', meson.project_name())
|
||||
man1dir = join_paths(prefix, get_option('mandir'), 'man1')
|
||||
|
||||
libnotify_deps = []
|
||||
extra_deps = []
|
||||
|
||||
glib_req_version = '>= 2.38.0'
|
||||
|
||||
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
|
||||
glib_dep = dependency('glib-2.0', version: glib_req_version)
|
||||
gio_dep = dependency('gio-2.0', version: glib_req_version)
|
||||
gtk_dep = dependency('gtk+-3.0', version: '>= 2.90', required: get_option('tests'))
|
||||
|
||||
libnotify_deps = [gdk_pixbuf_dep, gio_dep, glib_dep]
|
||||
tests_deps = [gtk_dep]
|
||||
|
||||
conf = configuration_data()
|
||||
conf.set_quoted('VERSION', meson.project_version())
|
||||
configure_file(input: 'config.h.meson',
|
||||
output : 'config.h',
|
||||
configuration : conf)
|
||||
|
||||
if get_option('man')
|
||||
xsltproc = find_program('xsltproc', required: true)
|
||||
stylesheet = 'http://docbook.sourceforge.net/release/xsl-ns/current/manpages/docbook.xsl'
|
||||
xsltproc_command = [
|
||||
xsltproc,
|
||||
'--nonet',
|
||||
'--stringparam', 'man.output.quietly', '1',
|
||||
'--stringparam', 'funcsynopsis.style', 'ansi',
|
||||
'--stringparam', 'man.th.extra1.suppress', '1',
|
||||
'-o', '@OUTPUT@',
|
||||
stylesheet,
|
||||
'@INPUT@',
|
||||
]
|
||||
|
||||
testrun = run_command(xsltproc, '--nonet', stylesheet, check: false)
|
||||
|
||||
if testrun.returncode() != 0
|
||||
error('DocBook stylesheet for generating man pages not found, you need to install docbook-xsl-ns or similar package.')
|
||||
endif
|
||||
endif
|
||||
|
||||
subdir('libnotify')
|
||||
subdir('tools')
|
||||
subdir('docs')
|
||||
|
||||
if get_option('tests')
|
||||
subdir('tests')
|
||||
endif
|
|
@ -0,0 +1,20 @@
|
|||
option('tests',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Build tests')
|
||||
option('introspection',
|
||||
type: 'feature',
|
||||
value: 'enabled',
|
||||
description: 'Enable GObject introspection')
|
||||
option('man',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Enable generating the manual page (depends on xsltproc)')
|
||||
option('gtk_doc',
|
||||
type: 'boolean',
|
||||
value: true,
|
||||
description: 'Enable generating the API reference (depends on GTK-Doc)')
|
||||
option('docbook_docs',
|
||||
type: 'feature',
|
||||
value: 'auto',
|
||||
description: 'Build DocBook documentation (requires xmlto)')
|
|
@ -1,89 +0,0 @@
|
|||
INCLUDES = \
|
||||
-I$(top_srcdir) \
|
||||
$(TESTS_CFLAGS)
|
||||
|
||||
noinst_PROGRAMS = \
|
||||
test-replace \
|
||||
test-replace-widget \
|
||||
test-server-info \
|
||||
test-default-action \
|
||||
test-multi-actions \
|
||||
test-action-icons \
|
||||
test-image \
|
||||
test-basic \
|
||||
test-error \
|
||||
test-markup \
|
||||
test-persistence \
|
||||
test-resident \
|
||||
test-rtl \
|
||||
test-size-changes \
|
||||
test-transient \
|
||||
test-urgency \
|
||||
test-xy \
|
||||
test-xy-actions \
|
||||
test-xy-stress
|
||||
|
||||
common_ldflags = \
|
||||
$(top_builddir)/libnotify/libnotify.la \
|
||||
$(TESTS_LIBS)
|
||||
|
||||
test_replace_SOURCES = test-replace.c
|
||||
test_replace_LDADD = $(common_ldflags)
|
||||
|
||||
test_replace_widget_SOURCES = test-replace-widget.c
|
||||
test_replace_widget_LDADD = $(common_ldflags)
|
||||
|
||||
test_server_info_SOURCES = test-server-info.c
|
||||
test_server_info_LDADD = $(common_ldflags)
|
||||
|
||||
test_size_changes_SOURCES = test-size-changes.c
|
||||
test_size_changes_LDADD = $(common_ldflags)
|
||||
|
||||
test_default_action_SOURCES = test-default-action.c
|
||||
test_default_action_LDADD = $(common_ldflags)
|
||||
|
||||
test_multi_actions_SOURCES = test-multi-actions.c
|
||||
test_multi_actions_LDADD = $(common_ldflags)
|
||||
|
||||
test_action_icons_SOURCES = test-action-icons.c
|
||||
test_action_icons_LDADD = $(common_ldflags)
|
||||
|
||||
test_image_SOURCES = test-image.c
|
||||
test_image_LDADD = $(common_ldflags)
|
||||
|
||||
test_basic_SOURCES = test-basic.c
|
||||
test_basic_LDADD = $(common_ldflags)
|
||||
|
||||
test_error_SOURCES = test-error.c
|
||||
test_error_LDADD = $(common_ldflags)
|
||||
|
||||
test_markup_SOURCES = test-markup.c
|
||||
test_markup_LDADD = $(common_ldflags)
|
||||
|
||||
test_urgency_SOURCES = test-urgency.c
|
||||
test_urgency_LDADD = $(common_ldflags)
|
||||
|
||||
test_xy_SOURCES = test-xy.c
|
||||
test_xy_LDADD = $(common_ldflags)
|
||||
|
||||
test_xy_actions_SOURCES = test-xy-actions.c
|
||||
test_xy_actions_LDADD = $(common_ldflags)
|
||||
|
||||
test_xy_stress_SOURCES = test-xy-stress.c
|
||||
test_xy_stress_LDADD = $(common_ldflags)
|
||||
|
||||
test_rtl_SOURCES = test-rtl.c
|
||||
test_rtl_LDADD = $(common_ldflags)
|
||||
|
||||
test_persistence_SOURCES = test-persistence.c
|
||||
test_persistence_LDADD = $(common_ldflags)
|
||||
|
||||
test_resident_SOURCES = test-resident.c
|
||||
test_resident_LDADD = $(common_ldflags)
|
||||
|
||||
test_transient_SOURCES = test-transient.c
|
||||
test_transient_LDADD = $(common_ldflags)
|
||||
|
||||
EXTRA_DIST = applet-critical.png test-gir.py
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
|
@ -0,0 +1,28 @@
|
|||
test_progs = [
|
||||
'replace',
|
||||
'replace-widget',
|
||||
'server-info',
|
||||
'default-action',
|
||||
'multi-actions',
|
||||
'action-icons',
|
||||
'image',
|
||||
'basic',
|
||||
'error',
|
||||
'markup',
|
||||
'persistence',
|
||||
'removal',
|
||||
'resident',
|
||||
'rtl',
|
||||
'size-changes',
|
||||
'transient',
|
||||
'urgency',
|
||||
'xy',
|
||||
'xy-actions',
|
||||
'xy-stress',
|
||||
]
|
||||
|
||||
foreach tprog: test_progs
|
||||
executable('test-' + tprog, ['test-' + tprog + '.c'],
|
||||
dependencies: [libnotify_dep, tests_deps],
|
||||
)
|
||||
endforeach
|
|
@ -29,8 +29,6 @@ main ()
|
|||
{
|
||||
NotifyNotification *n;
|
||||
|
||||
g_type_init ();
|
||||
|
||||
notify_init ("Error Handling");
|
||||
|
||||
n = notify_notification_new ("Summary", "Content", NULL);
|
||||
|
|
|
@ -67,7 +67,7 @@ main (int argc, char *argv[])
|
|||
|
||||
n = notify_notification_new ("Software Updates Available",
|
||||
"Important updates for your apps are now available.",
|
||||
"software-update-available");
|
||||
"software-update-available-symbolic");
|
||||
notify_notification_add_action (n,
|
||||
"install",
|
||||
"Install now",
|
||||
|
@ -81,7 +81,7 @@ main (int argc, char *argv[])
|
|||
if (!server_has_persistence ()) {
|
||||
GtkStatusIcon *icon;
|
||||
g_message ("Server does not support persistence; using a status icon");
|
||||
icon = gtk_status_icon_new_from_icon_name ("software-update-available");
|
||||
icon = gtk_status_icon_new_from_icon_name ("software-update-available-symbolic");
|
||||
gtk_status_icon_set_tooltip_markup (icon, "<b>Software Updates Available</b>\nImportant updates for your apps are now available.");
|
||||
gtk_status_icon_set_visible (icon, TRUE);
|
||||
} else {
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or(at your option) any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <libnotify/notify.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
static void
|
||||
next_callback (NotifyNotification *n,
|
||||
const char *action)
|
||||
{
|
||||
g_assert (action != NULL);
|
||||
|
||||
printf ("You clicked Next\n");
|
||||
|
||||
notify_notification_close (n, NULL);
|
||||
|
||||
gtk_main_quit ();
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
NotifyNotification *n;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
notify_init ("Urgency");
|
||||
|
||||
n = notify_notification_new ("Low Urgency",
|
||||
"Joe signed online.",
|
||||
NULL);
|
||||
notify_notification_set_urgency (n, NOTIFY_URGENCY_LOW);
|
||||
if (!notify_notification_show (n, NULL)) {
|
||||
fprintf (stderr, "failed to send notification\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
sleep (3);
|
||||
|
||||
if (!notify_notification_close (n, NULL)) {
|
||||
fprintf (stderr, "failed to remove notification\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
g_object_unref (G_OBJECT (n));
|
||||
|
||||
|
||||
n = notify_notification_new ("Normal Urgency",
|
||||
"You have a meeting in 10 minutes.",
|
||||
NULL);
|
||||
notify_notification_set_urgency (n, NOTIFY_URGENCY_NORMAL);
|
||||
if (!notify_notification_show (n, NULL)) {
|
||||
fprintf (stderr, "failed to send notification\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
sleep (3);
|
||||
|
||||
if (!notify_notification_close (n, NULL)) {
|
||||
fprintf (stderr, "failed to remove notification\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
g_object_unref (G_OBJECT (n));
|
||||
|
||||
|
||||
n = notify_notification_new ("Critical Urgency",
|
||||
"This message will self-destruct in 10 seconds.",
|
||||
NULL);
|
||||
notify_notification_set_urgency (n, NOTIFY_URGENCY_CRITICAL);
|
||||
notify_notification_set_timeout (n, NOTIFY_EXPIRES_NEVER);
|
||||
notify_notification_add_action (n,
|
||||
"media-skip-forward",
|
||||
"Next",
|
||||
(NotifyActionCallback) next_callback,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
if (!notify_notification_show (n, NULL)) {
|
||||
fprintf (stderr, "failed to send notification\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
sleep (3);
|
||||
|
||||
if (!notify_notification_close (n, NULL)) {
|
||||
fprintf (stderr, "failed to remove notification\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
gtk_main ();
|
||||
|
||||
g_object_unref (G_OBJECT (n));
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -28,8 +28,6 @@ main ()
|
|||
GError *error;
|
||||
error = NULL;
|
||||
|
||||
g_type_init ();
|
||||
|
||||
notify_init ("Replace Test");
|
||||
|
||||
n = notify_notification_new ("Summary",
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
bin_PROGRAMS = notify-send
|
||||
|
||||
common_ldflags = \
|
||||
$(top_builddir)/libnotify/libnotify.la \
|
||||
$(PACKAGE_LIBS)
|
||||
|
||||
notify_send_SOURCES = notify-send.c
|
||||
notify_send_LDADD = $(common_ldflags)
|
||||
|
||||
INCLUDES = $(PACKAGE_CFLAGS) \
|
||||
-I$(top_srcdir)
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
|
@ -0,0 +1,7 @@
|
|||
progs = ['notify-send']
|
||||
|
||||
foreach prog: progs
|
||||
executable(prog, [prog + '.c'],
|
||||
dependencies: libnotify_dep,
|
||||
install: true)
|
||||
endforeach
|
|
@ -21,16 +21,19 @@
|
|||
#include "config.h"
|
||||
|
||||
#include <libnotify/notify.h>
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <glib.h>
|
||||
#include <glib-unix.h>
|
||||
#include <glib/gprintf.h>
|
||||
|
||||
#define N_(x) (x)
|
||||
#define GETTEXT_PACKAGE NULL
|
||||
|
||||
static NotifyUrgency urgency = NOTIFY_URGENCY_NORMAL;
|
||||
static GMainLoop *loop = NULL;
|
||||
|
||||
static gboolean
|
||||
g_option_arg_urgency_cb (const char *option_name,
|
||||
|
@ -98,6 +101,26 @@ notify_notification_set_hint_variant (NotifyNotification *notification,
|
|||
key,
|
||||
(guchar) h_byte);
|
||||
}
|
||||
} else if (g_ascii_strcasecmp (type, "boolean") == 0) {
|
||||
gboolean h_boolean = FALSE;
|
||||
|
||||
if (g_ascii_strcasecmp (value, "true") == 0) {
|
||||
h_boolean = TRUE;
|
||||
} else if (g_ascii_isdigit (*value)) {
|
||||
h_boolean = !!g_ascii_strtoull (value, NULL, 10);
|
||||
}
|
||||
|
||||
notify_notification_set_hint (notification, key,
|
||||
g_variant_new_boolean (h_boolean));
|
||||
} else if (g_ascii_strcasecmp (type, "variant") == 0) {
|
||||
GVariant *variant = g_variant_parse (NULL, value, NULL, NULL, NULL);
|
||||
|
||||
if (variant != NULL) {
|
||||
notify_notification_set_hint (notification, key, variant);
|
||||
} else {
|
||||
conv_error = TRUE;
|
||||
}
|
||||
|
||||
} else {
|
||||
*error = g_error_new (G_OPTION_ERROR,
|
||||
G_OPTION_ERROR_BAD_VALUE,
|
||||
|
@ -119,18 +142,91 @@ notify_notification_set_hint_variant (NotifyNotification *notification,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
handle_closed (NotifyNotification *notify,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_main_loop_quit (loop);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_sigint (gpointer data)
|
||||
{
|
||||
NotifyNotification *notification = data;
|
||||
|
||||
g_printerr ("Wait cancelled, closing notification\n");
|
||||
|
||||
notify_notification_close (notification, NULL);
|
||||
g_main_loop_quit (loop);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
handle_action (NotifyNotification *notify,
|
||||
char *action,
|
||||
gpointer user_data)
|
||||
{
|
||||
const char *action_name = user_data;
|
||||
const char *activation_token;
|
||||
|
||||
activation_token = notify_notification_get_activation_token (notify);
|
||||
|
||||
g_printf ("%s\n", action_name);
|
||||
|
||||
if (activation_token) {
|
||||
g_debug ("Activation Token: %s", activation_token);
|
||||
}
|
||||
|
||||
notify_notification_close (notify, NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_wait_timeout (gpointer data)
|
||||
{
|
||||
fprintf (stderr, "Wait timeout expired\n");
|
||||
g_main_loop_quit (loop);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
server_has_capability (const gchar *capability)
|
||||
{
|
||||
GList *server_caps = notify_get_server_caps ();
|
||||
gboolean supported;
|
||||
|
||||
supported = !!g_list_find_custom (server_caps,
|
||||
capability,
|
||||
(GCompareFunc) g_ascii_strcasecmp);
|
||||
|
||||
g_list_foreach (server_caps, (GFunc) g_free, NULL);
|
||||
g_list_free (server_caps);
|
||||
|
||||
return supported;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
static const char *summary = NULL;
|
||||
char *body;
|
||||
static const char *type = NULL;
|
||||
static char *app_name = NULL;
|
||||
static char *icon_str = NULL;
|
||||
static char *icons = NULL;
|
||||
static char **n_text = NULL;
|
||||
static char **hints = NULL;
|
||||
static char **actions = NULL;
|
||||
static char *server_name = NULL;
|
||||
static char *server_vendor = NULL;
|
||||
static char *server_version = NULL;
|
||||
static char *server_spec_version = NULL;
|
||||
static gboolean print_id = FALSE;
|
||||
static gint notification_id = 0;
|
||||
static gboolean do_version = FALSE;
|
||||
static gboolean hint_error = FALSE;
|
||||
static gboolean hint_error = FALSE, show_error = FALSE;
|
||||
static gboolean transient = FALSE;
|
||||
static gboolean wait = FALSE;
|
||||
static glong expire_timeout = NOTIFY_EXPIRES_DEFAULT;
|
||||
GOptionContext *opt_ctx;
|
||||
NotifyNotification *notify;
|
||||
|
@ -146,16 +242,34 @@ main (int argc, char *argv[])
|
|||
N_
|
||||
("Specifies the timeout in milliseconds at which to expire the "
|
||||
"notification."), N_("TIME")},
|
||||
{"icon", 'i', 0, G_OPTION_ARG_FILENAME, &icons,
|
||||
{"app-name", 'a', 0, G_OPTION_ARG_STRING, &app_name,
|
||||
N_("Specifies the app name for the icon"), N_("APP_NAME")},
|
||||
{"icon", 'i', 0, G_OPTION_ARG_FILENAME, &icon_str,
|
||||
N_("Specifies an icon filename or stock icon to display."),
|
||||
N_("ICON[,ICON...]")},
|
||||
N_("ICON")},
|
||||
{"category", 'c', 0, G_OPTION_ARG_FILENAME, &type,
|
||||
N_("Specifies the notification category."),
|
||||
N_("TYPE[,TYPE...]")},
|
||||
{"transient", 'e', 0, G_OPTION_ARG_NONE, &transient,
|
||||
N_("Create a transient notification"),
|
||||
NULL},
|
||||
{"hint", 'h', 0, G_OPTION_ARG_FILENAME_ARRAY, &hints,
|
||||
N_
|
||||
("Specifies basic extra data to pass. Valid types are int, double, string and byte."),
|
||||
("Specifies basic extra data to pass. Valid types are boolean, int, double, string, byte and variant."),
|
||||
N_("TYPE:NAME:VALUE")},
|
||||
{"print-id", 'p', 0, G_OPTION_ARG_NONE, &print_id,
|
||||
N_ ("Print the notification ID."), NULL},
|
||||
{"replace-id", 'r', 0, G_OPTION_ARG_INT, ¬ification_id,
|
||||
N_ ("The ID of the notification to replace."), N_("REPLACE_ID")},
|
||||
{"wait", 'w', 0, G_OPTION_ARG_NONE, &wait,
|
||||
N_("Wait for the notification to be closed before exiting."),
|
||||
NULL},
|
||||
{"action", 'A', 0, G_OPTION_ARG_FILENAME_ARRAY, &actions,
|
||||
N_
|
||||
("Specifies the actions to display to the user. Implies --wait to wait for user input."
|
||||
" May be set multiple times. The name of the action is output to stdout. If NAME is "
|
||||
"not specified, the numerical index of the option is used (starting with 0)."),
|
||||
N_("[NAME=]Text...")},
|
||||
{"version", 'v', 0, G_OPTION_ARG_NONE, &do_version,
|
||||
N_("Version of the package."),
|
||||
NULL},
|
||||
|
@ -167,7 +281,7 @@ main (int argc, char *argv[])
|
|||
|
||||
body = NULL;
|
||||
|
||||
g_type_init ();
|
||||
setlocale (LC_ALL, "");
|
||||
|
||||
g_set_prgname (argv[0]);
|
||||
g_log_set_always_fatal (G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL);
|
||||
|
@ -207,25 +321,43 @@ main (int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
if (icons != NULL) {
|
||||
char *c;
|
||||
|
||||
/* XXX */
|
||||
if ((c = strchr (icons, ',')) != NULL)
|
||||
*c = '\0';
|
||||
|
||||
icon_str = icons;
|
||||
}
|
||||
|
||||
if (!notify_init ("notify-send"))
|
||||
exit (1);
|
||||
|
||||
notify = notify_notification_new (summary,
|
||||
body,
|
||||
icon_str);
|
||||
notify_get_server_info (&server_name,
|
||||
&server_vendor,
|
||||
&server_version,
|
||||
&server_spec_version);
|
||||
|
||||
g_debug ("Using sever %s %s, v%s - Supporting Notification Spec %s",
|
||||
server_name, server_vendor, server_version, server_spec_version);
|
||||
g_free (server_name);
|
||||
g_free (server_vendor);
|
||||
g_free (server_version);
|
||||
g_free (server_spec_version);
|
||||
|
||||
notify = g_object_new (NOTIFY_TYPE_NOTIFICATION,
|
||||
"summary", summary,
|
||||
"body", body,
|
||||
"icon-name", icon_str,
|
||||
"id", notification_id,
|
||||
NULL);
|
||||
|
||||
notify_notification_set_category (notify, type);
|
||||
notify_notification_set_urgency (notify, urgency);
|
||||
notify_notification_set_timeout (notify, expire_timeout);
|
||||
notify_notification_set_app_name (notify, app_name);
|
||||
|
||||
if (transient) {
|
||||
notify_notification_set_hint (notify, "transient",
|
||||
g_variant_new_boolean (TRUE));
|
||||
|
||||
if (!server_has_capability ("persistence")) {
|
||||
g_debug ("Persistence is not supported by the "
|
||||
"notifications server. "
|
||||
"All notifications are transient.");
|
||||
}
|
||||
}
|
||||
|
||||
g_free (body);
|
||||
|
||||
|
@ -237,7 +369,7 @@ main (int argc, char *argv[])
|
|||
char **tokens = NULL;
|
||||
|
||||
while ((hint = hints[i++])) {
|
||||
tokens = g_strsplit (hint, ":", -1);
|
||||
tokens = g_strsplit (hint, ":", 3);
|
||||
l = g_strv_length (tokens);
|
||||
|
||||
if (l != 3) {
|
||||
|
@ -254,7 +386,7 @@ main (int argc, char *argv[])
|
|||
|
||||
if (!retval) {
|
||||
fprintf (stderr, "%s\n", error->message);
|
||||
g_error_free (error);
|
||||
g_clear_error (&error);
|
||||
hint_error = TRUE;
|
||||
}
|
||||
}
|
||||
|
@ -265,12 +397,90 @@ main (int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
if (!hint_error)
|
||||
notify_notification_show (notify, NULL);
|
||||
if (actions != NULL) {
|
||||
gint i = 0;
|
||||
char *action = NULL;
|
||||
gchar **spl = NULL;
|
||||
gboolean have_actions;
|
||||
|
||||
have_actions = server_has_capability ("actions");
|
||||
if (!have_actions) {
|
||||
g_printerr (N_("Actions are not supported by this "
|
||||
"notifications server. "
|
||||
"Displaying non-interactively.\n"));
|
||||
show_error = TRUE;
|
||||
}
|
||||
|
||||
while (have_actions && (action = actions[i++])) {
|
||||
gchar *name;
|
||||
const gchar *label;
|
||||
|
||||
spl = g_strsplit (action, "=", 2);
|
||||
|
||||
if (g_strv_length (spl) == 1) {
|
||||
name = g_strdup_printf ("%d", i - 1);
|
||||
label = g_strstrip (spl[0]);
|
||||
} else {
|
||||
name = g_strdup (g_strstrip (spl[0]));
|
||||
label = g_strstrip (spl[1]);
|
||||
}
|
||||
|
||||
if (*label != '\0' && *name != '\0') {
|
||||
notify_notification_add_action (notify,
|
||||
name,
|
||||
label,
|
||||
handle_action,
|
||||
name,
|
||||
g_free);
|
||||
wait = TRUE;
|
||||
}
|
||||
|
||||
g_strfreev (spl);
|
||||
}
|
||||
|
||||
g_strfreev (actions);
|
||||
}
|
||||
|
||||
if (wait) {
|
||||
g_signal_connect (G_OBJECT (notify),
|
||||
"closed",
|
||||
G_CALLBACK (handle_closed),
|
||||
NULL);
|
||||
|
||||
if (expire_timeout > 0) {
|
||||
g_timeout_add (expire_timeout, on_wait_timeout, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (!hint_error) {
|
||||
retval = notify_notification_show (notify, &error);
|
||||
|
||||
if (!retval) {
|
||||
fprintf (stderr, "%s\n", error->message);
|
||||
g_clear_error (&error);
|
||||
show_error = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (print_id) {
|
||||
g_object_get (notify, "id", ¬ification_id, NULL);
|
||||
g_printf ("%d\n", notification_id);
|
||||
}
|
||||
|
||||
if (wait) {
|
||||
g_unix_signal_add (SIGINT, on_sigint, notify);
|
||||
loop = g_main_loop_new (NULL, FALSE);
|
||||
g_main_loop_run (loop);
|
||||
g_main_loop_unref (loop);
|
||||
loop = NULL;
|
||||
}
|
||||
|
||||
g_object_unref (G_OBJECT (notify));
|
||||
|
||||
notify_uninit ();
|
||||
|
||||
exit (hint_error);
|
||||
if (hint_error || show_error)
|
||||
exit (1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue