Skip to content

system_notifier

This plugin adds system notifications based on journal logs (or any program's output). It monitors specified sources for log entries matching predefined patterns and generates notifications accordingly (after applying an optional filter).

Sources are commands that return a stream of text (eg: journal, mqtt, tail -f, ...) which is sent to a parser that will use a regular expression pattern to detect lines of interest and optionally transform them before sending the notification.

Minimal configuration
toml
[[system_notifier.sources]]
command = "journalctl -fx"
parser = "journal"

No sources are defined by default, so you will need to define at least one.

In general you will also need to define some parsers. By default a "journal" parser is provided, otherwise you need to define your own rules. This built-in configuration is close to this one, provided as an example:

toml
[[system_notifier.parsers.journal]]
pattern = "([a-z0-9]+): Link UP$"
filter = "s/.*\[\d+\]: ([a-z0-9]+): Link.*/\1 is active/"
color = "#00aa00"

[[system_notifier.parsers.journal]]
pattern = "([a-z0-9]+): Link DOWN$"
filter = "s/.*\[\d+\]: ([a-z0-9]+): Link.*/\1 is inactive/"
color = "#ff8800"
duration = 15

[[system_notifier.parsers.journal]]
pattern = "Process \d+ \(.*\) of .* dumped core."
filter = "s/.*Process \d+ \((.*)\) of .* dumped core./\1 dumped core/"
color = "#aa0000"

[[system_notifier.parsers.journal]]
pattern = "usb \d+-[0-9.]+: Product: "
filter = "s/.*usb \d+-[0-9.]+: Product: (.*)/USB plugged: \1/"

Commands

Loading commands...

Configuration

Loading configuration...

sources

List of sources to monitor. Each source must contain a command to run and a parser to use:

toml
[[system_notifier.sources]]
command = "journalctl -fx"
parser = "journal"

You can also use multiple parsers:

toml
[[system_notifier.sources]]
command = "sudo journalctl -fkn"
parser = ["journal", "custom_parser"]

parsers

Named parser configurations. Each parser rule contains:

  • pattern: regex to match lines of interest
  • filter: optional filter to transform text (e.g., s/.*value: (\d+)/Value=\1/)
  • color: optional color in "#hex" or "rgb()" format
  • duration: notification display time in seconds (default: 3)
toml
[[system_notifier.parsers.custom_parser]]
pattern = 'special value:'
filter = "s/.*special value: (\d+)/Value=\1/"
color = "#FF5500"
duration = 10

Built-in "journal" parser

A journal parser is provided, detecting link up/down, core dumps, and USB plugs.

use_notify_send

When enabled, forces use of notify-send command instead of the compositor's native notification system.