summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-10-21 22:47:50 +0100
committerGitHub <noreply@github.com>2025-10-21 22:47:50 +0100
commit892f642f58e6fcab7c69ecba79afb2d6ab461c89 (patch)
tree985c0d2dd62c09ae7b21111e41493b02653ad890 /src
parentd560c26419adc62559559014a90db312dc436918 (diff)
plugins: incorporate hyprdep ABI into plugin info (#12001)
Diffstat (limited to 'src')
-rw-r--r--src/plugins/PluginAPI.cpp13
-rw-r--r--src/plugins/PluginAPI.hpp16
-rw-r--r--src/version.h.in20
3 files changed, 46 insertions, 3 deletions
diff --git a/src/plugins/PluginAPI.cpp b/src/plugins/PluginAPI.cpp
index 004788b9..66b0c74e 100644
--- a/src/plugins/PluginAPI.cpp
+++ b/src/plugins/PluginAPI.cpp
@@ -17,7 +17,18 @@
#include <sstream>
APICALL const char* __hyprland_api_get_hash() {
- return GIT_COMMIT_HASH;
+ static auto stripPatch = [](const char* ver) -> std::string {
+ std::string_view v = ver;
+ if (!v.contains('.'))
+ return std::string{v};
+
+ return std::string{v.substr(0, v.find_last_of('.'))};
+ };
+
+ static const std::string ver = (std::string{GIT_COMMIT_HASH} + "_aq_" + stripPatch(AQUAMARINE_VERSION) + "_hu_" + stripPatch(HYPRUTILS_VERSION) + "_hg_" +
+ stripPatch(HYPRGRAPHICS_VERSION) + "_hc_" + stripPatch(HYPRCURSOR_VERSION) + "_hlg_" + stripPatch(HYPRLANG_VERSION));
+
+ return ver.c_str();
}
APICALL SP<HOOK_CALLBACK_FN> HyprlandAPI::registerCallbackDynamic(HANDLE handle, const std::string& event, HOOK_CALLBACK_FN fn) {
diff --git a/src/plugins/PluginAPI.hpp b/src/plugins/PluginAPI.hpp
index ee55655a..c88fe586 100644
--- a/src/plugins/PluginAPI.hpp
+++ b/src/plugins/PluginAPI.hpp
@@ -29,6 +29,7 @@ Feel like the API is missing something you'd like to use in your plugin? Open an
#include <any>
#include <functional>
#include <string>
+#include <string_view>
#include <hyprlang.hpp>
using PLUGIN_DESCRIPTION_INFO = struct {
@@ -309,7 +310,7 @@ namespace HyprlandAPI {
// NOLINTBEGIN
/*
- Get the hash this plugin/server was compiled with.
+ Get the descriptive string this plugin/server was compiled with.
This function will end up in both hyprland and any/all plugins,
and can be found by a simple dlsym()
@@ -319,7 +320,18 @@ namespace HyprlandAPI {
*/
APICALL EXPORT const char* __hyprland_api_get_hash();
APICALL inline EXPORT const char* __hyprland_api_get_client_hash() {
- return GIT_COMMIT_HASH;
+ static auto stripPatch = [](const char* ver) -> std::string {
+ std::string_view v = ver;
+ if (!v.contains('.'))
+ return std::string{v};
+
+ return std::string{v.substr(0, v.find_last_of('.'))};
+ };
+
+ static const std::string ver = (std::string{GIT_COMMIT_HASH} + "_aq_" + stripPatch(AQUAMARINE_VERSION) + "_hu_" + stripPatch(HYPRUTILS_VERSION) + "_hg_" +
+ stripPatch(HYPRGRAPHICS_VERSION) + "_hc_" + stripPatch(HYPRCURSOR_VERSION) + "_hlg_" + stripPatch(HYPRLANG_VERSION));
+
+ return ver.c_str();
}
// NOLINTEND
diff --git a/src/version.h.in b/src/version.h.in
index a77b2468..862e8778 100644
--- a/src/version.h.in
+++ b/src/version.h.in
@@ -6,3 +6,23 @@
#define GIT_DIRTY "@DIRTY@"
#define GIT_TAG "@TAG@"
#define GIT_COMMITS "@COMMITS@"
+
+#ifndef HYPRCURSOR_VERSION
+#define HYPRCURSOR_VERSION "@HYPRCURSOR_VERSION@"
+#endif
+
+#ifndef HYPRGRAPHICS_VERSION
+#define HYPRGRAPHICS_VERSION "@HYPRGRAPHICS_VERSION@"
+#endif
+
+#ifndef HYPRLANG_VERSION
+#define HYPRLANG_VERSION "@HYPRLANG_VERSION@"
+#endif
+
+#ifndef HYPRUTILS_VERSION
+#define HYPRUTILS_VERSION "@HYPRUTILS_VERSION@"
+#endif
+
+#ifndef AQUAMARINE_VERSION
+#define AQUAMARINE_VERSION "@AQUAMARINE_VERSION@"
+#endif