diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-20 16:51:14 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-20 16:51:14 +0100 |
| commit | c32917a5bac6919fbb419d299f1ebab82bbce5ba (patch) | |
| tree | 5a958e0ed7b9eae3b94edb11ae481d5d2c2589f8 /hyprctl/main.cpp | |
| parent | 5644e668ef55d4ceb8b34ec21a89984d5edefba7 (diff) | |
added hyprctl
Diffstat (limited to 'hyprctl/main.cpp')
| -rw-r--r-- | hyprctl/main.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
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 <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; +}
\ No newline at end of file |
