libghostty
Loading...
Searching...
No Matches
terminal.h
Go to the documentation of this file.
1
6
7#ifndef GHOSTTY_VT_TERMINAL_H
8#define GHOSTTY_VT_TERMINAL_H
9
10#include <stdbool.h>
11#include <stddef.h>
12#include <stdint.h>
13#include <ghostty/vt/types.h>
15#include <ghostty/vt/device.h>
16#include <ghostty/vt/modes.h>
18#include <ghostty/vt/grid_ref.h>
20#include <ghostty/vt/screen.h>
21#include <ghostty/vt/point.h>
23#include <ghostty/vt/style.h>
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
174
180typedef enum GHOSTTY_ENUM_TYPED {
183
186 GHOSTTY_TERMINAL_COMPRESSION_MODE_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
188
194typedef enum GHOSTTY_ENUM_TYPED {
197
200
203 GHOSTTY_TERMINAL_COMPRESSION_RESULT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
205
211typedef enum GHOSTTY_ENUM_TYPED {
214
217
220
235 GHOSTTY_SCROLL_VIEWPORT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
237
243typedef union {
245 intptr_t delta;
246
248 size_t row;
249
251 uint64_t _padding[2];
253
259typedef struct {
263
271typedef enum GHOSTTY_ENUM_TYPED {
274
277 GHOSTTY_TERMINAL_SCREEN_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
279
285typedef enum GHOSTTY_ENUM_TYPED {
288
291
294
297 GHOSTTY_TERMINAL_CURSOR_STYLE_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
299
307typedef struct {
309 uint64_t total;
310
312 uint64_t offset;
313
315 uint64_t len;
317
328typedef void (*GhosttyTerminalBellFn)(GhosttyTerminal terminal,
329 void* userdata);
330
339typedef enum GHOSTTY_ENUM_TYPED {
342
345
348 GHOSTTY_CLIPBOARD_LOCATION_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
350
363typedef struct {
366
370
385typedef struct {
387 size_t size;
388
391
394
398
407typedef enum GHOSTTY_ENUM_TYPED {
410
413
416
419
422
425 GHOSTTY_CLIPBOARD_WRITE_RESULT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
427
446 GhosttyTerminal terminal,
447 void* userdata,
448 const GhosttyClipboardWrite* write);
449
465 void* userdata,
466 GhosttyColorScheme* out_scheme);
467
486 void* userdata,
487 GhosttyDeviceAttributes* out_attrs);
488
504 void* userdata);
505
520typedef bool (*GhosttyTerminalSizeFn)(GhosttyTerminal terminal,
521 void* userdata,
522 GhosttySizeReportSize* out_size);
523
537 void* userdata);
538
562 void* userdata);
563
580 void* userdata,
581 const uint8_t* data,
582 size_t len);
583
599 void* userdata);
600
609typedef enum GHOSTTY_ENUM_TYPED {
616
625
633
641
649
658
666
676
686
696
706
715
724
733
743
756
766
777
787
797
806
821
830
840
851
860
871
893
917 GHOSTTY_TERMINAL_OPT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
919
928typedef enum GHOSTTY_ENUM_TYPED {
931
938
945
952
959
966
973
980
987
1005
1014
1024
1035
1047
1054
1061
1070
1079
1088
1097
1106
1113
1122
1131
1140
1147
1157
1167
1178
1188
1201
1218
1228
1244
1255
1266 GHOSTTY_TERMINAL_DATA_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
1268
1285 GhosttyTerminal* terminal,
1286 uint16_t cols,
1287 uint16_t rows);
1288
1299GHOSTTY_API void ghostty_terminal_free(GhosttyTerminal terminal);
1300
1312GHOSTTY_API void ghostty_terminal_reset(GhosttyTerminal terminal);
1313
1336 uint16_t cols,
1337 uint16_t rows,
1338 uint32_t cell_width_px,
1339 uint32_t cell_height_px);
1340
1363 GhosttyTerminalOption option,
1364 const void* value);
1365
1388 const uint8_t* data,
1389 size_t len);
1390
1409
1429 GhosttyTerminal terminal,
1430 uint64_t* out_activity);
1431
1460 GhosttyTerminal terminal,
1463
1479 GhosttyMode mode,
1480 bool* out_value);
1481
1496 GhosttyMode mode,
1497 bool value);
1498
1517 void *out);
1518
1547 size_t count,
1548 const GhosttyTerminalData* keys,
1549 void** values,
1550 size_t* out_written);
1551
1579 GhosttyPoint point,
1580 GhosttyGridRef *out_ref);
1581
1610 GhosttyTerminal terminal,
1611 GhosttyPoint point,
1612 GhosttyTrackedGridRef *out_ref);
1613
1642 GhosttyTerminal terminal,
1643 const GhosttyGridRef *ref,
1644 GhosttyPointTag tag,
1646
1648
1649#ifdef __cplusplus
1650}
1651#endif
1652
1653#endif /* GHOSTTY_VT_TERMINAL_H */
struct GhosttyTrackedGridRefImpl * GhosttyTrackedGridRef
Definition types.h:107
uint16_t GhosttyMode
Definition modes.h:105
GhosttyPointTag
Definition point.h:45
GHOSTTY_API GhosttyResult ghostty_terminal_set(GhosttyTerminal terminal, GhosttyTerminalOption option, const void *value)
GHOSTTY_API GhosttyResult ghostty_terminal_point_from_grid_ref(GhosttyTerminal terminal, const GhosttyGridRef *ref, GhosttyPointTag tag, GhosttyPointCoordinate *out)
GHOSTTY_API GhosttyResult ghostty_terminal_compression_activity(GhosttyTerminal terminal, uint64_t *out_activity)
GHOSTTY_API GhosttyResult ghostty_terminal_get(GhosttyTerminal terminal, GhosttyTerminalData data, void *out)
GHOSTTY_API void ghostty_terminal_reset(GhosttyTerminal terminal)
GhosttyTerminalCompressionMode
Definition terminal.h:180
bool(* GhosttyTerminalColorSchemeFn)(GhosttyTerminal terminal, void *userdata, GhosttyColorScheme *out_scheme)
Definition terminal.h:464
GHOSTTY_API GhosttyResult ghostty_terminal_grid_ref_track(GhosttyTerminal terminal, GhosttyPoint point, GhosttyTrackedGridRef *out_ref)
GHOSTTY_API void ghostty_terminal_scroll_viewport(GhosttyTerminal terminal, GhosttyTerminalScrollViewport behavior)
GHOSTTY_API GhosttyResult ghostty_terminal_get_multi(GhosttyTerminal terminal, size_t count, const GhosttyTerminalData *keys, void **values, size_t *out_written)
bool(* GhosttyTerminalSizeFn)(GhosttyTerminal terminal, void *userdata, GhosttySizeReportSize *out_size)
Definition terminal.h:520
void(* GhosttyTerminalWritePtyFn)(GhosttyTerminal terminal, void *userdata, const uint8_t *data, size_t len)
Definition terminal.h:579
GhosttyTerminalCompressionResult
Definition terminal.h:194
struct GhosttyTerminalImpl * GhosttyTerminal
Definition types.h:95
GhosttyTerminalScrollViewportTag
Definition terminal.h:211
GhosttyClipboardLocation
Definition terminal.h:339
GHOSTTY_API void ghostty_terminal_free(GhosttyTerminal terminal)
void(* GhosttyTerminalPwdChangedFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:561
GHOSTTY_API GhosttyResult ghostty_terminal_mode_set(GhosttyTerminal terminal, GhosttyMode mode, bool value)
void(* GhosttyTerminalBellFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:328
void(* GhosttyTerminalTitleChangedFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:536
bool(* GhosttyTerminalDeviceAttributesFn)(GhosttyTerminal terminal, void *userdata, GhosttyDeviceAttributes *out_attrs)
Definition terminal.h:485
GHOSTTY_API void ghostty_terminal_vt_write(GhosttyTerminal terminal, const uint8_t *data, size_t len)
GHOSTTY_API GhosttyResult ghostty_terminal_grid_ref(GhosttyTerminal terminal, GhosttyPoint point, GhosttyGridRef *out_ref)
GhosttyTerminalScreen
Definition terminal.h:271
GhosttyColorScheme
Definition device.h:74
GHOSTTY_API GhosttyResult ghostty_terminal_resize(GhosttyTerminal terminal, uint16_t cols, uint16_t rows, uint32_t cell_width_px, uint32_t cell_height_px)
GhosttyString(* GhosttyTerminalXtversionFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:598
GHOSTTY_API GhosttyResult ghostty_terminal_new(const GhosttyAllocator *allocator, GhosttyTerminal *terminal, uint16_t cols, uint16_t rows)
GhosttyTerminalData
Definition terminal.h:928
GhosttyClipboardWriteResult
Definition terminal.h:407
GhosttyTerminalCursorStyle
Definition terminal.h:285
GHOSTTY_API GhosttyResult ghostty_terminal_mode_get(GhosttyTerminal terminal, GhosttyMode mode, bool *out_value)
GhosttyString(* GhosttyTerminalEnquiryFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:503
GhosttyTerminalOption
Definition terminal.h:609
GhosttyClipboardWriteResult(* GhosttyTerminalClipboardWriteFn)(GhosttyTerminal terminal, void *userdata, const GhosttyClipboardWrite *write)
Definition terminal.h:445
GHOSTTY_API GhosttyResult ghostty_terminal_compress(GhosttyTerminal terminal, GhosttyTerminalCompressionMode mode, GhosttyTerminalCompressionResult *out_result)
@ GHOSTTY_TERMINAL_COMPRESSION_MODE_INCREMENTAL
Definition terminal.h:182
@ GHOSTTY_TERMINAL_COMPRESSION_MODE_FULL
Definition terminal.h:185
@ GHOSTTY_TERMINAL_COMPRESSION_RESULT_UNSUPPORTED
Definition terminal.h:196
@ GHOSTTY_TERMINAL_COMPRESSION_RESULT_COMPLETE
Definition terminal.h:202
@ GHOSTTY_TERMINAL_COMPRESSION_RESULT_PENDING
Definition terminal.h:199
@ GHOSTTY_SCROLL_VIEWPORT_BOTTOM
Definition terminal.h:216
@ GHOSTTY_SCROLL_VIEWPORT_ROW
Definition terminal.h:234
@ GHOSTTY_SCROLL_VIEWPORT_DELTA
Definition terminal.h:219
@ GHOSTTY_SCROLL_VIEWPORT_TOP
Definition terminal.h:213
@ GHOSTTY_CLIPBOARD_LOCATION_PRIMARY
Definition terminal.h:347
@ GHOSTTY_CLIPBOARD_LOCATION_STANDARD
Definition terminal.h:341
@ GHOSTTY_CLIPBOARD_LOCATION_SELECTION
Definition terminal.h:344
@ GHOSTTY_TERMINAL_SCREEN_ALTERNATE
Definition terminal.h:276
@ GHOSTTY_TERMINAL_SCREEN_PRIMARY
Definition terminal.h:273
@ GHOSTTY_TERMINAL_DATA_COLOR_BACKGROUND_DEFAULT
Definition terminal.h:1130
@ GHOSTTY_TERMINAL_DATA_WIDTH_PX
Definition terminal.h:1069
@ GHOSTTY_TERMINAL_DATA_VIEWPORT_ACTIVE
Definition terminal.h:1227
@ GHOSTTY_TERMINAL_DATA_SCROLLBACK_MAX_LINES
Definition terminal.h:1265
@ GHOSTTY_TERMINAL_DATA_COLOR_BACKGROUND
Definition terminal.h:1096
@ GHOSTTY_TERMINAL_DATA_COLOR_PALETTE_DEFAULT
Definition terminal.h:1146
@ GHOSTTY_TERMINAL_DATA_COLS
Definition terminal.h:937
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_FILE
Definition terminal.h:1166
@ GHOSTTY_TERMINAL_DATA_TITLE
Definition terminal.h:1034
@ GHOSTTY_TERMINAL_DATA_CURSOR_VISIBLE
Definition terminal.h:979
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_TEMP_FILE
Definition terminal.h:1177
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_STORAGE_LIMIT
Definition terminal.h:1156
@ GHOSTTY_TERMINAL_DATA_SCROLLBACK_MAX_BYTES
Definition terminal.h:1254
@ GHOSTTY_TERMINAL_DATA_ROWS
Definition terminal.h:944
@ GHOSTTY_TERMINAL_DATA_SCROLLBACK_ROWS
Definition terminal.h:1060
@ GHOSTTY_TERMINAL_DATA_TOTAL_ROWS
Definition terminal.h:1053
@ GHOSTTY_TERMINAL_DATA_CURSOR_PENDING_WRAP
Definition terminal.h:965
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_SHARED_MEM
Definition terminal.h:1187
@ GHOSTTY_TERMINAL_DATA_SELECTION
Definition terminal.h:1217
@ GHOSTTY_TERMINAL_DATA_INVALID
Definition terminal.h:930
@ GHOSTTY_TERMINAL_DATA_COLOR_FOREGROUND_DEFAULT
Definition terminal.h:1121
@ GHOSTTY_TERMINAL_DATA_KITTY_KEYBOARD_FLAGS
Definition terminal.h:986
@ GHOSTTY_TERMINAL_DATA_COLOR_CURSOR_DEFAULT
Definition terminal.h:1139
@ GHOSTTY_TERMINAL_DATA_COLOR_FOREGROUND
Definition terminal.h:1087
@ GHOSTTY_TERMINAL_DATA_SCROLLBAR
Definition terminal.h:1004
@ GHOSTTY_TERMINAL_DATA_CURSOR_Y
Definition terminal.h:958
@ GHOSTTY_TERMINAL_DATA_ACTIVE_SCREEN
Definition terminal.h:972
@ GHOSTTY_TERMINAL_DATA_VT_PROCESSING_ERROR
Definition terminal.h:1243
@ GHOSTTY_TERMINAL_DATA_CURSOR_X
Definition terminal.h:951
@ GHOSTTY_TERMINAL_DATA_MOUSE_TRACKING
Definition terminal.h:1023
@ GHOSTTY_TERMINAL_DATA_PWD
Definition terminal.h:1046
@ GHOSTTY_TERMINAL_DATA_COLOR_PALETTE
Definition terminal.h:1112
@ GHOSTTY_TERMINAL_DATA_KITTY_GRAPHICS
Definition terminal.h:1200
@ GHOSTTY_TERMINAL_DATA_CURSOR_STYLE
Definition terminal.h:1013
@ GHOSTTY_TERMINAL_DATA_HEIGHT_PX
Definition terminal.h:1078
@ GHOSTTY_TERMINAL_DATA_COLOR_CURSOR
Definition terminal.h:1105
@ GHOSTTY_CLIPBOARD_WRITE_RESULT_SUCCESS
Definition terminal.h:409
@ GHOSTTY_CLIPBOARD_WRITE_RESULT_IO_ERROR
Definition terminal.h:424
@ GHOSTTY_CLIPBOARD_WRITE_RESULT_DENIED
Definition terminal.h:412
@ GHOSTTY_CLIPBOARD_WRITE_RESULT_UNSUPPORTED
Definition terminal.h:415
@ GHOSTTY_CLIPBOARD_WRITE_RESULT_INVALID_DATA
Definition terminal.h:421
@ GHOSTTY_CLIPBOARD_WRITE_RESULT_BUSY
Definition terminal.h:418
@ GHOSTTY_TERMINAL_CURSOR_STYLE_BAR
Definition terminal.h:287
@ GHOSTTY_TERMINAL_CURSOR_STYLE_BLOCK
Definition terminal.h:290
@ GHOSTTY_TERMINAL_CURSOR_STYLE_UNDERLINE
Definition terminal.h:293
@ GHOSTTY_TERMINAL_CURSOR_STYLE_BLOCK_HOLLOW
Definition terminal.h:296
@ GHOSTTY_TERMINAL_OPT_SCROLLBACK_MAX_BYTES
Definition terminal.h:892
@ GHOSTTY_TERMINAL_OPT_ENQUIRY
Definition terminal.h:640
@ GHOSTTY_TERMINAL_OPT_SCROLLBACK_MAX_LINES
Definition terminal.h:916
@ GHOSTTY_TERMINAL_OPT_TITLE_CHANGED
Definition terminal.h:657
@ GHOSTTY_TERMINAL_OPT_GLYPH_PROTOCOL
Definition terminal.h:850
@ GHOSTTY_TERMINAL_OPT_DEFAULT_CURSOR_STYLE
Definition terminal.h:829
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_STORAGE_LIMIT
Definition terminal.h:755
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_SHARED_MEM
Definition terminal.h:786
@ GHOSTTY_TERMINAL_OPT_APC_MAX_BYTES_KITTY
Definition terminal.h:805
@ GHOSTTY_TERMINAL_OPT_PWD_CHANGED
Definition terminal.h:859
@ GHOSTTY_TERMINAL_OPT_COLOR_CURSOR
Definition terminal.h:732
@ GHOSTTY_TERMINAL_OPT_COLOR_FOREGROUND
Definition terminal.h:714
@ GHOSTTY_TERMINAL_OPT_SIZE
Definition terminal.h:665
@ GHOSTTY_TERMINAL_OPT_USERDATA
Definition terminal.h:615
@ GHOSTTY_TERMINAL_OPT_COLOR_PALETTE
Definition terminal.h:742
@ GHOSTTY_TERMINAL_OPT_COLOR_SCHEME
Definition terminal.h:675
@ GHOSTTY_TERMINAL_OPT_XTVERSION
Definition terminal.h:648
@ GHOSTTY_TERMINAL_OPT_CLIPBOARD_WRITE
Definition terminal.h:870
@ GHOSTTY_TERMINAL_OPT_DEVICE_ATTRIBUTES
Definition terminal.h:685
@ GHOSTTY_TERMINAL_OPT_SELECTION
Definition terminal.h:820
@ GHOSTTY_TERMINAL_OPT_PWD
Definition terminal.h:705
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_TEMP_FILE
Definition terminal.h:776
@ GHOSTTY_TERMINAL_OPT_WRITE_PTY
Definition terminal.h:624
@ GHOSTTY_TERMINAL_OPT_BELL
Definition terminal.h:632
@ GHOSTTY_TERMINAL_OPT_COLOR_BACKGROUND
Definition terminal.h:723
@ GHOSTTY_TERMINAL_OPT_TITLE
Definition terminal.h:695
@ GHOSTTY_TERMINAL_OPT_DEFAULT_CURSOR_BLINK
Definition terminal.h:839
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_FILE
Definition terminal.h:765
@ GHOSTTY_TERMINAL_OPT_APC_MAX_BYTES
Definition terminal.h:796
GhosttyString mime
Definition terminal.h:365
GhosttyString data
Definition terminal.h:368
const GhosttyClipboardContent * contents
Definition terminal.h:393
GhosttyClipboardLocation location
Definition terminal.h:390
GhosttyResult
Definition types.h:74
#define GHOSTTY_ENUM_TYPED
Definition types.h:67