From c32917a5bac6919fbb419d299f1ebab82bbce5ba Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 20 Mar 2022 16:51:14 +0100 Subject: added hyprctl --- hyprctl/main.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 hyprctl/main.cpp (limited to 'hyprctl/main.cpp') diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp new file mode 100644 index 00000000..12cac2ce --- /dev/null +++ b/hyprctl/main.cpp @@ -0,0 +1,96 @@ +#include +#include +#include +#include + +#include +#include +#include +#include + +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; +} \ No newline at end of file -- cgit v1.2.3