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>
22#include <ghostty/vt/style.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
157
163typedef struct {
165 uint16_t cols;
166
168 uint16_t rows;
169
172
173 // TODO: Consider ABI compatibility implications of this struct.
174 // We may want to artificially pad it significantly to support
175 // future options.
177
183typedef enum GHOSTTY_ENUM_TYPED {
186
189
192 GHOSTTY_SCROLL_VIEWPORT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
194
200typedef union {
202 intptr_t delta;
203
205 uint64_t _padding[2];
207
213typedef struct {
217
225typedef enum GHOSTTY_ENUM_TYPED {
228
231 GHOSTTY_TERMINAL_SCREEN_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
233
241typedef struct {
243 uint64_t total;
244
246 uint64_t offset;
247
249 uint64_t len;
251
262typedef void (*GhosttyTerminalBellFn)(GhosttyTerminal terminal,
263 void* userdata);
264
280 void* userdata,
281 GhosttyColorScheme* out_scheme);
282
301 void* userdata,
302 GhosttyDeviceAttributes* out_attrs);
303
319 void* userdata);
320
335typedef bool (*GhosttyTerminalSizeFn)(GhosttyTerminal terminal,
336 void* userdata,
337 GhosttySizeReportSize* out_size);
338
352 void* userdata);
353
370 void* userdata,
371 const uint8_t* data,
372 size_t len);
373
389 void* userdata);
390
399typedef enum GHOSTTY_ENUM_TYPED {
406
415
423
431
439
448
456
466
476
486
496
505
514
523
533
546
556
566
576
586
595 GHOSTTY_TERMINAL_OPT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
597
606typedef enum GHOSTTY_ENUM_TYPED {
609
616
623
630
637
644
651
658
665
676
685
695
706
718
725
732
741
750
759
768
777
784
793
802
811
818
828
838
848
858
871 GHOSTTY_TERMINAL_DATA_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
873
885 GhosttyTerminal* terminal,
886 GhosttyTerminalOptions options);
887
898GHOSTTY_API void ghostty_terminal_free(GhosttyTerminal terminal);
899
911GHOSTTY_API void ghostty_terminal_reset(GhosttyTerminal terminal);
912
935 uint16_t cols,
936 uint16_t rows,
937 uint32_t cell_width_px,
938 uint32_t cell_height_px);
939
962 const void* value);
963
986 const uint8_t* data,
987 size_t len);
988
1004
1020 GhosttyMode mode,
1021 bool* out_value);
1022
1037 GhosttyMode mode,
1038 bool value);
1039
1058 void *out);
1059
1088 size_t count,
1089 const GhosttyTerminalData* keys,
1090 void** values,
1091 size_t* out_written);
1092
1120 GhosttyPoint point,
1121 GhosttyGridRef *out_ref);
1122
1151 GhosttyTerminal terminal,
1152 const GhosttyGridRef *ref,
1153 GhosttyPointTag tag,
1155
1157
1158#ifdef __cplusplus
1159}
1160#endif
1161
1162#endif /* GHOSTTY_VT_TERMINAL_H */
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_get(GhosttyTerminal terminal, GhosttyTerminalData data, void *out)
GHOSTTY_API void ghostty_terminal_reset(GhosttyTerminal terminal)
bool(* GhosttyTerminalColorSchemeFn)(GhosttyTerminal terminal, void *userdata, GhosttyColorScheme *out_scheme)
Definition terminal.h:279
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:335
void(* GhosttyTerminalWritePtyFn)(GhosttyTerminal terminal, void *userdata, const uint8_t *data, size_t len)
Definition terminal.h:369
struct GhosttyTerminalImpl * GhosttyTerminal
Definition types.h:95
GHOSTTY_API GhosttyResult ghostty_terminal_new(const GhosttyAllocator *allocator, GhosttyTerminal *terminal, GhosttyTerminalOptions options)
GhosttyTerminalScrollViewportTag
Definition terminal.h:183
GHOSTTY_API void ghostty_terminal_free(GhosttyTerminal terminal)
GHOSTTY_API GhosttyResult ghostty_terminal_mode_set(GhosttyTerminal terminal, GhosttyMode mode, bool value)
void(* GhosttyTerminalBellFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:262
void(* GhosttyTerminalTitleChangedFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:351
bool(* GhosttyTerminalDeviceAttributesFn)(GhosttyTerminal terminal, void *userdata, GhosttyDeviceAttributes *out_attrs)
Definition terminal.h:300
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:225
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:388
GhosttyTerminalData
Definition terminal.h:606
GHOSTTY_API GhosttyResult ghostty_terminal_mode_get(GhosttyTerminal terminal, GhosttyMode mode, bool *out_value)
GhosttyString(* GhosttyTerminalEnquiryFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:318
GhosttyTerminalOption
Definition terminal.h:399
@ GHOSTTY_SCROLL_VIEWPORT_BOTTOM
Definition terminal.h:188
@ GHOSTTY_SCROLL_VIEWPORT_DELTA
Definition terminal.h:191
@ GHOSTTY_SCROLL_VIEWPORT_TOP
Definition terminal.h:185
@ GHOSTTY_TERMINAL_SCREEN_ALTERNATE
Definition terminal.h:230
@ GHOSTTY_TERMINAL_SCREEN_PRIMARY
Definition terminal.h:227
@ GHOSTTY_TERMINAL_DATA_COLOR_BACKGROUND_DEFAULT
Definition terminal.h:801
@ GHOSTTY_TERMINAL_DATA_WIDTH_PX
Definition terminal.h:740
@ GHOSTTY_TERMINAL_DATA_COLOR_BACKGROUND
Definition terminal.h:767
@ GHOSTTY_TERMINAL_DATA_COLOR_PALETTE_DEFAULT
Definition terminal.h:817
@ GHOSTTY_TERMINAL_DATA_COLS
Definition terminal.h:615
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_FILE
Definition terminal.h:837
@ GHOSTTY_TERMINAL_DATA_TITLE
Definition terminal.h:705
@ GHOSTTY_TERMINAL_DATA_CURSOR_VISIBLE
Definition terminal.h:657
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_TEMP_FILE
Definition terminal.h:847
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_STORAGE_LIMIT
Definition terminal.h:827
@ GHOSTTY_TERMINAL_DATA_ROWS
Definition terminal.h:622
@ GHOSTTY_TERMINAL_DATA_SCROLLBACK_ROWS
Definition terminal.h:731
@ GHOSTTY_TERMINAL_DATA_TOTAL_ROWS
Definition terminal.h:724
@ GHOSTTY_TERMINAL_DATA_CURSOR_PENDING_WRAP
Definition terminal.h:643
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_SHARED_MEM
Definition terminal.h:857
@ GHOSTTY_TERMINAL_DATA_INVALID
Definition terminal.h:608
@ GHOSTTY_TERMINAL_DATA_COLOR_FOREGROUND_DEFAULT
Definition terminal.h:792
@ GHOSTTY_TERMINAL_DATA_KITTY_KEYBOARD_FLAGS
Definition terminal.h:664
@ GHOSTTY_TERMINAL_DATA_COLOR_CURSOR_DEFAULT
Definition terminal.h:810
@ GHOSTTY_TERMINAL_DATA_COLOR_FOREGROUND
Definition terminal.h:758
@ GHOSTTY_TERMINAL_DATA_SCROLLBAR
Definition terminal.h:675
@ GHOSTTY_TERMINAL_DATA_CURSOR_Y
Definition terminal.h:636
@ GHOSTTY_TERMINAL_DATA_ACTIVE_SCREEN
Definition terminal.h:650
@ GHOSTTY_TERMINAL_DATA_CURSOR_X
Definition terminal.h:629
@ GHOSTTY_TERMINAL_DATA_MOUSE_TRACKING
Definition terminal.h:694
@ GHOSTTY_TERMINAL_DATA_PWD
Definition terminal.h:717
@ GHOSTTY_TERMINAL_DATA_COLOR_PALETTE
Definition terminal.h:783
@ GHOSTTY_TERMINAL_DATA_KITTY_GRAPHICS
Definition terminal.h:870
@ GHOSTTY_TERMINAL_DATA_CURSOR_STYLE
Definition terminal.h:684
@ GHOSTTY_TERMINAL_DATA_HEIGHT_PX
Definition terminal.h:749
@ GHOSTTY_TERMINAL_DATA_COLOR_CURSOR
Definition terminal.h:776
@ GHOSTTY_TERMINAL_OPT_ENQUIRY
Definition terminal.h:430
@ GHOSTTY_TERMINAL_OPT_TITLE_CHANGED
Definition terminal.h:447
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_STORAGE_LIMIT
Definition terminal.h:545
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_SHARED_MEM
Definition terminal.h:575
@ GHOSTTY_TERMINAL_OPT_APC_MAX_BYTES_KITTY
Definition terminal.h:594
@ GHOSTTY_TERMINAL_OPT_COLOR_CURSOR
Definition terminal.h:522
@ GHOSTTY_TERMINAL_OPT_COLOR_FOREGROUND
Definition terminal.h:504
@ GHOSTTY_TERMINAL_OPT_SIZE
Definition terminal.h:455
@ GHOSTTY_TERMINAL_OPT_USERDATA
Definition terminal.h:405
@ GHOSTTY_TERMINAL_OPT_COLOR_PALETTE
Definition terminal.h:532
@ GHOSTTY_TERMINAL_OPT_COLOR_SCHEME
Definition terminal.h:465
@ GHOSTTY_TERMINAL_OPT_XTVERSION
Definition terminal.h:438
@ GHOSTTY_TERMINAL_OPT_DEVICE_ATTRIBUTES
Definition terminal.h:475
@ GHOSTTY_TERMINAL_OPT_PWD
Definition terminal.h:495
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_TEMP_FILE
Definition terminal.h:565
@ GHOSTTY_TERMINAL_OPT_WRITE_PTY
Definition terminal.h:414
@ GHOSTTY_TERMINAL_OPT_BELL
Definition terminal.h:422
@ GHOSTTY_TERMINAL_OPT_COLOR_BACKGROUND
Definition terminal.h:513
@ GHOSTTY_TERMINAL_OPT_TITLE
Definition terminal.h:485
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_FILE
Definition terminal.h:555
@ GHOSTTY_TERMINAL_OPT_APC_MAX_BYTES
Definition terminal.h:585
GhosttyResult
Definition types.h:74
#define GHOSTTY_ENUM_TYPED
Definition types.h:67