Skip to content

MQTT to Desktop Notification script, for use with irssi's mqtt-notify.pl

Notifications You must be signed in to change notification settings

mattst88/mqtt-notify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

mqtt-notify

MQTT to Desktop Notification script, for use with dm8tbr's mqtt-notify.pl irssi script.

GPLv3 license

What

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.

Why

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.

How

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

Setup

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.

Installation

$ mkdir -p ~/bin
$ cp mqtt-notify.py ~/bin
$ mkdir -p ~/.config/systemd/user/
$ cp mqtt-notify.service ~/.config/systemd/user/

Configuration

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/

Password

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: **********

Usage

As a user service

$ systemctl --user daemon-reload
$ systemctl --user enable --now mqtt-notify

Manual

(Assumes that ~/bin is in your $PATH)

$ mqtt-notify.py -c ~/.config/mqtt-notify/config