aboutsummaryrefslogtreecommitdiff
path: root/src/CursorTracker/CursorTrackerX11.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2025-05-03 12:03:43 +0200
committerdec05eba <dec05eba@protonmail.com>2025-05-03 12:03:43 +0200
commitd08ea692771caa8e385412c2f992089672773e30 (patch)
tree994c05673d90b130e25d8bc25c6c365f607134db /src/CursorTracker/CursorTrackerX11.cpp
parent180a3b73dbab2f586c53f9e5f044ab88aca95014 (diff)
Keep keyboard led when turning on global hotkeys, move files
Diffstat (limited to 'src/CursorTracker/CursorTrackerX11.cpp')
-rw-r--r--src/CursorTracker/CursorTrackerX11.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/CursorTracker/CursorTrackerX11.cpp b/src/CursorTracker/CursorTrackerX11.cpp
new file mode 100644
index 0000000..7c98f4d
--- /dev/null
+++ b/src/CursorTracker/CursorTrackerX11.cpp
@@ -0,0 +1,29 @@
+#include "../../include/CursorTracker/CursorTrackerX11.hpp"
+#include "../../include/WindowUtils.hpp"
+
+namespace gsr {
+ CursorTrackerX11::CursorTrackerX11(Display *dpy) : dpy(dpy) {
+
+ }
+
+ std::optional<CursorInfo> CursorTrackerX11::get_latest_cursor_info() {
+ Window window = None;
+ const auto cursor_pos = get_cursor_position(dpy, &window);
+ const auto monitors = get_monitors(dpy);
+ std::string monitor_name;
+
+ for(const auto &monitor : monitors) {
+ if(cursor_pos.x >= monitor.position.x && cursor_pos.x <= monitor.position.x + monitor.size.x
+ && cursor_pos.y >= monitor.position.y && cursor_pos.y <= monitor.position.y + monitor.size.y)
+ {
+ monitor_name = monitor.name;
+ break;
+ }
+ }
+
+ if(monitor_name.empty())
+ return std::nullopt;
+
+ return CursorInfo{ cursor_pos, std::move(monitor_name) };
+ }
+} \ No newline at end of file