15 const size_t start_pos = response.find(
"rgb:");
16 if (start_pos == string::npos){
20 const size_t end_pos = response.find(
"\033\\", start_pos);
21 if (end_pos == string::npos){
25 string rgb_str = response.substr(start_pos + 4, end_pos - (start_pos + 4));
27 replace(rgb_str.begin(), rgb_str.end(),
'/',
' ');
29 istringstream iss(rgb_str);
30 string r_hex, g_hex, b_hex;
31 iss >> r_hex >> g_hex >> b_hex;
42 tcgetattr(STDIN_FILENO, &oldt);
44 newt.c_lflag &= ~(ICANON | ECHO);
45 tcsetattr(STDIN_FILENO, TCSANOW, &newt);
47 int oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
48 fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
50 cout <<
"\033]11;?\033\\";
61 FD_SET(STDIN_FILENO, &readfds);
63 while (select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv) > 0){
64 if (read(STDIN_FILENO, &ch, 1) > 0){
71 tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
72 fcntl(STDIN_FILENO, F_SETFL, oldf);