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
158
164typedef struct {
166 uint16_t cols;
167
169 uint16_t rows;
170
173
174 // TODO: Consider ABI compatibility implications of this struct.
175 // We may want to artificially pad it significantly to support
176 // future options.
178
184typedef enum GHOSTTY_ENUM_TYPED {
187
190
193 GHOSTTY_SCROLL_VIEWPORT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
195
201typedef union {
203 intptr_t delta;
204
206 uint64_t _padding[2];
208
214typedef struct {
218
226typedef enum GHOSTTY_ENUM_TYPED {
229
232 GHOSTTY_TERMINAL_SCREEN_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
234
242typedef struct {
244 uint64_t total;
245
247 uint64_t offset;
248
250 uint64_t len;
252
263typedef void (*GhosttyTerminalBellFn)(GhosttyTerminal terminal,
264 void* userdata);
265
281 void* userdata,
282 GhosttyColorScheme* out_scheme);
283
302 void* userdata,
303 GhosttyDeviceAttributes* out_attrs);
304
320 void* userdata);
321
336typedef bool (*GhosttyTerminalSizeFn)(GhosttyTerminal terminal,
337 void* userdata,
338 GhosttySizeReportSize* out_size);
339
353 void* userdata);
354
371 void* userdata,
372 const uint8_t* data,
373 size_t len);
374
390 void* userdata);
391
400typedef enum GHOSTTY_ENUM_TYPED {
407
416
424
432
440
449
457
467
477
487
497
506
515
524
534
547
557
567
577
587
596
611 GHOSTTY_TERMINAL_OPT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
613
622typedef enum GHOSTTY_ENUM_TYPED {
625
632
639
646
653
660
667
674
681
692
701
711
722
734
741
748
757
766
775
784
793
800
809
818
827
834
844
854
864
874
887
904 GHOSTTY_TERMINAL_DATA_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE,
906
918 GhosttyTerminal* terminal,
919 GhosttyTerminalOptions options);
920
931GHOSTTY_API void ghostty_terminal_free(GhosttyTerminal terminal);
932
944GHOSTTY_API void ghostty_terminal_reset(GhosttyTerminal terminal);
945
968 uint16_t cols,
969 uint16_t rows,
970 uint32_t cell_width_px,
971 uint32_t cell_height_px);
972
995 const void* value);
996
1019 const uint8_t* data,
1020 size_t len);
1021
1037
1053 GhosttyMode mode,
1054 bool* out_value);
1055
1070 GhosttyMode mode,
1071 bool value);
1072
1091 void *out);
1092
1121 size_t count,
1122 const GhosttyTerminalData* keys,
1123 void** values,
1124 size_t* out_written);
1125
1153 GhosttyPoint point,
1154 GhosttyGridRef *out_ref);
1155
1184 GhosttyTerminal terminal,
1185 GhosttyPoint point,
1186 GhosttyTrackedGridRef *out_ref);
1187
1216 GhosttyTerminal terminal,
1217 const GhosttyGridRef *ref,
1218 GhosttyPointTag tag,
1220
1222
1223#ifdef __cplusplus
1224}
1225#endif
1226
1227#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_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:280
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:336
void(* GhosttyTerminalWritePtyFn)(GhosttyTerminal terminal, void *userdata, const uint8_t *data, size_t len)
Definition terminal.h:370
struct GhosttyTerminalImpl * GhosttyTerminal
Definition types.h:95
GHOSTTY_API GhosttyResult ghostty_terminal_new(const GhosttyAllocator *allocator, GhosttyTerminal *terminal, GhosttyTerminalOptions options)
GhosttyTerminalScrollViewportTag
Definition terminal.h:184
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:263
void(* GhosttyTerminalTitleChangedFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:352
bool(* GhosttyTerminalDeviceAttributesFn)(GhosttyTerminal terminal, void *userdata, GhosttyDeviceAttributes *out_attrs)
Definition terminal.h:301
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:226
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:389
GhosttyTerminalData
Definition terminal.h:622
GHOSTTY_API GhosttyResult ghostty_terminal_mode_get(GhosttyTerminal terminal, GhosttyMode mode, bool *out_value)
GhosttyString(* GhosttyTerminalEnquiryFn)(GhosttyTerminal terminal, void *userdata)
Definition terminal.h:319
GhosttyTerminalOption
Definition terminal.h:400
@ GHOSTTY_SCROLL_VIEWPORT_BOTTOM
Definition terminal.h:189
@ GHOSTTY_SCROLL_VIEWPORT_DELTA
Definition terminal.h:192
@ GHOSTTY_SCROLL_VIEWPORT_TOP
Definition terminal.h:186
@ GHOSTTY_TERMINAL_SCREEN_ALTERNATE
Definition terminal.h:231
@ GHOSTTY_TERMINAL_SCREEN_PRIMARY
Definition terminal.h:228
@ GHOSTTY_TERMINAL_DATA_COLOR_BACKGROUND_DEFAULT
Definition terminal.h:817
@ GHOSTTY_TERMINAL_DATA_WIDTH_PX
Definition terminal.h:756
@ GHOSTTY_TERMINAL_DATA_COLOR_BACKGROUND
Definition terminal.h:783
@ GHOSTTY_TERMINAL_DATA_COLOR_PALETTE_DEFAULT
Definition terminal.h:833
@ GHOSTTY_TERMINAL_DATA_COLS
Definition terminal.h:631
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_FILE
Definition terminal.h:853
@ GHOSTTY_TERMINAL_DATA_TITLE
Definition terminal.h:721
@ GHOSTTY_TERMINAL_DATA_CURSOR_VISIBLE
Definition terminal.h:673
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_TEMP_FILE
Definition terminal.h:863
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_STORAGE_LIMIT
Definition terminal.h:843
@ GHOSTTY_TERMINAL_DATA_ROWS
Definition terminal.h:638
@ GHOSTTY_TERMINAL_DATA_SCROLLBACK_ROWS
Definition terminal.h:747
@ GHOSTTY_TERMINAL_DATA_TOTAL_ROWS
Definition terminal.h:740
@ GHOSTTY_TERMINAL_DATA_CURSOR_PENDING_WRAP
Definition terminal.h:659
@ GHOSTTY_TERMINAL_DATA_KITTY_IMAGE_MEDIUM_SHARED_MEM
Definition terminal.h:873
@ GHOSTTY_TERMINAL_DATA_SELECTION
Definition terminal.h:903
@ GHOSTTY_TERMINAL_DATA_INVALID
Definition terminal.h:624
@ GHOSTTY_TERMINAL_DATA_COLOR_FOREGROUND_DEFAULT
Definition terminal.h:808
@ GHOSTTY_TERMINAL_DATA_KITTY_KEYBOARD_FLAGS
Definition terminal.h:680
@ GHOSTTY_TERMINAL_DATA_COLOR_CURSOR_DEFAULT
Definition terminal.h:826
@ GHOSTTY_TERMINAL_DATA_COLOR_FOREGROUND
Definition terminal.h:774
@ GHOSTTY_TERMINAL_DATA_SCROLLBAR
Definition terminal.h:691
@ GHOSTTY_TERMINAL_DATA_CURSOR_Y
Definition terminal.h:652
@ GHOSTTY_TERMINAL_DATA_ACTIVE_SCREEN
Definition terminal.h:666
@ GHOSTTY_TERMINAL_DATA_CURSOR_X
Definition terminal.h:645
@ GHOSTTY_TERMINAL_DATA_MOUSE_TRACKING
Definition terminal.h:710
@ GHOSTTY_TERMINAL_DATA_PWD
Definition terminal.h:733
@ GHOSTTY_TERMINAL_DATA_COLOR_PALETTE
Definition terminal.h:799
@ GHOSTTY_TERMINAL_DATA_KITTY_GRAPHICS
Definition terminal.h:886
@ GHOSTTY_TERMINAL_DATA_CURSOR_STYLE
Definition terminal.h:700
@ GHOSTTY_TERMINAL_DATA_HEIGHT_PX
Definition terminal.h:765
@ GHOSTTY_TERMINAL_DATA_COLOR_CURSOR
Definition terminal.h:792
@ GHOSTTY_TERMINAL_OPT_ENQUIRY
Definition terminal.h:431
@ GHOSTTY_TERMINAL_OPT_TITLE_CHANGED
Definition terminal.h:448
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_STORAGE_LIMIT
Definition terminal.h:546
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_SHARED_MEM
Definition terminal.h:576
@ GHOSTTY_TERMINAL_OPT_APC_MAX_BYTES_KITTY
Definition terminal.h:595
@ GHOSTTY_TERMINAL_OPT_COLOR_CURSOR
Definition terminal.h:523
@ GHOSTTY_TERMINAL_OPT_COLOR_FOREGROUND
Definition terminal.h:505
@ GHOSTTY_TERMINAL_OPT_SIZE
Definition terminal.h:456
@ GHOSTTY_TERMINAL_OPT_USERDATA
Definition terminal.h:406
@ GHOSTTY_TERMINAL_OPT_COLOR_PALETTE
Definition terminal.h:533
@ GHOSTTY_TERMINAL_OPT_COLOR_SCHEME
Definition terminal.h:466
@ GHOSTTY_TERMINAL_OPT_XTVERSION
Definition terminal.h:439
@ GHOSTTY_TERMINAL_OPT_DEVICE_ATTRIBUTES
Definition terminal.h:476
@ GHOSTTY_TERMINAL_OPT_SELECTION
Definition terminal.h:610
@ GHOSTTY_TERMINAL_OPT_PWD
Definition terminal.h:496
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_TEMP_FILE
Definition terminal.h:566
@ GHOSTTY_TERMINAL_OPT_WRITE_PTY
Definition terminal.h:415
@ GHOSTTY_TERMINAL_OPT_BELL
Definition terminal.h:423
@ GHOSTTY_TERMINAL_OPT_COLOR_BACKGROUND
Definition terminal.h:514
@ GHOSTTY_TERMINAL_OPT_TITLE
Definition terminal.h:486
@ GHOSTTY_TERMINAL_OPT_KITTY_IMAGE_MEDIUM_FILE
Definition terminal.h:556
@ GHOSTTY_TERMINAL_OPT_APC_MAX_BYTES
Definition terminal.h:586
GhosttyResult
Definition types.h:74
#define GHOSTTY_ENUM_TYPED
Definition types.h:67