xref: /openbsd-src/usr.bin/tmux/tmux-protocol.h (revision 83e2ab13793a8708c3494cfe478a5ee8f0adb339)
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