First attempt at sending message notifications on Linux

This commit is contained in:
Jonathan Bennett
2026-04-20 12:55:31 -05:00
parent 8627bce1a1
commit d15666611b
3 changed files with 34 additions and 0 deletions
+4
View File
@@ -863,6 +863,10 @@ void NodeDB::installDefaultModuleConfig()
moduleConfig.external_notification.nag_timeout = default_ringtone_nag_secs;
#endif
#endif
#if ARCH_PORTDUINO
moduleConfig.external_notification.enabled = true;
moduleConfig.external_notification.alert_message = true;
#endif
#ifdef NANO_G2_ULTRA
moduleConfig.external_notification.enabled = true;
moduleConfig.external_notification.alert_message = true;
@@ -408,6 +408,9 @@ ProcessMessage ExternalNotificationModule::handleReceived(const meshtastic_MeshP
if (genericShouldAlert) {
LOG_INFO("externalNotificationModule - Generic alert");
setExternalState(0, true);
#if ARCH_PORTDUINO
portduinoNotify(mp);
#endif
}
if (vibraShouldAlert) {
@@ -521,3 +524,26 @@ int ExternalNotificationModule::handleInputEvent(const InputEvent *event)
}
return 0;
}
#if ARCH_PORTDUINO
void ExternalNotificationModule::portduinoNotify(const meshtastic_MeshPacket &mp)
{
std::string senderName;
const meshtastic_NodeInfoLite *sender = nodeDB->getMeshNode(mp.from);
if (sender && sender->has_user) {
if (sender->user.long_name[0] != '\0') {
senderName = sender->user.long_name;
} else {
senderName = sender->user.short_name;
}
} else {
senderName = std::to_string(mp.from);
}
std::string notificationSummary = "From: " + senderName;
std::string notificationBody = std::string((char *)mp.decoded.payload.bytes, mp.decoded.payload.size);
std::string command = "notify-send -a Meshtasticd -i org.meshtastic.meshtasticd.png ";
command += "\"" + notificationSummary + "\" \"" + notificationBody + "\"";
LOG_INFO("Executing command: %s", command.c_str());
exec(command.c_str());
}
#endif
+4
View File
@@ -77,6 +77,10 @@ class ExternalNotificationModule : public SinglePortModule, private concurrency:
virtual AdminMessageHandleResult handleAdminMessageForModule(const meshtastic_MeshPacket &mp,
meshtastic_AdminMessage *request,
meshtastic_AdminMessage *response) override;
#if ARCH_PORTDUINO
void portduinoNotify(const meshtastic_MeshPacket &mp);
#endif
};
extern ExternalNotificationModule *externalNotificationModule;