mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-01-01 11:12:16 +00:00
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
88 lines
2.9 KiB
C
88 lines
2.9 KiB
C
/**
|
|
* @file vt.h
|
|
*
|
|
* libghostty-vt - Virtual terminal emulator library
|
|
*
|
|
* This library provides functionality for parsing and handling terminal
|
|
* escape sequences as well as maintaining terminal state such as styles,
|
|
* cursor position, screen, scrollback, and more.
|
|
*
|
|
* WARNING: This is an incomplete, work-in-progress API. It is not yet
|
|
* stable and is definitely going to change.
|
|
*/
|
|
|
|
/**
|
|
* @mainpage libghostty-vt - Virtual Terminal Emulator Library
|
|
*
|
|
* libghostty-vt is a C library which implements a modern terminal emulator,
|
|
* extracted from the [Ghostty](https://ghostty.org) terminal emulator.
|
|
*
|
|
* libghostty-vt contains the logic for handling the core parts of a terminal
|
|
* emulator: parsing terminal escape sequences, maintaining terminal state,
|
|
* encoding input events, etc. It can handle scrollback, line wrapping,
|
|
* reflow on resize, and more.
|
|
*
|
|
* @warning This library is currently in development and the API is not yet stable.
|
|
* Breaking changes are expected in future versions. Use with caution in production code.
|
|
*
|
|
* @section groups_sec API Reference
|
|
*
|
|
* The API is organized into the following groups:
|
|
* - @ref key "Key Encoding" - Encode key events into terminal sequences
|
|
* - @ref osc "OSC Parser" - Parse OSC (Operating System Command) sequences
|
|
* - @ref sgr "SGR Parser" - Parse SGR (Select Graphic Rendition) sequences
|
|
* - @ref paste "Paste Utilities" - Validate paste data safety
|
|
* - @ref allocator "Memory Management" - Memory management and custom allocators
|
|
* - @ref wasm "WebAssembly Utilities" - WebAssembly convenience functions
|
|
*
|
|
* @section examples_sec Examples
|
|
*
|
|
* Complete working examples:
|
|
* - @ref c-vt/src/main.c - OSC parser example
|
|
* - @ref c-vt-key-encode/src/main.c - Key encoding example
|
|
* - @ref c-vt-paste/src/main.c - Paste safety check example
|
|
* - @ref c-vt-sgr/src/main.c - SGR parser example
|
|
*
|
|
*/
|
|
|
|
/** @example c-vt/src/main.c
|
|
* This example demonstrates how to use the OSC parser to parse an OSC sequence,
|
|
* extract command information, and retrieve command-specific data like window titles.
|
|
*/
|
|
|
|
/** @example c-vt-key-encode/src/main.c
|
|
* This example demonstrates how to use the key encoder to convert key events
|
|
* into terminal escape sequences using the Kitty keyboard protocol.
|
|
*/
|
|
|
|
/** @example c-vt-paste/src/main.c
|
|
* This example demonstrates how to use the paste utilities to check if
|
|
* paste data is safe before sending it to the terminal.
|
|
*/
|
|
|
|
/** @example c-vt-sgr/src/main.c
|
|
* This example demonstrates how to use the SGR parser to parse terminal
|
|
* styling sequences and extract text attributes like colors and underline styles.
|
|
*/
|
|
|
|
#ifndef GHOSTTY_VT_H
|
|
#define GHOSTTY_VT_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <ghostty/vt/result.h>
|
|
#include <ghostty/vt/allocator.h>
|
|
#include <ghostty/vt/osc.h>
|
|
#include <ghostty/vt/sgr.h>
|
|
#include <ghostty/vt/key.h>
|
|
#include <ghostty/vt/paste.h>
|
|
#include <ghostty/vt/wasm.h>
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* GHOSTTY_VT_H */
|