Add option to capture the focused monitor

This commit is contained in:
dec05eba
2025-04-04 20:51:28 +02:00
parent 44f35f8f3b
commit 2e3adfc510
19 changed files with 913 additions and 37 deletions

29
src/CursorTrackerX11.cpp Normal file
View File

@@ -0,0 +1,29 @@
#include "../include/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) };
}
}