Skip to content
This repository has been archived by the owner on Nov 11, 2019. It is now read-only.
/ sw-notify-send Public archive

[DEFUNCT] Systemwide (libnotify's) notify-send wrapper (replaced by tinynotify-send)

License

Notifications You must be signed in to change notification settings

projg2/sw-notify-send

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sw-notify-send -- a system-wide notify-send wrapper
===================================================

Please note that this project is no longer maintained.

Please use libtinynotify-systemwide & tinynotify-send instead.


A quick introduction
--------------------

Even wondered why libnotify doesn't support sending notifications using
user other than the one running the notification daemon? I have done
that many times too, and never found an answer. This is why I have
created this tiny tool.

sw-notify-send stands for 'system-wide notify-send', and that means it
is a wrapper for the `notify-send` tool, allowing to use it using
another user account (and send notifications out of the particular
session running the daemon).


System requirements
-------------------

* The `proc` library (which can be found in the procps package),
* [libtinynotify][1] with `--enable-cli`.

[1]:https://github.com/mgorny/libtinynotify/

How to use
----------

sw-notify-send is only a dumb wrapper for notify-send. Thus, it doesn't
take any arguments of its' own and passes all of them to notify-send.
Thus, to use it you simply replace `tinynotify-send` with `sw-notify-send`
in your shell script (or command line, or wherever you're going to use
it).

In other words, you use it like:

	sw-notify-send 'Test' 'Hello world!'

Simple, isn't it?

And as you might have expected, sw-notify-send requires a lot
of privileges (details below). Thus, if run using a regular user, it
will most certainly notice only his own notification daemon. To get real
system-wide notifications, you need to run sw-notify-send using
the superuser account (e.g. through sudo).


Technical details
-----------------

sw-notify-send simply iterates over all running processes (using
the `/proc` filesystem) looking for anything looking like
a DBus session bus. And by 'looking like', I mean having `dbus-daemon`
as the basename and `--session` among its arguments.

For every one it finds, it tries to grab the access details and send
the notification. It tries to preserve DISPLAY and XAUTHORITY, and calls
`setresuid()` to get the identity of that user -- and that should be enough
for dbus to let us in.

In addition to that, sw-notify-send also supports having
the notification daemon running in a chroot. If it founds one doing so
(looking at the `root` procfs entry), it calls `chroot()` to enter
the chroot.

<!-- vim:se syn=markdown : -->

About

[DEFUNCT] Systemwide (libnotify's) notify-send wrapper (replaced by tinynotify-send)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages