Annotation of embedaddon/tmux/FAQ, revision 1.1.1.1
1.1 misho 1: tmux frequently asked questions
2:
3: ******************************************************************************
4: * PLEASE NOTE: most display problems are due to incorrect TERM! Before *
5: * reporting problems make SURE that TERM settings are correct inside and *
6: * outside tmux. *
7: * *
8: * Inside tmux TERM must be "screen" or similar (such as "screen-256color"). *
9: * Don't bother reporting problems where it isn't! *
10: * *
11: * Outside, it must match your terminal: particularly, use "rxvt" for rxvt *
12: * and derivatives. *
13: ******************************************************************************
14:
15: * How is tmux different from GNU screen?
16:
17: tmux and GNU screen have many similarities. Some of the main differences I am
18: aware of are (bearing in mind I haven't used screen for a few years now):
19:
20: - tmux uses a client-server model. Each server has single Unix domain socket in
21: /tmp and within one server there are multiple sessions which may be attached
22: to multiple clients (terminals).
23:
24: This has advantages, notably: windows may be linked simultaneously to
25: multiple sessions; windows may be moved freely between sessions; and a client
26: may be switched between sessions easily (C-b D). There is one major
27: disadvantage: if the server crashes, game over, all sessions die. In
28: practice, however, tmux is quite stable and gets more so as people report any
29: bugs they hit :-).
30:
31: This model is different from screen, where typically each new screen instance
32: is independent. tmux supports the same behaviour by using multiple servers
33: with the -L option but it is not typically recommended.
34:
35: - Different command interfaces. One of the goals of tmux is that the shell
36: should be easily usable as a scripting language - almost all tmux commands
37: can be used from the shell and behave identically whether used from the
38: shell, from a key binding or from the command prompt. Personally I also find
39: tmux's command interface much more consistent and clearer, but this is
40: subjective.
41:
42: - tmux calls window names (what you see in the status line) "names", screen
43: calls them "titles".
44:
45: - tmux has a multiple paste buffers. Not a major one but comes in handy quite a
46: lot.
47:
48: - tmux supports automatically renaming windows to the running application
49: without gross hacks using escape sequences. Its even on by default.
50:
51: - tmux has a choice of vi or emacs key layouts. Again, not major, but I use
52: emacs so if tmux did support only one key set it would be emacs and then all
53: the vi users would get humpy. Key bindings may be completely reconfigured in
54: any case.
55:
56: - tmux has an option to limit the window size.
57:
58: - tmux has search in windows (C-b f).
59:
60: - The window split (pane) model is different. tmux has two objects, windows and
61: panes; screen has just windows. This difference has several implications:
62:
63: * In screen you can have a window appear in several layouts, in tmux a pane
64: can only be in one window (fixing this is a big todo item but quite
65: invasive).
66:
67: * tmux layouts are immutable and do not get changed unless you modify them.
68:
69: * In tmux, all panes are closed when you kill a window.
70:
71: * tmux panes do not have individual names, titles and so on.
72:
73: I think tmux's model is much easier to manage and navigate within a window,
74: but breaking panes off from and joining them to windows is more clumsy.
75:
76: tmux also has support for preset pane layouts.
77:
78: - tmux's status line syntax is more readable and easier to use. I think it'd be
79: hard for anyone to argue with this. tmux doesn't support running a command
80: constantly and always using the last line of its output, commands must be run
81: again each time.
82:
83: - tmux has modern, easily extended code. Again hard to argue screen is better
84: if you have looked at the code.
85:
86: - tmux depends on libevent. I don't see this as a disadvantage: libevent is
87: small and portable, and on modern systems with current package management
88: systems dependencies are not an issue. libevent brings advantages in code
89: simplicity and performance.
90:
91: - screen allows the window to be bigger than the terminal and can pan around
92: it. tmux limits the size to the largest attached client. This is a big todo
93: item for tmux but it is not trivial.
94:
95: - screen has builtin serial and telnet support; this is bloat and is unlikely
96: to be added to tmux.
97:
98: - Environment handling is different.
99:
100: - tmux tends to be more demanding on the terminal so tends to show up terminal
101: and application bugs which screen does not.
102:
103: - screen has wider platform support, for example IRIX, and for odd terminals.
104:
105: * I found a bug! What do I do?
106:
107: Check the latest version of tmux from Git to see if the problem is still
108: reproducible. Sometimes the length of time between releases means a lot of
109: fixes can be sitting in Git and the problem might already be fixed.
110:
111: Please send bug reports by email to nicholas.marriott@gmail.com or
112: tmux-users@googlegroups.com. Please include as much of the following
113: information as possible:
114:
115: - the version of tmux you are running;
116: - the operating system you are using and its version;
117: - the terminal emulator you are using and the TERM setting when tmux was
118: started;
119: - a description of the problem;
120: - if the problem is repeatable, the steps to repeat the problem;
121: - for screen corruption issues, a screenshot and the output of "infocmp $TERM"
122: from outside tmux are often very useful.
123:
124: * Why doesn't tmux do $x?
125:
126: Please send feature requests by email to tmux-users@googlegroups.com.
127:
128: * Why do you use the screen terminal description inside tmux? It sucks.
129:
130: It is already widely available. It is planned to change to something else such
131: as xterm-xfree86 at some point, if possible.
132:
133: * I don't see any colour in my terminal! Help!
134:
135: On some platforms, common terminal descriptions such as xterm do not include
136: colour. screen ignores this, tmux does not. If the terminal emulator in use
137: supports colour, use a value for TERM which correctly lists this, such as
138: xterm-color.
139:
140: * tmux freezes my terminal when I attach to a session. I even have to kill -9
141: the shell it was started from to recover!
142:
143: Some consoles really really don't like attempts to set the window title. Tell
144: tmux not to do this by turning off the "set-titles" option (you can do this
145: in .tmux.conf):
146:
147: set -g set-titles off
148:
149: If this doesn't fix it, send a bug report.
150:
151: * Why is C-b the prefix key? How do I change it?
152:
153: The default key is C-b because the prototype of tmux was originally developed
154: inside screen and C-b was chosen not to clash with the screen meta key. It
155: also has the advantage of not interfering with the use of C-a for start-of-line
156: in emacs and the shell (although it does interfere with previous-character).
157:
158: Changing is simple: change the "prefix-key" option, and - if required - move
159: the binding of the "send-prefix" command from C-b (C-b C-b sends C-b by
160: default) to the new key. For example:
161:
162: set -g prefix C-a
163: unbind C-b
164: bind C-a send-prefix
165:
166: * How do I use UTF-8?
167:
168: When running tmux in a UTF-8 capable terminal, UTF-8 must be turned on in tmux;
169: as of release 0.9, tmux attempts to autodetect a UTF-8-capable terminal by
170: checking the LC_ALL, LC_CTYPE and LANG environment variables. list-clients may
171: be used to check if this is detected correctly; if not, the -u command-line
172: flag may be specified when creating or attaching a client to a tmux session:
173:
174: $ tmux -u new
175:
176: Since the 1.0 release, tmux will turn on UTF-8 related options automatically
177: (ie status-utf8, and utf8) if the above conditions are met.
178:
179: * How do I use a 256 colour terminal?
180:
181: Provided the underlying terminal supports 256 colours, it is usually sufficient
182: to add the following to ~/.tmux.conf:
183:
184: set -g default-terminal "screen-256color"
185:
186: Note that some platforms do not support "screen-256color" ("infocmp
187: screen-256color" will return an error) - in this case see the next entry in
188: this FAQ.
189:
190: tmux attempts to detect a 256 colour terminal both by looking at the colors
191: terminfo entry and by looking for the string "256col" in the TERM environment
192: variable.
193:
194: If both these methods fail, the -2 flag may be passed to tmux when attaching
195: to a session to indicate the terminal supports 256 colours.
196:
197: * vim or $otherprogram doesn't display 256 colours. What's up?
198:
199: Some programs attempt to detect the number of colours a terminal is capable of
200: by checking the colors terminfo or Co termcap entry. However, this is not
201: reliable, and in any case is missing from the "screen" terminal description
202: used inside tmux.
203:
204: There are two options (aside from using "screen-256color") to allow programs to
205: recognise they are running on a 256-colour terminal inside tmux:
206:
207: - Manually force the application to use 256 colours always or if TERM is set to
208: screen. For vim, you can do this by overriding the t_Co option, see
209: http://vim.wikia.com/wiki/256_colors_in_vim.
210: - Creating a custom terminfo file that includes colors#256 in ~/.terminfo and
211: using it instead. These may be compiled with tic(1).
212:
213: * How do I make Ctrl-PgUp and Ctrl-PgDn work in vim?
214:
215: tmux supports passing through ctrl (and where supported by the client terminal,
216: alt and shift) modifiers to function keys using xterm(1)-style key sequences.
217: This may be enabled per window, or globally with the tmux command:
218:
219: setw -g xterm-keys on
220:
221: Because the TERM variable inside tmux must be set to "screen", vim will not
222: automatically detect these keys are available; however, the appropriate key
223: sequences can be overridden in .vimrc using the following:
224:
225: if &term == "screen"
226: set t_kN=^[[6;*~
227: set t_kP=^[[5;*~
228: endif
229:
230: And similarly for any other keys for which modifiers are desired.
231:
232: Please note that the "xterm-keys" setting may affect other programs, in the
233: same way as running them in a standard xterm; for example most shells do not
234: expect to receive xterm(1)-style key sequences so this setting may prevent keys
235: such as ctrl-left and ctrl-right working correctly. tmux also passes through
236: the ctrl (bit 5 set, for example ^[[5~ to ^[[5^) modifier in non-xterm(1) mode;
237: it may be possible to configure vim to accept these, an example of how to do so
238: would be welcome.
239:
240: vim users may also want to set the "ttyfast" option inside tmux.
241:
242: * How do I make ctrl and shift arrow keys work in emacs?
243:
244: The terminal-init-screen function in term/screen.el is called for new frames,
245: but it doesn't configure any function keys.
246:
247: If the tmux xterm-keys option is on, it is enough to define the same keys as
248: xterm. Add the following to init.el or .emacs to do this:
249:
250: (defadvice terminal-init-screen
251: ;; The advice is named `tmux', and is run before `terminal-init-screen' runs.
252: (before tmux activate)
253: ;; Docstring. This describes the advice and is made available inside emacs;
254: ;; for example when doing C-h f terminal-init-screen RET
255: "Apply xterm keymap, allowing use of keys passed through tmux."
256: ;; This is the elisp code that is run before `terminal-init-screen'.
257: (if (getenv "TMUX")
258: (let ((map (copy-keymap xterm-function-map)))
259: (set-keymap-parent map (keymap-parent input-decode-map))
260: (set-keymap-parent input-decode-map map))))
261:
262: And ensure .tmux.conf contains "set -g xterm-keys on".
263:
264: Alternatively, the screen.el file can be copied to the load path and
265: customized.
266:
267: * Why doesn't elinks set the window title inside tmux?
268:
269: There isn't a way to detect if a terminal supports setting the window title, so
270: elinks attempts to guess by looking at the environment. Rather than looking for
271: TERM=screen, it uses the STY variable to detect if it is running in screen;
272: tmux does not use this so the check fails. A workaround is to set STY before
273: running elinks.
274:
275: The following shell function does this, and also clears the window title on
276: exit (elinks, for some strange reason, sets it to the value of TERM):
277:
278: elinks() {
279: STY= `which elinks` $*
280: echo -ne \\033]0\;\\007;
281: }
282:
283: * What is the proper way to escape characters with #(command)?
284:
285: When using the #(command) construction to include the output from a command in
286: the status line, the command will be parsed twice. First, when it's read by the
287: configuration file or the command-prompt parser, and second when the status
288: line is being drawn and the command is passed to the shell. For example, to
289: echo the string "(test)" to the status line, either single or double quotes
290: could be used:
291:
292: set -g status-right "#(echo \\\\(test\\\\))"
293: set -g status-right '#(echo \\\(test\\\))'
294:
295: In both cases, the status-right option will be set to the string "#(echo
296: \\(test\\))" and the command executed will be "echo \(test\)".
297:
298: * tmux uses too much CPU. What do I do?
299:
300: Automatic window renaming may use a lot of CPU, particularly on slow computers:
301: if this is a problem, turn it off with "setw -g automatic-rename off". If this
302: doesn't fix it, please report the problem.
303:
304: * I use PuTTY and my tmux window pane separators are all qqqqqqqqq's!
305:
306: PuTTY is using a character set translation that doesn't support ACS line
307: drawing. With a Unicode font, try setting PuTTY to use a different translation
308: on the Window -> Translation configuration page. For example, change UTF-8 to
309: ISO-8859-1 or CP437. It may also be necessary to adjust the way PuTTY treats
310: line drawing characters in the lower part of the same configuration page.
311:
312: * What is the best way to display the load average? Why no #L?
313:
314: It isn't possible to get the load average portably in code and it is preferable
315: not to add portability goop. The following works on at least Linux, *BSD and OS
316: X:
317:
318: uptime|awk '{split(substr($0, index($0, "load")), a, ":"); print a[2]}'
319:
320: * How do I attach the same session to multiple clients but with a different
321: current window, like screen -x?
322:
323: One or more of the windows can be linked into multiple sessions manually with
324: link-window, or a grouped session with all the windows can be created with
325: new-session -t.
326:
327: * Ctrl and arrow keys doesn't work in putty! What do I do?
328:
329: putty inverts the sense of the cursor key mode on ctrl, which is a bit hard for
330: tmux to detect properly. To get ctrl keys right, change the terminfo settings
331: so kUP5 (Ctrl-Up etc) are the adjusted versions, and disable smkx/rmkx so tmux
332: doesn't change the mode. For example with this line in .tmux.conf (assuming you
333: have TERM set to xterm):
334:
335: set -g terminal-overrides "xterm*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"
336:
337: Note that this will only work in tmux 1.2 and above.
338:
339: * How can I blank the tmux window?
340:
341: GNU screen has a feature whereby it will blank the screen after a period of
342: inactivity. To do the same thing in tmux, use the lock-command setting, for
343: example (with GNU bash):
344:
345: set -g lock-command 'tput civis && read -s -n1'
346:
347: This will remove the cursor and tell the shell to quit once a key has been
348: pressed. For zsh, use "read -s -k1".
349:
350: In addition, it's possible to have both blanking and locking (for instance via
351: lock(1) or vlock(1)) by using the following:
352:
353: bind x set lock-command '/usr/bin/vlock' \; lock-client \; set lock-command 'tput civis && read -s -n1'
354:
355: * I don't see italics! Or less and vim show italics and reverse the wrong way round!
356:
357: GNU screen does not support italics and the "screen" terminfo description uses
358: the italics escape sequence incorrectly.
359:
360: As of tmux 2.1, if default-terminal is set to "screen" or matches "screen-*",
361: tmux will behave like screen and italics will be disabled.
362:
363: To enable italics, create a new terminfo entry called "tmux" (some platforms
364: may already have this, you can check with "infocmp tmux"):
365:
366: $ cat <<EOF|tic -x -
367: tmux|tmux terminal multiplexer,
368: ritm=\E[23m, rmso=\E[27m, sitm=\E[3m, smso=\E[7m, Ms@,
369: use=xterm+tmux, use=screen,
370:
371: tmux-256color|tmux with 256 colors,
372: use=xterm+256setaf, use=tmux,
373: EOF
374: $
375:
376: And tell tmux to use it in ~/.tmux.conf:
377:
378: set -g default-terminal "tmux"
379:
380: If using urxvt, make sure you have an italics capable font enabled. for
381: example, add to ~/.Xdefaults:
382:
383: urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true
384:
385: * How can I make tmux use my terminal's scrollback buffer?
386:
387: Normally, tmux enables the terminal's "alternate screen". Most terminals (such
388: as xterm) do not save scrollback for the alternate screen. You might prefer
389: tmux to use the normal screen, so it uses your terminal's scrollback
390: buffer. This way, you can access the scrollback buffer as usual, for example
391: using the mouse wheel - although there is no guarantee output inside tmux will
392: always (or ever) be added to the scrollback.
393:
394: You can make tmux use the normal screen by telling it that your terminal does
395: not have an alternate screen. Put the following in ~/.tmux.conf:
396:
397: set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
398:
399: Adjust if your $TERM does not start with xterm.
400:
401: tmux will still emulate the alternate screen for applications run under tmux,
402: so you don't really lose anything with this setting. The only disadvantage is
403: that when you exit tmux, it will not restore whatever was there before you
404: started.
405:
406: * How do I see the default configuration?
407:
408: Show the default session options by starting a new tmux server with no
409: configuration file:
410:
411: $ tmux -Lfoo -f/dev/null start\; show -g
412:
413: Or the default window options:
414:
415: $ tmux -Lfoo -f/dev/null start\; show -gw
416:
417: * How do I copy a selection from tmux to the system's clipboard?
418:
419: When running in xterm(1), tmux can automatically send copied text to the
420: clipboard. This is controlled by the set-clipboard option and also needs this
421: X resource to be set:
422:
423: XTerm*disallowedWindowOps: 20,21,SetXprop
424:
425: For rxvt-unicode (urxvt), there is an unofficial Perl extension here:
426:
427: http://anti.teamidiot.de/static/nei/*/Code/urxvt/
428:
429: Otherwise a key binding for copy mode using xclip (or xsel) works:
430:
431: bind -temacs-copy C-y copy-pipe "xclip -i >/dev/null"
432:
433: Or for inside and outside copy mode with the prefix key:
434:
435: bind C-y run -b "tmux save-buffer - | xclip -i"
436:
437: On OS X, look at the pbcopy(1) and pbpaste(1) commands.
438:
439: * Why don't some commands work inside tmux on OS X?
440:
441: Apple requires some undocumented, unsupported fiddling to allow commands that
442: interact with the GUI to work. Neither tmux itself nor most shells do this, so
443: an external program is required. This can be found here:
444:
445: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard
446:
447: Affected commands may include say(1), pbcopy(1), pbpaste(1) and ssh(1).
448:
449: * Why do I see dots around a session when I attach to it?
450:
451: tmux limits the size of the window to the smallest attached session. If
452: it didn't do this then it would be impossible to see the entire window.
453: The dots mark the size of the window tmux can display.
454:
455: To avoid this, detach all other clients when attaching:
456:
457: $ tmux attach -d
458:
459: Or from inside tmux by detaching individual clients with C-b D or all
460: using:
461:
462: C-b : attach -d
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>