summaryrefslogtreecommitdiff
path: root/src/plugins/PluginAPI.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-03-20 15:23:25 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-03-20 15:23:25 +0000
commit34da16b7e626be4d96c3098b5265e2c008fb2d65 (patch)
treecb4b5fc91507c2c93f76468b276f2e69aa7cd847 /src/plugins/PluginAPI.cpp
parent71a95a581f86a801b1db24a417f41d9a395cab38 (diff)
plugin api: add addNotificationV2
Allows for issuing fancy notifs via api
Diffstat (limited to 'src/plugins/PluginAPI.cpp')
-rw-r--r--src/plugins/PluginAPI.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/plugins/PluginAPI.cpp b/src/plugins/PluginAPI.cpp
index 8c816546..c878516b 100644
--- a/src/plugins/PluginAPI.cpp
+++ b/src/plugins/PluginAPI.cpp
@@ -193,3 +193,51 @@ APICALL bool HyprlandAPI::removeDispatcher(HANDLE handle, const std::string& nam
return true;
}
+
+APICALL bool addNotificationV2(HANDLE handle, const std::unordered_map<std::string, std::any>& data) {
+ auto* const PLUGIN = g_pPluginSystem->getPluginByHandle(handle);
+
+ if (!PLUGIN)
+ return false;
+
+ try {
+ auto iterator = data.find("text");
+ if (iterator == data.end())
+ return false;
+
+ // mandatory
+ std::string text;
+ try {
+ text = std::any_cast<std::string>(iterator->second);
+ } catch (std::exception& e) {
+ // attempt const char*
+ text = std::any_cast<const char*>(iterator->second);
+ }
+
+ iterator = data.find("time");
+ if (iterator == data.end())
+ return false;
+
+ const auto TIME = std::any_cast<uint64_t>(iterator->second);
+
+ iterator = data.find("color");
+ if (iterator == data.end())
+ return false;
+
+ const auto COLOR = std::any_cast<CColor>(iterator->second);
+
+ // optional
+ eIcons icon = ICON_NONE;
+ iterator = data.find("icon");
+ if (iterator != data.end())
+ icon = std::any_cast<eIcons>(iterator->second);
+
+ g_pHyprNotificationOverlay->addNotification(text, COLOR, TIME, icon);
+
+ } catch (std::exception& e) {
+ // bad any_cast most likely, plugin error
+ return false;
+ }
+
+ return true;
+} \ No newline at end of file