This example demonstrates how to use the terminal and formatter APIs to create a terminal, write VT-encoded content into it, and format the screen contents as plain text.
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
.cols = 80,
.rows = 24,
.max_scrollback = 0,
};
const char *commands[] = {
"Line 1: Hello World!\r\n",
"Line 2: \033[1mBold\033[0m and "
"\033[4mUnderline\033[0m\r\n",
"Line 3: placeholder\r\n",
"\033[3;1H",
"\033[2K",
"Line 3: Overwritten!\r\n",
"\033[5;10H",
"Placed at (5,10)",
"\033[1;72H",
"RIGHT->",
};
for (size_t i = 0; i < sizeof(commands) / sizeof(commands[0]); i++) {
strlen(commands[i]));
}
uint8_t *buf = NULL;
size_t len = 0;
printf("Formatted output (%zu bytes):\n", len);
fwrite(buf, 1, len, stdout);
printf("\n");
free(buf);
return 0;
}
struct GhosttyTerminal * GhosttyTerminal
GhosttyResult ghostty_terminal_new(const GhosttyAllocator *allocator, GhosttyTerminal *terminal, GhosttyTerminalOptions options)
void ghostty_terminal_vt_write(GhosttyTerminal terminal, const uint8_t *data, size_t len)
void ghostty_terminal_free(GhosttyTerminal terminal)
#define GHOSTTY_INIT_SIZED(type)