MQTT to Desktop Notification script, for use with dm8tbr's mqtt-notify.pl irssi script.
mqtt-notify.pl
sends irssi's notifications to an MQTT broker (such as mosquitto). mqtt-notify.py
takes those messages and turns them into desktop notifications.
If irssi runs in GNU Screen or tmux on a remote system then translating IRC notifications into desktop notifications is not trivial, but some solutions do exist such as irssi-over-ssh-notifications (which I used successfully for many years). Most of these solutions require that a remote port is forwarded via ssh -R
to the client to transmit the notifications—which is fine until you'd like to receive that notification on your phone so you don't miss your team lunch or use mosh where port forwarding isn't possible.
mqtt-notify.py
uses
- paho to access the MQTT broker
- libnotify to make desktop notifications
- libsecret to store and retrieve passwords
- dbus-python and glib to run the main loop and track notification closures
mqtt-notify.py
can be run as a systemd user service or started manually.
Setting up an MQTT broker is left as an exercise to the reader. mosquitto is relatively simple to set up. Ensure that you set up mqtts://
so that your messages are secure in transit (easily done with Let's Encrypt). Various guides are available online.
$ mkdir -p ~/bin
$ cp mqtt-notify.py ~/bin
$ mkdir -p ~/.config/systemd/user/
$ cp mqtt-notify.service ~/.config/systemd/user/
A simple example configuration file is available at config
. Copy and modify to suit your needs.
$ mkdir -p ~/.config/mqtt-notify/
$ cp config ~/.config/mqtt-notify/
The user's MQTT authentication password is stored with libsecret
and will be looked up via the username and the hostname stored in config
. Add the password to the libsecret
database.
$ secret-tool store --label="mqtts://example.com" user myuser service mqtt host example.com
Password: **********
$ systemctl --user daemon-reload
$ systemctl --user enable --now mqtt-notify
(Assumes that ~/bin
is in your $PATH
)
$ mqtt-notify.py -c ~/.config/mqtt-notify/config