mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-01 12:41:55 -07:00
added hyprctl
This commit is contained in:
96
hyprctl/main.cpp
Normal file
96
hyprctl/main.cpp
Normal file
@@ -0,0 +1,96 @@
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
|
||||
const std::string USAGE = R"#(
|
||||
usage: hyprctl [command] [(opt)args]
|
||||
|
||||
monitors
|
||||
workspaces
|
||||
clients
|
||||
)#";
|
||||
|
||||
void readReply() {
|
||||
std::ifstream ifs;
|
||||
|
||||
while (1) {
|
||||
usleep(1000 * 25);
|
||||
|
||||
ifs.open("/tmp/hypr/.hyprlandrq");
|
||||
|
||||
if (ifs.good()) {
|
||||
std::string reply = "";
|
||||
std::getline(ifs, reply);
|
||||
|
||||
if (reply.find("RPLY:") != std::string::npos) {
|
||||
reply = "";
|
||||
std::string temp = "";
|
||||
while (std::getline(ifs, temp))
|
||||
reply += temp + '\n';
|
||||
|
||||
std::cout << reply;
|
||||
|
||||
unlink("/tmp/hypr/.hyprlandrq"); // cleanup
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void requestMonitors() {
|
||||
std::ofstream ofs;
|
||||
ofs.open("/tmp/hypr/.hyprlandrq", std::ios::trunc);
|
||||
|
||||
ofs << "R>monitors";
|
||||
|
||||
ofs.close();
|
||||
|
||||
readReply();
|
||||
}
|
||||
|
||||
void requestClients() {
|
||||
std::ofstream ofs;
|
||||
ofs.open("/tmp/hypr/.hyprlandrq", std::ios::trunc);
|
||||
|
||||
ofs << "R>clients";
|
||||
|
||||
ofs.close();
|
||||
|
||||
readReply();
|
||||
}
|
||||
|
||||
void requestWorkspaces() {
|
||||
std::ofstream ofs;
|
||||
ofs.open("/tmp/hypr/.hyprlandrq", std::ios::trunc);
|
||||
|
||||
ofs << "R>workspaces";
|
||||
|
||||
ofs.close();
|
||||
|
||||
readReply();
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int bflag = 0, sflag = 0, index, c;
|
||||
|
||||
if (argc < 2) {
|
||||
printf(USAGE.c_str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!strcmp(argv[1], "monitors")) requestMonitors();
|
||||
else if (!strcmp(argv[1], "clients")) requestClients();
|
||||
else if (!strcmp(argv[1], "workspaces")) requestWorkspaces();
|
||||
else {
|
||||
printf(USAGE.c_str());
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user