xref: /openbsd-src/usr.bin/tmux/tmux.1 (revision 1a8dbaac879b9f3335ad7fb25429ce63ac1d6bac)
1.\" $OpenBSD: tmux.1,v 1.799 2020/10/09 19:12:36 tim Exp $
2.\"
3.\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
4.\"
5.\" Permission to use, copy, modify, and distribute this software for any
6.\" purpose with or without fee is hereby granted, provided that the above
7.\" copyright notice and this permission notice appear in all copies.
8.\"
9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13.\" WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
14.\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
15.\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16.\"
17.Dd $Mdocdate: October 9 2020 $
18.Dt TMUX 1
19.Os
20.Sh NAME
21.Nm tmux
22.Nd terminal multiplexer
23.Sh SYNOPSIS
24.Nm tmux
25.Bk -words
26.Op Fl 2CDluvV
27.Op Fl c Ar shell-command
28.Op Fl f Ar file
29.Op Fl L Ar socket-name
30.Op Fl S Ar socket-path
31.Op Fl T Ar features
32.Op Ar command Op Ar flags
33.Ek
34.Sh DESCRIPTION
35.Nm
36is a terminal multiplexer:
37it enables a number of terminals to be created, accessed, and
38controlled from a single screen.
39.Nm
40may be detached from a screen
41and continue running in the background,
42then later reattached.
43.Pp
44When
45.Nm
46is started it creates a new
47.Em session
48with a single
49.Em window
50and displays it on screen.
51A status line at the bottom of the screen
52shows information on the current session
53and is used to enter interactive commands.
54.Pp
55A session is a single collection of
56.Em pseudo terminals
57under the management of
58.Nm .
59Each session has one or more
60windows linked to it.
61A window occupies the entire screen
62and may be split into rectangular panes,
63each of which is a separate pseudo terminal
64(the
65.Xr pty 4
66manual page documents the technical details of pseudo terminals).
67Any number of
68.Nm
69instances may connect to the same session,
70and any number of windows may be present in the same session.
71Once all sessions are killed,
72.Nm
73exits.
74.Pp
75Each session is persistent and will survive accidental disconnection
76(such as
77.Xr ssh 1
78connection timeout) or intentional detaching (with the
79.Ql C-b d
80key strokes).
81.Nm
82may be reattached using:
83.Pp
84.Dl $ tmux attach
85.Pp
86In
87.Nm ,
88a session is displayed on screen by a
89.Em client
90and all sessions are managed by a single
91.Em server .
92The server and each client are separate processes which communicate through a
93socket in
94.Pa /tmp .
95.Pp
96The options are as follows:
97.Bl -tag -width "XXXXXXXXXXXX"
98.It Fl 2
99Force
100.Nm
101to assume the terminal supports 256 colours.
102This is equivalent to
103.Fl T Ar 256 .
104.It Fl C
105Start in control mode (see the
106.Sx CONTROL MODE
107section).
108Given twice
109.Xo ( Fl CC ) Xc
110disables echo.
111.It Fl c Ar shell-command
112Execute
113.Ar shell-command
114using the default shell.
115If necessary, the
116.Nm
117server will be started to retrieve the
118.Ic default-shell
119option.
120This option is for compatibility with
121.Xr sh 1
122when
123.Nm
124is used as a login shell.
125.It Fl D
126Do not start the
127.Nm
128server as a daemon.
129This also turns the
130.Ic exit-empty
131option off.
132With
133.Fl D ,
134.Ar command
135may not be specified.
136.It Fl f Ar file
137Specify an alternative configuration file.
138By default,
139.Nm
140loads the system configuration file from
141.Pa /etc/tmux.conf ,
142if present, then looks for a user configuration file at
143.Pa ~/.tmux.conf .
144.Pp
145The configuration file is a set of
146.Nm
147commands which are executed in sequence when the server is first started.
148.Nm
149loads configuration files once when the server process has started.
150The
151.Ic source-file
152command may be used to load a file later.
153.Pp
154.Nm
155shows any error messages from commands in configuration files in the first
156session created, and continues to process the rest of the configuration file.
157.It Fl L Ar socket-name
158.Nm
159stores the server socket in a directory under
160.Ev TMUX_TMPDIR
161or
162.Pa /tmp
163if it is unset.
164The default socket is named
165.Em default .
166This option allows a different socket name to be specified, allowing several
167independent
168.Nm
169servers to be run.
170Unlike
171.Fl S
172a full path is not necessary: the sockets are all created in a directory
173.Pa tmux-UID
174under the directory given by
175.Ev TMUX_TMPDIR
176or in
177.Pa /tmp .
178The
179.Pa tmux-UID
180directory is created by
181.Nm
182and must not be world readable, writable or executable.
183.Pp
184If the socket is accidentally removed, the
185.Dv SIGUSR1
186signal may be sent to the
187.Nm
188server process to recreate it (note that this will fail if any parent
189directories are missing).
190.It Fl l
191Behave as a login shell.
192This flag currently has no effect and is for compatibility with other shells
193when using tmux as a login shell.
194.It Fl S Ar socket-path
195Specify a full alternative path to the server socket.
196If
197.Fl S
198is specified, the default socket directory is not used and any
199.Fl L
200flag is ignored.
201.It Fl u
202Write UTF-8 output to the terminal even if the first environment
203variable of
204.Ev LC_ALL ,
205.Ev LC_CTYPE ,
206or
207.Ev LANG
208that is set does not contain
209.Qq UTF-8
210or
211.Qq UTF8 .
212This is equivalent to
213.Fl T Ar UTF-8 .
214.It Fl T Ar features
215Set terminal features for the client.
216This is a comma-separated list of features.
217See the
218.Ic terminal-features
219option.
220.It Fl v
221Request verbose logging.
222Log messages will be saved into
223.Pa tmux-client-PID.log
224and
225.Pa tmux-server-PID.log
226files in the current directory, where
227.Em PID
228is the PID of the server or client process.
229If
230.Fl v
231is specified twice, an additional
232.Pa tmux-out-PID.log
233file is generated with a copy of everything
234.Nm
235writes to the terminal.
236.Pp
237The
238.Dv SIGUSR2
239signal may be sent to the
240.Nm
241server process to toggle logging between on (as if
242.Fl v
243was given) and off.
244.It Fl V
245Report the
246.Nm
247version.
248.It Ar command Op Ar flags
249This specifies one of a set of commands used to control
250.Nm ,
251as described in the following sections.
252If no commands are specified, the
253.Ic new-session
254command is assumed.
255.El
256.Sh DEFAULT KEY BINDINGS
257.Nm
258may be controlled from an attached client by using a key combination of a
259prefix key,
260.Ql C-b
261(Ctrl-b) by default, followed by a command key.
262.Pp
263The default command key bindings are:
264.Pp
265.Bl -tag -width "XXXXXXXXXX" -offset indent -compact
266.It C-b
267Send the prefix key (C-b) through to the application.
268.It C-o
269Rotate the panes in the current window forwards.
270.It C-z
271Suspend the
272.Nm
273client.
274.It !
275Break the current pane out of the window.
276.It \&"
277.\" "
278Split the current pane into two, top and bottom.
279.It #
280List all paste buffers.
281.It $
282Rename the current session.
283.It %
284Split the current pane into two, left and right.
285.It &
286Kill the current window.
287.It '
288Prompt for a window index to select.
289.It \&(
290Switch the attached client to the previous session.
291.It \&)
292Switch the attached client to the next session.
293.It ,
294Rename the current window.
295.It -
296Delete the most recently copied buffer of text.
297.It .
298Prompt for an index to move the current window.
299.It 0 to 9
300Select windows 0 to 9.
301.It :
302Enter the
303.Nm
304command prompt.
305.It ;
306Move to the previously active pane.
307.It =
308Choose which buffer to paste interactively from a list.
309.It \&?
310List all key bindings.
311.It D
312Choose a client to detach.
313.It L
314Switch the attached client back to the last session.
315.It \&[
316Enter copy mode to copy text or view the history.
317.It \&]
318Paste the most recently copied buffer of text.
319.It c
320Create a new window.
321.It d
322Detach the current client.
323.It f
324Prompt to search for text in open windows.
325.It i
326Display some information about the current window.
327.It l
328Move to the previously selected window.
329.It m
330Mark the current pane (see
331.Ic select-pane
332.Fl m ) .
333.It M
334Clear the marked pane.
335.It n
336Change to the next window.
337.It o
338Select the next pane in the current window.
339.It p
340Change to the previous window.
341.It q
342Briefly display pane indexes.
343.It r
344Force redraw of the attached client.
345.It s
346Select a new session for the attached client interactively.
347.It t
348Show the time.
349.It w
350Choose the current window interactively.
351.It x
352Kill the current pane.
353.It z
354Toggle zoom state of the current pane.
355.It {
356Swap the current pane with the previous pane.
357.It }
358Swap the current pane with the next pane.
359.It ~
360Show previous messages from
361.Nm ,
362if any.
363.It Page Up
364Enter copy mode and scroll one page up.
365.It Up, Down
366.It Left, Right
367Change to the pane above, below, to the left, or to the right of the current
368pane.
369.It M-1 to M-5
370Arrange panes in one of the five preset layouts: even-horizontal,
371even-vertical, main-horizontal, main-vertical, or tiled.
372.It Space
373Arrange the current window in the next preset layout.
374.It M-n
375Move to the next window with a bell or activity marker.
376.It M-o
377Rotate the panes in the current window backwards.
378.It M-p
379Move to the previous window with a bell or activity marker.
380.It C-Up, C-Down
381.It C-Left, C-Right
382Resize the current pane in steps of one cell.
383.It M-Up, M-Down
384.It M-Left, M-Right
385Resize the current pane in steps of five cells.
386.El
387.Pp
388Key bindings may be changed with the
389.Ic bind-key
390and
391.Ic unbind-key
392commands.
393.Sh COMMAND PARSING AND EXECUTION
394.Nm
395supports a large number of commands which can be used to control its
396behaviour.
397Each command is named and can accept zero or more flags and arguments.
398They may be bound to a key with the
399.Ic bind-key
400command or run from the shell prompt, a shell script, a configuration file or
401the command prompt.
402For example, the same
403.Ic set-option
404command run from the shell prompt, from
405.Pa ~/.tmux.conf
406and bound to a key may look like:
407.Bd -literal -offset indent
408$ tmux set-option -g status-style bg=cyan
409
410set-option -g status-style bg=cyan
411
412bind-key C set-option -g status-style bg=cyan
413.Ed
414.Pp
415Here, the command name is
416.Ql set-option ,
417.Ql Fl g
418is a flag and
419.Ql status-style
420and
421.Ql bg=cyan
422are arguments.
423.Pp
424.Nm
425distinguishes between command parsing and execution.
426In order to execute a command,
427.Nm
428needs it to be split up into its name and arguments.
429This is command parsing.
430If a command is run from the shell, the shell parses it; from inside
431.Nm
432or from a configuration file,
433.Nm
434does.
435Examples of when
436.Nm
437parses commands are:
438.Bl -dash -offset indent
439.It
440in a configuration file;
441.It
442typed at the command prompt (see
443.Ic command-prompt ) ;
444.It
445given to
446.Ic bind-key ;
447.It
448passed as arguments to
449.Ic if-shell
450or
451.Ic confirm-before .
452.El
453.Pp
454To execute commands, each client has a
455.Ql command queue .
456A global command queue not attached to any client is used on startup
457for configuration files like
458.Pa ~/.tmux.conf .
459Parsed commands added to the queue are executed in order.
460Some commands, like
461.Ic if-shell
462and
463.Ic confirm-before ,
464parse their argument to create a new command which is inserted immediately
465after themselves.
466This means that arguments can be parsed twice or more - once when the parent command (such as
467.Ic if-shell )
468is parsed and again when it parses and executes its command.
469Commands like
470.Ic if-shell ,
471.Ic run-shell
472and
473.Ic display-panes
474stop execution of subsequent commands on the queue until something happens -
475.Ic if-shell
476and
477.Ic run-shell
478until a shell command finishes and
479.Ic display-panes
480until a key is pressed.
481For example, the following commands:
482.Bd -literal -offset indent
483new-session; new-window
484if-shell "true" "split-window"
485kill-session
486.Ed
487.Pp
488Will execute
489.Ic new-session ,
490.Ic new-window ,
491.Ic if-shell ,
492the shell command
493.Xr true 1 ,
494.Ic split-window
495and
496.Ic kill-session
497in that order.
498.Pp
499The
500.Sx COMMANDS
501section lists the
502.Nm
503commands and their arguments.
504.Sh PARSING SYNTAX
505This section describes the syntax of commands parsed by
506.Nm ,
507for example in a configuration file or at the command prompt.
508Note that when commands are entered into the shell, they are parsed by the shell
509- see for example
510.Xr ksh 1
511or
512.Xr csh 1 .
513.Pp
514Each command is terminated by a newline or a semicolon (;).
515Commands separated by semicolons together form a
516.Ql command sequence
517- if a command in the sequence encounters an error, no subsequent commands are
518executed.
519.Pp
520Comments are marked by the unquoted # character - any remaining text after a
521comment is ignored until the end of the line.
522.Pp
523If the last character of a line is \e, the line is joined with the following
524line (the \e and the newline are completely removed).
525This is called line continuation and applies both inside and outside quoted
526strings and in comments, but not inside braces.
527.Pp
528Command arguments may be specified as strings surrounded by single (') quotes,
529double quotes (") or braces ({}).
530.\" "
531This is required when the argument contains any special character.
532Single and double quoted strings cannot span multiple lines except with line
533continuation.
534Braces can span multiple lines.
535.Pp
536Outside of quotes and inside double quotes, these replacements are performed:
537.Bl -dash -offset indent
538.It
539Environment variables preceded by $ are replaced with their value from the
540global environment (see the
541.Sx GLOBAL AND SESSION ENVIRONMENT
542section).
543.It
544A leading ~ or ~user is expanded to the home directory of the current or
545specified user.
546.It
547\euXXXX or \euXXXXXXXX is replaced by the Unicode codepoint corresponding to
548the given four or eight digit hexadecimal number.
549.It
550When preceded (escaped) by a \e, the following characters are replaced: \ee by
551the escape character; \er by a carriage return; \en by a newline; and \et by a
552tab.
553.It
554\eooo is replaced by a character of the octal value ooo.
555Three octal digits are required, for example \e001.
556The largest valid character is \e377.
557.It
558Any other characters preceded by \e are replaced by themselves (that is, the \e
559is removed) and are not treated as having any special meaning - so for example
560\e; will not mark a command sequence and \e$ will not expand an environment
561variable.
562.El
563.Pp
564Braces are parsed as a configuration file (so conditions such as
565.Ql %if
566are processed) and then converted into a string.
567They are designed to avoid the need for additional escaping when passing a
568group of
569.Nm
570commands as an argument (for example to
571.Ic if-shell ) .
572These two examples produce an identical command - note that no escaping is
573needed when using {}:
574.Bd -literal -offset indent
575if-shell true {
576    display -p 'brace-dollar-foo: }$foo'
577}
578
579if-shell true "display -p 'brace-dollar-foo: }\e$foo'"
580.Ed
581.Pp
582Braces may be enclosed inside braces, for example:
583.Bd -literal -offset indent
584bind x if-shell "true" {
585    if-shell "true" {
586        display "true!"
587    }
588}
589.Ed
590.Pp
591Environment variables may be set by using the syntax
592.Ql name=value ,
593for example
594.Ql HOME=/home/user .
595Variables set during parsing are added to the global environment.
596A hidden variable may be set with
597.Ql %hidden ,
598for example:
599.Bd -literal -offset indent
600%hidden MYVAR=42
601.Ed
602.Pp
603Hidden variables are not passed to the environment of processes created
604by tmux.
605See the
606.Sx GLOBAL AND SESSION ENVIRONMENT
607section.
608.Pp
609Commands may be parsed conditionally by surrounding them with
610.Ql %if ,
611.Ql %elif ,
612.Ql %else
613and
614.Ql %endif .
615The argument to
616.Ql %if
617and
618.Ql %elif
619is expanded as a format (see
620.Sx FORMATS )
621and if it evaluates to false (zero or empty), subsequent text is ignored until
622the closing
623.Ql %elif ,
624.Ql %else
625or
626.Ql %endif .
627For example:
628.Bd -literal -offset indent
629%if "#{==:#{host},myhost}"
630set -g status-style bg=red
631%elif "#{==:#{host},myotherhost}"
632set -g status-style bg=green
633%else
634set -g status-style bg=blue
635%endif
636.Ed
637.Pp
638Will change the status line to red if running on
639.Ql myhost ,
640green if running on
641.Ql myotherhost ,
642or blue if running on another host.
643Conditionals may be given on one line, for example:
644.Bd -literal -offset indent
645%if #{==:#{host},myhost} set -g status-style bg=red %endif
646.Ed
647.Sh COMMANDS
648This section describes the commands supported by
649.Nm .
650Most commands accept the optional
651.Fl t
652(and sometimes
653.Fl s )
654argument with one of
655.Ar target-client ,
656.Ar target-session ,
657.Ar target-window ,
658or
659.Ar target-pane .
660These specify the client, session, window or pane which a command should affect.
661.Pp
662.Ar target-client
663should be the name of the client,
664typically the
665.Xr pty 4
666file to which the client is connected, for example either of
667.Pa /dev/ttyp1
668or
669.Pa ttyp1
670for the client attached to
671.Pa /dev/ttyp1 .
672If no client is specified,
673.Nm
674attempts to work out the client currently in use; if that fails, an error is
675reported.
676Clients may be listed with the
677.Ic list-clients
678command.
679.Pp
680.Ar target-session
681is tried as, in order:
682.Bl -enum -offset Ds
683.It
684A session ID prefixed with a $.
685.It
686An exact name of a session (as listed by the
687.Ic list-sessions
688command).
689.It
690The start of a session name, for example
691.Ql mysess
692would match a session named
693.Ql mysession .
694.It
695An
696.Xr fnmatch 3
697pattern which is matched against the session name.
698.El
699.Pp
700If the session name is prefixed with an
701.Ql = ,
702only an exact match is accepted (so
703.Ql =mysess
704will only match exactly
705.Ql mysess ,
706not
707.Ql mysession ) .
708.Pp
709If a single session is found, it is used as the target session; multiple matches
710produce an error.
711If a session is omitted, the current session is used if available; if no
712current session is available, the most recently used is chosen.
713.Pp
714.Ar target-window
715(or
716.Ar src-window
717or
718.Ar dst-window )
719specifies a window in the form
720.Em session Ns \&: Ns Em window .
721.Em session
722follows the same rules as for
723.Ar target-session ,
724and
725.Em window
726is looked for in order as:
727.Bl -enum -offset Ds
728.It
729A special token, listed below.
730.It
731A window index, for example
732.Ql mysession:1
733is window 1 in session
734.Ql mysession .
735.It
736A window ID, such as @1.
737.It
738An exact window name, such as
739.Ql mysession:mywindow .
740.It
741The start of a window name, such as
742.Ql mysession:mywin .
743.It
744As an
745.Xr fnmatch 3
746pattern matched against the window name.
747.El
748.Pp
749Like sessions, a
750.Ql =
751prefix will do an exact match only.
752An empty window name specifies the next unused index if appropriate (for
753example the
754.Ic new-window
755and
756.Ic link-window
757commands)
758otherwise the current window in
759.Em session
760is chosen.
761.Pp
762The following special tokens are available to indicate particular windows.
763Each has a single-character alternative form.
764.Bl -column "XXXXXXXXXX" "X"
765.It Sy "Token" Ta Sy "" Ta Sy "Meaning"
766.It Li "{start}" Ta "^" Ta "The lowest-numbered window"
767.It Li "{end}" Ta "$" Ta "The highest-numbered window"
768.It Li "{last}" Ta "!" Ta "The last (previously current) window"
769.It Li "{next}" Ta "+" Ta "The next window by number"
770.It Li "{previous}" Ta "-" Ta "The previous window by number"
771.El
772.Pp
773.Ar target-pane
774(or
775.Ar src-pane
776or
777.Ar dst-pane )
778may be a pane ID or takes a similar form to
779.Ar target-window
780but with the optional addition of a period followed by a pane index or pane ID,
781for example:
782.Ql mysession:mywindow.1 .
783If the pane index is omitted, the currently active pane in the specified
784window is used.
785The following special tokens are available for the pane index:
786.Bl -column "XXXXXXXXXXXXXX" "X"
787.It Sy "Token" Ta Sy "" Ta Sy "Meaning"
788.It Li "{last}" Ta "!" Ta "The last (previously active) pane"
789.It Li "{next}" Ta "+" Ta "The next pane by number"
790.It Li "{previous}" Ta "-" Ta "The previous pane by number"
791.It Li "{top}" Ta "" Ta "The top pane"
792.It Li "{bottom}" Ta "" Ta "The bottom pane"
793.It Li "{left}" Ta "" Ta "The leftmost pane"
794.It Li "{right}" Ta "" Ta "The rightmost pane"
795.It Li "{top-left}" Ta "" Ta "The top-left pane"
796.It Li "{top-right}" Ta "" Ta "The top-right pane"
797.It Li "{bottom-left}" Ta "" Ta "The bottom-left pane"
798.It Li "{bottom-right}" Ta "" Ta "The bottom-right pane"
799.It Li "{up-of}" Ta "" Ta "The pane above the active pane"
800.It Li "{down-of}" Ta "" Ta "The pane below the active pane"
801.It Li "{left-of}" Ta "" Ta "The pane to the left of the active pane"
802.It Li "{right-of}" Ta "" Ta "The pane to the right of the active pane"
803.El
804.Pp
805The tokens
806.Ql +
807and
808.Ql -
809may be followed by an offset, for example:
810.Bd -literal -offset indent
811select-window -t:+2
812.Ed
813.Pp
814In addition,
815.Em target-session ,
816.Em target-window
817or
818.Em target-pane
819may consist entirely of the token
820.Ql {mouse}
821(alternative form
822.Ql = )
823to specify the session, window or pane where the most recent mouse event occurred
824(see the
825.Sx MOUSE SUPPORT
826section)
827or
828.Ql {marked}
829(alternative form
830.Ql ~ )
831to specify the marked pane (see
832.Ic select-pane
833.Fl m ) .
834.Pp
835Sessions, window and panes are each numbered with a unique ID; session IDs are
836prefixed with a
837.Ql $ ,
838windows with a
839.Ql @ ,
840and panes with a
841.Ql % .
842These are unique and are unchanged for the life of the session, window or pane
843in the
844.Nm
845server.
846The pane ID is passed to the child process of the pane in the
847.Ev TMUX_PANE
848environment variable.
849IDs may be displayed using the
850.Ql session_id ,
851.Ql window_id ,
852or
853.Ql pane_id
854formats (see the
855.Sx FORMATS
856section) and the
857.Ic display-message ,
858.Ic list-sessions ,
859.Ic list-windows
860or
861.Ic list-panes
862commands.
863.Pp
864.Ar shell-command
865arguments are
866.Xr sh 1
867commands.
868This may be a single argument passed to the shell, for example:
869.Bd -literal -offset indent
870new-window 'vi /etc/passwd'
871.Ed
872.Pp
873Will run:
874.Bd -literal -offset indent
875/bin/sh -c 'vi /etc/passwd'
876.Ed
877.Pp
878Additionally, the
879.Ic new-window ,
880.Ic new-session ,
881.Ic split-window ,
882.Ic respawn-window
883and
884.Ic respawn-pane
885commands allow
886.Ar shell-command
887to be given as multiple arguments and executed directly (without
888.Ql sh -c ) .
889This can avoid issues with shell quoting.
890For example:
891.Bd -literal -offset indent
892$ tmux new-window vi /etc/passwd
893.Ed
894.Pp
895Will run
896.Xr vi 1
897directly without invoking the shell.
898.Pp
899.Ar command
900.Op Ar arguments
901refers to a
902.Nm
903command, either passed with the command and arguments separately, for example:
904.Bd -literal -offset indent
905bind-key F1 set-option status off
906.Ed
907.Pp
908Or passed as a single string argument in
909.Pa .tmux.conf ,
910for example:
911.Bd -literal -offset indent
912bind-key F1 { set-option status off }
913.Ed
914.Pp
915Example
916.Nm
917commands include:
918.Bd -literal -offset indent
919refresh-client -t/dev/ttyp2
920
921rename-session -tfirst newname
922
923set-option -wt:0 monitor-activity on
924
925new-window ; split-window -d
926
927bind-key R source-file ~/.tmux.conf \e; \e
928	display-message "source-file done"
929.Ed
930.Pp
931Or from
932.Xr sh 1 :
933.Bd -literal -offset indent
934$ tmux kill-window -t :1
935
936$ tmux new-window \e; split-window -d
937
938$ tmux new-session -d 'vi /etc/passwd' \e; split-window -d \e; attach
939.Ed
940.Sh CLIENTS AND SESSIONS
941The
942.Nm
943server manages clients, sessions, windows and panes.
944Clients are attached to sessions to interact with them, either
945when they are created with the
946.Ic new-session
947command, or later with the
948.Ic attach-session
949command.
950Each session has one or more windows
951.Em linked
952into it.
953Windows may be linked to multiple sessions and are made up of one or
954more panes,
955each of which contains a pseudo terminal.
956Commands for creating, linking and otherwise manipulating windows
957are covered
958in the
959.Sx WINDOWS AND PANES
960section.
961.Pp
962The following commands are available to manage clients and sessions:
963.Bl -tag -width Ds
964.It Xo Ic attach-session
965.Op Fl dErx
966.Op Fl c Ar working-directory
967.Op Fl f Ar flags
968.Op Fl t Ar target-session
969.Xc
970.D1 (alias: Ic attach )
971If run from outside
972.Nm ,
973create a new client in the current terminal and attach it to
974.Ar target-session .
975If used from inside, switch the current client.
976If
977.Fl d
978is specified, any other clients attached to the session are detached.
979If
980.Fl x
981is given, send
982.Dv SIGHUP
983to the parent process of the client as well as
984detaching the client, typically causing it to exit.
985.Fl f
986sets a comma-separated list of client flags.
987The flags are:
988.Bl -tag -width Ds
989.It active-pane
990the client has an independent active pane
991.It ignore-size
992the client does not affect the size of other clients
993.It no-output
994the client does not receive pane output in control mode
995.It pause-after=seconds
996output is paused once the pane is
997.Ar seconds
998behind in control mode
999.It read-only
1000the client is read-only
1001.It wait-exit
1002wait for an empty line input before exiting in control mode
1003.El
1004.Pp
1005A leading
1006.Ql \&!
1007turns a flag off if the client is already attached.
1008.Fl r
1009is an alias for
1010.Fl f
1011.Ar read-only,ignore-size .
1012When a client is read-only, only keys bound to the
1013.Ic detach-client
1014or
1015.Ic switch-client
1016commands have any effect.
1017A client with the
1018.Ar active-pane
1019flag allows the active pane to be selected independently of the window's active
1020pane used by clients without the flag.
1021This only affects the cursor position and commands issued from the client;
1022other features such as hooks and styles continue to use the window's active
1023pane.
1024.Pp
1025If no server is started,
1026.Ic attach-session
1027will attempt to start it; this will fail unless sessions are created in the
1028configuration file.
1029.Pp
1030The
1031.Ar target-session
1032rules for
1033.Ic attach-session
1034are slightly adjusted: if
1035.Nm
1036needs to select the most recently used session, it will prefer the most
1037recently used
1038.Em unattached
1039session.
1040.Pp
1041.Fl c
1042will set the session working directory (used for new windows) to
1043.Ar working-directory .
1044.Pp
1045If
1046.Fl E
1047is used, the
1048.Ic update-environment
1049option will not be applied.
1050.It Xo Ic detach-client
1051.Op Fl aP
1052.Op Fl E Ar shell-command
1053.Op Fl s Ar target-session
1054.Op Fl t Ar target-client
1055.Xc
1056.D1 (alias: Ic detach )
1057Detach the current client if bound to a key, the client specified with
1058.Fl t ,
1059or all clients currently attached to the session specified by
1060.Fl s .
1061The
1062.Fl a
1063option kills all but the client given with
1064.Fl t .
1065If
1066.Fl P
1067is given, send
1068.Dv SIGHUP
1069to the parent process of the client, typically causing it
1070to exit.
1071With
1072.Fl E ,
1073run
1074.Ar shell-command
1075to replace the client.
1076.It Ic has-session Op Fl t Ar target-session
1077.D1 (alias: Ic has )
1078Report an error and exit with 1 if the specified session does not exist.
1079If it does exist, exit with 0.
1080.It Ic kill-server
1081Kill the
1082.Nm
1083server and clients and destroy all sessions.
1084.It Xo Ic kill-session
1085.Op Fl aC
1086.Op Fl t Ar target-session
1087.Xc
1088Destroy the given session, closing any windows linked to it and no other
1089sessions, and detaching all clients attached to it.
1090If
1091.Fl a
1092is given, all sessions but the specified one is killed.
1093The
1094.Fl C
1095flag clears alerts (bell, activity, or silence) in all windows linked to the
1096session.
1097.It Xo Ic list-clients
1098.Op Fl F Ar format
1099.Op Fl t Ar target-session
1100.Xc
1101.D1 (alias: Ic lsc )
1102List all clients attached to the server.
1103For the meaning of the
1104.Fl F
1105flag, see the
1106.Sx FORMATS
1107section.
1108If
1109.Ar target-session
1110is specified, list only clients connected to that session.
1111.It Xo Ic list-commands
1112.Op Fl F Ar format
1113.Op Ar command
1114.Xc
1115.D1 (alias: Ic lscm )
1116List the syntax of
1117.Ar command
1118or - if omitted - of all commands supported by
1119.Nm .
1120.It Xo Ic list-sessions
1121.Op Fl F Ar format
1122.Op Fl f Ar filter
1123.Xc
1124.D1 (alias: Ic ls )
1125List all sessions managed by the server.
1126.Fl F
1127specifies the format of each line and
1128.Fl f
1129a filter.
1130Only sessions for which the filter is true are shown.
1131See the
1132.Sx FORMATS
1133section.
1134.It Ic lock-client Op Fl t Ar target-client
1135.D1 (alias: Ic lockc )
1136Lock
1137.Ar target-client ,
1138see the
1139.Ic lock-server
1140command.
1141.It Ic lock-session Op Fl t Ar target-session
1142.D1 (alias: Ic locks )
1143Lock all clients attached to
1144.Ar target-session .
1145.It Xo Ic new-session
1146.Op Fl AdDEPX
1147.Op Fl c Ar start-directory
1148.Op Fl e Ar environment
1149.Op Fl f Ar flags
1150.Op Fl F Ar format
1151.Op Fl n Ar window-name
1152.Op Fl s Ar session-name
1153.Op Fl t Ar group-name
1154.Op Fl x Ar width
1155.Op Fl y Ar height
1156.Op Ar shell-command
1157.Xc
1158.D1 (alias: Ic new )
1159Create a new session with name
1160.Ar session-name .
1161.Pp
1162The new session is attached to the current terminal unless
1163.Fl d
1164is given.
1165.Ar window-name
1166and
1167.Ar shell-command
1168are the name of and shell command to execute in the initial window.
1169With
1170.Fl d ,
1171the initial size comes from the global
1172.Ic default-size
1173option;
1174.Fl x
1175and
1176.Fl y
1177can be used to specify a different size.
1178.Ql -
1179uses the size of the current client if any.
1180If
1181.Fl x
1182or
1183.Fl y
1184is given, the
1185.Ic default-size
1186option is set for the session.
1187.Fl f
1188sets a comma-separated list of client flags (see
1189.Ic attach-session ) .
1190.Pp
1191If run from a terminal, any
1192.Xr termios 4
1193special characters are saved and used for new windows in the new session.
1194.Pp
1195The
1196.Fl A
1197flag makes
1198.Ic new-session
1199behave like
1200.Ic attach-session
1201if
1202.Ar session-name
1203already exists; in this case,
1204.Fl D
1205behaves like
1206.Fl d
1207to
1208.Ic attach-session ,
1209and
1210.Fl X
1211behaves like
1212.Fl x
1213to
1214.Ic attach-session .
1215.Pp
1216If
1217.Fl t
1218is given, it specifies a
1219.Ic session group .
1220Sessions in the same group share the same set of windows - new windows are
1221linked to all sessions in the group and any windows closed removed from all
1222sessions.
1223The current and previous window and any session options remain independent and
1224any session in a group may be killed without affecting the others.
1225The
1226.Ar group-name
1227argument may be:
1228.Bl -enum -width Ds
1229.It
1230the name of an existing group, in which case the new session is added to that
1231group;
1232.It
1233the name of an existing session - the new session is added to the same group
1234as that session, creating a new group if necessary;
1235.It
1236the name for a new group containing only the new session.
1237.El
1238.Pp
1239.Fl n
1240and
1241.Ar shell-command
1242are invalid if
1243.Fl t
1244is used.
1245.Pp
1246The
1247.Fl P
1248option prints information about the new session after it has been created.
1249By default, it uses the format
1250.Ql #{session_name}:\&
1251but a different format may be specified with
1252.Fl F .
1253.Pp
1254If
1255.Fl E
1256is used, the
1257.Ic update-environment
1258option will not be applied.
1259.Fl e
1260takes the form
1261.Ql VARIABLE=value
1262and sets an environment variable for the newly created session; it may be
1263specified multiple times.
1264.It Xo Ic refresh-client
1265.Op Fl cDlLRSU
1266.Op Fl A Ar pane:state
1267.Op Fl B Ar name:what:format
1268.Op Fl C Ar XxY
1269.Op Fl f Ar flags
1270.Op Fl t Ar target-client
1271.Op Ar adjustment
1272.Xc
1273.D1 (alias: Ic refresh )
1274Refresh the current client if bound to a key, or a single client if one is given
1275with
1276.Fl t .
1277If
1278.Fl S
1279is specified, only update the client's status line.
1280.Pp
1281The
1282.Fl U ,
1283.Fl D ,
1284.Fl L
1285.Fl R ,
1286and
1287.Fl c
1288flags allow the visible portion of a window which is larger than the client
1289to be changed.
1290.Fl U
1291moves the visible part up by
1292.Ar adjustment
1293rows and
1294.Fl D
1295down,
1296.Fl L
1297left by
1298.Ar adjustment
1299columns and
1300.Fl R
1301right.
1302.Fl c
1303returns to tracking the cursor automatically.
1304If
1305.Ar adjustment
1306is omitted, 1 is used.
1307Note that the visible position is a property of the client not of the
1308window, changing the current window in the attached session will reset
1309it.
1310.Pp
1311.Fl C
1312sets the width and height of a control mode client.
1313.Fl A
1314allows a control mode client to trigger actions on a pane.
1315The argument is a pane ID (with leading
1316.Ql % ) ,
1317a colon, then one of
1318.Ql on ,
1319.Ql off ,
1320.Ql continue
1321or
1322.Ql pause .
1323If
1324.Ql off ,
1325.Nm
1326will not send output from the pane to the client and if all clients have turned
1327the pane off, will stop reading from the pane.
1328If
1329.Ql continue ,
1330.Nm
1331will return to sending output to the pane if it was paused (manually or with the
1332.Ar pause-after
1333flag).
1334If
1335.Ql pause ,
1336.Nm
1337will pause the pane.
1338.Fl A
1339may be given multiple times for different panes.
1340.Pp
1341.Fl B
1342sets a subscription to a format for a control mode client.
1343The argument is split into three items by colons:
1344.Ar name
1345is a name for the subscription;
1346.Ar what
1347is a type of item to subscribe to;
1348.Ar format
1349is the format.
1350After a subscription is added, changes to the format are reported with the
1351.Ic %subscription-changed
1352notification, at most once a second.
1353If only the name is given, the subscription is removed.
1354.Ar what
1355may be empty to check the format only for the attached session, or one of:
1356a pane ID such as
1357.Ql %0 ;
1358.Ql %*
1359for all panes in the attached session;
1360an window ID such as
1361.Ql @0 ;
1362or
1363.Ql @*
1364for all windows in the attached session.
1365.Pp
1366.Fl f
1367sets a comma-separated list of client flags, see
1368.Ic attach-session .
1369.Pp
1370.Fl l
1371requests the clipboard from the client using the
1372.Xr xterm 1
1373escape sequence and stores it in a new paste buffer.
1374.Pp
1375.Fl L ,
1376.Fl R ,
1377.Fl U
1378and
1379.Fl D
1380move the visible portion of the window left, right, up or down
1381by
1382.Ar adjustment ,
1383if the window is larger than the client.
1384.Fl c
1385resets so that the position follows the cursor.
1386See the
1387.Ic window-size
1388option.
1389.It Xo Ic rename-session
1390.Op Fl t Ar target-session
1391.Ar new-name
1392.Xc
1393.D1 (alias: Ic rename )
1394Rename the session to
1395.Ar new-name .
1396.It Xo Ic show-messages
1397.Op Fl JT
1398.Op Fl t Ar target-client
1399.Xc
1400.D1 (alias: Ic showmsgs )
1401Show server messages or information.
1402Messages are stored, up to a maximum of the limit set by the
1403.Ar message-limit
1404server option.
1405.Fl J
1406and
1407.Fl T
1408show debugging information about jobs and terminals.
1409.It Xo Ic source-file
1410.Op Fl Fnqv
1411.Ar path
1412.Ar ...
1413.Xc
1414.D1 (alias: Ic source )
1415Execute commands from one or more files specified by
1416.Ar path
1417(which may be
1418.Xr glob 7
1419patterns).
1420If
1421.Fl F
1422is present, then
1423.Ar path
1424is expanded as a format.
1425If
1426.Fl q
1427is given, no error will be returned if
1428.Ar path
1429does not exist.
1430With
1431.Fl n ,
1432the file is parsed but no commands are executed.
1433.Fl v
1434shows the parsed commands and line numbers if possible.
1435.It Ic start-server
1436.D1 (alias: Ic start )
1437Start the
1438.Nm
1439server, if not already running, without creating any sessions.
1440.Pp
1441Note that as by default the
1442.Nm
1443server will exit with no sessions, this is only useful if a session is created in
1444.Pa ~/.tmux.conf ,
1445.Ic exit-empty
1446is turned off, or another command is run as part of the same command sequence.
1447For example:
1448.Bd -literal -offset indent
1449$ tmux start \\; show -g
1450.Ed
1451.It Xo Ic suspend-client
1452.Op Fl t Ar target-client
1453.Xc
1454.D1 (alias: Ic suspendc )
1455Suspend a client by sending
1456.Dv SIGTSTP
1457(tty stop).
1458.It Xo Ic switch-client
1459.Op Fl ElnprZ
1460.Op Fl c Ar target-client
1461.Op Fl t Ar target-session
1462.Op Fl T Ar key-table
1463.Xc
1464.D1 (alias: Ic switchc )
1465Switch the current session for client
1466.Ar target-client
1467to
1468.Ar target-session .
1469As a special case,
1470.Fl t
1471may refer to a pane (a target that contains
1472.Ql \&: ,
1473.Ql \&.
1474or
1475.Ql % ) ,
1476to change session, window and pane.
1477In that case,
1478.Fl Z
1479keeps the window zoomed if it was zoomed.
1480If
1481.Fl l ,
1482.Fl n
1483or
1484.Fl p
1485is used, the client is moved to the last, next or previous session
1486respectively.
1487.Fl r
1488toggles the client
1489.Ic read-only
1490and
1491.Ic ignore-size
1492flags (see the
1493.Ic attach-session
1494command).
1495.Pp
1496If
1497.Fl E
1498is used,
1499.Ic update-environment
1500option will not be applied.
1501.Pp
1502.Fl T
1503sets the client's key table; the next key from the client will be interpreted
1504from
1505.Ar key-table .
1506This may be used to configure multiple prefix keys, or to bind commands to
1507sequences of keys.
1508For example, to make typing
1509.Ql abc
1510run the
1511.Ic list-keys
1512command:
1513.Bd -literal -offset indent
1514bind-key -Ttable2 c list-keys
1515bind-key -Ttable1 b switch-client -Ttable2
1516bind-key -Troot   a switch-client -Ttable1
1517.Ed
1518.El
1519.Sh WINDOWS AND PANES
1520Each window displayed by
1521.Nm
1522may be split into one or more
1523.Em panes ;
1524each pane takes up a certain area of the display and is a separate terminal.
1525A window may be split into panes using the
1526.Ic split-window
1527command.
1528Windows may be split horizontally (with the
1529.Fl h
1530flag) or vertically.
1531Panes may be resized with the
1532.Ic resize-pane
1533command (bound to
1534.Ql C-Up ,
1535.Ql C-Down
1536.Ql C-Left
1537and
1538.Ql C-Right
1539by default), the current pane may be changed with the
1540.Ic select-pane
1541command and the
1542.Ic rotate-window
1543and
1544.Ic swap-pane
1545commands may be used to swap panes without changing their position.
1546Panes are numbered beginning from zero in the order they are created.
1547.Pp
1548By default, a
1549.Nm
1550pane permits direct access to the terminal contained in the pane.
1551A pane may also be put into one of several modes:
1552.Bl -dash -offset indent
1553.It
1554Copy mode, which permits a section of a window or its
1555history to be copied to a
1556.Em paste buffer
1557for later insertion into another window.
1558This mode is entered with the
1559.Ic copy-mode
1560command, bound to
1561.Ql \&[
1562by default.
1563Copied text can be pasted with the
1564.Ic paste-buffer
1565command, bound to
1566.Ql \&] .
1567.It
1568View mode, which is like copy mode but is entered when a command that produces
1569output, such as
1570.Ic list-keys ,
1571is executed from a key binding.
1572.It
1573Choose mode, which allows an item to be chosen from a list.
1574This may be a client, a session or window or pane, or a buffer.
1575This mode is entered with the
1576.Ic choose-buffer ,
1577.Ic choose-client
1578and
1579.Ic choose-tree
1580commands.
1581.El
1582.Pp
1583In copy mode an indicator is displayed in the top-right corner of the pane with
1584the current position and the number of lines in the history.
1585.Pp
1586Commands are sent to copy mode using the
1587.Fl X
1588flag to the
1589.Ic send-keys
1590command.
1591When a key is pressed, copy mode automatically uses one of two key tables,
1592depending on the
1593.Ic mode-keys
1594option:
1595.Ic copy-mode
1596for emacs, or
1597.Ic copy-mode-vi
1598for vi.
1599Key tables may be viewed with the
1600.Ic list-keys
1601command.
1602.Pp
1603The following commands are supported in copy mode:
1604.Bl -column "CommandXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" "viXXXXXXXXXX" "emacs" -offset indent
1605.It Sy "Command" Ta Sy "vi" Ta Sy "emacs"
1606.It Li "append-selection" Ta "" Ta ""
1607.It Li "append-selection-and-cancel" Ta "A" Ta ""
1608.It Li "back-to-indentation" Ta "^" Ta "M-m"
1609.It Li "begin-selection" Ta "Space" Ta "C-Space"
1610.It Li "bottom-line" Ta "L" Ta ""
1611.It Li "cancel" Ta "q" Ta "Escape"
1612.It Li "clear-selection" Ta "Escape" Ta "C-g"
1613.It Li "copy-end-of-line [<prefix>]" Ta "D" Ta "C-k"
1614.It Li "copy-line [<prefix>]" Ta "" Ta ""
1615.It Li "copy-pipe [<command>] [<prefix>]" Ta "" Ta ""
1616.It Li "copy-pipe-no-clear [<command>] [<prefix>]" Ta "" Ta ""
1617.It Li "copy-pipe-and-cancel [<command>] [<prefix>]" Ta "" Ta ""
1618.It Li "copy-selection [<prefix>]" Ta "" Ta ""
1619.It Li "copy-selection-no-clear [<prefix>]" Ta "" Ta ""
1620.It Li "copy-selection-and-cancel [<prefix>]" Ta "Enter" Ta "M-w"
1621.It Li "cursor-down" Ta "j" Ta "Down"
1622.It Li "cursor-down-and-cancel" Ta "" Ta ""
1623.It Li "cursor-left" Ta "h" Ta "Left"
1624.It Li "cursor-right" Ta "l" Ta "Right"
1625.It Li "cursor-up" Ta "k" Ta "Up"
1626.It Li "end-of-line" Ta "$" Ta "C-e"
1627.It Li "goto-line <line>" Ta ":" Ta "g"
1628.It Li "halfpage-down" Ta "C-d" Ta "M-Down"
1629.It Li "halfpage-down-and-cancel" Ta "" Ta ""
1630.It Li "halfpage-up" Ta "C-u" Ta "M-Up"
1631.It Li "history-bottom" Ta "G" Ta "M->"
1632.It Li "history-top" Ta "g" Ta "M-<"
1633.It Li "jump-again" Ta ";" Ta ";"
1634.It Li "jump-backward <to>" Ta "F" Ta "F"
1635.It Li "jump-forward <to>" Ta "f" Ta "f"
1636.It Li "jump-reverse" Ta "," Ta ","
1637.It Li "jump-to-backward <to>" Ta "T" Ta ""
1638.It Li "jump-to-forward <to>" Ta "t" Ta ""
1639.It Li "jump-to-mark" Ta "M-x" Ta "M-x"
1640.It Li "middle-line" Ta "M" Ta "M-r"
1641.It Li "next-matching-bracket" Ta "%" Ta "M-C-f"
1642.It Li "next-paragraph" Ta "}" Ta "M-}"
1643.It Li "next-space" Ta "W" Ta ""
1644.It Li "next-space-end" Ta "E" Ta ""
1645.It Li "next-word" Ta "w" Ta ""
1646.It Li "next-word-end" Ta "e" Ta "M-f"
1647.It Li "other-end" Ta "o" Ta ""
1648.It Li "page-down" Ta "C-f" Ta "PageDown"
1649.It Li "page-down-and-cancel" Ta "" Ta ""
1650.It Li "page-up" Ta "C-b" Ta "PageUp"
1651.It Li "previous-matching-bracket" Ta "" Ta "M-C-b"
1652.It Li "previous-paragraph" Ta "{" Ta "M-{"
1653.It Li "previous-space" Ta "B" Ta ""
1654.It Li "previous-word" Ta "b" Ta "M-b"
1655.It Li "rectangle-toggle" Ta "v" Ta "R"
1656.It Li "refresh-from-pane" Ta "r" Ta "r"
1657.It Li "scroll-down" Ta "C-e" Ta "C-Down"
1658.It Li "scroll-down-and-cancel" Ta "" Ta ""
1659.It Li "scroll-up" Ta "C-y" Ta "C-Up"
1660.It Li "search-again" Ta "n" Ta "n"
1661.It Li "search-backward <for>" Ta "?" Ta ""
1662.It Li "search-backward-incremental <for>" Ta "" Ta "C-r"
1663.It Li "search-backward-text <for>" Ta "" Ta ""
1664.It Li "search-forward <for>" Ta "/" Ta ""
1665.It Li "search-forward-incremental <for>" Ta "" Ta "C-s"
1666.It Li "search-forward-text <for>" Ta "" Ta ""
1667.It Li "search-reverse" Ta "N" Ta "N"
1668.It Li "select-line" Ta "V" Ta ""
1669.It Li "select-word" Ta "" Ta ""
1670.It Li "set-mark" Ta "X" Ta "X"
1671.It Li "start-of-line" Ta "0" Ta "C-a"
1672.It Li "stop-selection" Ta "" Ta ""
1673.It Li "top-line" Ta "H" Ta "M-R"
1674.El
1675.Pp
1676The search commands come in several varieties:
1677.Ql search-forward
1678and
1679.Ql search-backward
1680search for a regular expression;
1681the
1682.Ql -text
1683variants search for a plain text string rather than a regular expression;
1684.Ql -incremental
1685perform an incremental search and expect to be used with the
1686.Fl i
1687flag to the
1688.Ic command-prompt
1689command.
1690.Ql search-again
1691repeats the last search and
1692.Ql search-reverse
1693does the same but reverses the direction (forward becomes backward and backward
1694becomes forward).
1695.Pp
1696Copy commands may take an optional buffer prefix argument which is used
1697to generate the buffer name (the default is
1698.Ql buffer
1699so buffers are named
1700.Ql buffer0 ,
1701.Ql buffer1
1702and so on).
1703Pipe commands take a command argument which is the command to which the
1704copied text is piped.
1705The
1706.Ql -and-cancel
1707variants of some commands exit copy mode after they have completed (for copy
1708commands) or when the cursor reaches the bottom (for scrolling commands).
1709.Ql -no-clear
1710variants do not clear the selection.
1711.Pp
1712The next and previous word keys use space and the
1713.Ql - ,
1714.Ql _
1715and
1716.Ql @
1717characters as word delimiters by default, but this can be adjusted by
1718setting the
1719.Em word-separators
1720session option.
1721Next word moves to the start of the next word, next word end to the end of the
1722next word and previous word to the start of the previous word.
1723The three next and previous space keys work similarly but use a space alone as
1724the word separator.
1725.Pp
1726The jump commands enable quick movement within a line.
1727For instance, typing
1728.Ql f
1729followed by
1730.Ql /
1731will move the cursor to the next
1732.Ql /
1733character on the current line.
1734A
1735.Ql \&;
1736will then jump to the next occurrence.
1737.Pp
1738Commands in copy mode may be prefaced by an optional repeat count.
1739With vi key bindings, a prefix is entered using the number keys; with
1740emacs, the Alt (meta) key and a number begins prefix entry.
1741.Pp
1742The synopsis for the
1743.Ic copy-mode
1744command is:
1745.Bl -tag -width Ds
1746.It Xo Ic copy-mode
1747.Op Fl eHMqu
1748.Op Fl s Ar src-pane
1749.Op Fl t Ar target-pane
1750.Xc
1751Enter copy mode.
1752The
1753.Fl u
1754option scrolls one page up.
1755.Fl M
1756begins a mouse drag (only valid if bound to a mouse key binding, see
1757.Sx MOUSE SUPPORT ) .
1758.Fl H
1759hides the position indicator in the top right.
1760.Fl q
1761cancels copy mode and any other modes.
1762.Fl s
1763copies from
1764.Ar src-pane
1765instead of
1766.Ar target-pane .
1767.Pp
1768.Fl e
1769specifies that scrolling to the bottom of the history (to the visible screen)
1770should exit copy mode.
1771While in copy mode, pressing a key other than those used for scrolling will
1772disable this behaviour.
1773This is intended to allow fast scrolling through a pane's history, for
1774example with:
1775.Bd -literal -offset indent
1776bind PageUp copy-mode -eu
1777.Ed
1778.El
1779.Pp
1780A number of preset arrangements of panes are available, these are called layouts.
1781These may be selected with the
1782.Ic select-layout
1783command or cycled with
1784.Ic next-layout
1785(bound to
1786.Ql Space
1787by default); once a layout is chosen, panes within it may be moved and resized
1788as normal.
1789.Pp
1790The following layouts are supported:
1791.Bl -tag -width Ds
1792.It Ic even-horizontal
1793Panes are spread out evenly from left to right across the window.
1794.It Ic even-vertical
1795Panes are spread evenly from top to bottom.
1796.It Ic main-horizontal
1797A large (main) pane is shown at the top of the window and the remaining panes
1798are spread from left to right in the leftover space at the bottom.
1799Use the
1800.Em main-pane-height
1801window option to specify the height of the top pane.
1802.It Ic main-vertical
1803Similar to
1804.Ic main-horizontal
1805but the large pane is placed on the left and the others spread from top to
1806bottom along the right.
1807See the
1808.Em main-pane-width
1809window option.
1810.It Ic tiled
1811Panes are spread out as evenly as possible over the window in both rows and
1812columns.
1813.El
1814.Pp
1815In addition,
1816.Ic select-layout
1817may be used to apply a previously used layout - the
1818.Ic list-windows
1819command displays the layout of each window in a form suitable for use with
1820.Ic select-layout .
1821For example:
1822.Bd -literal -offset indent
1823$ tmux list-windows
18240: ksh [159x48]
1825    layout: bb62,159x48,0,0{79x48,0,0,79x48,80,0}
1826$ tmux select-layout bb62,159x48,0,0{79x48,0,0,79x48,80,0}
1827.Ed
1828.Pp
1829.Nm
1830automatically adjusts the size of the layout for the current window size.
1831Note that a layout cannot be applied to a window with more panes than that
1832from which the layout was originally defined.
1833.Pp
1834Commands related to windows and panes are as follows:
1835.Bl -tag -width Ds
1836.It Xo Ic break-pane
1837.Op Fl abdP
1838.Op Fl F Ar format
1839.Op Fl n Ar window-name
1840.Op Fl s Ar src-pane
1841.Op Fl t Ar dst-window
1842.Xc
1843.D1 (alias: Ic breakp )
1844Break
1845.Ar src-pane
1846off from its containing window to make it the only pane in
1847.Ar dst-window .
1848With
1849.Fl a
1850or
1851.Fl b ,
1852the window is moved to the next index after or before (existing windows are
1853moved if necessary).
1854If
1855.Fl d
1856is given, the new window does not become the current window.
1857The
1858.Fl P
1859option prints information about the new window after it has been created.
1860By default, it uses the format
1861.Ql #{session_name}:#{window_index}.#{pane_index}
1862but a different format may be specified with
1863.Fl F .
1864.It Xo Ic capture-pane
1865.Op Fl aepPqCJN
1866.Op Fl b Ar buffer-name
1867.Op Fl E Ar end-line
1868.Op Fl S Ar start-line
1869.Op Fl t Ar target-pane
1870.Xc
1871.D1 (alias: Ic capturep )
1872Capture the contents of a pane.
1873If
1874.Fl p
1875is given, the output goes to stdout, otherwise to the buffer specified with
1876.Fl b
1877or a new buffer if omitted.
1878If
1879.Fl a
1880is given, the alternate screen is used, and the history is not accessible.
1881If no alternate screen exists, an error will be returned unless
1882.Fl q
1883is given.
1884If
1885.Fl e
1886is given, the output includes escape sequences for text and background
1887attributes.
1888.Fl C
1889also escapes non-printable characters as octal \exxx.
1890.Fl N
1891preserves trailing spaces at each line's end and
1892.Fl J
1893preserves trailing spaces and joins any wrapped lines.
1894.Fl P
1895captures only any output that the pane has received that is the beginning of an
1896as-yet incomplete escape sequence.
1897.Pp
1898.Fl S
1899and
1900.Fl E
1901specify the starting and ending line numbers, zero is the first line of the
1902visible pane and negative numbers are lines in the history.
1903.Ql -
1904to
1905.Fl S
1906is the start of the history and to
1907.Fl E
1908the end of the visible pane.
1909The default is to capture only the visible contents of the pane.
1910.It Xo
1911.Ic choose-client
1912.Op Fl NrZ
1913.Op Fl F Ar format
1914.Op Fl f Ar filter
1915.Op Fl O Ar sort-order
1916.Op Fl t Ar target-pane
1917.Op Ar template
1918.Xc
1919Put a pane into client mode, allowing a client to be selected interactively from
1920a list.
1921.Fl Z
1922zooms the pane.
1923The following keys may be used in client mode:
1924.Bl -column "Key" "Function" -offset indent
1925.It Sy "Key" Ta Sy "Function"
1926.It Li "Enter" Ta "Choose selected client"
1927.It Li "Up" Ta "Select previous client"
1928.It Li "Down" Ta "Select next client"
1929.It Li "C-s" Ta "Search by name"
1930.It Li "n" Ta "Repeat last search"
1931.It Li "t" Ta "Toggle if client is tagged"
1932.It Li "T" Ta "Tag no clients"
1933.It Li "C-t" Ta "Tag all clients"
1934.It Li "d" Ta "Detach selected client"
1935.It Li "D" Ta "Detach tagged clients"
1936.It Li "x" Ta "Detach and HUP selected client"
1937.It Li "X" Ta "Detach and HUP tagged clients"
1938.It Li "z" Ta "Suspend selected client"
1939.It Li "Z" Ta "Suspend tagged clients"
1940.It Li "f" Ta "Enter a format to filter items"
1941.It Li "O" Ta "Change sort field"
1942.It Li "r" Ta "Reverse sort order"
1943.It Li "v" Ta "Toggle preview"
1944.It Li "q" Ta "Exit mode"
1945.El
1946.Pp
1947After a client is chosen,
1948.Ql %%
1949is replaced by the client name in
1950.Ar template
1951and the result executed as a command.
1952If
1953.Ar template
1954is not given, "detach-client -t '%%'" is used.
1955.Pp
1956.Fl O
1957specifies the initial sort field: one of
1958.Ql name ,
1959.Ql size ,
1960.Ql creation ,
1961or
1962.Ql activity .
1963.Fl r
1964reverses the sort order.
1965.Fl f
1966specifies an initial filter: the filter is a format - if it evaluates to zero,
1967the item in the list is not shown, otherwise it is shown.
1968If a filter would lead to an empty list, it is ignored.
1969.Fl F
1970specifies the format for each item in the list.
1971.Fl N
1972starts without the preview.
1973This command works only if at least one client is attached.
1974.It Xo
1975.Ic choose-tree
1976.Op Fl GNrswZ
1977.Op Fl F Ar format
1978.Op Fl f Ar filter
1979.Op Fl O Ar sort-order
1980.Op Fl t Ar target-pane
1981.Op Ar template
1982.Xc
1983Put a pane into tree mode, where a session, window or pane may be chosen
1984interactively from a list.
1985.Fl s
1986starts with sessions collapsed and
1987.Fl w
1988with windows collapsed.
1989.Fl Z
1990zooms the pane.
1991The following keys may be used in tree mode:
1992.Bl -column "Key" "Function" -offset indent
1993.It Sy "Key" Ta Sy "Function"
1994.It Li "Enter" Ta "Choose selected item"
1995.It Li "Up" Ta "Select previous item"
1996.It Li "Down" Ta "Select next item"
1997.It Li "+" Ta "Expand selected item"
1998.It Li "-" Ta "Collapse selected item"
1999.It Li "M-+" Ta "Expand all items"
2000.It Li "M--" Ta "Collapse all items"
2001.It Li "x" Ta "Kill selected item"
2002.It Li "X" Ta "Kill tagged items"
2003.It Li "<" Ta "Scroll list of previews left"
2004.It Li ">" Ta "Scroll list of previews right"
2005.It Li "C-s" Ta "Search by name"
2006.It Li "m" Ta "Set the marked pane"
2007.It Li "M" Ta "Clear the marked pane"
2008.It Li "n" Ta "Repeat last search"
2009.It Li "t" Ta "Toggle if item is tagged"
2010.It Li "T" Ta "Tag no items"
2011.It Li "C-t" Ta "Tag all items"
2012.It Li "\&:" Ta "Run a command for each tagged item"
2013.It Li "f" Ta "Enter a format to filter items"
2014.It Li "H" Ta "Jump to the starting pane"
2015.It Li "O" Ta "Change sort field"
2016.It Li "r" Ta "Reverse sort order"
2017.It Li "v" Ta "Toggle preview"
2018.It Li "q" Ta "Exit mode"
2019.El
2020.Pp
2021After a session, window or pane is chosen,
2022.Ql %%
2023is replaced by the target in
2024.Ar template
2025and the result executed as a command.
2026If
2027.Ar template
2028is not given, "switch-client -t '%%'" is used.
2029.Pp
2030.Fl O
2031specifies the initial sort field: one of
2032.Ql index ,
2033.Ql name ,
2034or
2035.Ql time .
2036.Fl r
2037reverses the sort order.
2038.Fl f
2039specifies an initial filter: the filter is a format - if it evaluates to zero,
2040the item in the list is not shown, otherwise it is shown.
2041If a filter would lead to an empty list, it is ignored.
2042.Fl F
2043specifies the format for each item in the tree.
2044.Fl N
2045starts without the preview.
2046.Fl G
2047includes all sessions in any session groups in the tree rather than only the
2048first.
2049This command works only if at least one client is attached.
2050.It Xo
2051.Ic customize-mode
2052.Op Fl NZ
2053.Op Fl F Ar format
2054.Op Fl f Ar filter
2055.Op Fl t Ar target-pane
2056.Op Ar template
2057.Xc
2058Put a pane into customize mode, where options and key bindings may be browsed
2059and modified from a list.
2060Option values in the list are shown for the active pane in the current window.
2061.Fl Z
2062zooms the pane.
2063The following keys may be used in customize mode:
2064.Bl -column "Key" "Function" -offset indent
2065.It Sy "Key" Ta Sy "Function"
2066.It Li "Enter" Ta "Set pane, window, session or global option value"
2067.It Li "Up" Ta "Select previous item"
2068.It Li "Down" Ta "Select next item"
2069.It Li "+" Ta "Expand selected item"
2070.It Li "-" Ta "Collapse selected item"
2071.It Li "M-+" Ta "Expand all items"
2072.It Li "M--" Ta "Collapse all items"
2073.It Li "s" Ta "Set option value or key attribute"
2074.It Li "S" Ta "Set global option value"
2075.It Li "w" Ta "Set window option value, if option is for pane and window"
2076.It Li "d" Ta "Set an option or key to the default"
2077.It Li "D" Ta "Set tagged options and tagged keys to the default"
2078.It Li "u" Ta "Unset an option (set to default value if global) or unbind a key"
2079.It Li "U" Ta "Unset tagged options and unbind tagged keys"
2080.It Li "C-s" Ta "Search by name"
2081.It Li "n" Ta "Repeat last search"
2082.It Li "t" Ta "Toggle if item is tagged"
2083.It Li "T" Ta "Tag no items"
2084.It Li "C-t" Ta "Tag all items"
2085.It Li "f" Ta "Enter a format to filter items"
2086.It Li "v" Ta "Toggle option information"
2087.It Li "q" Ta "Exit mode"
2088.El
2089.Pp
2090.Fl f
2091specifies an initial filter: the filter is a format - if it evaluates to zero,
2092the item in the list is not shown, otherwise it is shown.
2093If a filter would lead to an empty list, it is ignored.
2094.Fl F
2095specifies the format for each item in the tree.
2096.Fl N
2097starts without the option information.
2098This command works only if at least one client is attached.
2099.It Xo
2100.Ic display-panes
2101.Op Fl b
2102.Op Fl d Ar duration
2103.Op Fl t Ar target-client
2104.Op Ar template
2105.Xc
2106.D1 (alias: Ic displayp )
2107Display a visible indicator of each pane shown by
2108.Ar target-client .
2109See the
2110.Ic display-panes-colour
2111and
2112.Ic display-panes-active-colour
2113session options.
2114The indicator is closed when a key is pressed or
2115.Ar duration
2116milliseconds have passed.
2117If
2118.Fl d
2119is not given,
2120.Ic display-panes-time
2121is used.
2122A duration of zero means the indicator stays until a key is pressed.
2123While the indicator is on screen, a pane may be chosen with the
2124.Ql 0
2125to
2126.Ql 9
2127keys, which will cause
2128.Ar template
2129to be executed as a command with
2130.Ql %%
2131substituted by the pane ID.
2132The default
2133.Ar template
2134is "select-pane -t '%%'".
2135With
2136.Fl b ,
2137other commands are not blocked from running until the indicator is closed.
2138.It Xo Ic find-window
2139.Op Fl iCNrTZ
2140.Op Fl t Ar target-pane
2141.Ar match-string
2142.Xc
2143.D1 (alias: Ic findw )
2144Search for a
2145.Xr fnmatch 3
2146pattern or, with
2147.Fl r ,
2148regular expression
2149.Ar match-string
2150in window names, titles, and visible content (but not history).
2151The flags control matching behavior:
2152.Fl C
2153matches only visible window contents,
2154.Fl N
2155matches only the window name and
2156.Fl T
2157matches only the window title.
2158.Fl i
2159makes the search ignore case.
2160The default is
2161.Fl CNT .
2162.Fl Z
2163zooms the pane.
2164.Pp
2165This command works only if at least one client is attached.
2166.It Xo Ic join-pane
2167.Op Fl bdfhv
2168.Op Fl l Ar size
2169.Op Fl s Ar src-pane
2170.Op Fl t Ar dst-pane
2171.Xc
2172.D1 (alias: Ic joinp )
2173Like
2174.Ic split-window ,
2175but instead of splitting
2176.Ar dst-pane
2177and creating a new pane, split it and move
2178.Ar src-pane
2179into the space.
2180This can be used to reverse
2181.Ic break-pane .
2182The
2183.Fl b
2184option causes
2185.Ar src-pane
2186to be joined to left of or above
2187.Ar dst-pane .
2188.Pp
2189If
2190.Fl s
2191is omitted and a marked pane is present (see
2192.Ic select-pane
2193.Fl m ) ,
2194the marked pane is used rather than the current pane.
2195.It Xo Ic kill-pane
2196.Op Fl a
2197.Op Fl t Ar target-pane
2198.Xc
2199.D1 (alias: Ic killp )
2200Destroy the given pane.
2201If no panes remain in the containing window, it is also destroyed.
2202The
2203.Fl a
2204option kills all but the pane given with
2205.Fl t .
2206.It Xo Ic kill-window
2207.Op Fl a
2208.Op Fl t Ar target-window
2209.Xc
2210.D1 (alias: Ic killw )
2211Kill the current window or the window at
2212.Ar target-window ,
2213removing it from any sessions to which it is linked.
2214The
2215.Fl a
2216option kills all but the window given with
2217.Fl t .
2218.It Xo Ic last-pane
2219.Op Fl deZ
2220.Op Fl t Ar target-window
2221.Xc
2222.D1 (alias: Ic lastp )
2223Select the last (previously selected) pane.
2224.Fl Z
2225keeps the window zoomed if it was zoomed.
2226.Fl e
2227enables or
2228.Fl d
2229disables input to the pane.
2230.It Ic last-window Op Fl t Ar target-session
2231.D1 (alias: Ic last )
2232Select the last (previously selected) window.
2233If no
2234.Ar target-session
2235is specified, select the last window of the current session.
2236.It Xo Ic link-window
2237.Op Fl abdk
2238.Op Fl s Ar src-window
2239.Op Fl t Ar dst-window
2240.Xc
2241.D1 (alias: Ic linkw )
2242Link the window at
2243.Ar src-window
2244to the specified
2245.Ar dst-window .
2246If
2247.Ar dst-window
2248is specified and no such window exists, the
2249.Ar src-window
2250is linked there.
2251With
2252.Fl a
2253or
2254.Fl b
2255the window is moved to the next index after or before
2256.Ar dst-window
2257(existing windows are moved if necessary).
2258If
2259.Fl k
2260is given and
2261.Ar dst-window
2262exists, it is killed, otherwise an error is generated.
2263If
2264.Fl d
2265is given, the newly linked window is not selected.
2266.It Xo Ic list-panes
2267.Op Fl as
2268.Op Fl F Ar format
2269.Op Fl f Ar filter
2270.Op Fl t Ar target
2271.Xc
2272.D1 (alias: Ic lsp )
2273If
2274.Fl a
2275is given,
2276.Ar target
2277is ignored and all panes on the server are listed.
2278If
2279.Fl s
2280is given,
2281.Ar target
2282is a session (or the current session).
2283If neither is given,
2284.Ar target
2285is a window (or the current window).
2286.Fl F
2287specifies the format of each line and
2288.Fl f
2289a filter.
2290Only panes for which the filter is true are shown.
2291See the
2292.Sx FORMATS
2293section.
2294.It Xo Ic list-windows
2295.Op Fl a
2296.Op Fl F Ar format
2297.Op Fl f Ar filter
2298.Op Fl t Ar target-session
2299.Xc
2300.D1 (alias: Ic lsw )
2301If
2302.Fl a
2303is given, list all windows on the server.
2304Otherwise, list windows in the current session or in
2305.Ar target-session .
2306.Fl F
2307specifies the format of each line and
2308.Fl f
2309a filter.
2310Only windows for which the filter is true are shown.
2311See the
2312.Sx FORMATS
2313section.
2314.It Xo Ic move-pane
2315.Op Fl bdfhv
2316.Op Fl l Ar size
2317.Op Fl s Ar src-pane
2318.Op Fl t Ar dst-pane
2319.Xc
2320.D1 (alias: Ic movep )
2321Does the same as
2322.Ic join-pane .
2323.It Xo Ic move-window
2324.Op Fl abrdk
2325.Op Fl s Ar src-window
2326.Op Fl t Ar dst-window
2327.Xc
2328.D1 (alias: Ic movew )
2329This is similar to
2330.Ic link-window ,
2331except the window at
2332.Ar src-window
2333is moved to
2334.Ar dst-window .
2335With
2336.Fl r ,
2337all windows in the session are renumbered in sequential order, respecting
2338the
2339.Ic base-index
2340option.
2341.It Xo Ic new-window
2342.Op Fl abdkP
2343.Op Fl c Ar start-directory
2344.Op Fl e Ar environment
2345.Op Fl F Ar format
2346.Op Fl n Ar window-name
2347.Op Fl t Ar target-window
2348.Op Ar shell-command
2349.Xc
2350.D1 (alias: Ic neww )
2351Create a new window.
2352With
2353.Fl a
2354or
2355.Fl b ,
2356the new window is inserted at the next index after or before the specified
2357.Ar target-window ,
2358moving windows up if necessary;
2359otherwise
2360.Ar target-window
2361is the new window location.
2362.Pp
2363If
2364.Fl d
2365is given, the session does not make the new window the current window.
2366.Ar target-window
2367represents the window to be created; if the target already exists an error is
2368shown, unless the
2369.Fl k
2370flag is used, in which case it is destroyed.
2371.Ar shell-command
2372is the command to execute.
2373If
2374.Ar shell-command
2375is not specified, the value of the
2376.Ic default-command
2377option is used.
2378.Fl c
2379specifies the working directory in which the new window is created.
2380.Pp
2381When the shell command completes, the window closes.
2382See the
2383.Ic remain-on-exit
2384option to change this behaviour.
2385.Pp
2386.Fl e
2387takes the form
2388.Ql VARIABLE=value
2389and sets an environment variable for the newly created window; it may be
2390specified multiple times.
2391.Pp
2392The
2393.Ev TERM
2394environment variable must be set to
2395.Ql screen
2396or
2397.Ql tmux
2398for all programs running
2399.Em inside
2400.Nm .
2401New windows will automatically have
2402.Ql TERM=screen
2403added to their environment, but care must be taken not to reset this in shell
2404start-up files or by the
2405.Fl e
2406option.
2407.Pp
2408The
2409.Fl P
2410option prints information about the new window after it has been created.
2411By default, it uses the format
2412.Ql #{session_name}:#{window_index}
2413but a different format may be specified with
2414.Fl F .
2415.It Ic next-layout Op Fl t Ar target-window
2416.D1 (alias: Ic nextl )
2417Move a window to the next layout and rearrange the panes to fit.
2418.It Xo Ic next-window
2419.Op Fl a
2420.Op Fl t Ar target-session
2421.Xc
2422.D1 (alias: Ic next )
2423Move to the next window in the session.
2424If
2425.Fl a
2426is used, move to the next window with an alert.
2427.It Xo Ic pipe-pane
2428.Op Fl IOo
2429.Op Fl t Ar target-pane
2430.Op Ar shell-command
2431.Xc
2432.D1 (alias: Ic pipep )
2433Pipe output sent by the program in
2434.Ar target-pane
2435to a shell command or vice versa.
2436A pane may only be connected to one command at a time, any existing pipe is
2437closed before
2438.Ar shell-command
2439is executed.
2440The
2441.Ar shell-command
2442string may contain the special character sequences supported by the
2443.Ic status-left
2444option.
2445If no
2446.Ar shell-command
2447is given, the current pipe (if any) is closed.
2448.Pp
2449.Fl I
2450and
2451.Fl O
2452specify which of the
2453.Ar shell-command
2454output streams are connected to the pane:
2455with
2456.Fl I
2457stdout is connected (so anything
2458.Ar shell-command
2459prints is written to the pane as if it were typed);
2460with
2461.Fl O
2462stdin is connected (so any output in the pane is piped to
2463.Ar shell-command ) .
2464Both may be used together and if neither are specified,
2465.Fl O
2466is used.
2467.Pp
2468The
2469.Fl o
2470option only opens a new pipe if no previous pipe exists, allowing a pipe to
2471be toggled with a single key, for example:
2472.Bd -literal -offset indent
2473bind-key C-p pipe-pane -o 'cat >>~/output.#I-#P'
2474.Ed
2475.It Xo Ic previous-layout
2476.Op Fl t Ar target-window
2477.Xc
2478.D1 (alias: Ic prevl )
2479Move to the previous layout in the session.
2480.It Xo Ic previous-window
2481.Op Fl a
2482.Op Fl t Ar target-session
2483.Xc
2484.D1 (alias: Ic prev )
2485Move to the previous window in the session.
2486With
2487.Fl a ,
2488move to the previous window with an alert.
2489.It Xo Ic rename-window
2490.Op Fl t Ar target-window
2491.Ar new-name
2492.Xc
2493.D1 (alias: Ic renamew )
2494Rename the current window, or the window at
2495.Ar target-window
2496if specified, to
2497.Ar new-name .
2498.It Xo Ic resize-pane
2499.Op Fl DLMRTUZ
2500.Op Fl t Ar target-pane
2501.Op Fl x Ar width
2502.Op Fl y Ar height
2503.Op Ar adjustment
2504.Xc
2505.D1 (alias: Ic resizep )
2506Resize a pane, up, down, left or right by
2507.Ar adjustment
2508with
2509.Fl U ,
2510.Fl D ,
2511.Fl L
2512or
2513.Fl R ,
2514or
2515to an absolute size
2516with
2517.Fl x
2518or
2519.Fl y .
2520The
2521.Ar adjustment
2522is given in lines or columns (the default is 1);
2523.Fl x
2524and
2525.Fl y
2526may be a given as a number of lines or columns or followed by
2527.Ql %
2528for a percentage of the window size (for example
2529.Ql -x 10% ) .
2530With
2531.Fl Z ,
2532the active pane is toggled between zoomed (occupying the whole of the window)
2533and unzoomed (its normal position in the layout).
2534.Pp
2535.Fl M
2536begins mouse resizing (only valid if bound to a mouse key binding, see
2537.Sx MOUSE SUPPORT ) .
2538.Pp
2539.Fl T
2540trims all lines below the current cursor position and moves lines out of the
2541history to replace them.
2542.It Xo Ic resize-window
2543.Op Fl aADLRU
2544.Op Fl t Ar target-window
2545.Op Fl x Ar width
2546.Op Fl y Ar height
2547.Op Ar adjustment
2548.Xc
2549.D1 (alias: Ic resizew )
2550Resize a window, up, down, left or right by
2551.Ar adjustment
2552with
2553.Fl U ,
2554.Fl D ,
2555.Fl L
2556or
2557.Fl R ,
2558or
2559to an absolute size
2560with
2561.Fl x
2562or
2563.Fl y .
2564The
2565.Ar adjustment
2566is given in lines or cells (the default is 1).
2567.Fl A
2568sets the size of the largest session containing the window;
2569.Fl a
2570the size of the smallest.
2571This command will automatically set
2572.Ic window-size
2573to manual in the window options.
2574.It Xo Ic respawn-pane
2575.Op Fl k
2576.Op Fl c Ar start-directory
2577.Op Fl e Ar environment
2578.Op Fl t Ar target-pane
2579.Op Ar shell-command
2580.Xc
2581.D1 (alias: Ic respawnp )
2582Reactivate a pane in which the command has exited (see the
2583.Ic remain-on-exit
2584window option).
2585If
2586.Ar shell-command
2587is not given, the command used when the pane was created or last respawned is
2588executed.
2589The pane must be already inactive, unless
2590.Fl k
2591is given, in which case any existing command is killed.
2592.Fl c
2593specifies a new working directory for the pane.
2594The
2595.Fl e
2596option has the same meaning as for the
2597.Ic new-window
2598command.
2599.It Xo Ic respawn-window
2600.Op Fl k
2601.Op Fl c Ar start-directory
2602.Op Fl e Ar environment
2603.Op Fl t Ar target-window
2604.Op Ar shell-command
2605.Xc
2606.D1 (alias: Ic respawnw )
2607Reactivate a window in which the command has exited (see the
2608.Ic remain-on-exit
2609window option).
2610If
2611.Ar shell-command
2612is not given, the command used when the window was created or last respawned is
2613executed.
2614The window must be already inactive, unless
2615.Fl k
2616is given, in which case any existing command is killed.
2617.Fl c
2618specifies a new working directory for the window.
2619The
2620.Fl e
2621option has the same meaning as for the
2622.Ic new-window
2623command.
2624.It Xo Ic rotate-window
2625.Op Fl DUZ
2626.Op Fl t Ar target-window
2627.Xc
2628.D1 (alias: Ic rotatew )
2629Rotate the positions of the panes within a window, either upward (numerically
2630lower) with
2631.Fl U
2632or downward (numerically higher).
2633.Fl Z
2634keeps the window zoomed if it was zoomed.
2635.It Xo Ic select-layout
2636.Op Fl Enop
2637.Op Fl t Ar target-pane
2638.Op Ar layout-name
2639.Xc
2640.D1 (alias: Ic selectl )
2641Choose a specific layout for a window.
2642If
2643.Ar layout-name
2644is not given, the last preset layout used (if any) is reapplied.
2645.Fl n
2646and
2647.Fl p
2648are equivalent to the
2649.Ic next-layout
2650and
2651.Ic previous-layout
2652commands.
2653.Fl o
2654applies the last set layout if possible (undoes the most recent layout change).
2655.Fl E
2656spreads the current pane and any panes next to it out evenly.
2657.It Xo Ic select-pane
2658.Op Fl DdeLlMmRUZ
2659.Op Fl T Ar title
2660.Op Fl t Ar target-pane
2661.Xc
2662.D1 (alias: Ic selectp )
2663Make pane
2664.Ar target-pane
2665the active pane in its window.
2666If one of
2667.Fl D ,
2668.Fl L ,
2669.Fl R ,
2670or
2671.Fl U
2672is used, respectively the pane below, to the left, to the right, or above the
2673target pane is used.
2674.Fl Z
2675keeps the window zoomed if it was zoomed.
2676.Fl l
2677is the same as using the
2678.Ic last-pane
2679command.
2680.Fl e
2681enables or
2682.Fl d
2683disables input to the pane.
2684.Fl T
2685sets the pane title.
2686.Pp
2687.Fl m
2688and
2689.Fl M
2690are used to set and clear the
2691.Em marked pane .
2692There is one marked pane at a time, setting a new marked pane clears the last.
2693The marked pane is the default target for
2694.Fl s
2695to
2696.Ic join-pane ,
2697.Ic move-pane ,
2698.Ic swap-pane
2699and
2700.Ic swap-window .
2701.It Xo Ic select-window
2702.Op Fl lnpT
2703.Op Fl t Ar target-window
2704.Xc
2705.D1 (alias: Ic selectw )
2706Select the window at
2707.Ar target-window .
2708.Fl l ,
2709.Fl n
2710and
2711.Fl p
2712are equivalent to the
2713.Ic last-window ,
2714.Ic next-window
2715and
2716.Ic previous-window
2717commands.
2718If
2719.Fl T
2720is given and the selected window is already the current window,
2721the command behaves like
2722.Ic last-window .
2723.It Xo Ic split-window
2724.Op Fl bdfhIvP
2725.Op Fl c Ar start-directory
2726.Op Fl e Ar environment
2727.Op Fl l Ar size
2728.Op Fl t Ar target-pane
2729.Op Ar shell-command
2730.Op Fl F Ar format
2731.Xc
2732.D1 (alias: Ic splitw )
2733Create a new pane by splitting
2734.Ar target-pane :
2735.Fl h
2736does a horizontal split and
2737.Fl v
2738a vertical split; if neither is specified,
2739.Fl v
2740is assumed.
2741The
2742.Fl l
2743option specifies the size of the new pane in lines (for vertical split) or in
2744columns (for horizontal split);
2745.Ar size
2746may be followed by
2747.Ql %
2748to specify a percentage of the available space.
2749The
2750.Fl b
2751option causes the new pane to be created to the left of or above
2752.Ar target-pane .
2753The
2754.Fl f
2755option creates a new pane spanning the full window height (with
2756.Fl h )
2757or full window width (with
2758.Fl v ) ,
2759instead of splitting the active pane.
2760.Pp
2761An empty
2762.Ar shell-command
2763('') will create a pane with no command running in it.
2764Output can be sent to such a pane with the
2765.Ic display-message
2766command.
2767The
2768.Fl I
2769flag (if
2770.Ar shell-command
2771is not specified or empty)
2772will create an empty pane and forward any output from stdin to it.
2773For example:
2774.Bd -literal -offset indent
2775$ make 2>&1|tmux splitw -dI &
2776.Ed
2777.Pp
2778All other options have the same meaning as for the
2779.Ic new-window
2780command.
2781.It Xo Ic swap-pane
2782.Op Fl dDUZ
2783.Op Fl s Ar src-pane
2784.Op Fl t Ar dst-pane
2785.Xc
2786.D1 (alias: Ic swapp )
2787Swap two panes.
2788If
2789.Fl U
2790is used and no source pane is specified with
2791.Fl s ,
2792.Ar dst-pane
2793is swapped with the previous pane (before it numerically);
2794.Fl D
2795swaps with the next pane (after it numerically).
2796.Fl d
2797instructs
2798.Nm
2799not to change the active pane and
2800.Fl Z
2801keeps the window zoomed if it was zoomed.
2802.Pp
2803If
2804.Fl s
2805is omitted and a marked pane is present (see
2806.Ic select-pane
2807.Fl m ) ,
2808the marked pane is used rather than the current pane.
2809.It Xo Ic swap-window
2810.Op Fl d
2811.Op Fl s Ar src-window
2812.Op Fl t Ar dst-window
2813.Xc
2814.D1 (alias: Ic swapw )
2815This is similar to
2816.Ic link-window ,
2817except the source and destination windows are swapped.
2818It is an error if no window exists at
2819.Ar src-window .
2820If
2821.Fl d
2822is given, the new window does not become the current window.
2823.Pp
2824If
2825.Fl s
2826is omitted and a marked pane is present (see
2827.Ic select-pane
2828.Fl m ) ,
2829the window containing the marked pane is used rather than the current window.
2830.It Xo Ic unlink-window
2831.Op Fl k
2832.Op Fl t Ar target-window
2833.Xc
2834.D1 (alias: Ic unlinkw )
2835Unlink
2836.Ar target-window .
2837Unless
2838.Fl k
2839is given, a window may be unlinked only if it is linked to multiple sessions -
2840windows may not be linked to no sessions;
2841if
2842.Fl k
2843is specified and the window is linked to only one session, it is unlinked and
2844destroyed.
2845.El
2846.Sh KEY BINDINGS
2847.Nm
2848allows a command to be bound to most keys, with or without a prefix key.
2849When specifying keys, most represent themselves (for example
2850.Ql A
2851to
2852.Ql Z ) .
2853Ctrl keys may be prefixed with
2854.Ql C-
2855or
2856.Ql ^ ,
2857and Alt (meta) with
2858.Ql M- .
2859In addition, the following special key names are accepted:
2860.Em Up ,
2861.Em Down ,
2862.Em Left ,
2863.Em Right ,
2864.Em BSpace ,
2865.Em BTab ,
2866.Em DC
2867(Delete),
2868.Em End ,
2869.Em Enter ,
2870.Em Escape ,
2871.Em F1
2872to
2873.Em F12 ,
2874.Em Home ,
2875.Em IC
2876(Insert),
2877.Em NPage/PageDown/PgDn ,
2878.Em PPage/PageUp/PgUp ,
2879.Em Space ,
2880and
2881.Em Tab .
2882Note that to bind the
2883.Ql \&"
2884or
2885.Ql '
2886keys, quotation marks are necessary, for example:
2887.Bd -literal -offset indent
2888bind-key '"' split-window
2889bind-key "'" new-window
2890.Ed
2891.Pp
2892A command bound to the
2893.Em Any
2894key will execute for all keys which do not have a more specific binding.
2895.Pp
2896Commands related to key bindings are as follows:
2897.Bl -tag -width Ds
2898.It Xo Ic bind-key
2899.Op Fl nr
2900.Op Fl N Ar note
2901.Op Fl T Ar key-table
2902.Ar key command Op Ar arguments
2903.Xc
2904.D1 (alias: Ic bind )
2905Bind key
2906.Ar key
2907to
2908.Ar command .
2909Keys are bound in a key table.
2910By default (without -T), the key is bound in
2911the
2912.Em prefix
2913key table.
2914This table is used for keys pressed after the prefix key (for example,
2915by default
2916.Ql c
2917is bound to
2918.Ic new-window
2919in the
2920.Em prefix
2921table, so
2922.Ql C-b c
2923creates a new window).
2924The
2925.Em root
2926table is used for keys pressed without the prefix key: binding
2927.Ql c
2928to
2929.Ic new-window
2930in the
2931.Em root
2932table (not recommended) means a plain
2933.Ql c
2934will create a new window.
2935.Fl n
2936is an alias
2937for
2938.Fl T Ar root .
2939Keys may also be bound in custom key tables and the
2940.Ic switch-client
2941.Fl T
2942command used to switch to them from a key binding.
2943The
2944.Fl r
2945flag indicates this key may repeat, see the
2946.Ic repeat-time
2947option.
2948.Fl N
2949attaches a note to the key (shown with
2950.Ic list-keys
2951.Fl N ) .
2952.Pp
2953To view the default bindings and possible commands, see the
2954.Ic list-keys
2955command.
2956.It Xo Ic list-keys
2957.Op Fl 1aN
2958.Op Fl P Ar prefix-string Fl T Ar key-table
2959.Op Ar key
2960.Xc
2961.D1 (alias: Ic lsk )
2962List key bindings.
2963There are two forms: the default lists keys as
2964.Ic bind-key
2965commands;
2966.Fl N
2967lists only keys with attached notes and shows only the key and note for each
2968key.
2969.Pp
2970With the default form, all key tables are listed by default.
2971.Fl T
2972lists only keys in
2973.Ar key-table .
2974.Pp
2975With the
2976.Fl N
2977form, only keys in the
2978.Em root
2979and
2980.Em prefix
2981key tables are listed by default;
2982.Fl T
2983also lists only keys in
2984.Ar key-table .
2985.Fl P
2986specifies a prefix to print before each key and
2987.Fl 1
2988lists only the first matching key.
2989.Fl a
2990lists the command for keys that do not have a note rather than skipping them.
2991.It Xo Ic send-keys
2992.Op Fl FHlMRX
2993.Op Fl N Ar repeat-count
2994.Op Fl t Ar target-pane
2995.Ar key Ar ...
2996.Xc
2997.D1 (alias: Ic send )
2998Send a key or keys to a window.
2999Each argument
3000.Ar key
3001is the name of the key (such as
3002.Ql C-a
3003or
3004.Ql NPage )
3005to send; if the string is not recognised as a key, it is sent as a series of
3006characters.
3007All arguments are sent sequentially from first to last.
3008.Pp
3009The
3010.Fl l
3011flag disables key name lookup and processes the keys as literal UTF-8
3012characters.
3013The
3014.Fl H
3015flag expects each key to be a hexadecimal number for an ASCII character.
3016.Pp
3017The
3018.Fl R
3019flag causes the terminal state to be reset.
3020.Pp
3021.Fl M
3022passes through a mouse event (only valid if bound to a mouse key binding, see
3023.Sx MOUSE SUPPORT ) .
3024.Pp
3025.Fl X
3026is used to send a command into copy mode - see
3027the
3028.Sx WINDOWS AND PANES
3029section.
3030.Fl N
3031specifies a repeat count and
3032.Fl F
3033expands formats in arguments where appropriate.
3034.It Xo Ic send-prefix
3035.Op Fl 2
3036.Op Fl t Ar target-pane
3037.Xc
3038Send the prefix key, or with
3039.Fl 2
3040the secondary prefix key, to a window as if it was pressed.
3041.It Xo Ic unbind-key
3042.Op Fl anq
3043.Op Fl T Ar key-table
3044.Ar key
3045.Xc
3046.D1 (alias: Ic unbind )
3047Unbind the command bound to
3048.Ar key .
3049.Fl n
3050and
3051.Fl T
3052are the same as for
3053.Ic bind-key .
3054If
3055.Fl a
3056is present, all key bindings are removed.
3057The
3058.Fl q
3059option prevents errors being returned.
3060.El
3061.Sh OPTIONS
3062The appearance and behaviour of
3063.Nm
3064may be modified by changing the value of various options.
3065There are four types of option:
3066.Em server options ,
3067.Em session options
3068.Em window options
3069and
3070.Em pane options .
3071.Pp
3072The
3073.Nm
3074server has a set of global server options which do not apply to any particular
3075window or session or pane.
3076These are altered with the
3077.Ic set-option
3078.Fl s
3079command, or displayed with the
3080.Ic show-options
3081.Fl s
3082command.
3083.Pp
3084In addition, each individual session may have a set of session options, and
3085there is a separate set of global session options.
3086Sessions which do not have a particular option configured inherit the value
3087from the global session options.
3088Session options are set or unset with the
3089.Ic set-option
3090command and may be listed with the
3091.Ic show-options
3092command.
3093The available server and session options are listed under the
3094.Ic set-option
3095command.
3096.Pp
3097Similarly, a set of window options is attached to each window and a set of pane
3098options to each pane.
3099Pane options inherit from window options.
3100This means any pane option may be set as a window option to apply the option to
3101all panes in the window without the option set, for example these commands will
3102set the background colour to red for all panes except pane 0:
3103.Bd -literal -offset indent
3104set -w window-style bg=red
3105set -pt:.0 window-style bg=blue
3106.Ed
3107.Pp
3108There is also a set of global window options from which any unset window or
3109pane options are inherited.
3110Window and pane options are altered with
3111.Ic set-option
3112.Fl w
3113and
3114.Fl p
3115commands and displayed with
3116.Ic show-option
3117.Fl w
3118and
3119.Fl p .
3120.Pp
3121.Nm
3122also supports user options which are prefixed with a
3123.Ql \&@ .
3124User options may have any name, so long as they are prefixed with
3125.Ql \&@ ,
3126and be set to any string.
3127For example:
3128.Bd -literal -offset indent
3129$ tmux set -wq @foo "abc123"
3130$ tmux show -wv @foo
3131abc123
3132.Ed
3133.Pp
3134Commands which set options are as follows:
3135.Bl -tag -width Ds
3136.It Xo Ic set-option
3137.Op Fl aFgopqsuw
3138.Op Fl t Ar target-pane
3139.Ar option Ar value
3140.Xc
3141.D1 (alias: Ic set )
3142Set a pane option with
3143.Fl p ,
3144a window option with
3145.Fl w ,
3146a server option with
3147.Fl s ,
3148otherwise a session option.
3149If the option is not a user option,
3150.Fl w
3151or
3152.Fl s
3153may be unnecessary -
3154.Nm
3155will infer the type from the option name, assuming
3156.Fl w
3157for pane options.
3158If
3159.Fl g
3160is given, the global session or window option is set.
3161.Pp
3162.Fl F
3163expands formats in the option value.
3164The
3165.Fl u
3166flag unsets an option, so a session inherits the option from the global
3167options (or with
3168.Fl g ,
3169restores a global option to the default).
3170.Ar value
3171depends on the option and may be a number, a string, or a flag (on, off, or
3172omitted to toggle).
3173.Pp
3174The
3175.Fl o
3176flag prevents setting an option that is already set and the
3177.Fl q
3178flag suppresses errors about unknown or ambiguous options.
3179.Pp
3180With
3181.Fl a ,
3182and if the option expects a string or a style,
3183.Ar value
3184is appended to the existing setting.
3185For example:
3186.Bd -literal -offset indent
3187set -g status-left "foo"
3188set -ag status-left "bar"
3189.Ed
3190.Pp
3191Will result in
3192.Ql foobar .
3193And:
3194.Bd -literal -offset indent
3195set -g status-style "bg=red"
3196set -ag status-style "fg=blue"
3197.Ed
3198.Pp
3199Will result in a red background
3200.Em and
3201blue foreground.
3202Without
3203.Fl a ,
3204the result would be the default background and a blue foreground.
3205.It Xo Ic show-options
3206.Op Fl AgHpqsvw
3207.Op Fl t Ar target-pane
3208.Op Ar option
3209.Xc
3210.D1 (alias: Ic show )
3211Show the pane options (or a single option if
3212.Ar option
3213is provided) with
3214.Fl p ,
3215the window options with
3216.Fl w ,
3217the server options with
3218.Fl s ,
3219otherwise the session options.
3220If the option is not a user option,
3221.Fl w
3222or
3223.Fl s
3224may be unnecessary -
3225.Nm
3226will infer the type from the option name, assuming
3227.Fl w
3228for pane options.
3229Global session or window options are listed if
3230.Fl g
3231is used.
3232.Fl v
3233shows only the option value, not the name.
3234If
3235.Fl q
3236is set, no error will be returned if
3237.Ar option
3238is unset.
3239.Fl H
3240includes hooks (omitted by default).
3241.Fl A
3242includes options inherited from a parent set of options, such options are
3243marked with an asterisk.
3244.El
3245.Pp
3246Available server options are:
3247.Bl -tag -width Ds
3248.It Ic backspace Ar key
3249Set the key sent by
3250.Nm
3251for backspace.
3252.It Ic buffer-limit Ar number
3253Set the number of buffers; as new buffers are added to the top of the stack,
3254old ones are removed from the bottom if necessary to maintain this maximum
3255length.
3256.It Xo Ic command-alias[]
3257.Ar name=value
3258.Xc
3259This is an array of custom aliases for commands.
3260If an unknown command matches
3261.Ar name ,
3262it is replaced with
3263.Ar value .
3264For example, after:
3265.Pp
3266.Dl set -s command-alias[100] zoom='resize-pane -Z'
3267.Pp
3268Using:
3269.Pp
3270.Dl zoom -t:.1
3271.Pp
3272Is equivalent to:
3273.Pp
3274.Dl resize-pane -Z -t:.1
3275.Pp
3276Note that aliases are expanded when a command is parsed rather than when it is
3277executed, so binding an alias with
3278.Ic bind-key
3279will bind the expanded form.
3280.It Ic default-terminal Ar terminal
3281Set the default terminal for new windows created in this session - the
3282default value of the
3283.Ev TERM
3284environment variable.
3285For
3286.Nm
3287to work correctly, this
3288.Em must
3289be set to
3290.Ql screen ,
3291.Ql tmux
3292or a derivative of them.
3293.It Ic copy-command Ar shell-command
3294Give the command to pipe to if the
3295.Ic copy-pipe
3296copy mode command is used without arguments.
3297.It Ic escape-time Ar time
3298Set the time in milliseconds for which
3299.Nm
3300waits after an escape is input to determine if it is part of a function or meta
3301key sequences.
3302The default is 500 milliseconds.
3303.It Ic editor Ar shell-command
3304Set the command used when
3305.Nm
3306runs an editor.
3307.It Xo Ic exit-empty
3308.Op Ic on | off
3309.Xc
3310If enabled (the default), the server will exit when there are no active
3311sessions.
3312.It Xo Ic exit-unattached
3313.Op Ic on | off
3314.Xc
3315If enabled, the server will exit when there are no attached clients.
3316.It Xo Ic extended-keys
3317.Op Ic on | off
3318.Xc
3319When enabled, extended keys are requested from the terminal and if supported
3320are recognised by
3321.Nm .
3322.It Xo Ic focus-events
3323.Op Ic on | off
3324.Xc
3325When enabled, focus events are requested from the terminal if supported and
3326passed through to applications running in
3327.Nm .
3328Attached clients should be detached and attached again after changing this
3329option.
3330.It Ic history-file Ar path
3331If not empty, a file to which
3332.Nm
3333will write command prompt history on exit and load it from on start.
3334.It Ic message-limit Ar number
3335Set the number of error or information messages to save in the message log for
3336each client.
3337The default is 100.
3338.It Xo Ic set-clipboard
3339.Op Ic on | external | off
3340.Xc
3341Attempt to set the terminal clipboard content using the
3342.Xr xterm 1
3343escape sequence, if there is an
3344.Em \&Ms
3345entry in the
3346.Xr terminfo 5
3347description (see the
3348.Sx TERMINFO EXTENSIONS
3349section).
3350.Pp
3351If set to
3352.Ic on ,
3353.Nm
3354will both accept the escape sequence to create a buffer and attempt to set
3355the terminal clipboard.
3356If set to
3357.Ic external ,
3358.Nm
3359will attempt to set the terminal clipboard but ignore attempts
3360by applications to set
3361.Nm
3362buffers.
3363If
3364.Ic off ,
3365.Nm
3366will neither accept the clipboard escape sequence nor attempt to set the
3367clipboard.
3368.Pp
3369Note that this feature needs to be enabled in
3370.Xr xterm 1
3371by setting the resource:
3372.Bd -literal -offset indent
3373disallowedWindowOps: 20,21,SetXprop
3374.Ed
3375.Pp
3376Or changing this property from the
3377.Xr xterm 1
3378interactive menu when required.
3379.It Ic terminal-features[] Ar string
3380Set terminal features for terminal types read from
3381.Xr terminfo 5 .
3382.Nm
3383has a set of named terminal features.
3384Each will apply appropriate changes to the
3385.Xr terminfo 5
3386entry in use.
3387.Pp
3388.Nm
3389can detect features for a few common terminals; this option can be used to
3390easily tell tmux about features supported by terminals it cannot detect.
3391The
3392.Ic terminal-overrides
3393option allows individual
3394.Xr terminfo 5
3395capabilities to be set instead,
3396.Ic terminal-features
3397is intended for classes of functionality supported in a standard way but not
3398reported by
3399.Xr terminfo 5 .
3400Care must be taken only to configure this with features the terminal actually
3401support.
3402.Pp
3403This is an array option where each entry is a colon-separated string made up
3404of a terminal type pattern (matched using
3405.Xr fnmatch 3 )
3406followed by a list of terminal features.
3407The available features are:
3408.Bl -tag -width Ds
3409.It 256
3410Supports 256 colours with the SGR escape sequences.
3411.It clipboard
3412Allows setting the system clipboard.
3413.It ccolour
3414Allows setting the cursor colour.
3415.It cstyle
3416Allows setting the cursor style.
3417.It extkeys
3418Supports extended keys.
3419.It focus
3420Supports focus reporting.
3421.It margins
3422Supports DECSLRM margins.
3423.It overline
3424Supports the overline SGR attribute.
3425.It rectfill
3426Supports the DECFRA rectangle fill escape sequence.
3427.It RGB
3428Supports RGB colour with the SGR escape sequences.
3429.It strikethrough
3430Supports the strikethrough SGR escape sequence.
3431.It sync
3432Supports synchronized updates.
3433.It title
3434Supports
3435.Xr xterm 1
3436title setting.
3437.It usstyle
3438Allows underscore style and colour to be set.
3439.It UTF-8
3440Is able to handle UTF-8 output.
3441.El
3442.It Ic terminal-overrides[] Ar string
3443Allow terminal descriptions read using
3444.Xr terminfo 5
3445to be overridden.
3446Each entry is a colon-separated string made up of a terminal type pattern
3447(matched using
3448.Xr fnmatch 3 )
3449and a set of
3450.Em name=value
3451entries.
3452.Pp
3453For example, to set the
3454.Ql clear
3455.Xr terminfo 5
3456entry to
3457.Ql \ee[H\ee[2J
3458for all terminal types matching
3459.Ql rxvt* :
3460.Pp
3461.Dl "rxvt*:clear=\ee[H\ee[2J"
3462.Pp
3463The terminal entry value is passed through
3464.Xr strunvis 3
3465before interpretation.
3466.It Ic user-keys[] Ar key
3467Set list of user-defined key escape sequences.
3468Each item is associated with a key named
3469.Ql User0 ,
3470.Ql User1 ,
3471and so on.
3472.Pp
3473For example:
3474.Bd -literal -offset indent
3475set -s user-keys[0] "\ee[5;30012~"
3476bind User0 resize-pane -L 3
3477.Ed
3478.El
3479.Pp
3480Available session options are:
3481.Bl -tag -width Ds
3482.It Xo Ic activity-action
3483.Op Ic any | none | current | other
3484.Xc
3485Set action on window activity when
3486.Ic monitor-activity
3487is on.
3488.Ic any
3489means activity in any window linked to a session causes a bell or message
3490(depending on
3491.Ic visual-activity )
3492in the current window of that session,
3493.Ic none
3494means all activity is ignored (equivalent to
3495.Ic monitor-activity
3496being off),
3497.Ic current
3498means only activity in windows other than the current window are ignored and
3499.Ic other
3500means activity in the current window is ignored but not those in other windows.
3501.It Ic assume-paste-time Ar milliseconds
3502If keys are entered faster than one in
3503.Ar milliseconds ,
3504they are assumed to have been pasted rather than typed and
3505.Nm
3506key bindings are not processed.
3507The default is one millisecond and zero disables.
3508.It Ic base-index Ar index
3509Set the base index from which an unused index should be searched when a new
3510window is created.
3511The default is zero.
3512.It Xo Ic bell-action
3513.Op Ic any | none | current | other
3514.Xc
3515Set action on a bell in a window when
3516.Ic monitor-bell
3517is on.
3518The values are the same as those for
3519.Ic activity-action .
3520.It Ic default-command Ar shell-command
3521Set the command used for new windows (if not specified when the window is
3522created) to
3523.Ar shell-command ,
3524which may be any
3525.Xr sh 1
3526command.
3527The default is an empty string, which instructs
3528.Nm
3529to create a login shell using the value of the
3530.Ic default-shell
3531option.
3532.It Ic default-shell Ar path
3533Specify the default shell.
3534This is used as the login shell for new windows when the
3535.Ic default-command
3536option is set to empty, and must be the full path of the executable.
3537When started
3538.Nm
3539tries to set a default value from the first suitable of the
3540.Ev SHELL
3541environment variable, the shell returned by
3542.Xr getpwuid 3 ,
3543or
3544.Pa /bin/sh .
3545This option should be configured when
3546.Nm
3547is used as a login shell.
3548.It Ic default-size Ar XxY
3549Set the default size of new windows when the
3550.Ic window-size
3551option is set to manual or when a session is created with
3552.Ic new-session
3553.Fl d .
3554The value is the width and height separated by an
3555.Ql x
3556character.
3557The default is 80x24.
3558.It Xo Ic destroy-unattached
3559.Op Ic on | off
3560.Xc
3561If enabled and the session is no longer attached to any clients, it is
3562destroyed.
3563.It Xo Ic detach-on-destroy
3564.Op Ic on | off
3565.Xc
3566If on (the default), the client is detached when the session it is attached to
3567is destroyed.
3568If off, the client is switched to the most recently active of the remaining
3569sessions.
3570.It Ic display-panes-active-colour Ar colour
3571Set the colour used by the
3572.Ic display-panes
3573command to show the indicator for the active pane.
3574.It Ic display-panes-colour Ar colour
3575Set the colour used by the
3576.Ic display-panes
3577command to show the indicators for inactive panes.
3578.It Ic display-panes-time Ar time
3579Set the time in milliseconds for which the indicators shown by the
3580.Ic display-panes
3581command appear.
3582.It Ic display-time Ar time
3583Set the amount of time for which status line messages and other on-screen
3584indicators are displayed.
3585If set to 0, messages and indicators are displayed until a key is pressed.
3586.Ar time
3587is in milliseconds.
3588.It Ic history-limit Ar lines
3589Set the maximum number of lines held in window history.
3590This setting applies only to new windows - existing window histories are not
3591resized and retain the limit at the point they were created.
3592.It Ic key-table Ar key-table
3593Set the default key table to
3594.Ar key-table
3595instead of
3596.Em root .
3597.It Ic lock-after-time Ar number
3598Lock the session (like the
3599.Ic lock-session
3600command) after
3601.Ar number
3602seconds of inactivity.
3603The default is not to lock (set to 0).
3604.It Ic lock-command Ar shell-command
3605Command to run when locking each client.
3606The default is to run
3607.Xr lock 1
3608with
3609.Fl np .
3610.It Ic message-command-style Ar style
3611Set status line message command style.
3612This is used for the command prompt with
3613.Xr vi 1
3614keys when in command mode.
3615For how to specify
3616.Ar style ,
3617see the
3618.Sx STYLES
3619section.
3620.It Ic message-style Ar style
3621Set status line message style.
3622This is used for messages and for the command prompt.
3623For how to specify
3624.Ar style ,
3625see the
3626.Sx STYLES
3627section.
3628.It Xo Ic mouse
3629.Op Ic on | off
3630.Xc
3631If on,
3632.Nm
3633captures the mouse and allows mouse events to be bound as key bindings.
3634See the
3635.Sx MOUSE SUPPORT
3636section for details.
3637.It Ic prefix Ar key
3638Set the key accepted as a prefix key.
3639In addition to the standard keys described under
3640.Sx KEY BINDINGS ,
3641.Ic prefix
3642can be set to the special key
3643.Ql None
3644to set no prefix.
3645.It Ic prefix2 Ar key
3646Set a secondary key accepted as a prefix key.
3647Like
3648.Ic prefix ,
3649.Ic prefix2
3650can be set to
3651.Ql None .
3652.It Xo Ic renumber-windows
3653.Op Ic on | off
3654.Xc
3655If on, when a window is closed in a session, automatically renumber the other
3656windows in numerical order.
3657This respects the
3658.Ic base-index
3659option if it has been set.
3660If off, do not renumber the windows.
3661.It Ic repeat-time Ar time
3662Allow multiple commands to be entered without pressing the prefix-key again
3663in the specified
3664.Ar time
3665milliseconds (the default is 500).
3666Whether a key repeats may be set when it is bound using the
3667.Fl r
3668flag to
3669.Ic bind-key .
3670Repeat is enabled for the default keys bound to the
3671.Ic resize-pane
3672command.
3673.It Xo Ic set-titles
3674.Op Ic on | off
3675.Xc
3676Attempt to set the client terminal title using the
3677.Em tsl
3678and
3679.Em fsl
3680.Xr terminfo 5
3681entries if they exist.
3682.Nm
3683automatically sets these to the \ee]0;...\e007 sequence if
3684the terminal appears to be
3685.Xr xterm 1 .
3686This option is off by default.
3687.It Ic set-titles-string Ar string
3688String used to set the client terminal title if
3689.Ic set-titles
3690is on.
3691Formats are expanded, see the
3692.Sx FORMATS
3693section.
3694.It Xo Ic silence-action
3695.Op Ic any | none | current | other
3696.Xc
3697Set action on window silence when
3698.Ic monitor-silence
3699is on.
3700The values are the same as those for
3701.Ic activity-action .
3702.It Xo Ic status
3703.Op Ic off | on | 2 | 3 | 4 | 5
3704.Xc
3705Show or hide the status line or specify its size.
3706Using
3707.Ic on
3708gives a status line one row in height;
3709.Ic 2 ,
3710.Ic 3 ,
3711.Ic 4
3712or
3713.Ic 5
3714more rows.
3715.It Ic status-format[] Ar format
3716Specify the format to be used for each line of the status line.
3717The default builds the top status line from the various individual status
3718options below.
3719.It Ic status-interval Ar interval
3720Update the status line every
3721.Ar interval
3722seconds.
3723By default, updates will occur every 15 seconds.
3724A setting of zero disables redrawing at interval.
3725.It Xo Ic status-justify
3726.Op Ic left | centre | right
3727.Xc
3728Set the position of the window list component of the status line: left, centre
3729or right justified.
3730.It Xo Ic status-keys
3731.Op Ic vi | emacs
3732.Xc
3733Use vi or emacs-style
3734key bindings in the status line, for example at the command prompt.
3735The default is emacs, unless the
3736.Ev VISUAL
3737or
3738.Ev EDITOR
3739environment variables are set and contain the string
3740.Ql vi .
3741.It Ic status-left Ar string
3742Display
3743.Ar string
3744(by default the session name) to the left of the status line.
3745.Ar string
3746will be passed through
3747.Xr strftime 3 .
3748Also see the
3749.Sx FORMATS
3750and
3751.Sx STYLES
3752sections.
3753.Pp
3754For details on how the names and titles can be set see the
3755.Sx "NAMES AND TITLES"
3756section.
3757.Pp
3758Examples are:
3759.Bd -literal -offset indent
3760#(sysctl vm.loadavg)
3761#[fg=yellow,bold]#(apm -l)%%#[default] [#S]
3762.Ed
3763.Pp
3764The default is
3765.Ql "[#S] " .
3766.It Ic status-left-length Ar length
3767Set the maximum
3768.Ar length
3769of the left component of the status line.
3770The default is 10.
3771.It Ic status-left-style Ar style
3772Set the style of the left part of the status line.
3773For how to specify
3774.Ar style ,
3775see the
3776.Sx STYLES
3777section.
3778.It Xo Ic status-position
3779.Op Ic top | bottom
3780.Xc
3781Set the position of the status line.
3782.It Ic status-right Ar string
3783Display
3784.Ar string
3785to the right of the status line.
3786By default, the current pane title in double quotes, the date and the time
3787are shown.
3788As with
3789.Ic status-left ,
3790.Ar string
3791will be passed to
3792.Xr strftime 3
3793and character pairs are replaced.
3794.It Ic status-right-length Ar length
3795Set the maximum
3796.Ar length
3797of the right component of the status line.
3798The default is 40.
3799.It Ic status-right-style Ar style
3800Set the style of the right part of the status line.
3801For how to specify
3802.Ar style ,
3803see the
3804.Sx STYLES
3805section.
3806.It Ic status-style Ar style
3807Set status line style.
3808For how to specify
3809.Ar style ,
3810see the
3811.Sx STYLES
3812section.
3813.It Ic update-environment[] Ar variable
3814Set list of environment variables to be copied into the session environment
3815when a new session is created or an existing session is attached.
3816Any variables that do not exist in the source environment are set to be
3817removed from the session environment (as if
3818.Fl r
3819was given to the
3820.Ic set-environment
3821command).
3822.It Xo Ic visual-activity
3823.Op Ic on | off | both
3824.Xc
3825If on, display a message instead of sending a bell when activity occurs in a
3826window for which the
3827.Ic monitor-activity
3828window option is enabled.
3829If set to both, a bell and a message are produced.
3830.It Xo Ic visual-bell
3831.Op Ic on | off | both
3832.Xc
3833If on, a message is shown on a bell in a window for which the
3834.Ic monitor-bell
3835window option is enabled instead of it being passed through to the
3836terminal (which normally makes a sound).
3837If set to both, a bell and a message are produced.
3838Also see the
3839.Ic bell-action
3840option.
3841.It Xo Ic visual-silence
3842.Op Ic on | off | both
3843.Xc
3844If
3845.Ic monitor-silence
3846is enabled, prints a message after the interval has expired on a given window
3847instead of sending a bell.
3848If set to both, a bell and a message are produced.
3849.It Ic word-separators Ar string
3850Sets the session's conception of what characters are considered word
3851separators, for the purposes of the next and previous word commands in
3852copy mode.
3853The default is
3854.Ql \ -_@ .
3855.El
3856.Pp
3857Available window options are:
3858.Pp
3859.Bl -tag -width Ds -compact
3860.It Xo Ic aggressive-resize
3861.Op Ic on | off
3862.Xc
3863Aggressively resize the chosen window.
3864This means that
3865.Nm
3866will resize the window to the size of the smallest or largest session
3867(see the
3868.Ic window-size
3869option) for which it is the current window, rather than the session to
3870which it is attached.
3871The window may resize when the current window is changed on another
3872session; this option is good for full-screen programs which support
3873.Dv SIGWINCH
3874and poor for interactive programs such as shells.
3875.Pp
3876.It Xo Ic automatic-rename
3877.Op Ic on | off
3878.Xc
3879Control automatic window renaming.
3880When this setting is enabled,
3881.Nm
3882will rename the window automatically using the format specified by
3883.Ic automatic-rename-format .
3884This flag is automatically disabled for an individual window when a name
3885is specified at creation with
3886.Ic new-window
3887or
3888.Ic new-session ,
3889or later with
3890.Ic rename-window ,
3891or with a terminal escape sequence.
3892It may be switched off globally with:
3893.Bd -literal -offset indent
3894set-option -wg automatic-rename off
3895.Ed
3896.Pp
3897.It Ic automatic-rename-format Ar format
3898The format (see
3899.Sx FORMATS )
3900used when the
3901.Ic automatic-rename
3902option is enabled.
3903.Pp
3904.It Ic clock-mode-colour Ar colour
3905Set clock colour.
3906.Pp
3907.It Xo Ic clock-mode-style
3908.Op Ic 12 | 24
3909.Xc
3910Set clock hour format.
3911.Pp
3912.It Ic main-pane-height Ar height
3913.It Ic main-pane-width Ar width
3914Set the width or height of the main (left or top) pane in the
3915.Ic main-horizontal
3916or
3917.Ic main-vertical
3918layouts.
3919If suffixed by
3920.Ql % ,
3921this is a percentage of the window size.
3922.Pp
3923.It Ic copy-mode-match-style Ar style
3924Set the style of search matches in copy mode.
3925For how to specify
3926.Ar style ,
3927see the
3928.Sx STYLES
3929section.
3930.Pp
3931.It Ic copy-mode-mark-style Ar style
3932Set the style of the line containing the mark in copy mode.
3933For how to specify
3934.Ar style ,
3935see the
3936.Sx STYLES
3937section.
3938.Pp
3939.It Ic copy-mode-current-match-style Ar style
3940Set the style of the current search match in copy mode.
3941For how to specify
3942.Ar style ,
3943see the
3944.Sx STYLES
3945section.
3946.Pp
3947.It Xo Ic mode-keys
3948.Op Ic vi | emacs
3949.Xc
3950Use vi or emacs-style key bindings in copy mode.
3951The default is emacs, unless
3952.Ev VISUAL
3953or
3954.Ev EDITOR
3955contains
3956.Ql vi .
3957.Pp
3958.It Ic mode-style Ar style
3959Set window modes style.
3960For how to specify
3961.Ar style ,
3962see the
3963.Sx STYLES
3964section.
3965.Pp
3966.It Xo Ic monitor-activity
3967.Op Ic on | off
3968.Xc
3969Monitor for activity in the window.
3970Windows with activity are highlighted in the status line.
3971.Pp
3972.It Xo Ic monitor-bell
3973.Op Ic on | off
3974.Xc
3975Monitor for a bell in the window.
3976Windows with a bell are highlighted in the status line.
3977.Pp
3978.It Xo Ic monitor-silence
3979.Op Ic interval
3980.Xc
3981Monitor for silence (no activity) in the window within
3982.Ic interval
3983seconds.
3984Windows that have been silent for the interval are highlighted in the
3985status line.
3986An interval of zero disables the monitoring.
3987.Pp
3988.It Ic other-pane-height Ar height
3989Set the height of the other panes (not the main pane) in the
3990.Ic main-horizontal
3991layout.
3992If this option is set to 0 (the default), it will have no effect.
3993If both the
3994.Ic main-pane-height
3995and
3996.Ic other-pane-height
3997options are set, the main pane will grow taller to make the other panes the
3998specified height, but will never shrink to do so.
3999If suffixed by
4000.Ql % ,
4001this is a percentage of the window size.
4002.Pp
4003.It Ic other-pane-width Ar width
4004Like
4005.Ic other-pane-height ,
4006but set the width of other panes in the
4007.Ic main-vertical
4008layout.
4009.Pp
4010.It Ic pane-active-border-style Ar style
4011Set the pane border style for the currently active pane.
4012For how to specify
4013.Ar style ,
4014see the
4015.Sx STYLES
4016section.
4017Attributes are ignored.
4018.Pp
4019.It Ic pane-base-index Ar index
4020Like
4021.Ic base-index ,
4022but set the starting index for pane numbers.
4023.Pp
4024.It Ic pane-border-format Ar format
4025Set the text shown in pane border status lines.
4026.Pp
4027.It Ic pane-border-lines Ar type
4028Set the type of characters used for drawing pane borders.
4029.Ar type
4030may be one of:
4031.Bl -tag -width Ds
4032.It single
4033single lines using ACS or UTF-8 characters
4034.It double
4035double lines using UTF-8 characters
4036.It heavy
4037heavy lines using UTF-8 characters
4038.It simple
4039simple ASCII characters
4040.It number
4041the pane number
4042.El
4043.Pp
4044.Ql double
4045and
4046.Ql heavy
4047will fall back to standard ACS line drawing when UTF-8 is not supported.
4048.Pp
4049.It Xo Ic pane-border-status
4050.Op Ic off | top | bottom
4051.Xc
4052Turn pane border status lines off or set their position.
4053.Pp
4054.It Ic pane-border-style Ar style
4055Set the pane border style for panes aside from the active pane.
4056For how to specify
4057.Ar style ,
4058see the
4059.Sx STYLES
4060section.
4061Attributes are ignored.
4062.Pp
4063.It Xo Ic synchronize-panes
4064.Op Ic on | off
4065.Xc
4066Duplicate input to any pane to all other panes in the same window (only
4067for panes that are not in any special mode).
4068.Pp
4069.It Ic window-status-activity-style Ar style
4070Set status line style for windows with an activity alert.
4071For how to specify
4072.Ar style ,
4073see the
4074.Sx STYLES
4075section.
4076.Pp
4077.It Ic window-status-bell-style Ar style
4078Set status line style for windows with a bell alert.
4079For how to specify
4080.Ar style ,
4081see the
4082.Sx STYLES
4083section.
4084.Pp
4085.It Ic window-status-current-format Ar string
4086Like
4087.Ar window-status-format ,
4088but is the format used when the window is the current window.
4089.Pp
4090.It Ic window-status-current-style Ar style
4091Set status line style for the currently active window.
4092For how to specify
4093.Ar style ,
4094see the
4095.Sx STYLES
4096section.
4097.Pp
4098.It Ic window-status-format Ar string
4099Set the format in which the window is displayed in the status line window list.
4100See the
4101.Sx FORMATS
4102and
4103.Sx STYLES
4104sections.
4105.Pp
4106.It Ic window-status-last-style Ar style
4107Set status line style for the last active window.
4108For how to specify
4109.Ar style ,
4110see the
4111.Sx STYLES
4112section.
4113.Pp
4114.It Ic window-status-separator Ar string
4115Sets the separator drawn between windows in the status line.
4116The default is a single space character.
4117.Pp
4118.It Ic window-status-style Ar style
4119Set status line style for a single window.
4120For how to specify
4121.Ar style ,
4122see the
4123.Sx STYLES
4124section.
4125.Pp
4126.It Xo Ic window-size
4127.Ar largest | Ar smallest | Ar manual | Ar latest
4128.Xc
4129Configure how
4130.Nm
4131determines the window size.
4132If set to
4133.Ar largest ,
4134the size of the largest attached session is used; if
4135.Ar smallest ,
4136the size of the smallest.
4137If
4138.Ar manual ,
4139the size of a new window is set from the
4140.Ic default-size
4141option and windows are resized automatically.
4142With
4143.Ar latest ,
4144.Nm
4145uses the size of the client that had the most recent activity.
4146See also the
4147.Ic resize-window
4148command and the
4149.Ic aggressive-resize
4150option.
4151.Pp
4152.It Xo Ic wrap-search
4153.Op Ic on | off
4154.Xc
4155If this option is set, searches will wrap around the end of the pane contents.
4156The default is on.
4157.El
4158.Pp
4159Available pane options are:
4160.Pp
4161.Bl -tag -width Ds -compact
4162.It Xo Ic allow-rename
4163.Op Ic on | off
4164.Xc
4165Allow programs in the pane to change the window name using a terminal escape
4166sequence (\eek...\ee\e\e).
4167.Pp
4168.It Xo Ic alternate-screen
4169.Op Ic on | off
4170.Xc
4171This option configures whether programs running inside the pane may use the
4172terminal alternate screen feature, which allows the
4173.Em smcup
4174and
4175.Em rmcup
4176.Xr terminfo 5
4177capabilities.
4178The alternate screen feature preserves the contents of the window when an
4179interactive application starts and restores it on exit, so that any output
4180visible before the application starts reappears unchanged after it exits.
4181.Pp
4182.It Xo Ic remain-on-exit
4183.Op Ic on | off
4184.Xc
4185A pane with this flag set is not destroyed when the program running in it
4186exits.
4187The pane may be reactivated with the
4188.Ic respawn-pane
4189command.
4190.Pp
4191.It Ic window-active-style Ar style
4192Set the pane style when it is the active pane.
4193For how to specify
4194.Ar style ,
4195see the
4196.Sx STYLES
4197section.
4198.Pp
4199.It Ic window-style Ar style
4200Set the pane style.
4201For how to specify
4202.Ar style ,
4203see the
4204.Sx STYLES
4205section.
4206.El
4207.Sh HOOKS
4208.Nm
4209allows commands to run on various triggers, called
4210.Em hooks .
4211Most
4212.Nm
4213commands have an
4214.Em after
4215hook and there are a number of hooks not associated with commands.
4216.Pp
4217Hooks are stored as array options, members of the array are executed in
4218order when the hook is triggered.
4219Like options different hooks may be global or belong to a session, window or pane.
4220Hooks may be configured with the
4221.Ic set-hook
4222or
4223.Ic set-option
4224commands and displayed with
4225.Ic show-hooks
4226or
4227.Ic show-options
4228.Fl H .
4229The following two commands are equivalent:
4230.Bd -literal -offset indent.
4231set-hook -g pane-mode-changed[42] 'set -g status-left-style bg=red'
4232set-option -g pane-mode-changed[42] 'set -g status-left-style bg=red'
4233.Ed
4234.Pp
4235Setting a hook without specifying an array index clears the hook and sets the
4236first member of the array.
4237.Pp
4238A command's after
4239hook is run after it completes, except when the command is run as part of a hook
4240itself.
4241They are named with an
4242.Ql after-
4243prefix.
4244For example, the following command adds a hook to select the even-vertical
4245layout after every
4246.Ic split-window :
4247.Bd -literal -offset indent
4248set-hook -g after-split-window "selectl even-vertical"
4249.Ed
4250.Pp
4251All the notifications listed in the
4252.Sx CONTROL MODE
4253section are hooks (without any arguments), except
4254.Ic %exit .
4255The following additional hooks are available:
4256.Bl -tag -width "XXXXXXXXXXXXXXXXXXXXXX"
4257.It alert-activity
4258Run when a window has activity.
4259See
4260.Ic monitor-activity .
4261.It alert-bell
4262Run when a window has received a bell.
4263See
4264.Ic monitor-bell .
4265.It alert-silence
4266Run when a window has been silent.
4267See
4268.Ic monitor-silence .
4269.It client-attached
4270Run when a client is attached.
4271.It client-detached
4272Run when a client is detached
4273.It client-resized
4274Run when a client is resized.
4275.It client-session-changed
4276Run when a client's attached session is changed.
4277.It pane-died
4278Run when the program running in a pane exits, but
4279.Ic remain-on-exit
4280is on so the pane has not closed.
4281.It pane-exited
4282Run when the program running in a pane exits.
4283.It pane-focus-in
4284Run when the focus enters a pane, if the
4285.Ic focus-events
4286option is on.
4287.It pane-focus-out
4288Run when the focus exits a pane, if the
4289.Ic focus-events
4290option is on.
4291.It pane-set-clipboard
4292Run when the terminal clipboard is set using the
4293.Xr xterm 1
4294escape sequence.
4295.It session-created
4296Run when a new session created.
4297.It session-closed
4298Run when a session closed.
4299.It session-renamed
4300Run when a session is renamed.
4301.It window-linked
4302Run when a window is linked into a session.
4303.It window-renamed
4304Run when a window is renamed.
4305.It window-unlinked
4306Run when a window is unlinked from a session.
4307.El
4308.Pp
4309Hooks are managed with these commands:
4310.Bl -tag -width Ds
4311.It Xo Ic set-hook
4312.Op Fl agpRuw
4313.Op Fl t Ar target-pane
4314.Ar hook-name
4315.Ar command
4316.Xc
4317Without
4318.Fl R ,
4319sets (or with
4320.Fl u
4321unsets) hook
4322.Ar hook-name
4323to
4324.Ar command .
4325The flags are the same as for
4326.Ic set-option .
4327.Pp
4328With
4329.Fl R ,
4330run
4331.Ar hook-name
4332immediately.
4333.It Xo Ic show-hooks
4334.Op Fl gpw
4335.Op Fl t Ar target-pane
4336.Xc
4337Shows hooks.
4338The flags are the same as for
4339.Ic show-options .
4340.El
4341.Sh MOUSE SUPPORT
4342If the
4343.Ic mouse
4344option is on (the default is off),
4345.Nm
4346allows mouse events to be bound as keys.
4347The name of each key is made up of a mouse event (such as
4348.Ql MouseUp1 )
4349and a location suffix, one of the following:
4350.Bl -column "XXXXXXXXXXXXX" -offset indent
4351.It Li "Pane" Ta "the contents of a pane"
4352.It Li "Border" Ta "a pane border"
4353.It Li "Status" Ta "the status line window list"
4354.It Li "StatusLeft" Ta "the left part of the status line"
4355.It Li "StatusRight" Ta "the right part of the status line"
4356.It Li "StatusDefault" Ta "any other part of the status line"
4357.El
4358.Pp
4359The following mouse events are available:
4360.Bl -column "MouseDown1" "MouseDrag1" "WheelDown" -offset indent
4361.It Li "WheelUp" Ta "WheelDown" Ta ""
4362.It Li "MouseDown1" Ta "MouseUp1" Ta "MouseDrag1" Ta "MouseDragEnd1"
4363.It Li "MouseDown2" Ta "MouseUp2" Ta "MouseDrag2" Ta "MouseDragEnd2"
4364.It Li "MouseDown3" Ta "MouseUp3" Ta "MouseDrag3" Ta "MouseDragEnd3"
4365.It Li "SecondClick1" Ta "SecondClick2" Ta "SecondClick3"
4366.It Li "DoubleClick1" Ta "DoubleClick2" Ta "DoubleClick3"
4367.It Li "TripleClick1" Ta "TripleClick2" Ta "TripleClick3"
4368.El
4369.Pp
4370The
4371.Ql SecondClick
4372events are fired for the second click of a double click, even if there may be a
4373third click which will fire
4374.Ql TripleClick
4375instead of
4376.Ql DoubleClick .
4377.Pp
4378Each should be suffixed with a location, for example
4379.Ql MouseDown1Status .
4380.Pp
4381The special token
4382.Ql {mouse}
4383or
4384.Ql =
4385may be used as
4386.Ar target-window
4387or
4388.Ar target-pane
4389in commands bound to mouse key bindings.
4390It resolves to the window or pane over which the mouse event took place
4391(for example, the window in the status line over which button 1 was released for a
4392.Ql MouseUp1Status
4393binding, or the pane over which the wheel was scrolled for a
4394.Ql WheelDownPane
4395binding).
4396.Pp
4397The
4398.Ic send-keys
4399.Fl M
4400flag may be used to forward a mouse event to a pane.
4401.Pp
4402The default key bindings allow the mouse to be used to select and resize panes,
4403to copy text and to change window using the status line.
4404These take effect if the
4405.Ic mouse
4406option is turned on.
4407.Sh FORMATS
4408Certain commands accept the
4409.Fl F
4410flag with a
4411.Ar format
4412argument.
4413This is a string which controls the output format of the command.
4414Format variables are enclosed in
4415.Ql #{
4416and
4417.Ql } ,
4418for example
4419.Ql #{session_name} .
4420The possible variables are listed in the table below, or the name of a
4421.Nm
4422option may be used for an option's value.
4423Some variables have a shorter alias such as
4424.Ql #S ;
4425.Ql ##
4426is replaced by a single
4427.Ql # ,
4428.Ql #,
4429by a
4430.Ql \&,
4431and
4432.Ql #}
4433by a
4434.Ql } .
4435.Pp
4436Conditionals are available by prefixing with
4437.Ql \&?
4438and separating two alternatives with a comma;
4439if the specified variable exists and is not zero, the first alternative
4440is chosen, otherwise the second is used.
4441For example
4442.Ql #{?session_attached,attached,not attached}
4443will include the string
4444.Ql attached
4445if the session is attached and the string
4446.Ql not attached
4447if it is unattached, or
4448.Ql #{?automatic-rename,yes,no}
4449will include
4450.Ql yes
4451if
4452.Ic automatic-rename
4453is enabled, or
4454.Ql no
4455if not.
4456Conditionals can be nested arbitrarily.
4457Inside a conditional,
4458.Ql \&,
4459and
4460.Ql }
4461must be escaped as
4462.Ql #,
4463and
4464.Ql #} ,
4465unless they are part of a
4466.Ql #{...}
4467replacement.
4468For example:
4469.Bd -literal -offset indent
4470#{?pane_in_mode,#[fg=white#,bg=red],#[fg=red#,bg=white]}#W .
4471.Ed
4472.Pp
4473String comparisons may be expressed by prefixing two comma-separated
4474alternatives by
4475.Ql == ,
4476.Ql != ,
4477.Ql < ,
4478.Ql > ,
4479.Ql <=
4480or
4481.Ql >=
4482and a colon.
4483For example
4484.Ql #{==:#{host},myhost}
4485will be replaced by
4486.Ql 1
4487if running on
4488.Ql myhost ,
4489otherwise by
4490.Ql 0 .
4491.Ql ||
4492and
4493.Ql &&
4494evaluate to true if either or both of two comma-separated alternatives are
4495true, for example
4496.Ql #{||:#{pane_in_mode},#{alternate_on}} .
4497.Pp
4498An
4499.Ql m
4500specifies an
4501.Xr fnmatch 3
4502or regular expression comparison.
4503The first argument is the pattern and the second the string to compare.
4504An optional argument specifies flags:
4505.Ql r
4506means the pattern is a regular expression instead of the default
4507.Xr fnmatch 3
4508pattern, and
4509.Ql i
4510means to ignore case.
4511For example:
4512.Ql #{m:*foo*,#{host}}
4513or
4514.Ql #{m/ri:^A,MYVAR} .
4515A
4516.Ql C
4517performs a search for an
4518.Xr fnmatch 3
4519pattern or regular expression in the pane content and evaluates to zero if not
4520found, or a line number if found.
4521Like
4522.Ql m ,
4523an
4524.Ql r
4525flag means search for a regular expression and
4526.Ql i
4527ignores case.
4528For example:
4529.Ql #{C/r:^Start}
4530.Pp
4531Numeric operators may be performed by prefixing two comma-separated alternatives with an
4532.Ql e
4533and an operator.
4534An optional
4535.Ql f
4536flag may be given after the operator to use floating point numbers, otherwise integers are used.
4537This may be followed by a number giving the number of decimal places to use for the result.
4538The available operators are:
4539addition
4540.Ql + ,
4541subtraction
4542.Ql - ,
4543multiplication
4544.Ql * ,
4545division
4546.Ql / ,
4547and modulus
4548.Ql m
4549or
4550.Ql %
4551(note that
4552.Ql %
4553must be escaped as
4554.Ql %%
4555in formats which are also expanded by
4556.Xr strftime 3 ) .
4557For example,
4558.Ql #{e|*|f|4:5.5,3}
4559multiplies 5.5 by 3 for a result with four decimal places and
4560.Ql #{e|%%:7,3}
4561returns the modulus of 7 and 3.
4562.Pp
4563A limit may be placed on the length of the resultant string by prefixing it
4564by an
4565.Ql = ,
4566a number and a colon.
4567Positive numbers count from the start of the string and negative from the end,
4568so
4569.Ql #{=5:pane_title}
4570will include at most the first five characters of the pane title, or
4571.Ql #{=-5:pane_title}
4572the last five characters.
4573A suffix or prefix may be given as a second argument - if provided then it is
4574appended or prepended to the string if the length has been trimmed, for example
4575.Ql #{=/5/...:pane_title}
4576will append
4577.Ql ...
4578if the pane title is more than five characters.
4579Similarly,
4580.Ql p
4581pads the string to a given width, for example
4582.Ql #{p10:pane_title}
4583will result in a width of at least 10 characters.
4584A positive width pads on the left, a negative on the right.
4585.Ql n
4586expands to the length of the variable, for example
4587.Ql #{n:window_name} .
4588.Pp
4589Prefixing a time variable with
4590.Ql t:\&
4591will convert it to a string, so if
4592.Ql #{window_activity}
4593gives
4594.Ql 1445765102 ,
4595.Ql #{t:window_activity}
4596gives
4597.Ql Sun Oct 25 09:25:02 2015 .
4598Adding
4599.Ql p (
4600.Ql `t/p` )
4601will use shorter but less accurate time format for times in the past.
4602A custom format may be given using an
4603.Ql f
4604suffix (note that
4605.Ql %
4606must be escaped as
4607.Ql %%
4608if the format is separately being passed through
4609.Xr strftime 3 ,
4610for example in the
4611.Ic status-left
4612option):
4613.Ql #{t/f/%%H#:%%M:window_activity} ,
4614see
4615.Xr strftime 3 .
4616.Pp
4617The
4618.Ql b:\&
4619and
4620.Ql d:\&
4621prefixes are
4622.Xr basename 3
4623and
4624.Xr dirname 3
4625of the variable respectively.
4626.Ql q:\&
4627will escape
4628.Xr sh 1
4629special characters.
4630.Ql E:\&
4631will expand the format twice, for example
4632.Ql #{E:status-left}
4633is the result of expanding the content of the
4634.Ic status-left
4635option rather than the option itself.
4636.Ql T:\&
4637is like
4638.Ql E:\&
4639but also expands
4640.Xr strftime 3
4641specifiers.
4642.Ql S:\& ,
4643.Ql W:\&
4644or
4645.Ql P:\&
4646will loop over each session, window or pane and insert the format once
4647for each.
4648For windows and panes, two comma-separated formats may be given:
4649the second is used for the current window or active pane.
4650For example, to get a list of windows formatted like the status line:
4651.Bd -literal -offset indent
4652#{W:#{E:window-status-format} ,#{E:window-status-current-format} }
4653.Ed
4654.Pp
4655A prefix of the form
4656.Ql s/foo/bar/:\&
4657will substitute
4658.Ql foo
4659with
4660.Ql bar
4661throughout.
4662The first argument may be an extended regular expression and a final argument may be
4663.Ql i
4664to ignore case, for example
4665.Ql s/a(.)/\e1x/i:\&
4666would change
4667.Ql abABab
4668into
4669.Ql bxBxbx .
4670.Pp
4671In addition, the last line of a shell command's output may be inserted using
4672.Ql #() .
4673For example,
4674.Ql #(uptime)
4675will insert the system's uptime.
4676When constructing formats,
4677.Nm
4678does not wait for
4679.Ql #()
4680commands to finish; instead, the previous result from running the same command is used,
4681or a placeholder if the command has not been run before.
4682If the command hasn't exited, the most recent line of output will be used, but the status
4683line will not be updated more than once a second.
4684Commands are executed with the
4685.Nm
4686global environment set (see the
4687.Sx GLOBAL AND SESSION ENVIRONMENT
4688section).
4689.Pp
4690An
4691.Ql l
4692specifies that a string should be interpreted literally and not expanded.
4693For example
4694.Ql #{l:#{?pane_in_mode,yes,no}}
4695will be replaced by
4696.Ql #{?pane_in_mode,yes,no} .
4697.Pp
4698The following variables are available, where appropriate:
4699.Bl -column "XXXXXXXXXXXXXXXXXXX" "XXXXX"
4700.It Sy "Variable name" Ta Sy "Alias" Ta Sy "Replaced with"
4701.It Li "alternate_on" Ta "" Ta "1 if pane is in alternate screen"
4702.It Li "alternate_saved_x" Ta "" Ta "Saved cursor X in alternate screen"
4703.It Li "alternate_saved_y" Ta "" Ta "Saved cursor Y in alternate screen"
4704.It Li "buffer_created" Ta "" Ta "Time buffer created"
4705.It Li "buffer_name" Ta "" Ta "Name of buffer"
4706.It Li "buffer_sample" Ta "" Ta "Sample of start of buffer"
4707.It Li "buffer_size" Ta "" Ta "Size of the specified buffer in bytes"
4708.It Li "client_activity" Ta "" Ta "Time client last had activity"
4709.It Li "client_cell_height" Ta "" Ta "Height of each client cell in pixels"
4710.It Li "client_cell_width" Ta "" Ta "Width of each client cell in pixels"
4711.It Li "client_control_mode" Ta "" Ta "1 if client is in control mode"
4712.It Li "client_created" Ta "" Ta "Time client created"
4713.It Li "client_discarded" Ta "" Ta "Bytes discarded when client behind"
4714.It Li "client_flags" Ta "" Ta "List of client flags"
4715.It Li "client_height" Ta "" Ta "Height of client"
4716.It Li "client_key_table" Ta "" Ta "Current key table"
4717.It Li "client_last_session" Ta "" Ta "Name of the client's last session"
4718.It Li "client_name" Ta "" Ta "Name of client"
4719.It Li "client_pid" Ta "" Ta "PID of client process"
4720.It Li "client_prefix" Ta "" Ta "1 if prefix key has been pressed"
4721.It Li "client_readonly" Ta "" Ta "1 if client is readonly"
4722.It Li "client_session" Ta "" Ta "Name of the client's session"
4723.It Li "client_termname" Ta "" Ta "Terminal name of client"
4724.It Li "client_termtype" Ta "" Ta "Terminal type of client, if available"
4725.It Li "client_termfeatures" Ta "" Ta "Terminal features of client, if any"
4726.It Li "client_tty" Ta "" Ta "Pseudo terminal of client"
4727.It Li "client_utf8" Ta "" Ta "1 if client supports UTF-8"
4728.It Li "client_width" Ta "" Ta "Width of client"
4729.It Li "client_written" Ta "" Ta "Bytes written to client"
4730.It Li "command" Ta "" Ta "Name of command in use, if any"
4731.It Li "command_list_alias" Ta "" Ta "Command alias if listing commands"
4732.It Li "command_list_name" Ta "" Ta "Command name if listing commands"
4733.It Li "command_list_usage" Ta "" Ta "Command usage if listing commands"
4734.It Li "copy_cursor_line" Ta "" Ta "Line the cursor is on in copy mode"
4735.It Li "copy_cursor_word" Ta "" Ta "Word under cursor in copy mode"
4736.It Li "copy_cursor_x" Ta "" Ta "Cursor X position in copy mode"
4737.It Li "copy_cursor_y" Ta "" Ta "Cursor Y position in copy mode"
4738.It Li "cursor_character" Ta "" Ta "Character at cursor in pane"
4739.It Li "cursor_flag" Ta "" Ta "Pane cursor flag"
4740.It Li "cursor_x" Ta "" Ta "Cursor X position in pane"
4741.It Li "cursor_y" Ta "" Ta "Cursor Y position in pane"
4742.It Li "history_bytes" Ta "" Ta "Number of bytes in window history"
4743.It Li "history_limit" Ta "" Ta "Maximum window history lines"
4744.It Li "history_size" Ta "" Ta "Size of history in lines"
4745.It Li "hook" Ta "" Ta "Name of running hook, if any"
4746.It Li "hook_pane" Ta "" Ta "ID of pane where hook was run, if any"
4747.It Li "hook_session" Ta "" Ta "ID of session where hook was run, if any"
4748.It Li "hook_session_name" Ta "" Ta "Name of session where hook was run, if any"
4749.It Li "hook_window" Ta "" Ta "ID of window where hook was run, if any"
4750.It Li "hook_window_name" Ta "" Ta "Name of window where hook was run, if any"
4751.It Li "host" Ta "#H" Ta "Hostname of local host"
4752.It Li "host_short" Ta "#h" Ta "Hostname of local host (no domain name)"
4753.It Li "insert_flag" Ta "" Ta "Pane insert flag"
4754.It Li "keypad_cursor_flag" Ta "" Ta "Pane keypad cursor flag"
4755.It Li "keypad_flag" Ta "" Ta "Pane keypad flag"
4756.It Li "line" Ta "" Ta "Line number in the list"
4757.It Li "mouse_all_flag" Ta "" Ta "Pane mouse all flag"
4758.It Li "mouse_any_flag" Ta "" Ta "Pane mouse any flag"
4759.It Li "mouse_button_flag" Ta "" Ta "Pane mouse button flag"
4760.It Li "mouse_line" Ta "" Ta "Line under mouse, if any"
4761.It Li "mouse_sgr_flag" Ta "" Ta "Pane mouse SGR flag"
4762.It Li "mouse_standard_flag" Ta "" Ta "Pane mouse standard flag"
4763.It Li "mouse_utf8_flag" Ta "" Ta "Pane mouse UTF-8 flag"
4764.It Li "mouse_word" Ta "" Ta "Word under mouse, if any"
4765.It Li "mouse_x" Ta "" Ta "Mouse X position, if any"
4766.It Li "mouse_y" Ta "" Ta "Mouse Y position, if any"
4767.It Li "origin_flag" Ta "" Ta "Pane origin flag"
4768.It Li "pane_active" Ta "" Ta "1 if active pane"
4769.It Li "pane_at_bottom" Ta "" Ta "1 if pane is at the bottom of window"
4770.It Li "pane_at_left" Ta "" Ta "1 if pane is at the left of window"
4771.It Li "pane_at_right" Ta "" Ta "1 if pane is at the right of window"
4772.It Li "pane_at_top" Ta "" Ta "1 if pane is at the top of window"
4773.It Li "pane_bottom" Ta "" Ta "Bottom of pane"
4774.It Li "pane_current_command" Ta "" Ta "Current command if available"
4775.It Li "pane_current_path" Ta "" Ta "Current path if available"
4776.It Li "pane_dead" Ta "" Ta "1 if pane is dead"
4777.It Li "pane_dead_status" Ta "" Ta "Exit status of process in dead pane"
4778.It Li "pane_format" Ta "" Ta "1 if format is for a pane"
4779.It Li "pane_height" Ta "" Ta "Height of pane"
4780.It Li "pane_id" Ta "#D" Ta "Unique pane ID"
4781.It Li "pane_in_mode" Ta "" Ta "1 if pane is in a mode"
4782.It Li "pane_index" Ta "#P" Ta "Index of pane"
4783.It Li "pane_input_off" Ta "" Ta "1 if input to pane is disabled"
4784.It Li "pane_last" Ta "" Ta "1 if last pane"
4785.It Li "pane_left" Ta "" Ta "Left of pane"
4786.It Li "pane_marked" Ta "" Ta "1 if this is the marked pane"
4787.It Li "pane_marked_set" Ta "" Ta "1 if a marked pane is set"
4788.It Li "pane_mode" Ta "" Ta "Name of pane mode, if any"
4789.It Li "pane_path" Ta "" Ta "Path of pane (can be set by application)"
4790.It Li "pane_pid" Ta "" Ta "PID of first process in pane"
4791.It Li "pane_pipe" Ta "" Ta "1 if pane is being piped"
4792.It Li "pane_right" Ta "" Ta "Right of pane"
4793.It Li "pane_search_string" Ta "" Ta "Last search string in copy mode"
4794.It Li "pane_skipped" Ta "" Ta "Bytes skipped as not visible in pane"
4795.It Li "pane_start_command" Ta "" Ta "Command pane started with"
4796.It Li "pane_synchronized" Ta "" Ta "1 if pane is synchronized"
4797.It Li "pane_tabs" Ta "" Ta "Pane tab positions"
4798.It Li "pane_title" Ta "#T" Ta "Title of pane (can be set by application)"
4799.It Li "pane_top" Ta "" Ta "Top of pane"
4800.It Li "pane_tty" Ta "" Ta "Pseudo terminal of pane"
4801.It Li "pane_width" Ta "" Ta "Width of pane"
4802.It Li "pane_written" Ta "" Ta "Bytes written by pane (aside from redrawing)"
4803.It Li "pid" Ta "" Ta "Server PID"
4804.It Li "popup_key" Ta "" Ta "Key pressed in popup"
4805.It Li "popup_mouse_x" Ta "" Ta "Mouse X position in popup"
4806.It Li "popup_mouse_y" Ta "" Ta "Mouse Y position in popup"
4807.It Li "rectangle_toggle" Ta "" Ta "1 if rectangle selection is activated"
4808.It Li "scroll_position" Ta "" Ta "Scroll position in copy mode"
4809.It Li "scroll_region_lower" Ta "" Ta "Bottom of scroll region in pane"
4810.It Li "scroll_region_upper" Ta "" Ta "Top of scroll region in pane"
4811.It Li "search_present" Ta "" Ta "1 if search started in copy mode"
4812.It Li "search_match" Ta "" Ta "Search match if any"
4813.It Li "selection_active" Ta "" Ta "1 if selection started and changes with the cursor in copy mode"
4814.It Li "selection_end_x" Ta "" Ta "X position of the end of the selection"
4815.It Li "selection_end_y" Ta "" Ta "Y position of the end of the selection"
4816.It Li "selection_present" Ta "" Ta "1 if selection started in copy mode"
4817.It Li "selection_start_x" Ta "" Ta "X position of the start of the selection"
4818.It Li "selection_start_y" Ta "" Ta "Y position of the start of the selection"
4819.It Li "session_activity" Ta "" Ta "Time of session last activity"
4820.It Li "session_alerts" Ta "" Ta "List of window indexes with alerts"
4821.It Li "session_attached" Ta "" Ta "Number of clients session is attached to"
4822.It Li "session_attached_list" Ta "" Ta "List of clients session is attached to"
4823.It Li "session_created" Ta "" Ta "Time session created"
4824.It Li "session_format" Ta "" Ta "1 if format is for a session"
4825.It Li "session_group" Ta "" Ta "Name of session group"
4826.It Li "session_group_attached" Ta "" Ta "Number of clients sessions in group are attached to"
4827.It Li "session_group_attached_list" Ta "" Ta "List of clients sessions in group are attached to"
4828.It Li "session_group_list" Ta "" Ta "List of sessions in group"
4829.It Li "session_group_many_attached" Ta "" Ta "1 if multiple clients attached to sessions in group"
4830.It Li "session_group_size" Ta "" Ta "Size of session group"
4831.It Li "session_grouped" Ta "" Ta "1 if session in a group"
4832.It Li "session_id" Ta "" Ta "Unique session ID"
4833.It Li "session_last_attached" Ta "" Ta "Time session last attached"
4834.It Li "session_many_attached" Ta "" Ta "1 if multiple clients attached"
4835.It Li "session_marked" Ta "" Ta "1 if this session contains the marked pane"
4836.It Li "session_name" Ta "#S" Ta "Name of session"
4837.It Li "session_path" Ta "" Ta "Working directory of session"
4838.It Li "session_stack" Ta "" Ta "Window indexes in most recent order"
4839.It Li "session_windows" Ta "" Ta "Number of windows in session"
4840.It Li "socket_path" Ta "" Ta "Server socket path"
4841.It Li "start_time" Ta "" Ta "Server start time"
4842.It Li "version" Ta "" Ta "Server version"
4843.It Li "window_active" Ta "" Ta "1 if window active"
4844.It Li "window_active_clients" Ta "" Ta "Number of clients viewing this window"
4845.It Li "window_active_clients_list" Ta "" Ta "List of clients viewing this window"
4846.It Li "window_active_sessions" Ta "" Ta "Number of sessions on which this window is active"
4847.It Li "window_active_sessions_list" Ta "" Ta "List of sessions on which this window is active"
4848.It Li "window_activity" Ta "" Ta "Time of window last activity"
4849.It Li "window_activity_flag" Ta "" Ta "1 if window has activity"
4850.It Li "window_bell_flag" Ta "" Ta "1 if window has bell"
4851.It Li "window_bigger" Ta "" Ta "1 if window is larger than client"
4852.It Li "window_cell_height" Ta "" Ta "Height of each cell in pixels"
4853.It Li "window_cell_width" Ta "" Ta "Width of each cell in pixels"
4854.It Li "window_end_flag" Ta "" Ta "1 if window has the highest index"
4855.It Li "window_flags" Ta "#F" Ta "Window flags"
4856.It Li "window_format" Ta "" Ta "1 if format is for a window"
4857.It Li "window_height" Ta "" Ta "Height of window"
4858.It Li "window_id" Ta "" Ta "Unique window ID"
4859.It Li "window_index" Ta "#I" Ta "Index of window"
4860.It Li "window_last_flag" Ta "" Ta "1 if window is the last used"
4861.It Li "window_layout" Ta "" Ta "Window layout description, ignoring zoomed window panes"
4862.It Li "window_linked" Ta "" Ta "1 if window is linked across sessions"
4863.It Li "window_linked_sessions" Ta "" Ta "Number of sessions this window is linked to"
4864.It Li "window_linked_sessions_list" Ta "" Ta "List of sessions this window is linked to"
4865.It Li "window_marked_flag" Ta "" Ta "1 if window contains the marked pane"
4866.It Li "window_name" Ta "#W" Ta "Name of window"
4867.It Li "window_offset_x" Ta "" Ta "X offset into window if larger than client"
4868.It Li "window_offset_y" Ta "" Ta "Y offset into window if larger than client"
4869.It Li "window_panes" Ta "" Ta "Number of panes in window"
4870.It Li "window_silence_flag" Ta "" Ta "1 if window has silence alert"
4871.It Li "window_stack_index" Ta "" Ta "Index in session most recent stack"
4872.It Li "window_start_flag" Ta "" Ta "1 if window has the lowest index"
4873.It Li "window_visible_layout" Ta "" Ta "Window layout description, respecting zoomed window panes"
4874.It Li "window_width" Ta "" Ta "Width of window"
4875.It Li "window_zoomed_flag" Ta "" Ta "1 if window is zoomed"
4876.It Li "wrap_flag" Ta "" Ta "Pane wrap flag"
4877.El
4878.Sh STYLES
4879.Nm
4880offers various options to specify the colour and attributes of aspects of the
4881interface, for example
4882.Ic status-style
4883for the status line.
4884In addition, embedded styles may be specified in format options, such as
4885.Ic status-left ,
4886by enclosing them in
4887.Ql #[
4888and
4889.Ql \&] .
4890.Pp
4891A style may be the single term
4892.Ql default
4893to specify the default style (which may come from an option, for example
4894.Ic status-style
4895in the status line) or a space
4896or comma separated list of the following:
4897.Bl -tag -width Ds
4898.It Ic fg=colour
4899Set the foreground colour.
4900The colour is one of:
4901.Ic black ,
4902.Ic red ,
4903.Ic green ,
4904.Ic yellow ,
4905.Ic blue ,
4906.Ic magenta ,
4907.Ic cyan ,
4908.Ic white ;
4909if supported the bright variants
4910.Ic brightred ,
4911.Ic brightgreen ,
4912.Ic brightyellow ;
4913.Ic colour0
4914to
4915.Ic colour255
4916from the 256-colour set;
4917.Ic default
4918for the default colour;
4919.Ic terminal
4920for the terminal default colour; or a hexadecimal RGB string such as
4921.Ql #ffffff .
4922.It Ic bg=colour
4923Set the background colour.
4924.It Ic none
4925Set no attributes (turn off any active attributes).
4926.It Xo Ic acs ,
4927.Ic bright
4928(or
4929.Ic bold ) ,
4930.Ic dim ,
4931.Ic underscore ,
4932.Ic blink ,
4933.Ic reverse ,
4934.Ic hidden ,
4935.Ic italics ,
4936.Ic overline ,
4937.Ic strikethrough ,
4938.Ic double-underscore ,
4939.Ic curly-underscore ,
4940.Ic dotted-underscore ,
4941.Ic dashed-underscore
4942.Xc
4943Set an attribute.
4944Any of the attributes may be prefixed with
4945.Ql no
4946to unset.
4947.Ic acs
4948is the terminal alternate character set.
4949.It Xo Ic align=left
4950(or
4951.Ic noalign ) ,
4952.Ic align=centre ,
4953.Ic align=right
4954.Xc
4955Align text to the left, centre or right of the available space if appropriate.
4956.It Ic fill=colour
4957Fill the available space with a background colour if appropriate.
4958.It Xo Ic list=on ,
4959.Ic list=focus ,
4960.Ic list=left-marker ,
4961.Ic list=right-marker ,
4962.Ic nolist
4963.Xc
4964Mark the position of the various window list components in the
4965.Ic status-format
4966option:
4967.Ic list=on
4968marks the start of the list;
4969.Ic list=focus
4970is the part of the list that should be kept in focus if the entire list won't fit
4971in the available space (typically the current window);
4972.Ic list=left-marker
4973and
4974.Ic list=right-marker
4975mark the text to be used to mark that text has been trimmed from the left or
4976right of the list if there is not enough space.
4977.It Xo Ic push-default ,
4978.Ic pop-default
4979.Xc
4980Store the current colours and attributes as the default or reset to the previous
4981default.
4982A
4983.Ic push-default
4984affects any subsequent use of the
4985.Ic default
4986term until a
4987.Ic pop-default .
4988Only one default may be pushed (each
4989.Ic push-default
4990replaces the previous saved default).
4991.It Xo Ic range=left ,
4992.Ic range=right ,
4993.Ic range=window|X ,
4994.Ic norange
4995.Xc
4996Mark a range in the
4997.Ic status-format
4998option.
4999.Ic range=left
5000and
5001.Ic range=right
5002are the text used for the
5003.Ql StatusLeft
5004and
5005.Ql StatusRight
5006mouse keys.
5007.Ic range=window|X
5008is the range for a window passed to the
5009.Ql Status
5010mouse key, where
5011.Ql X
5012is a window index.
5013.El
5014.Pp
5015Examples are:
5016.Bd -literal -offset indent
5017fg=yellow bold underscore blink
5018bg=black,fg=default,noreverse
5019.Ed
5020.Sh NAMES AND TITLES
5021.Nm
5022distinguishes between names and titles.
5023Windows and sessions have names, which may be used to specify them in targets
5024and are displayed in the status line and various lists: the name is the
5025.Nm
5026identifier for a window or session.
5027Only panes have titles.
5028A pane's title is typically set by the program running inside the pane using
5029an escape sequence (like it would set the
5030.Xr xterm 1
5031window title in
5032.Xr X 7 ) .
5033Windows themselves do not have titles - a window's title is the title of its
5034active pane.
5035.Nm
5036itself may set the title of the terminal in which the client is running, see
5037the
5038.Ic set-titles
5039option.
5040.Pp
5041A session's name is set with the
5042.Ic new-session
5043and
5044.Ic rename-session
5045commands.
5046A window's name is set with one of:
5047.Bl -enum -width Ds
5048.It
5049A command argument (such as
5050.Fl n
5051for
5052.Ic new-window
5053or
5054.Ic new-session ) .
5055.It
5056An escape sequence (if the
5057.Ic allow-rename
5058option is turned on):
5059.Bd -literal -offset indent
5060$ printf '\e033kWINDOW_NAME\e033\e\e'
5061.Ed
5062.It
5063Automatic renaming, which sets the name to the active command in the window's
5064active pane.
5065See the
5066.Ic automatic-rename
5067option.
5068.El
5069.Pp
5070When a pane is first created, its title is the hostname.
5071A pane's title can be set via the title setting escape sequence, for example:
5072.Bd -literal -offset indent
5073$ printf '\e033]2;My Title\e033\e\e'
5074.Ed
5075.Pp
5076It can also be modified with the
5077.Ic select-pane
5078.Fl T
5079command.
5080.Sh GLOBAL AND SESSION ENVIRONMENT
5081When the server is started,
5082.Nm
5083copies the environment into the
5084.Em global environment ;
5085in addition, each session has a
5086.Em session environment .
5087When a window is created, the session and global environments are merged.
5088If a variable exists in both, the value from the session environment is used.
5089The result is the initial environment passed to the new process.
5090.Pp
5091The
5092.Ic update-environment
5093session option may be used to update the session environment from the client
5094when a new session is created or an old reattached.
5095.Nm
5096also initialises the
5097.Ev TMUX
5098variable with some internal information to allow commands to be executed
5099from inside, and the
5100.Ev TERM
5101variable with the correct terminal setting of
5102.Ql screen .
5103.Pp
5104Variables in both session and global environments may be marked as hidden.
5105Hidden variables are not passed into the environment of new processes and
5106instead can only be used by tmux itself (for example in formats, see the
5107.Sx FORMATS
5108section).
5109.Pp
5110Commands to alter and view the environment are:
5111.Bl -tag -width Ds
5112.It Xo Ic set-environment
5113.Op Fl Fhgru
5114.Op Fl t Ar target-session
5115.Ar name Op Ar value
5116.Xc
5117.D1 (alias: Ic setenv )
5118Set or unset an environment variable.
5119If
5120.Fl g
5121is used, the change is made in the global environment; otherwise, it is applied
5122to the session environment for
5123.Ar target-session .
5124If
5125.Fl F
5126is present, then
5127.Ar value
5128is expanded as a format.
5129The
5130.Fl u
5131flag unsets a variable.
5132.Fl r
5133indicates the variable is to be removed from the environment before starting a
5134new process.
5135.Fl h
5136marks the variable as hidden.
5137.It Xo Ic show-environment
5138.Op Fl hgs
5139.Op Fl t Ar target-session
5140.Op Ar variable
5141.Xc
5142.D1 (alias: Ic showenv )
5143Display the environment for
5144.Ar target-session
5145or the global environment with
5146.Fl g .
5147If
5148.Ar variable
5149is omitted, all variables are shown.
5150Variables removed from the environment are prefixed with
5151.Ql - .
5152If
5153.Fl s
5154is used, the output is formatted as a set of Bourne shell commands.
5155.Fl h
5156shows hidden variables (omitted by default).
5157.El
5158.Sh STATUS LINE
5159.Nm
5160includes an optional status line which is displayed in the bottom line of each
5161terminal.
5162.Pp
5163By default, the status line is enabled and one line in height (it may be
5164disabled or made multiple lines with the
5165.Ic status
5166session option) and contains, from left-to-right: the name of the current
5167session in square brackets; the window list; the title of the active pane
5168in double quotes; and the time and date.
5169.Pp
5170Each line of the status line is configured with the
5171.Ic status-format
5172option.
5173The default is made of three parts: configurable left and right sections (which
5174may contain dynamic content such as the time or output from a shell command,
5175see the
5176.Ic status-left ,
5177.Ic status-left-length ,
5178.Ic status-right ,
5179and
5180.Ic status-right-length
5181options below), and a central window list.
5182By default, the window list shows the index, name and (if any) flag of the
5183windows present in the current session in ascending numerical order.
5184It may be customised with the
5185.Ar window-status-format
5186and
5187.Ar window-status-current-format
5188options.
5189The flag is one of the following symbols appended to the window name:
5190.Bl -column "Symbol" "Meaning" -offset indent
5191.It Sy "Symbol" Ta Sy "Meaning"
5192.It Li "*" Ta "Denotes the current window."
5193.It Li "-" Ta "Marks the last window (previously selected)."
5194.It Li "#" Ta "Window activity is monitored and activity has been detected."
5195.It Li "\&!" Ta "Window bells are monitored and a bell has occurred in the window."
5196.It Li "~" Ta "The window has been silent for the monitor-silence interval."
5197.It Li "M" Ta "The window contains the marked pane."
5198.It Li "Z" Ta "The window's active pane is zoomed."
5199.El
5200.Pp
5201The # symbol relates to the
5202.Ic monitor-activity
5203window option.
5204The window name is printed in inverted colours if an alert (bell, activity or
5205silence) is present.
5206.Pp
5207The colour and attributes of the status line may be configured, the entire
5208status line using the
5209.Ic status-style
5210session option and individual windows using the
5211.Ic window-status-style
5212window option.
5213.Pp
5214The status line is automatically refreshed at interval if it has changed, the
5215interval may be controlled with the
5216.Ic status-interval
5217session option.
5218.Pp
5219Commands related to the status line are as follows:
5220.Bl -tag -width Ds
5221.It Xo Ic command-prompt
5222.Op Fl 1ikNTW
5223.Op Fl I Ar inputs
5224.Op Fl p Ar prompts
5225.Op Fl t Ar target-client
5226.Op Ar template
5227.Xc
5228Open the command prompt in a client.
5229This may be used from inside
5230.Nm
5231to execute commands interactively.
5232.Pp
5233If
5234.Ar template
5235is specified, it is used as the command.
5236If present,
5237.Fl I
5238is a comma-separated list of the initial text for each prompt.
5239If
5240.Fl p
5241is given,
5242.Ar prompts
5243is a comma-separated list of prompts which are displayed in order; otherwise
5244a single prompt is displayed, constructed from
5245.Ar template
5246if it is present, or
5247.Ql \&:
5248if not.
5249.Pp
5250Before the command is executed, the first occurrence of the string
5251.Ql %%
5252and all occurrences of
5253.Ql %1
5254are replaced by the response to the first prompt, all
5255.Ql %2
5256are replaced with the response to the second prompt, and so on for further
5257prompts.
5258Up to nine prompt responses may be replaced
5259.Po
5260.Ql %1
5261to
5262.Ql %9
5263.Pc .
5264.Ql %%%
5265is like
5266.Ql %%
5267but any quotation marks are escaped.
5268.Pp
5269.Fl 1
5270makes the prompt only accept one key press, in this case the resulting input
5271is a single character.
5272.Fl k
5273is like
5274.Fl 1
5275but the key press is translated to a key name.
5276.Fl N
5277makes the prompt only accept numeric key presses.
5278.Fl i
5279executes the command every time the prompt input changes instead of when the
5280user exits the command prompt.
5281.Fl T
5282tells
5283.Nm
5284that the prompt is for a target which affects what completions are offered when
5285.Em Tab
5286is pressed;
5287.Fl W
5288is similar but indicates the prompt is for a window.
5289.Pp
5290The following keys have a special meaning in the command prompt, depending
5291on the value of the
5292.Ic status-keys
5293option:
5294.Bl -column "FunctionXXXXXXXXXXXXXXXXXXXXXXXXX" "viXXXX" "emacsX" -offset indent
5295.It Sy "Function" Ta Sy "vi" Ta Sy "emacs"
5296.It Li "Cancel command prompt" Ta "q" Ta "Escape"
5297.It Li "Delete from cursor to start of word" Ta "" Ta "C-w"
5298.It Li "Delete entire command" Ta "d" Ta "C-u"
5299.It Li "Delete from cursor to end" Ta "D" Ta "C-k"
5300.It Li "Execute command" Ta "Enter" Ta "Enter"
5301.It Li "Get next command from history" Ta "" Ta "Down"
5302.It Li "Get previous command from history" Ta "" Ta "Up"
5303.It Li "Insert top paste buffer" Ta "p" Ta "C-y"
5304.It Li "Look for completions" Ta "Tab" Ta "Tab"
5305.It Li "Move cursor left" Ta "h" Ta "Left"
5306.It Li "Move cursor right" Ta "l" Ta "Right"
5307.It Li "Move cursor to end" Ta "$" Ta "C-e"
5308.It Li "Move cursor to next word" Ta "w" Ta "M-f"
5309.It Li "Move cursor to previous word" Ta "b" Ta "M-b"
5310.It Li "Move cursor to start" Ta "0" Ta "C-a"
5311.It Li "Transpose characters" Ta "" Ta "C-t"
5312.El
5313.It Xo Ic confirm-before
5314.Op Fl p Ar prompt
5315.Op Fl t Ar target-client
5316.Ar command
5317.Xc
5318.D1 (alias: Ic confirm )
5319Ask for confirmation before executing
5320.Ar command .
5321If
5322.Fl p
5323is given,
5324.Ar prompt
5325is the prompt to display; otherwise a prompt is constructed from
5326.Ar command .
5327It may contain the special character sequences supported by the
5328.Ic status-left
5329option.
5330.Pp
5331This command works only from inside
5332.Nm .
5333.It Xo Ic display-menu
5334.Op Fl c Ar target-client
5335.Op Fl t Ar target-pane
5336.Op Fl T Ar title
5337.Op Fl x Ar position
5338.Op Fl y Ar position
5339.Ar name
5340.Ar key
5341.Ar command
5342.Ar ...
5343.Xc
5344.D1 (alias: Ic menu )
5345Display a menu on
5346.Ar target-client .
5347.Ar target-pane
5348gives the target for any commands run from the menu.
5349.Pp
5350A menu is passed as a series of arguments: first the menu item name,
5351second the key shortcut (or empty for none) and third the command
5352to run when the menu item is chosen.
5353The name and command are formats, see the
5354.Sx FORMATS
5355and
5356.Sx STYLES
5357sections.
5358If the name begins with a hyphen (-), then the item is disabled (shown dim) and
5359may not be chosen.
5360The name may be empty for a separator line, in which case both the key and
5361command should be omitted.
5362.Pp
5363.Fl T
5364is a format for the menu title (see
5365.Sx FORMATS ) .
5366.Pp
5367.Fl x
5368and
5369.Fl y
5370give the position of the menu.
5371Both may be a row or column number, or one of the following special values:
5372.Bl -column "XXXXX" "XXXX" -offset indent
5373.It Sy "Value" Ta Sy "Flag" Ta Sy "Meaning"
5374.It Li "C" Ta "Both" Ta "The centre of the terminal"
5375.It Li "R" Ta Fl x Ta "The right side of the terminal"
5376.It Li "P" Ta "Both" Ta "The bottom left of the pane"
5377.It Li "M" Ta "Both" Ta "The mouse position"
5378.It Li "W" Ta "Both" Ta "The window position on the status line"
5379.It Li "S" Ta Fl y Ta "The line above or below the status line"
5380.El
5381.Pp
5382Each menu consists of items followed by a key shortcut shown in brackets.
5383If the menu is too large to fit on the terminal, it is not displayed.
5384Pressing the key shortcut chooses the corresponding item.
5385If the mouse is enabled and the menu is opened from a mouse key binding, releasing
5386the mouse button with an item selected will choose that item.
5387The following keys are also available:
5388.Bl -column "Key" "Function" -offset indent
5389.It Sy "Key" Ta Sy "Function"
5390.It Li "Enter" Ta "Choose selected item"
5391.It Li "Up" Ta "Select previous item"
5392.It Li "Down" Ta "Select next item"
5393.It Li "q" Ta "Exit menu"
5394.El
5395.It Xo Ic display-message
5396.Op Fl aIpv
5397.Op Fl c Ar target-client
5398.Op Fl d Ar delay
5399.Op Fl t Ar target-pane
5400.Op Ar message
5401.Xc
5402.D1 (alias: Ic display )
5403Display a message.
5404If
5405.Fl p
5406is given, the output is printed to stdout, otherwise it is displayed in the
5407.Ar target-client
5408status line for up to
5409.Ar delay
5410milliseconds.
5411If
5412.Ar delay
5413is not given, the
5414.Ic message-time
5415option is used; a delay of zero waits for a key press.
5416The format of
5417.Ar message
5418is described in the
5419.Sx FORMATS
5420section; information is taken from
5421.Ar target-pane
5422if
5423.Fl t
5424is given, otherwise the active pane.
5425.Pp
5426.Fl v
5427prints verbose logging as the format is parsed and
5428.Fl a
5429lists the format variables and their values.
5430.Pp
5431.Fl I
5432forwards any input read from stdin to the empty pane given by
5433.Ar target-pane .
5434.It Xo Ic display-popup
5435.Op Fl CEK
5436.Op Fl c Ar target-client
5437.Op Fl d Ar start-directory
5438.Op Fl h Ar height
5439.Op Fl R Ar shell-command
5440.Op Fl t Ar target-pane
5441.Op Fl w Ar width
5442.Op Fl x Ar position
5443.Op Fl y Ar position
5444.Op Ar command Ar line Ar ...
5445.Xc
5446.D1 (alias: Ic popup )
5447Display a popup on
5448.Ar target-client .
5449A popup is a rectangular box drawn over the top of any panes.
5450Panes are not updated while a popup is present.
5451The popup content may be given in two ways:
5452.Bl -enum -offset Ds
5453.It
5454A set of lines as arguments.
5455Each line is a format which is expanded using
5456.Ar target-pane
5457as the target.
5458If a line contains newlines it is split into multiple lines.
5459Lines may use styles, see the
5460.Sx STYLES
5461section.
5462.It
5463A shell command given by
5464.Fl R
5465which is run and any output shown in the pane.
5466.El
5467.Pp
5468The first argument,
5469.Ar command ,
5470is a
5471.Nm
5472command which is run when a key is pressed.
5473The key is available in the
5474.Ql popup_key
5475format.
5476After
5477.Ar command
5478is run, the popup is closed.
5479It may be empty to discard any key presses.
5480If
5481.Fl K
5482is given together with
5483.Fl R ,
5484key presses are instead passed to the
5485.Fl R
5486shell command.
5487.Fl E
5488closes the popup automatically when
5489.Ar shell-command
5490exits.
5491Two
5492.Fl E
5493closes the popup only if
5494.Ar shell-command
5495exited with success.
5496With
5497.Fl K ,
5498.Ql Escape
5499and
5500.Ql C-c
5501close the popup unless
5502.Fl E
5503is also given.
5504.Pp
5505.Fl x
5506and
5507.Fl y
5508give the position of the popup, they have the same meaning as for the
5509.Ic display-menu
5510command.
5511.Fl w
5512and
5513.Fl h
5514give the width and height - both may be a percentage (followed by
5515.Ql % ) .
5516If omitted, without
5517.Fl R
5518they are calculated from the given lines and with
5519.Fl R
5520they use half the terminal size.
5521.Pp
5522The
5523.Fl C
5524flag closes any popup on the client.
5525.El
5526.Sh BUFFERS
5527.Nm
5528maintains a set of named
5529.Em paste buffers .
5530Each buffer may be either explicitly or automatically named.
5531Explicitly named buffers are named when created with the
5532.Ic set-buffer
5533or
5534.Ic load-buffer
5535commands, or by renaming an automatically named buffer with
5536.Ic set-buffer
5537.Fl n .
5538Automatically named buffers are given a name such as
5539.Ql buffer0001 ,
5540.Ql buffer0002
5541and so on.
5542When the
5543.Ic buffer-limit
5544option is reached, the oldest automatically named buffer is deleted.
5545Explicitly named buffers are not subject to
5546.Ic buffer-limit
5547and may be deleted with the
5548.Ic delete-buffer
5549command.
5550.Pp
5551Buffers may be added using
5552.Ic copy-mode
5553or the
5554.Ic set-buffer
5555and
5556.Ic load-buffer
5557commands, and pasted into a window using the
5558.Ic paste-buffer
5559command.
5560If a buffer command is used and no buffer is specified, the most
5561recently added automatically named buffer is assumed.
5562.Pp
5563A configurable history buffer is also maintained for each window.
5564By default, up to 2000 lines are kept; this can be altered with the
5565.Ic history-limit
5566option (see the
5567.Ic set-option
5568command above).
5569.Pp
5570The buffer commands are as follows:
5571.Bl -tag -width Ds
5572.It Xo
5573.Ic choose-buffer
5574.Op Fl NZr
5575.Op Fl F Ar format
5576.Op Fl f Ar filter
5577.Op Fl O Ar sort-order
5578.Op Fl t Ar target-pane
5579.Op Ar template
5580.Xc
5581Put a pane into buffer mode, where a buffer may be chosen interactively from
5582a list.
5583.Fl Z
5584zooms the pane.
5585The following keys may be used in buffer mode:
5586.Bl -column "Key" "Function" -offset indent
5587.It Sy "Key" Ta Sy "Function"
5588.It Li "Enter" Ta "Paste selected buffer"
5589.It Li "Up" Ta "Select previous buffer"
5590.It Li "Down" Ta "Select next buffer"
5591.It Li "C-s" Ta "Search by name or content"
5592.It Li "n" Ta "Repeat last search"
5593.It Li "t" Ta "Toggle if buffer is tagged"
5594.It Li "T" Ta "Tag no buffers"
5595.It Li "C-t" Ta "Tag all buffers"
5596.It Li "p" Ta "Paste selected buffer"
5597.It Li "P" Ta "Paste tagged buffers"
5598.It Li "d" Ta "Delete selected buffer"
5599.It Li "D" Ta "Delete tagged buffers"
5600.It Li "e" Ta "Open the buffer in an editor"
5601.It Li "f" Ta "Enter a format to filter items"
5602.It Li "O" Ta "Change sort field"
5603.It Li "r" Ta "Reverse sort order"
5604.It Li "v" Ta "Toggle preview"
5605.It Li "q" Ta "Exit mode"
5606.El
5607.Pp
5608After a buffer is chosen,
5609.Ql %%
5610is replaced by the buffer name in
5611.Ar template
5612and the result executed as a command.
5613If
5614.Ar template
5615is not given, "paste-buffer -b '%%'" is used.
5616.Pp
5617.Fl O
5618specifies the initial sort field: one of
5619.Ql time ,
5620.Ql name
5621or
5622.Ql size .
5623.Fl r
5624reverses the sort order.
5625.Fl f
5626specifies an initial filter: the filter is a format - if it evaluates to zero,
5627the item in the list is not shown, otherwise it is shown.
5628If a filter would lead to an empty list, it is ignored.
5629.Fl F
5630specifies the format for each item in the list.
5631.Fl N
5632starts without the preview.
5633This command works only if at least one client is attached.
5634.It Ic clear-history Op Fl t Ar target-pane
5635.D1 (alias: Ic clearhist )
5636Remove and free the history for the specified pane.
5637.It Ic delete-buffer Op Fl b Ar buffer-name
5638.D1 (alias: Ic deleteb )
5639Delete the buffer named
5640.Ar buffer-name ,
5641or the most recently added automatically named buffer if not specified.
5642.It Xo Ic list-buffers
5643.Op Fl F Ar format
5644.Op Fl f Ar filter
5645.Xc
5646.D1 (alias: Ic lsb )
5647List the global buffers.
5648.Fl F
5649specifies the format of each line and
5650.Fl f
5651a filter.
5652Only buffers for which the filter is true are shown.
5653See the
5654.Sx FORMATS
5655section.
5656.It Xo Ic load-buffer
5657.Op Fl w
5658.Op Fl b Ar buffer-name
5659.Op Fl t Ar target-client
5660.Ar path
5661.Xc
5662.D1 (alias: Ic loadb )
5663Load the contents of the specified paste buffer from
5664.Ar path .
5665If
5666.Fl w
5667is given, the buffer is also sent to the clipboard for
5668.Ar target-client
5669using the
5670.Xr xterm 1
5671escape sequence, if possible.
5672.It Xo Ic paste-buffer
5673.Op Fl dpr
5674.Op Fl b Ar buffer-name
5675.Op Fl s Ar separator
5676.Op Fl t Ar target-pane
5677.Xc
5678.D1 (alias: Ic pasteb )
5679Insert the contents of a paste buffer into the specified pane.
5680If not specified, paste into the current one.
5681With
5682.Fl d ,
5683also delete the paste buffer.
5684When output, any linefeed (LF) characters in the paste buffer are replaced with
5685a separator, by default carriage return (CR).
5686A custom separator may be specified using the
5687.Fl s
5688flag.
5689The
5690.Fl r
5691flag means to do no replacement (equivalent to a separator of LF).
5692If
5693.Fl p
5694is specified, paste bracket control codes are inserted around the
5695buffer if the application has requested bracketed paste mode.
5696.It Xo Ic save-buffer
5697.Op Fl a
5698.Op Fl b Ar buffer-name
5699.Ar path
5700.Xc
5701.D1 (alias: Ic saveb )
5702Save the contents of the specified paste buffer to
5703.Ar path .
5704The
5705.Fl a
5706option appends to rather than overwriting the file.
5707.It Xo Ic set-buffer
5708.Op Fl aw
5709.Op Fl b Ar buffer-name
5710.Op Fl t Ar target-client
5711.Op Fl n Ar new-buffer-name
5712.Ar data
5713.Xc
5714.D1 (alias: Ic setb )
5715Set the contents of the specified buffer to
5716.Ar data .
5717If
5718.Fl w
5719is given, the buffer is also sent to the clipboard for
5720.Ar target-client
5721using the
5722.Xr xterm 1
5723escape sequence, if possible.
5724The
5725.Fl a
5726option appends to rather than overwriting the buffer.
5727The
5728.Fl n
5729option renames the buffer to
5730.Ar new-buffer-name .
5731.It Xo Ic show-buffer
5732.Op Fl b Ar buffer-name
5733.Xc
5734.D1 (alias: Ic showb )
5735Display the contents of the specified buffer.
5736.El
5737.Sh MISCELLANEOUS
5738Miscellaneous commands are as follows:
5739.Bl -tag -width Ds
5740.It Ic clock-mode Op Fl t Ar target-pane
5741Display a large clock.
5742.It Xo Ic if-shell
5743.Op Fl bF
5744.Op Fl t Ar target-pane
5745.Ar shell-command command
5746.Op Ar command
5747.Xc
5748.D1 (alias: Ic if )
5749Execute the first
5750.Ar command
5751if
5752.Ar shell-command
5753returns success or the second
5754.Ar command
5755otherwise.
5756Before being executed,
5757.Ar shell-command
5758is expanded using the rules specified in the
5759.Sx FORMATS
5760section, including those relevant to
5761.Ar target-pane .
5762With
5763.Fl b ,
5764.Ar shell-command
5765is run in the background.
5766.Pp
5767If
5768.Fl F
5769is given,
5770.Ar shell-command
5771is not executed but considered success if neither empty nor zero (after formats
5772are expanded).
5773.It Ic lock-server
5774.D1 (alias: Ic lock )
5775Lock each client individually by running the command specified by the
5776.Ic lock-command
5777option.
5778.It Xo Ic run-shell
5779.Op Fl b
5780.Op Fl d Ar delay
5781.Op Fl t Ar target-pane
5782.Op Ar shell-command
5783.Xc
5784.D1 (alias: Ic run )
5785Execute
5786.Ar shell-command
5787in the background without creating a window.
5788Before being executed, shell-command is expanded using the rules specified in
5789the
5790.Sx FORMATS
5791section.
5792With
5793.Fl b ,
5794the command is run in the background.
5795.Fl d
5796waits for
5797.Ar delay
5798seconds before starting the command.
5799After the command finishes, any output to stdout is displayed in view mode (in
5800the pane specified by
5801.Fl t
5802or the current pane if omitted).
5803If the command doesn't return success, the exit status is also displayed.
5804.It Xo Ic wait-for
5805.Op Fl L | S | U
5806.Ar channel
5807.Xc
5808.D1 (alias: Ic wait )
5809When used without options, prevents the client from exiting until woken using
5810.Ic wait-for
5811.Fl S
5812with the same channel.
5813When
5814.Fl L
5815is used, the channel is locked and any clients that try to lock the same
5816channel are made to wait until the channel is unlocked with
5817.Ic wait-for
5818.Fl U .
5819.El
5820.Sh EXIT MESSAGES
5821When a
5822.Nm
5823client detaches, it prints a message.
5824This may be one of:
5825.Bl -tag -width Ds
5826.It detached (from session ...)
5827The client was detached normally.
5828.It detached and SIGHUP
5829The client was detached and its parent sent the
5830.Dv SIGHUP
5831signal (for example with
5832.Ic detach-client
5833.Fl P ) .
5834.It lost tty
5835The client's
5836.Xr tty 4
5837or
5838.Xr pty 4
5839was unexpectedly destroyed.
5840.It terminated
5841The client was killed with
5842.Dv SIGTERM .
5843.It too far behind
5844The client is in control mode and became unable to keep up with the data from
5845.Nm .
5846.It exited
5847The server exited when it had no sessions.
5848.It server exited
5849The server exited when it received
5850.Dv SIGTERM .
5851.It server exited unexpectedly
5852The server crashed or otherwise exited without telling the client the reason.
5853.El
5854.Sh TERMINFO EXTENSIONS
5855.Nm
5856understands some unofficial extensions to
5857.Xr terminfo 5 .
5858It is not normally necessary to set these manually, instead the
5859.Ic terminal-features
5860option should be used.
5861.Bl -tag -width Ds
5862.It Em \&AX
5863An existing extension that tells
5864.Nm
5865the terminal supports default colours.
5866.It Em \&Cs , Cr
5867Set the cursor colour.
5868The first takes a single string argument and is used to set the colour;
5869the second takes no arguments and restores the default cursor colour.
5870If set, a sequence such as this may be used
5871to change the cursor colour from inside
5872.Nm :
5873.Bd -literal -offset indent
5874$ printf '\e033]12;red\e033\e\e'
5875.Ed
5876.It Em \&Cmg, \&Clmg, \&Dsmg , \&Enmg
5877Set, clear, disable or enable DECSLRM margins.
5878These are set automatically if the terminal reports it is
5879.Em VT420
5880compatible.
5881.It Em \&Dsbp , \&Enbp
5882Disable and enable bracketed paste.
5883These are set automatically if the
5884.Em XT
5885capability is present.
5886.It Em \&Dseks , \&Eneks
5887Disable and enable extended keys.
5888.It Em \&Dsfcs , \&Enfcs
5889Disable and enable focus reporting.
5890These are set automatically if the
5891.Em XT
5892capability is present.
5893.It Em \&Smol
5894Enable the overline attribute.
5895.It Em \&Smulx
5896Set a styled underscore.
5897The single parameter is one of: 0 for no underscore, 1 for normal
5898underscore, 2 for double underscore, 3 for curly underscore, 4 for dotted
5899underscore and 5 for dashed underscore.
5900.It Em \&Setulc , \&ol
5901Set the underscore colour or reset to the default.
5902The argument is (red * 65536) + (green * 256) + blue where each is between 0
5903and 255.
5904.It Em \&Ss , Se
5905Set or reset the cursor style.
5906If set, a sequence such as this may be used
5907to change the cursor to an underline:
5908.Bd -literal -offset indent
5909$ printf '\e033[4 q'
5910.Ed
5911.Pp
5912If
5913.Em Se
5914is not set, \&Ss with argument 0 will be used to reset the cursor style instead.
5915.It Em \&Sync
5916Start (parameter is 1) or end (parameter is 2) a synchronized update.
5917.It Em \&Tc
5918Indicate that the terminal supports the
5919.Ql direct colour
5920RGB escape sequence (for example, \ee[38;2;255;255;255m).
5921.Pp
5922If supported, this is used for the initialize colour escape sequence (which
5923may be enabled by adding the
5924.Ql initc
5925and
5926.Ql ccc
5927capabilities to the
5928.Nm
5929.Xr terminfo 5
5930entry).
5931.Pp
5932This is equivalent to the
5933.Em RGB
5934.Xr terminfo 5
5935capability.
5936.It Em \&Ms
5937Store the current buffer in the host terminal's selection (clipboard).
5938See the
5939.Em set-clipboard
5940option above and the
5941.Xr xterm 1
5942man page.
5943.It Em \&XT
5944This is an existing extension capability that tmux uses to mean that the
5945terminal supports the
5946.Xr xterm 1
5947title set sequences and to automatically set some of the capabilities above.
5948.El
5949.Sh CONTROL MODE
5950.Nm
5951offers a textual interface called
5952.Em control mode .
5953This allows applications to communicate with
5954.Nm
5955using a simple text-only protocol.
5956.Pp
5957In control mode, a client sends
5958.Nm
5959commands or command sequences terminated by newlines on standard input.
5960Each command will produce one block of output on standard output.
5961An output block consists of a
5962.Em %begin
5963line followed by the output (which may be empty).
5964The output block ends with a
5965.Em %end
5966or
5967.Em %error .
5968.Em %begin
5969and matching
5970.Em %end
5971or
5972.Em %error
5973have two arguments: an integer time (as seconds from epoch) and command number.
5974For example:
5975.Bd -literal -offset indent
5976%begin 1363006971 2
59770: ksh* (1 panes) [80x24] [layout b25f,80x24,0,0,2] @2 (active)
5978%end 1363006971 2
5979.Ed
5980.Pp
5981The
5982.Ic refresh-client
5983.Fl C
5984command may be used to set the size of a client in control mode.
5985.Pp
5986In control mode,
5987.Nm
5988outputs notifications.
5989A notification will never occur inside an output block.
5990.Pp
5991The following notifications are defined:
5992.Bl -tag -width Ds
5993.It Ic %client-session-changed Ar client session-id name
5994The client is now attached to the session with ID
5995.Ar session-id ,
5996which is named
5997.Ar name .
5998.It Ic %continue Ar pane-id
5999The pane has been continued after being paused (if the
6000.Ar pause-after
6001flag is set, see
6002.Ic refresh-client
6003.Fl A ) .
6004.It Ic %exit Op Ar reason
6005The
6006.Nm
6007client is exiting immediately, either because it is not attached to any session
6008or an error occurred.
6009If present,
6010.Ar reason
6011describes why the client exited.
6012.It Ic %extended-output Ar pane-id Ar age Ar ... \&  : Ar value
6013New form of
6014.Ic %output
6015sent when the
6016.Ar pause-after
6017flag is set.
6018.Ar age
6019is the time in milliseconds for which tmux had buffered the output before it was sent.
6020Any subsequent arguments up until a single
6021.Ql \&:
6022are for future use and should be ignored.
6023.It Ic %layout-change Ar window-id Ar window-layout Ar window-visible-layout Ar window-flags
6024The layout of a window with ID
6025.Ar window-id
6026changed.
6027The new layout is
6028.Ar window-layout .
6029The window's visible layout is
6030.Ar window-visible-layout
6031and the window flags are
6032.Ar window-flags .
6033.It Ic %output Ar pane-id Ar value
6034A window pane produced output.
6035.Ar value
6036escapes non-printable characters and backslash as octal \\xxx.
6037.It Ic %pane-mode-changed Ar pane-id
6038The pane with ID
6039.Ar pane-id
6040has changed mode.
6041.It Ic %pause Ar pane-id
6042The pane has been paused (if the
6043.Ar pause-after
6044flag is set).
6045.It Ic %session-changed Ar session-id Ar name
6046The client is now attached to the session with ID
6047.Ar session-id ,
6048which is named
6049.Ar name .
6050.It Ic %session-renamed Ar name
6051The current session was renamed to
6052.Ar name .
6053.It Ic %session-window-changed Ar session-id Ar window-id
6054The session with ID
6055.Ar session-id
6056changed its active window to the window with ID
6057.Ar window-id .
6058.It Ic %sessions-changed
6059A session was created or destroyed.
6060.It Xo Ic %subscription-changed
6061.Ar name
6062.Ar session-id
6063.Ar window-id
6064.Ar window-index
6065.Ar pane-id ... \&  :
6066.Ar value
6067.Xc
6068The value of the format associated with subscription
6069.Ar name
6070has changed to
6071.Ar value .
6072See
6073.Ic refresh-client
6074.Fl B .
6075Any arguments after
6076.Ar pane-id
6077up until a single
6078.Ql \&:
6079are for future use and should be ignored.
6080.It Ic %unlinked-window-add Ar window-id
6081The window with ID
6082.Ar window-id
6083was created but is not linked to the current session.
6084.It Ic %window-add Ar window-id
6085The window with ID
6086.Ar window-id
6087was linked to the current session.
6088.It Ic %window-close Ar window-id
6089The window with ID
6090.Ar window-id
6091closed.
6092.It Ic %window-pane-changed Ar window-id Ar pane-id
6093The active pane in the window with ID
6094.Ar window-id
6095changed to the pane with ID
6096.Ar pane-id .
6097.It Ic %window-renamed Ar window-id Ar name
6098The window with ID
6099.Ar window-id
6100was renamed to
6101.Ar name .
6102.El
6103.Sh ENVIRONMENT
6104When
6105.Nm
6106is started, it inspects the following environment variables:
6107.Bl -tag -width LC_CTYPE
6108.It Ev EDITOR
6109If the command specified in this variable contains the string
6110.Ql vi
6111and
6112.Ev VISUAL
6113is unset, use vi-style key bindings.
6114Overridden by the
6115.Ic mode-keys
6116and
6117.Ic status-keys
6118options.
6119.It Ev HOME
6120The user's login directory.
6121If unset, the
6122.Xr passwd 5
6123database is consulted.
6124.It Ev LC_CTYPE
6125The character encoding
6126.Xr locale 1 .
6127It is used for two separate purposes.
6128For output to the terminal, UTF-8 is used if the
6129.Fl u
6130option is given or if
6131.Ev LC_CTYPE
6132contains
6133.Qq UTF-8
6134or
6135.Qq UTF8 .
6136Otherwise, only ASCII characters are written and non-ASCII characters
6137are replaced with underscores
6138.Pq Ql _ .
6139For input,
6140.Nm
6141always runs with a UTF-8 locale.
6142If en_US.UTF-8 is provided by the operating system it is used and
6143.Ev LC_CTYPE
6144is ignored for input.
6145Otherwise,
6146.Ev LC_CTYPE
6147tells
6148.Nm
6149what the UTF-8 locale is called on the current system.
6150If the locale specified by
6151.Ev LC_CTYPE
6152is not available or is not a UTF-8 locale,
6153.Nm
6154exits with an error message.
6155.It Ev LC_TIME
6156The date and time format
6157.Xr locale 1 .
6158It is used for locale-dependent
6159.Xr strftime 3
6160format specifiers.
6161.It Ev PWD
6162The current working directory to be set in the global environment.
6163This may be useful if it contains symbolic links.
6164If the value of the variable does not match the current working
6165directory, the variable is ignored and the result of
6166.Xr getcwd 3
6167is used instead.
6168.It Ev SHELL
6169The absolute path to the default shell for new windows.
6170See the
6171.Ic default-shell
6172option for details.
6173.It Ev TMUX_TMPDIR
6174The parent directory of the directory containing the server sockets.
6175See the
6176.Fl L
6177option for details.
6178.It Ev VISUAL
6179If the command specified in this variable contains the string
6180.Ql vi ,
6181use vi-style key bindings.
6182Overridden by the
6183.Ic mode-keys
6184and
6185.Ic status-keys
6186options.
6187.El
6188.Sh FILES
6189.Bl -tag -width "/etc/tmux.confXXX" -compact
6190.It Pa ~/.tmux.conf
6191Default
6192.Nm
6193configuration file.
6194.It Pa /etc/tmux.conf
6195System-wide configuration file.
6196.El
6197.Sh EXAMPLES
6198To create a new
6199.Nm
6200session running
6201.Xr vi 1 :
6202.Pp
6203.Dl $ tmux new-session vi
6204.Pp
6205Most commands have a shorter form, known as an alias.
6206For new-session, this is
6207.Ic new :
6208.Pp
6209.Dl $ tmux new vi
6210.Pp
6211Alternatively, the shortest unambiguous form of a command is accepted.
6212If there are several options, they are listed:
6213.Bd -literal -offset indent
6214$ tmux n
6215ambiguous command: n, could be: new-session, new-window, next-window
6216.Ed
6217.Pp
6218Within an active session, a new window may be created by typing
6219.Ql C-b c
6220(Ctrl
6221followed by the
6222.Ql b
6223key
6224followed by the
6225.Ql c
6226key).
6227.Pp
6228Windows may be navigated with:
6229.Ql C-b 0
6230(to select window 0),
6231.Ql C-b 1
6232(to select window 1), and so on;
6233.Ql C-b n
6234to select the next window; and
6235.Ql C-b p
6236to select the previous window.
6237.Pp
6238A session may be detached using
6239.Ql C-b d
6240(or by an external event such as
6241.Xr ssh 1
6242disconnection) and reattached with:
6243.Pp
6244.Dl $ tmux attach-session
6245.Pp
6246Typing
6247.Ql C-b \&?
6248lists the current key bindings in the current window; up and down may be used
6249to navigate the list or
6250.Ql q
6251to exit from it.
6252.Pp
6253Commands to be run when the
6254.Nm
6255server is started may be placed in the
6256.Pa ~/.tmux.conf
6257configuration file.
6258Common examples include:
6259.Pp
6260Changing the default prefix key:
6261.Bd -literal -offset indent
6262set-option -g prefix C-a
6263unbind-key C-b
6264bind-key C-a send-prefix
6265.Ed
6266.Pp
6267Turning the status line off, or changing its colour:
6268.Bd -literal -offset indent
6269set-option -g status off
6270set-option -g status-style bg=blue
6271.Ed
6272.Pp
6273Setting other options, such as the default command,
6274or locking after 30 minutes of inactivity:
6275.Bd -literal -offset indent
6276set-option -g default-command "exec /bin/ksh"
6277set-option -g lock-after-time 1800
6278.Ed
6279.Pp
6280Creating new key bindings:
6281.Bd -literal -offset indent
6282bind-key b set-option status
6283bind-key / command-prompt "split-window 'exec man %%'"
6284bind-key S command-prompt "new-window -n %1 'ssh %1'"
6285.Ed
6286.Sh SEE ALSO
6287.Xr pty 4
6288.Sh AUTHORS
6289.An Nicholas Marriott Aq Mt nicholas.marriott@gmail.com
6290