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