1*83e2ab13Snicm /* $OpenBSD: tmux-protocol.h,v 1.2 2023/01/06 07:09:27 nicm Exp $ */ 2109d1157Snicm 3109d1157Snicm /* 4109d1157Snicm * Copyright (c) 2021 Nicholas Marriott <nicholas.marriott@gmail.com> 5109d1157Snicm * 6109d1157Snicm * Permission to use, copy, modify, and distribute this software for any 7109d1157Snicm * purpose with or without fee is hereby granted, provided that the above 8109d1157Snicm * copyright notice and this permission notice appear in all copies. 9109d1157Snicm * 10109d1157Snicm * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11109d1157Snicm * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12109d1157Snicm * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13109d1157Snicm * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14109d1157Snicm * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER 15109d1157Snicm * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING 16109d1157Snicm * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17109d1157Snicm */ 18109d1157Snicm 19109d1157Snicm #ifndef TMUX_PROTOCOL_H 20109d1157Snicm #define TMUX_PROTOCOL_H 21109d1157Snicm 22109d1157Snicm /* Protocol version. */ 23109d1157Snicm #define PROTOCOL_VERSION 8 24109d1157Snicm 25109d1157Snicm /* Message types. */ 26109d1157Snicm enum msgtype { 27109d1157Snicm MSG_VERSION = 12, 28109d1157Snicm 29109d1157Snicm MSG_IDENTIFY_FLAGS = 100, 30109d1157Snicm MSG_IDENTIFY_TERM, 31109d1157Snicm MSG_IDENTIFY_TTYNAME, 32109d1157Snicm MSG_IDENTIFY_OLDCWD, /* unused */ 33109d1157Snicm MSG_IDENTIFY_STDIN, 34109d1157Snicm MSG_IDENTIFY_ENVIRON, 35109d1157Snicm MSG_IDENTIFY_DONE, 36109d1157Snicm MSG_IDENTIFY_CLIENTPID, 37109d1157Snicm MSG_IDENTIFY_CWD, 38109d1157Snicm MSG_IDENTIFY_FEATURES, 39109d1157Snicm MSG_IDENTIFY_STDOUT, 40109d1157Snicm MSG_IDENTIFY_LONGFLAGS, 41109d1157Snicm MSG_IDENTIFY_TERMINFO, 42109d1157Snicm 43109d1157Snicm MSG_COMMAND = 200, 44109d1157Snicm MSG_DETACH, 45109d1157Snicm MSG_DETACHKILL, 46109d1157Snicm MSG_EXIT, 47109d1157Snicm MSG_EXITED, 48109d1157Snicm MSG_EXITING, 49109d1157Snicm MSG_LOCK, 50109d1157Snicm MSG_READY, 51109d1157Snicm MSG_RESIZE, 52109d1157Snicm MSG_SHELL, 53109d1157Snicm MSG_SHUTDOWN, 54109d1157Snicm MSG_OLDSTDERR, /* unused */ 55109d1157Snicm MSG_OLDSTDIN, /* unused */ 56109d1157Snicm MSG_OLDSTDOUT, /* unused */ 57109d1157Snicm MSG_SUSPEND, 58109d1157Snicm MSG_UNLOCK, 59109d1157Snicm MSG_WAKEUP, 60109d1157Snicm MSG_EXEC, 61109d1157Snicm MSG_FLAGS, 62109d1157Snicm 63109d1157Snicm MSG_READ_OPEN = 300, 64109d1157Snicm MSG_READ, 65109d1157Snicm MSG_READ_DONE, 66109d1157Snicm MSG_WRITE_OPEN, 67109d1157Snicm MSG_WRITE, 68109d1157Snicm MSG_WRITE_READY, 69*83e2ab13Snicm MSG_WRITE_CLOSE, 70*83e2ab13Snicm MSG_READ_CANCEL 71109d1157Snicm }; 72109d1157Snicm 73109d1157Snicm /* 74109d1157Snicm * Message data. 75109d1157Snicm * 76109d1157Snicm * Don't forget to bump PROTOCOL_VERSION if any of these change! 77109d1157Snicm */ 78109d1157Snicm struct msg_command { 79109d1157Snicm int argc; 80109d1157Snicm }; /* followed by packed argv */ 81109d1157Snicm 82109d1157Snicm struct msg_read_open { 83109d1157Snicm int stream; 84109d1157Snicm int fd; 85109d1157Snicm }; /* followed by path */ 86109d1157Snicm 87109d1157Snicm struct msg_read_data { 88109d1157Snicm int stream; 89109d1157Snicm }; 90109d1157Snicm 91109d1157Snicm struct msg_read_done { 92109d1157Snicm int stream; 93109d1157Snicm int error; 94109d1157Snicm }; 95109d1157Snicm 96*83e2ab13Snicm struct msg_read_cancel { 97*83e2ab13Snicm int stream; 98*83e2ab13Snicm }; 99*83e2ab13Snicm 100109d1157Snicm struct msg_write_open { 101109d1157Snicm int stream; 102109d1157Snicm int fd; 103109d1157Snicm int flags; 104109d1157Snicm }; /* followed by path */ 105109d1157Snicm 106109d1157Snicm struct msg_write_data { 107109d1157Snicm int stream; 108109d1157Snicm }; /* followed by data */ 109109d1157Snicm 110109d1157Snicm struct msg_write_ready { 111109d1157Snicm int stream; 112109d1157Snicm int error; 113109d1157Snicm }; 114109d1157Snicm 115109d1157Snicm struct msg_write_close { 116109d1157Snicm int stream; 117109d1157Snicm }; 118109d1157Snicm 119109d1157Snicm #endif /* TMUX_PROTOCOL_H */ 120