aboutsummaryrefslogtreecommitdiff
path: root/tmux.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmux.h')
-rw-r--r--tmux.h170
1 files changed, 68 insertions, 102 deletions
diff --git a/tmux.h b/tmux.h
index cc1c79e8..3a298840 100644
--- a/tmux.h
+++ b/tmux.h
@@ -19,7 +19,7 @@
#ifndef TMUX_H
#define TMUX_H
-#define PROTOCOL_VERSION 7
+#define PROTOCOL_VERSION 8
#include <sys/param.h>
#include <sys/time.h>
@@ -52,14 +52,6 @@ extern char **environ;
#define NAME_INTERVAL 500
/*
- * Maximum sizes of strings in message data. Don't forget to bump
- * PROTOCOL_VERSION if any of these change!
- */
-#define COMMAND_LENGTH 2048 /* packed argv size */
-#define TERMINAL_LENGTH 128 /* length of TERM environment variable */
-#define ENVIRON_LENGTH 1024 /* environment variable length */
-
-/*
* UTF-8 data size. This must be big enough to hold combined characters as well
* as single.
*/
@@ -144,7 +136,7 @@ extern char **environ;
"[layout #{window_layout}] #{window_id}" \
"#{?window_active, (active),}";
#define LIST_WINDOWS_WITH_SESSION_TEMPLATE \
- "#{session_name}: " \
+ "#{session_name}:" \
"#{window_index}: #{window_name}#{window_flags} " \
"(#{window_panes} panes) " \
"[#{window_width}x#{window_height}] "
@@ -430,27 +422,33 @@ ARRAY_DECL(causelist, char *);
/* Message codes. */
enum msgtype {
- MSG_COMMAND,
+ MSG_VERSION = 12,
+
+ MSG_IDENTIFY_FLAGS = 100,
+ MSG_IDENTIFY_TERM,
+ MSG_IDENTIFY_TTYNAME,
+ MSG_IDENTIFY_CWD,
+ MSG_IDENTIFY_STDIN,
+ MSG_IDENTIFY_ENVIRON,
+ MSG_IDENTIFY_DONE,
+
+ MSG_COMMAND = 200,
MSG_DETACH,
- MSG_ERROR,
+ MSG_DETACHKILL,
MSG_EXIT,
MSG_EXITED,
MSG_EXITING,
- MSG_IDENTIFY,
- MSG_STDIN,
+ MSG_LOCK,
MSG_READY,
MSG_RESIZE,
- MSG_SHUTDOWN,
- MSG_SUSPEND,
- MSG_VERSION,
- MSG_WAKEUP,
- MSG_ENVIRON,
- MSG_UNLOCK,
- MSG_LOCK,
MSG_SHELL,
+ MSG_SHUTDOWN,
MSG_STDERR,
+ MSG_STDIN,
MSG_STDOUT,
- MSG_DETACHKILL
+ MSG_SUSPEND,
+ MSG_UNLOCK,
+ MSG_WAKEUP,
};
/*
@@ -459,45 +457,8 @@ enum msgtype {
* Don't forget to bump PROTOCOL_VERSION if any of these change!
*/
struct msg_command_data {
- pid_t pid; /* from $TMUX or -1 */
- int session_id; /* from $TMUX or -1 */
-
- int argc;
- char argv[COMMAND_LENGTH];
-};
-
-struct msg_identify_data {
- char cwd[MAXPATHLEN];
-
- char term[TERMINAL_LENGTH];
-
-#ifdef __CYGWIN__
- char ttyname[TTY_NAME_MAX];
-#endif
-
-#define IDENTIFY_UTF8 0x1
-#define IDENTIFY_256COLOURS 0x2
-/* 0x4 unused */
-#define IDENTIFY_CONTROL 0x8
-#define IDENTIFY_TERMIOS 0x10
- int flags;
-};
-
-struct msg_lock_data {
- char cmd[COMMAND_LENGTH];
-};
-
-struct msg_environ_data {
- char var[ENVIRON_LENGTH];
-};
-
-struct msg_shell_data {
- char shell[MAXPATHLEN];
-};
-
-struct msg_exit_data {
- int retcode;
-};
+ int argc;
+}; /* followed by packed argv */
struct msg_stdin_data {
ssize_t size;
@@ -945,7 +906,7 @@ struct window_pane {
char *cmd;
char *shell;
- char *cwd;
+ int cwd;
pid_t pid;
char tty[TTY_NAME_MAX];
@@ -1005,6 +966,7 @@ struct window {
#define WINDOW_REDRAW 0x4
#define WINDOW_SILENCE 0x8
#define WINDOW_ZOOMED 0x10
+#define WINDOW_ALERTFLAGS (WINDOW_BELL|WINDOW_ACTIVITY|WINDOW_SILENCE)
struct options options;
@@ -1091,7 +1053,7 @@ struct session {
u_int id;
char *name;
- char *cwd;
+ int cwd;
struct timeval creation_time;
struct timeval activity_time;
@@ -1290,8 +1252,10 @@ RB_HEAD(status_out_tree, status_out);
/* Client connection. */
struct client {
struct imsgbuf ibuf;
+
+ int fd;
struct event event;
- int retcode;
+ int retval;
struct timeval creation_time;
struct timeval activity_time;
@@ -1299,8 +1263,10 @@ struct client {
struct environ environ;
char *title;
- char *cwd;
+ int cwd;
+ char *term;
+ char *ttyname;
struct tty tty;
void (*stdin_callback)(struct client *, int, void *);
@@ -1322,7 +1288,7 @@ struct client {
#define CLIENT_EXIT 0x4
#define CLIENT_REDRAW 0x8
#define CLIENT_STATUS 0x10
-#define CLIENT_REPEAT 0x20 /* allow command to repeat within repeat time */
+#define CLIENT_REPEAT 0x20
#define CLIENT_SUSPENDED 0x40
#define CLIENT_BAD 0x80
#define CLIENT_IDENTIFY 0x100
@@ -1331,7 +1297,11 @@ struct client {
#define CLIENT_READONLY 0x800
#define CLIENT_REDRAWWINDOW 0x1000
#define CLIENT_CONTROL 0x2000
-#define CLIENT_FOCUSED 0x4000
+#define CLIENT_CONTROLCONTROL 0x4000
+#define CLIENT_FOCUSED 0x8000
+#define CLIENT_UTF8 0x10000
+#define CLIENT_256COLOURS 0x20000
+#define CLIENT_IDENTIFIED 0x40000
int flags;
struct event identify_timer;
@@ -1428,8 +1398,6 @@ struct cmd_q {
void (*emptyfn)(struct cmd_q *);
void *data;
- struct msg_command_data *msgdata;
-
TAILQ_ENTRY(cmd_q) waitentry;
};
@@ -1446,12 +1414,10 @@ struct cmd_entry {
#define CMD_STARTSERVER 0x1
#define CMD_CANTNEST 0x2
-#define CMD_SENDENVIRON 0x4
-#define CMD_READONLY 0x8
+#define CMD_READONLY 0x4
int flags;
void (*key_binding)(struct cmd *, int);
- int (*check)(struct args *);
enum cmd_retval (*exec)(struct cmd *, struct cmd_q *);
};
@@ -1525,13 +1491,10 @@ extern time_t start_time;
extern char socket_path[MAXPATHLEN];
extern int login_shell;
extern char *environ_path;
-extern pid_t environ_pid;
-extern int environ_session_id;
void logfile(const char *);
const char *getshell(void);
int checkshell(const char *);
int areshell(const char *);
-const char* get_full_path(const char *, const char *);
void setblocking(int, int);
__dead void shell_exec(const char *, const char *);
@@ -1549,16 +1512,19 @@ int format_cmp(struct format_entry *, struct format_entry *);
RB_PROTOTYPE(format_tree, format_entry, entry, format_cmp);
struct format_tree *format_create(void);
void format_free(struct format_tree *);
-void printflike3 format_add(
- struct format_tree *, const char *, const char *, ...);
+void printflike3 format_add(struct format_tree *, const char *, const char *,
+ ...);
const char *format_find(struct format_tree *, const char *);
char *format_expand(struct format_tree *, const char *);
void format_session(struct format_tree *, struct session *);
void format_client(struct format_tree *, struct client *);
-void format_winlink(
- struct format_tree *, struct session *, struct winlink *);
-void format_window_pane(struct format_tree *, struct window_pane *);
-void format_paste_buffer(struct format_tree *, struct paste_buffer *);
+void format_window(struct format_tree *, struct window *);
+void format_winlink(struct format_tree *, struct session *,
+ struct winlink *);
+void format_window_pane(struct format_tree *,
+ struct window_pane *);
+void format_paste_buffer(struct format_tree *,
+ struct paste_buffer *);
/* mode-key.c */
extern const struct mode_key_table mode_key_tables[];
@@ -1764,7 +1730,6 @@ int cmd_find_index(struct cmd_q *, const char *,
struct winlink *cmd_find_pane(struct cmd_q *, const char *, struct session **,
struct window_pane **);
char *cmd_template_replace(const char *, const char *, int);
-const char *cmd_get_default_path(struct cmd_q *, const char *);
extern const struct cmd_entry *cmd_table[];
extern const struct cmd_entry cmd_attach_session_entry;
extern const struct cmd_entry cmd_bind_key_entry;
@@ -1855,7 +1820,8 @@ extern const struct cmd_entry cmd_up_pane_entry;
extern const struct cmd_entry cmd_wait_for_entry;
/* cmd-attach-session.c */
-enum cmd_retval cmd_attach_session(struct cmd_q *, const char*, int, int);
+enum cmd_retval cmd_attach_session(struct cmd_q *, const char *, int, int,
+ const char *);
/* cmd-list.c */
struct cmd_list *cmd_list_parse(int, char **, const char *, u_int, char **);
@@ -1868,7 +1834,7 @@ int cmdq_free(struct cmd_q *);
void printflike2 cmdq_print(struct cmd_q *, const char *, ...);
void printflike2 cmdq_info(struct cmd_q *, const char *, ...);
void printflike2 cmdq_error(struct cmd_q *, const char *, ...);
-int cmdq_guard(struct cmd_q *, const char *);
+int cmdq_guard(struct cmd_q *, const char *, int);
void cmdq_run(struct cmd_q *, struct cmd_list *);
void cmdq_append(struct cmd_q *, struct cmd_list *);
int cmdq_continue(struct cmd_q *);
@@ -1919,10 +1885,10 @@ void server_window_loop(void);
/* server-fn.c */
void server_fill_environ(struct session *, struct environ *);
void server_write_ready(struct client *);
-int server_write_client(
- struct client *, enum msgtype, const void *, size_t);
-void server_write_session(
- struct session *, enum msgtype, const void *, size_t);
+int server_write_client(struct client *, enum msgtype, const void *,
+ size_t);
+void server_write_session(struct session *, enum msgtype, const void *,
+ size_t);
void server_redraw_client(struct client *);
void server_status_client(struct client *);
void server_redraw_session(struct session *);
@@ -2144,9 +2110,9 @@ void winlink_stack_remove(struct winlink_stack *, struct winlink *);
int window_index(struct window *, u_int *);
struct window *window_find_by_id(u_int);
struct window *window_create1(u_int, u_int);
-struct window *window_create(const char *, const char *, const char *,
- const char *, struct environ *, struct termios *,
- u_int, u_int, u_int, char **);
+struct window *window_create(const char *, const char *, const char *, int,
+ struct environ *, struct termios *, u_int, u_int, u_int,
+ char **);
void window_destroy(struct window *);
struct window_pane *window_get_active_at(struct window *, u_int, u_int);
void window_set_active_at(struct window *, u_int, u_int);
@@ -2170,8 +2136,8 @@ struct window_pane *window_pane_create(struct window *, u_int, u_int, u_int);
void window_pane_destroy(struct window_pane *);
void window_pane_timer_start(struct window_pane *);
int window_pane_spawn(struct window_pane *, const char *,
- const char *, const char *, struct environ *,
- struct termios *, char **);
+ const char *, int, struct environ *, struct termios *,
+ char **);
void window_pane_resize(struct window_pane *, u_int, u_int);
void window_pane_alternate_on(struct window_pane *,
struct grid_cell *, int);
@@ -2272,8 +2238,10 @@ void window_choose_collapse_all(struct window_pane *);
void window_choose_set_current(struct window_pane *, u_int);
/* names.c */
-void queue_window_name(struct window *);
-char *default_window_name(struct window *);
+void queue_window_name(struct window *);
+char *default_window_name(struct window *);
+char *format_window_name(struct window *);
+char *parse_window_name(const char *);
/* signal.c */
void set_signals(void(*)(int, short, void *));
@@ -2305,7 +2273,7 @@ RB_PROTOTYPE(sessions, session, entry, session_cmp);
int session_alive(struct session *);
struct session *session_find(const char *);
struct session *session_find_by_id(u_int);
-struct session *session_create(const char *, const char *, const char *,
+struct session *session_create(const char *, const char *, int,
struct environ *, struct termios *, int, u_int, u_int,
char **);
void session_destroy(struct session *);
@@ -2313,8 +2281,8 @@ int session_check_name(const char *);
void session_update_activity(struct session *);
struct session *session_next_session(struct session *);
struct session *session_previous_session(struct session *);
-struct winlink *session_new(struct session *,
- const char *, const char *, const char *, int, char **);
+struct winlink *session_new(struct session *, const char *, const char *, int,
+ int, char **);
struct winlink *session_attach(
struct session *, struct window *, int, char **);
int session_detach(struct session *, struct winlink *);
@@ -2340,10 +2308,8 @@ int utf8_append(struct utf8_data *, u_char);
u_int utf8_combine(const struct utf8_data *);
u_int utf8_split2(u_int, u_char *);
-/* osdep-*.c */
-char *osdep_get_name(int, char *);
-char *osdep_get_cwd(int);
-struct event_base *osdep_event_init(void);
+/* procname.c */
+char *get_proc_name(int, char *);
/* log.c */
void log_open(int, const char *);