aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/include/ghostty.h
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-09-10 21:51:57 +0300
committerGitHub <noreply@github.com>2026-09-10 21:51:57 +0300
commit425c86179791cd32e2d4ce0ae7f269940b4b0663 (patch)
treee52c4383a6d69216cbe2a32638bf90841d7e2189 /vendor/libghostty-vt/include/ghostty.h
parent90e947a6e26e02f10ec7f1694c4eb5b78a86406b (diff)
chore: upgrade libghostty and preserve terminal behavior (#3906)
Diffstat (limited to 'vendor/libghostty-vt/include/ghostty.h')
-rw-r--r--vendor/libghostty-vt/include/ghostty.h97
1 files changed, 83 insertions, 14 deletions
diff --git a/vendor/libghostty-vt/include/ghostty.h b/vendor/libghostty-vt/include/ghostty.h
index 72bbb57a..518af3ff 100644
--- a/vendor/libghostty-vt/include/ghostty.h
+++ b/vendor/libghostty-vt/include/ghostty.h
@@ -1,10 +1,14 @@
-// Ghostty embedding API. The documentation for the embedding API is
-// only within the Zig source files that define the implementations. This
-// isn't meant to be a general purpose embedding API (yet) so there hasn't
-// been documentation or example work beyond that.
+// Ghostty's internal embedder API, a.k.a. "libghostty-internal".
//
-// The only consumer of this API is the macOS app, but the API is built to
-// be more general purpose.
+// The only consumer of this API is the macOS app, and while it is fairly
+// comprehensive, it is tailored to the needs of the macOS app and not designed
+// for external use, hence why most functions are undocumented and some are
+// macOS-specific (e.g. ones dealing with the Metal graphics API).
+//
+// External embedders should instead use `libghostty-vt` or other related
+// packages, which are extensively documented and designed from the ground up
+// to be used in other software. Header files for which can be found in
+// `include/ghostty/`.
#ifndef GHOSTTY_H
#define GHOSTTY_H
@@ -71,19 +75,56 @@ typedef enum {
typedef enum {
GHOSTTY_CLIPBOARD_STANDARD,
GHOSTTY_CLIPBOARD_SELECTION,
+ GHOSTTY_CLIPBOARD_PRIMARY,
} ghostty_clipboard_e;
+// One representation of clipboard contents. The data is binary-safe with
+// an explicit length; it is not necessarily null-terminated.
typedef struct {
const char *mime;
const char *data;
+ size_t len;
} ghostty_clipboard_content_s;
+// The payload for completing a clipboard read request. See
+// ghostty_surface_complete_clipboard_request.
+typedef struct {
+ const ghostty_clipboard_content_s *contents;
+ size_t contents_len;
+ const char *const *available;
+ size_t available_len;
+ bool confirmed;
+ bool remember;
+} ghostty_clipboard_complete_s;
+
+// The payload of a clipboard read confirmation request: the would-be
+// completion contents plus the information shown in the permission
+// prompt. See ghostty_runtime_confirm_read_clipboard_cb.
+typedef struct {
+ const ghostty_clipboard_content_s *contents;
+ size_t contents_len;
+ const char *const *available;
+ size_t available_len;
+ const char *name;
+ bool can_remember;
+} ghostty_clipboard_confirm_s;
+
typedef enum {
GHOSTTY_CLIPBOARD_REQUEST_PASTE,
GHOSTTY_CLIPBOARD_REQUEST_OSC_52_READ,
GHOSTTY_CLIPBOARD_REQUEST_OSC_52_WRITE,
+ GHOSTTY_CLIPBOARD_REQUEST_KITTY_READ,
+ GHOSTTY_CLIPBOARD_REQUEST_KITTY_WRITE,
+ GHOSTTY_CLIPBOARD_REQUEST_LIST,
} ghostty_clipboard_request_e;
+// apprt.ClipboardReadResult
+typedef enum {
+ GHOSTTY_CLIPBOARD_READ_STARTED,
+ GHOSTTY_CLIPBOARD_READ_UNAVAILABLE,
+ GHOSTTY_CLIPBOARD_READ_UNSUPPORTED,
+} ghostty_clipboard_read_result_e;
+
typedef enum {
GHOSTTY_MOUSE_RELEASE,
GHOSTTY_MOUSE_PRESS,
@@ -645,6 +686,12 @@ typedef enum {
GHOSTTY_INSPECTOR_HIDE,
} ghostty_action_inspector_e;
+// apprt.action.ExportTerminalIO.C
+typedef struct {
+ const char* contents;
+ size_t len;
+} ghostty_action_export_terminal_io_s;
+
// apprt.action.QuitTimer
typedef enum {
GHOSTTY_QUIT_TIMER_START,
@@ -672,6 +719,7 @@ typedef struct {
typedef enum {
GHOSTTY_PROMPT_TITLE_SURFACE,
GHOSTTY_PROMPT_TITLE_TAB,
+ GHOSTTY_PROMPT_TITLE_WINDOW,
} ghostty_action_prompt_title_e;
// apprt.action.Pwd.C
@@ -679,6 +727,14 @@ typedef struct {
const char* pwd;
} ghostty_action_pwd_s;
+// apprt.action.OpenConfig
+typedef enum {
+ // Open the config in the OS default editor.
+ GHOSTTY_ACTION_OPEN_CONFIG_OS_OPEN,
+ // Open the config in a new window using $EDITOR or $VISUAL
+ GHOSTTY_ACTION_OPEN_CONFIG_NEW_WINDOW,
+} ghostty_action_open_config_e;
+
// terminal.MouseShape
typedef enum {
GHOSTTY_MOUSE_SHAPE_DEFAULT,
@@ -812,6 +868,7 @@ typedef enum {
GHOSTTY_ACTION_OPEN_URL_KIND_UNKNOWN,
GHOSTTY_ACTION_OPEN_URL_KIND_TEXT,
GHOSTTY_ACTION_OPEN_URL_KIND_HTML,
+ GHOSTTY_ACTION_OPEN_URL_KIND_OSC8,
} ghostty_action_open_url_kind_e;
// apprt.action.OpenUrl.C
@@ -914,9 +971,11 @@ typedef enum {
GHOSTTY_ACTION_INSPECTOR,
GHOSTTY_ACTION_SHOW_GTK_INSPECTOR,
GHOSTTY_ACTION_RENDER_INSPECTOR,
+ GHOSTTY_ACTION_EXPORT_TERMINAL_IO,
GHOSTTY_ACTION_DESKTOP_NOTIFICATION,
GHOSTTY_ACTION_SET_TITLE,
GHOSTTY_ACTION_SET_TAB_TITLE,
+ GHOSTTY_ACTION_SET_WINDOW_TITLE,
GHOSTTY_ACTION_PROMPT_TITLE,
GHOSTTY_ACTION_PWD,
GHOSTTY_ACTION_MOUSE_SHAPE,
@@ -949,6 +1008,7 @@ typedef enum {
GHOSTTY_ACTION_SEARCH_SELECTED,
GHOSTTY_ACTION_READONLY,
GHOSTTY_ACTION_COPY_TITLE_TO_CLIPBOARD,
+ GHOSTTY_ACTION_MOVE_TAB_TO_NEW_WINDOW,
} ghostty_action_tag_e;
typedef union {
@@ -964,6 +1024,7 @@ typedef union {
ghostty_action_cell_size_s cell_size;
ghostty_action_scrollbar_s scrollbar;
ghostty_action_inspector_e inspector;
+ ghostty_action_export_terminal_io_s export_terminal_io;
ghostty_action_desktop_notification_s desktop_notification;
ghostty_action_set_title_s set_title;
ghostty_action_set_title_s set_tab_title;
@@ -990,6 +1051,7 @@ typedef union {
ghostty_action_search_total_s search_total;
ghostty_action_search_selected_s search_selected;
ghostty_action_readonly_e readonly;
+ ghostty_action_open_config_e open_config;
} ghostty_action_u;
typedef struct {
@@ -998,12 +1060,16 @@ typedef struct {
} ghostty_action_s;
typedef void (*ghostty_runtime_wakeup_cb)(void*);
-typedef bool (*ghostty_runtime_read_clipboard_cb)(void*,
- ghostty_clipboard_e,
- void*);
+typedef ghostty_clipboard_read_result_e (*ghostty_runtime_read_clipboard_cb)(
+ void*,
+ ghostty_clipboard_e,
+ void*,
+ const char* const*,
+ size_t,
+ bool);
typedef void (*ghostty_runtime_confirm_read_clipboard_cb)(
void*,
- const char*,
+ const ghostty_clipboard_confirm_s*,
void*,
ghostty_clipboard_request_e);
typedef void (*ghostty_runtime_write_clipboard_cb)(void*,
@@ -1055,6 +1121,7 @@ typedef union {
// apprt.ipc.Action.Key
typedef enum {
GHOSTTY_IPC_ACTION_NEW_WINDOW,
+ GHOSTTY_IPC_ACTION_NEW_TAB,
GHOSTTY_IPC_ACTION_TOGGLE_QUICK_TERMINAL,
} ghostty_ipc_action_tag_e;
@@ -1152,10 +1219,12 @@ GHOSTTY_API void ghostty_surface_split_resize(ghostty_surface_t,
uint16_t);
GHOSTTY_API void ghostty_surface_split_equalize(ghostty_surface_t);
GHOSTTY_API bool ghostty_surface_binding_action(ghostty_surface_t, const char*, uintptr_t);
-GHOSTTY_API void ghostty_surface_complete_clipboard_request(ghostty_surface_t,
- const char*,
- void*,
- bool);
+GHOSTTY_API void ghostty_surface_complete_clipboard_request(
+ ghostty_surface_t,
+ const ghostty_clipboard_complete_s*,
+ void*);
+GHOSTTY_API void ghostty_surface_deny_clipboard_request(ghostty_surface_t,
+ void*);
GHOSTTY_API bool ghostty_surface_has_selection(ghostty_surface_t);
GHOSTTY_API bool ghostty_surface_read_selection(ghostty_surface_t, ghostty_text_s*);
GHOSTTY_API bool ghostty_surface_read_text(ghostty_surface_t,