#include #include #include #include #include #include #include using namespace std; void cavaToJson(std::string& s) { for(int i = 0; i < s.size(); i++){ if(s[i] == ';') s[i] = ','; } s.pop_back(); } void cursorPosToJson(std::string& s) { for(int i = 0; i < s.size(); i++){ if(s[i] == ';') s[i] = ','; } s.pop_back(); } string exec(const char* cmd) { array buffer; string result; unique_ptr pipe(popen(cmd, "r"), pclose); if (!pipe) { throw runtime_error("popen() failed!"); } while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) { result += buffer.data(); } return result; } int main() { std::unique_ptr pipe(popen("cava -p ~/.config/eww/scripts/custom_configs/cava", "r"), pclose); if (!pipe) { throw std::runtime_error("popen() failed!"); } boost::iostreams::file_descriptor_source fd(fileno(pipe.get()), boost::iostreams::never_close_handle); boost::iostreams::stream is(fd); std::string line; while (std::getline(is, line)) { string st = exec("hyprctl cursorpos"); st.pop_back(); cout << '[' << st << ']' << endl; } return 0; }