mirror-ghostty/example/c-vt-sgr
Mitchell Hashimoto a82ad89ef3
lib-vt: C API for SGR parser (#9352)
This exposes the SGR parser to the C and Wasm APIs. An example is shown
in c-vt-sgr.

Compressed example:

```c
#include <assert.h>
#include <stdio.h>
#include <ghostty/vt.h>

int main() {
  // Create parser
  GhosttySgrParser parser;
  assert(ghostty_sgr_new(NULL, &parser) == GHOSTTY_SUCCESS);

  // Parse: ESC[1;31m (bold + red foreground)
  uint16_t params[] = {1, 31};
  assert(ghostty_sgr_set_params(parser, params, NULL, 2) == GHOSTTY_SUCCESS);

  printf("Parsing: ESC[1;31m\n\n");

  // Iterate through attributes
  GhosttySgrAttribute attr;
  while (ghostty_sgr_next(parser, &attr)) {
    switch (attr.tag) {
      case GHOSTTY_SGR_ATTR_BOLD:
        printf("✓ Bold enabled\n");
        break;
      case GHOSTTY_SGR_ATTR_FG_8:
        printf("✓ Foreground color: %d (red)\n", attr.value.fg_8);
        break;
      default:
        break;
    }
  }

  ghostty_sgr_free(parser);
  return 0;
}
```

**AI disclosure:** Amp wrote most of the C headers, but I verified it
all. https://ampcode.com/threads/T-d9f145cb-e6ef-48a8-ad63-e5fc85c0d43e
2025-10-25 21:26:06 -07:00
..
src lib-vt: C API for SGR parser (#9352) 2025-10-25 21:26:06 -07:00
README.md lib-vt: C API for SGR parser (#9352) 2025-10-25 21:26:06 -07:00
build.zig lib-vt: C API for SGR parser (#9352) 2025-10-25 21:26:06 -07:00
build.zig.zon lib-vt: C API for SGR parser (#9352) 2025-10-25 21:26:06 -07:00

README.md

Example: ghostty-vt SGR Parser

This contains a simple example of how to use the ghostty-vt SGR parser to parse terminal styling sequences and extract text attributes.

This example demonstrates parsing a complex SGR sequence from Kakoune that includes curly underline, RGB foreground/background colors, and RGB underline color with mixed semicolon and colon separators.

This uses a build.zig and Zig to build the C program so that we can reuse a lot of our build logic and depend directly on our source tree, but Ghostty emits a standard C library that can be used with any C tooling.

Usage

Run the program:

zig build run