summaryrefslogtreecommitdiffstats
path: root/tmux-protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmux-protocol.h')
-rw-r--r--tmux-protocol.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/tmux-protocol.h b/tmux-protocol.h
new file mode 100644
index 0000000..0842229
--- /dev/null
+++ b/tmux-protocol.h
@@ -0,0 +1,114 @@
+/* $OpenBSD$ */
+
+/*
+ * Copyright (c) 2021 Nicholas Marriott <nicholas.marriott@gmail.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
+ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef TMUX_PROTOCOL_H
+#define TMUX_PROTOCOL_H
+
+/* Protocol version. */
+#define PROTOCOL_VERSION 8
+
+/* Message types. */
+enum msgtype {
+ MSG_VERSION = 12,
+
+ MSG_IDENTIFY_FLAGS = 100,
+ MSG_IDENTIFY_TERM,
+ MSG_IDENTIFY_TTYNAME,
+ MSG_IDENTIFY_OLDCWD, /* unused */
+ MSG_IDENTIFY_STDIN,
+ MSG_IDENTIFY_ENVIRON,
+ MSG_IDENTIFY_DONE,
+ MSG_IDENTIFY_CLIENTPID,
+ MSG_IDENTIFY_CWD,
+ MSG_IDENTIFY_FEATURES,
+ MSG_IDENTIFY_STDOUT,
+ MSG_IDENTIFY_LONGFLAGS,
+ MSG_IDENTIFY_TERMINFO,
+
+ MSG_COMMAND = 200,
+ MSG_DETACH,
+ MSG_DETACHKILL,
+ MSG_EXIT,
+ MSG_EXITED,
+ MSG_EXITING,
+ MSG_LOCK,
+ MSG_READY,
+ MSG_RESIZE,
+ MSG_SHELL,
+ MSG_SHUTDOWN,
+ MSG_OLDSTDERR, /* unused */
+ MSG_OLDSTDIN, /* unused */
+ MSG_OLDSTDOUT, /* unused */
+ MSG_SUSPEND,
+ MSG_UNLOCK,
+ MSG_WAKEUP,
+ MSG_EXEC,
+ MSG_FLAGS,
+
+ MSG_READ_OPEN = 300,
+ MSG_READ,
+ MSG_READ_DONE,
+ MSG_WRITE_OPEN,
+ MSG_WRITE,
+ MSG_WRITE_READY,
+ MSG_WRITE_CLOSE
+};
+
+/*
+ * Message data.
+ *
+ * Don't forget to bump PROTOCOL_VERSION if any of these change!
+ */
+struct msg_command {
+ int argc;
+}; /* followed by packed argv */
+
+struct msg_read_open {
+ int stream;
+ int fd;
+}; /* followed by path */
+
+struct msg_read_data {
+ int stream;
+};
+
+struct msg_read_done {
+ int stream;
+ int error;
+};
+
+struct msg_write_open {
+ int stream;
+ int fd;
+ int flags;
+}; /* followed by path */
+
+struct msg_write_data {
+ int stream;
+}; /* followed by data */
+
+struct msg_write_ready {
+ int stream;
+ int error;
+};
+
+struct msg_write_close {
+ int stream;
+};
+
+#endif /* TMUX_PROTOCOL_H */