Added monitor check
This commit is contained in:
parent
d507864ec1
commit
618c02c14b
6 changed files with 143 additions and 76 deletions
|
@ -81,13 +81,54 @@ std::string getIcon(std::string windowAddress)
|
|||
}
|
||||
|
||||
|
||||
void getWorkspaces()
|
||||
json getWorkspace(json workspaceInput, char mode)
|
||||
{
|
||||
json workspaceOutput;
|
||||
|
||||
json monitorsInput = json::parse(command("hyprctl monitors -j"));
|
||||
|
||||
std::string keyValue;
|
||||
|
||||
if (mode == 'n')
|
||||
{
|
||||
keyValue = "id";
|
||||
}
|
||||
else if (mode == 's')
|
||||
{
|
||||
keyValue = "name";
|
||||
}
|
||||
|
||||
workspaceOutput[keyValue] = workspaceInput[keyValue];
|
||||
|
||||
for (auto& monitor : monitorsInput)
|
||||
{
|
||||
if (monitor["activeWorkspace"][keyValue] == workspaceInput[keyValue])
|
||||
{
|
||||
workspaceOutput["activeOn"] = monitor[keyValue];
|
||||
}
|
||||
}
|
||||
|
||||
workspaceOutput["occupied"] = workspaceInput["windows"];
|
||||
|
||||
if (!(workspaceInput["lastwindow"] == "0x0"))
|
||||
{
|
||||
workspaceOutput["icon"] = getIcon(workspaceInput["lastwindow"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
workspaceOutput["icon"] = "";
|
||||
}
|
||||
|
||||
return workspaceOutput;
|
||||
|
||||
}
|
||||
|
||||
|
||||
json getAllWorkspaces()
|
||||
{
|
||||
|
||||
workspacesInput = json::parse(command("hyprctl workspaces -j"));
|
||||
|
||||
workspacesOutput.clear();
|
||||
|
||||
int specialIndex = 0;
|
||||
|
||||
for(auto& workspace : workspacesInput)
|
||||
|
@ -96,49 +137,21 @@ void getWorkspaces()
|
|||
{
|
||||
int index = workspace["id"].get<int>() - 1;
|
||||
|
||||
workspacesOutput[index]["normal"]["ID"] = index + 1;
|
||||
|
||||
workspacesOutput[index]["normal"]["occupied"] = workspace["windows"];
|
||||
|
||||
workspacesOutput[index]["normal"]["monitorID"] = workspace["monitorID"];
|
||||
|
||||
if (!(workspace["lastwindow"] == "0x0"))
|
||||
{
|
||||
|
||||
workspacesOutput[index]["normal"]["icon"] = getIcon(workspace["lastwindow"]);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
workspacesOutput[index]["normal"]["icon"] = "";
|
||||
}
|
||||
|
||||
workspacesOutput[index]["normal"].clear();
|
||||
workspacesOutput[index]["normal"] = getWorkspace(workspace, 'n');
|
||||
}
|
||||
else if (std::string(workspace["name"]).find("special:") == 0)
|
||||
{
|
||||
|
||||
workspacesOutput[specialIndex]["special"]["ID"] = specialIndex;
|
||||
|
||||
workspacesOutput[specialIndex]["special"]["name"] = workspace["name"];
|
||||
|
||||
workspacesOutput[specialIndex]["special"]["occupied"] = workspace["windows"];
|
||||
|
||||
workspacesOutput[specialIndex]["special"]["monitorID"] = workspace["monitorID"];
|
||||
|
||||
if (!(workspace["lastwindow"] == "0x0"))
|
||||
{
|
||||
|
||||
workspacesOutput[specialIndex]["special"]["icon"] = getIcon(workspace["lastwindow"]);
|
||||
|
||||
}
|
||||
workspacesOutput[specialIndex]["special"].clear();
|
||||
workspacesOutput[specialIndex]["special"] = getWorkspace(workspace, 's');
|
||||
|
||||
specialIndex++;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
std::cout << workspacesOutput << std::endl;
|
||||
return workspacesOutput;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -173,27 +186,27 @@ void handle(std::string message)
|
|||
|
||||
if (message.find("workspace") == 0)
|
||||
{
|
||||
getWorkspaces();
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
}
|
||||
else if (message.find("moveworkspace") == 0)
|
||||
{
|
||||
getWorkspaces();
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
}
|
||||
else if (message.find("openwindow") == 0)
|
||||
{
|
||||
getWorkspaces();
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
}
|
||||
else if (message.find("closewindow") == 0)
|
||||
{
|
||||
getWorkspaces();
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
}
|
||||
else if (message.find("movewindow") == 0)
|
||||
{
|
||||
getWorkspaces();
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
}
|
||||
else if (message.find("activewindow") == 0)
|
||||
{
|
||||
getWorkspaces();
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
}
|
||||
|
||||
|
||||
|
@ -202,6 +215,8 @@ void handle(std::string message)
|
|||
int main(int argc, char const *argv[])
|
||||
{
|
||||
|
||||
std::cout << getAllWorkspaces() << std::endl;
|
||||
|
||||
std::string socketPath = "/tmp/hypr/" + std::string(std::getenv("HYPRLAND_INSTANCE_SIGNATURE")) + "/.socket2.sock";
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue