getLines(); $cols = $buffer->getColumns(); $this->clearScreen(); for ($line = 0; $line < $lines; $line++) { for ($column = 0; $column < $cols; $column++) { $this->renderChar($line, $column, $buffer->bufferGetRaw($line, $column)); } } } private function clearScreen() { echo "\e[H\e[2J"; } private function renderChar(int $line, int $column, array $raw) { [ $char, $attrs ] = $raw; if ($char === ' ') return; $attr = join(";", $attrs)??"0"; printf("\e[%d;%dH\e[%sm%s", $line + 1, $column + 1, $attr, $char); } }