dein bruder

This commit is contained in:
2025-12-09 22:09:26 +01:00
parent a8ae2d1f0f
commit 25c73f67a7
9 changed files with 119 additions and 60 deletions

View File

@@ -24,7 +24,6 @@ HyprlandService::~HyprlandService()
void HyprlandService::on_hyprland_event(std::string event, std::string data)
{
if (event == "workspacev2")
{
std::cout << event << " " << data << std::endl;
@@ -75,15 +74,15 @@ void HyprlandService::start()
{
for (auto &monitorJson : monitorsJson)
{
Monitor monitor;
Monitor* monitor = new Monitor();
monitor.id = monitorJson["id"];
monitor.name = monitorJson["name"];
monitor.x = monitorJson["x"];
monitor.y = monitorJson["y"];
monitor.focusedWorkspaceId = monitorJson["activeWorkspace"]["id"];
monitor->id = monitorJson["id"];
monitor->name = monitorJson["name"];
monitor->x = monitorJson["x"];
monitor->y = monitorJson["y"];
monitor->focusedWorkspaceId = monitorJson["activeWorkspace"]["id"];
this->monitors.insert({monitor.id, monitor});
this->monitors.insert({monitor->id, monitor});
}
}
@@ -99,7 +98,7 @@ void HyprlandService::start()
tempState.urgent = false;
tempState.id = i;
this->monitors[i / numWorkspaces].workspaceStates.insert({i % numWorkspaces, tempState});
this->monitors[i / numWorkspaces]->workspaceStates.insert({i % numWorkspaces, tempState});
}
std::string hyprctlWorkspacesOutput = SystemHelper::get_command_output("hyprctl workspaces -j");
@@ -111,9 +110,10 @@ void HyprlandService::start()
{
int currentId = workspaceJson["id"];
int monitorId = workspaceJson["monitorID"];
WorkspaceState &workspaceState = this->monitors[monitorId].workspaceStates.at((currentId - 1) % numWorkspaces);
Monitor* monitor = this->monitors[monitorId];
WorkspaceState &workspaceState = monitor->workspaceStates.at((currentId - 1) % numWorkspaces);
int focusedWorkspaceId = this->monitors[monitorId].focusedWorkspaceId;
int focusedWorkspaceId = monitor[monitorId].focusedWorkspaceId;
workspaceState.focused = currentId == focusedWorkspaceId;
workspaceState.active = true;
}
@@ -178,3 +178,16 @@ std::string HyprlandService::get_socket_path()
return std::string(runtime) + "/hypr/" + sig + "/.socket2.sock";
}
HyprlandService::Monitor* HyprlandService::getMonitorById(const int &id)
{
if (this->monitors.find(id) != this->monitors.end())
{
return this->monitors.at(id);
}
else
{
throw std::runtime_error("Monitor with ID " + std::to_string(id) + " not found.");
}
}