# Notification

Last updated Jul 10, 2023
Get notified of shell actions.

Hilbish features a simple notification system which can be used by other plugins and parts of the shell to notify the user of various actions. This is used via the `hilbish.message` interface.

A `message` is defined as a table with the following properties:

- `icon`: A unicode/emoji icon for the notification.
- `title`: The title of the message
- `text`: Message text/body
- `channel`: The source of the message. This should be a unique and easily readable text identifier.
- `summary`: A short summary of the notification and message. If this is not present and you are using this to display messages, you should take part of the `text` instead.

The `hilbish.message` interface provides the following functions:

- `send(message)`: Sends a message and emits the `hilbish.notification` signal. DO NOT emit the `hilbish.notification` signal directly, or the message will not be stored by the message handler.
- `read(idx)`: Marks message at `idx` as read.
- `delete(idx)`: Removes message at `idx`.
- `readAll()`: Marks all messages as read.
- `clear()`: Deletes all messages.

There are a few simple use cases of this notification/messaging system. It could also be used as some “inter-shell” messaging system (???) but is intended to display to users.

An example is notifying users of completed jobs/commands ran in the background. Any Hilbish-native command (think the upcoming Greenhouse pager) can display it.