xref: /netbsd-src/external/bsd/tmux/dist/CHANGES (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
1CHANGED FROM 3.1b TO 3.1c
2
3* Fix a stack overflow on colon-separated CSI parsing.
4
5CHANGES FROM 3.1a TO 3.1b
6
7* Fix build on systems without sys/queue.h.
8
9* Fix crash when allow-rename is on and an empty name is set.
10
11CHANGES FROM 3.1 TO 3.1a
12
13* Do not close stdout prematurely in control mode since it is needed to print
14  exit messages. Prevents hanging when detaching with iTerm2.
15
16CHANGES FROM 3.0a TO 3.1
17
18* Only search the visible part of the history when marking (highlighting)
19  search terms. This is much faster than searching the whole history and solves
20  problems with large histories. The count of matches shown is now the visible
21  matches rather than all matches.
22
23* Search using regular expressions in copy mode. search-forward and
24  search-backward use regular expressions by default; the incremental versions
25  do not.
26
27* Turn off mouse mode 1003 as well as the rest when exiting.
28
29* Add selection_active format for when the selection is present but not moving
30  with the cursor.
31
32* Fix dragging with modifier keys, so binding keys such as C-MouseDrag1Pane and
33  C-MouseDragEnd1Pane now work.
34
35* Add -a to list-keys to also list keys without notes with -N.
36
37* Do not jump to next word end if already on a word end when selecting a word;
38  fixes select-word with single character words and vi(1) keys.
39
40* Fix top and bottom pane calculation with pane border status enabled.
41
42* Add support for adding a note to a key binding (with bind-key -N) and use
43  this to add descriptions to the default key bindings. A new -N flag to
44  list-keys shows key bindings with notes. Change the default ? binding to use
45  this to show a readable summary of keys. Also extend command-prompt to return
46  the name of the key pressed and add a default binding (/) to show the note
47  for the next key pressed.
48
49* Add support for the iTerm2 DSR 1337 sequence to get the terminal version.
50
51* Treat plausible but invalid keys (like C-BSpace) as literal like any other
52  unrecognised string passed to send-keys.
53
54* Detect iTerm2 and enable use of DECSLRM (much faster with horizontally split
55  windows).
56
57* Add -Z to default switch-client command in tree mode.
58
59* Add ~ to quoted characters for %%%.
60
61* Document client exit messages in the manual page.
62
63* Do not let read-only clients limit the size, unless all clients are
64  read-only.
65
66* Add a number of new formats to inspect what sessions and clients a window is
67  present or active in.
68
69* Change file reading and writing to go through the client if necessary. This
70  fixes commands like "tmux loadb /dev/fd/X". Also modify source-file to
71  support "-" for standard input, like load-buffer and save-buffer.
72
73* Add ~/.config/tmux/tmux.conf to the default search path for configuration
74  files.
75
76* Bump the escape sequence timeout to five seconds to allow for longer
77  legitimate sequences.
78
79* Make a best effort to set xpixel and ypixel for each pane and add formats for
80  them.
81
82* Add push-default to status-left and status-right in status-format[0].
83
84* Do not clear search marks on cursor movement with vi(1) keys.
85
86* Add p format modifier for padding to width and allow multiple substitutions
87  in a single format.
88
89* Add -f for full size to join-pane (like split-window).
90
91* Do not use bright when emulating 256 colours on an 8 colour terminal because
92  it is also bold on some terminals.
93
94* Make select-pane -P set window-active-style also to match previous behaviour.
95
96* Do not truncate list-keys output.
97
98* Turn automatic-rename back on if the \033k rename escape sequence is used
99  with an empty name.
100
101* Add support for percentage sizes for resize-pane ("-x 10%"). Also change
102  split-window and join-pane -l to accept similar percentages and deprecate the
103  -p flag.
104
105* Add -F flag to send-keys to expand formats in search-backward and forward
106  copy mode commands and copy_cursor_word and copy_cursor_line formats for word
107  and line at cursor in copy mode. Use for default # and * binding with vi(1)
108  keys.
109
110* Add formats for word and line at cursor position in copy mode.
111
112* Add formats for cursor and selection position in copy mode.
113
114* Support all the forms of RGB colour strings in OSC sequences rather than
115  requiring two digits.
116
117* Limit lazy resize to panes in attached sessions only.
118
119* Add an option to set the key sent by backspace for those whose system uses ^H
120  rather than ^?.
121
122* Change new-session -A without a session name (that is, no -s option also) to
123  attach to the best existing session like attach-session rather than a new
124  one.
125
126* Add a "latest" window-size option which tries to size windows based on the
127  most recently used client. This is now the default.
128
129* Add simple support for OSC 7 (result is available in the pane_path format).
130
131* Add push-default and pop-default for styles which change the colours and
132  attributes used for #[default]. These are used in status-format to restore
133  the behaviour of window-status-style being the default for
134  window-status-format.
135
136* Add window_marked_flag.
137
138* Add cursor-down-and-cancel in copy mode.
139
140* Default to previous search string for search-forward and search-backward.
141
142* Add -Z flag to rotate-window, select-pane, swap-pane, switch-client to
143  preserve zoomed state.
144
145* Add -N to capture-pane to preserve trailing spaces.
146
147* Add reverse sorting in tree, client and buffer modes.
148
149CHANGES FROM 3.0 TO 3.0a
150
151* Do not require REG_STARTEND.
152
153* Respawn panes or windows correctly if default-command is set.
154
155* Add missing option for after-kill-pane hook.
156
157* Fix for crash with a format variable that doesn't exist.
158
159* Do not truncate list-keys output on some platforms.
160
161* Do not crash when restoring a layout with only one pane.
162
163CHANGES FROM 2.9 TO 3.0
164
165* Workaround invalid layout strings generated by older tmux versions and add
166  some additional sanity checks
167
168* xterm 348 now disables margins when resized, so send DECLRMM again after
169  resize.
170
171* Add support for the SD (scroll down) escape sequence.
172
173* Expand arguments to C and s format modifiers to match the m modifier.
174
175* Add support for underscore colours (Setulc capability must be added with
176  terminal-overrides as described in tmux(1)).
177
178* Add a "fill" style attribute for the fill colour of the drawing area (where
179  appropriate).
180
181* New -H flag to send-keys to send literal keys.
182
183* Format variables for pane mouse modes (mouse_utf8_flag and mouse_sgr_flag)
184  and for origin mode (origin_flag).
185
186* Add -F to refresh-client for flags for control mode clients, only one flag
187  (no-output) supported at the moment.
188
189* Add a few vi(1) keys for menus.
190
191* Add pane options, set with set-option -p and displayed with show-options -p.
192  Pane options inherit from window options (so every pane option is also
193  a window option). The pane style is now configured by setting window-style
194  and window-active-style in the pane options; select-pane -P and -g now change
195  the option but are no longer documented.
196
197* Do not document set-window-option and show-window-options. set-option -w and
198  show-options -w should be used instead.
199
200* Add a -A flag to show-options to show parent options as well (they are marked
201  with a *).
202
203* Resize panes lazily - do not resize unless they are in an attached, active
204  window.
205
206* Add regular expression support for the format search, match and substitute
207  modifiers and make them able to ignore case. find-window now accepts -r to
208  use regular expressions.
209
210* Do not use $TMUX to find the session because for windows in multiple sessions
211  it is wrong as often as it is right, and for windows in one session it is
212  pointless. Instead use TMUX_PANE if it is present.
213
214* Do not always resize the window back to its original size after applying a
215  layout, keep it at the layout size until it must be resized (for example when
216  attached and window-size is not manual).
217
218* Add new-session -X and attach-session -x to send SIGHUP to parent when
219  detaching (like detach-client -P).
220
221* Support for octal escapes in strings (such as \007) and improve list-keys
222  output so it parses correctly if copied into a configuration file.
223
224* INCOMPATIBLE: Add a new {} syntax to the configuration file. This is a string
225  similar to single quotes but also includes newlines and allows commands that
226  take other commands as string arguments to be expressed more clearly and
227  without additional escaping.
228
229  A literal { and } or a string containing { or } must now be escaped or
230  quoted, for example '{' and '}' instead of { or }, or 'X#{foo}' instead of
231  X#{foo}.
232
233* New <, >, <= and >= comparison operators for formats.
234
235* Improve escaping of special characters in list-keys output.
236
237* INCOMPATIBLE: tmux's configuration parsing has changed to use yacc(1). There
238  is one incompatible change: a \ on its own must be escaped or quoted as
239  either \\ or '\' (the latter works on older tmux versions).
240
241  Entirely the same parser is now used for parsing the configuration file
242  and for string commands. This means that constructs previously only
243  available in .tmux.conf, such as %if, can now be used in string commands
244  (for example, those given to if-shell - not commands invoked from the
245  shell, they are still parsed by the shell itself).
246
247* Add support for the overline attribute (SGR 53). The Smol capability is
248  needed in terminal-overrides.
249
250* Add the ability to create simple menus. Introduces new command
251  display-menu. Default menus are bound to MouseDown3 on the status line;
252  MouseDown3 or M-MouseDown3 on panes; MouseDown3 in tree, client and
253  buffer modes; and C-b < and >.
254
255* Allow panes to be empty (no command). They can be created either by piping to
256  split-window -I, or by passing an empty command ('') to split-window. Output
257  can be sent to an existing empty window with display-message -I.
258
259* Add keys to jump between matching brackets (emacs C-M-f and C-M-b, vi %).
260
261* Add a -e flag to new-window, split-window, respawn-window, respawn-pane to
262  pass environment variables into the newly created process.
263
264* Hooks are now stored in the options tree as array options, allowing them to
265  have multiple separate commands. set-hook and show-hooks remain but
266  set-option and show-options can now also be used (show-options will only show
267  hooks if given the -H flag). Hooks with multiple commands are run in index
268  order.
269
270* Automatically scroll if dragging to create a selection with the mouse and the
271  cursor reaches the top or bottom line.
272
273* Add -no-clear variants of copy-selection and copy-pipe which do not clear the
274  selection after copying. Make copy-pipe clear the selection by default to be
275  consistent with copy-selection.
276
277* Add an argument to copy commands to set the prefix for the buffer name, this
278  (for example) allows buffers for different sessions to be named separately.
279
280* Update session activity on focus event.
281
282* Pass target from source-file into the config file parser so formats in %if
283  and %endif have access to more useful variables.
284
285* Add the ability to infer an option type (server, session, window) from its
286  name to show-options (it was already present in set-option).
287
288CHANGES FROM 2.9 TO 2.9a
289
290* Fix bugs in select-pane and the main-horizontal and main-vertical layouts.
291
292CHANGES FROM 2.8 TO 2.9
293
294* Attempt to preserve horizontal cursor position as well as vertical with
295  reflow.
296
297* Rewrite main-vertical and horizontal and change layouts to better handle the
298  case where all panes won't fit into the window size, reduce problems with
299  pane border status lines and fix other bugs mostly found by Thomas Sattler.
300
301* Add format variables for the default formats in the various modes
302  (tree_mode_format and so on) and add a -a flag to display-message to list
303  variables with values.
304
305* Add a -v flag to display-message to show verbose messages as the format is
306  parsed, this allows formats to be debugged
307
308* Add support for HPA (\033[`).
309
310* Add support for origin mode (\033[?6h).
311
312* No longer clear history on RIS.
313
314* Extend the #[] style syntax and use that together with previous format
315  changes to allow the status line to be entirely configured with a single
316  option.
317
318  Now that it is possible to configure their content, enable the existing code
319  that lets the status line be multiple lines in height. The status option can
320  now take a value of 2, 3, 4 or 5 (as well as the previous on or off) to
321  configure more than one line. The new status-format array option configures
322  the format of each line, the default just references the existing status-*
323  options, although some of the more obscure status options may be eliminated
324  in time.
325
326  Additions to the #[] syntax are: "align" to specify alignment (left, centre,
327  right), "list" for the window list and "range" to configure ranges of text
328  for the mouse bindings.
329
330  The "align" keyword can also be used to specify alignment of entries in tree
331  mode and the pane status lines.
332
333* Add E: and T: format modifiers to expand a format twice (useful to expand the
334  value of an option).
335
336* The individual -fg, -bg and -attr options have been removed; they
337  were superseded by -style options in tmux 1.9.
338
339* Allow more than one mode to be opened in a pane. Modes are kept on a stack
340  and retrieved if the same mode is entered again. Exiting the active mode goes
341  back to the previous one.
342
343* When showing command output in copy mode, call it view mode instead (affects
344  pane_mode format).
345
346* Add -b to display-panes like run-shell.
347
348* Handle UTF-8 in word-separators option.
349
350* New "terminal" colour allowing options to use the terminal default colour
351  rather than inheriting the default from a parent option.
352
353* Do not move the cursor in copy mode when the mouse wheel is used.
354
355* Use the same working directory rules for jobs as new windows rather than
356  always starting in the user's home.
357
358* Allow panes to be one line or column in size.
359
360* Go to last line when goto-line number is out of range in copy mode.
361
362* Yank previously cut text if any with C-y in the command prompt, only use the
363  buffer if no text has been cut.
364
365* Add q: format modifier to quote shell special characters.
366
367* Add StatusLeft and StatusRight mouse locations (keys such as
368  MouseDown1StatusLeft) for the status-left and status-right areas of the
369  status line.
370
371* Add -Z to find-window.
372
373* Support for windows larger than the client. This adds two new options,
374  window-size and default-size, and a new command, resize-window. The
375  force-width and force-height options and the session_width and session_height
376  formats have been removed.
377
378  The new window-size option tells tmux how to work out the size of windows:
379  largest means it picks the size of the largest session, smallest the smallest
380  session (similar to the old behaviour) and manual means that it does not
381  automatically resize windows. aggressive-resize modifies the choice of
382  session for largest and smallest as it did before.
383
384  If a window is in a session attached to a client that is too small, only part
385  of the window is shown. tmux attempts to keep the cursor visible, so the part
386  of the window displayed is changed as the cursor moves (with a small delay,
387  to try and avoid excess redrawing when applications redraw status lines or
388  similar that are not currently visible).
389
390  Drawing windows which are larger than the client is not as efficient as those
391  which fit, particularly when the cursor moves, so it is recommended to avoid
392  using this on slow machines or networks (set window-size to smallest or
393  manual).
394
395  The resize-window command can be used to resize a window manually. If it is
396  used, the window-size option is automatically set to manual for the window
397  (undo this with "setw -u window-size"). resize-window works in a similar way
398  to resize-pane (-U -D -L -R -x -y flags) but also has -a and -A flags. -a
399  sets the window to the size of the smallest client (what it would be if
400  window-size was smallest) and -A the largest.
401
402  For the same behaviour as force-width or force-height, use resize-window -x
403  or -y.
404
405  If the global window-size option is set to manual, the default-size option is
406  used for new windows. If -x or -y is used with new-session, that sets the
407  default-size option for the new session.
408
409  The maximum size of a window is 10000x10000. But expect applications to
410  complain and higher memory use if making a window that big. The minimum size
411  is the size required for the current layout including borders.
412
413  The refresh-client command can be used to pan around a window, -U -D -L -R
414  moves up, down, left or right and -c returns to automatic cursor
415  tracking. The position is reset when the current window is changed.
416
417CHANGES FROM 2.7 TO 2.8
418
419* Make display-panes block the client until a pane is chosen or it
420  times out.
421
422* Clear history on RIS like most other terminals do.
423
424* Add an "Any" key to run a command if a key is pressed that is not
425  bound in the current key table.
426
427* Expand formats in load-buffer and save-buffer.
428
429* Add a rectangle_toggle format.
430
431* Add set-hook -R to run a hook immediately.
432
433* Add README.ja.
434
435* Add pane focus hooks.
436
437* Allow any punctuation as separator for s/x/y not only /.
438
439* Improve resizing with the mouse (fix resizing the wrong pane in some
440  layouts, and allow resizing multiple panes at the same time).
441
442* Allow , and } to be escaped in formats as #, and #}.
443
444* Add KRB5CCNAME to update-environment.
445
446* Change meaning of -c to display-message so the client is used if it
447  matches the session given to -t.
448
449* Fixes to : form of SGR.
450
451* Add x and X to choose-tree to kill sessions, windows or panes.
452
453CHANGES FROM 2.6 TO 2.7
454
455* Remove EVENT_* variables from environment on platforms where tmux uses them
456  so they do not pass on to panes.
457
458* Fixes for hooks at server exit.
459
460* Remove SGR 10 (was equivalent to SGR 0 but no other terminal seems to do
461  this).
462
463* Expand formats in window and session names.
464
465* Add -Z flag to choose-tree, choose-client, choose-buffer to automatically
466  zoom the pane when the mode is entered and unzoom when it exits, assuming the
467  pane is not already zoomed. This is now part of the default key bindings.
468
469* Add C-g to exit modes with emacs keys.
470
471* Add exit-empty option to exit server if no sessions (defaults to on).
472
473* Show if a filter is present in choose modes.
474
475* Add pipe-pane -I to to connect stdin of the child process.
476
477* Performance improvements for reflow.
478
479* Use RGB terminfo(5) capability to detect RGB colour terminals (the existing
480  Tc extension remains unchanged).
481
482* Support for ISO colon-separated SGR sequences.
483
484* Add select-layout -E to spread panes out evenly (bound to E key).
485
486* Support wide characters properly when reflowing.
487
488* Pass PWD to new panes as a hint to shells, as well as calling chdir().
489
490* Performance improvements for the various choose modes.
491
492* Only show first member of session groups in tree mode (-G flag to choose-tree
493  to show all).
494
495* Support %else in config files to match %if; from Brad Town in GitHub issue
496  1071.
497
498* Fix "kind" terminfo(5) capability to be S-Down not S-Up.
499
500* Add a box around the preview label in tree mode.
501
502* Show exit status and time in the remain-on-exit pane text; from Timo
503  Boettcher in GitHub issue 1103.
504
505* Correctly use pane-base-index in tree mode.
506
507* Change the allow-rename option default to off.
508
509* Support for xterm(1) title stack escape sequences (GitHub issue 1075 from
510  Brad Town).
511
512* Correctly remove padding cells to fix a UTF-8 display problem (GitHub issue
513  1090).
514
515CHANGES FROM 2.5 TO 2.6, 05 October 2017
516
517* Add select-pane -T to set pane title.
518
519* Fix memory leak when lines with BCE are removed from history.
520
521* Fix (again) the "prefer unattached" behaviour of attach-session.
522
523* Reorder how keys are checked to allow keys to be specified that have a
524  leading escape. GitHub issue 1048.
525
526* Support REP escape sequence (\033[b).
527
528* Run alert hooks based on options rather than always, and allow further bells
529  even if there is an existing bell.
530
531* Add -d flag to display-panes to override display-panes-time.
532
533* Add selection_present format when in copy mode (allows key bindings that do
534  something different if there is a selection).
535
536* Add pane_at_left, pane_at_right, pane_at_top and pane_at_bottom formats.
537
538* Make bell, activity and silence alerting more consistent by: removing the
539  bell-on-alert option; adding activity-action and silence-action options with
540  the same possible values as the existing bell-action; adding a "both" value
541  for the visual-bell, visual-activity and visual-silence options to trigger
542  both a bell and a message.
543
544* Add a pane_pipe format to show if pipe-pane is active.
545
546* Block signals between forking and resetting signal handlers so that the
547  libevent signal handler doesn't get called in the child and incorrectly write
548  into the signal pipe that it still shares with the parent. GitHub issue 1001.
549
550* Allow punctuation in pane_current_command.
551
552* Add -c for respawn-pane and respawn-window.
553
554* Wait for any remaining data to flush when a pane is closed while pipe-pane is
555  in use.
556
557* Fix working out current client with no target. GitHub issue 995.
558
559* Try to fallback to C.UTF-8 as well as en_US.UTF-8 when looking for a UTF-8
560  locale.
561
562* Add user-keys option for user-defined key escape sequences (mapped to User0
563  to User999 keys).
564
565* Add pane-set-clipboard hook.
566
567* FAQ file has moved out of repository to online.
568
569* Fix problem with high CPU usage when a client dies unexpectedly. GitHub issue
570  941.
571
572* Do a dance on OS X 10.10 and above to return tmux to the user namespace,
573  allowing access to the clipboard.
574
575* Do not allow escape sequences which expect a specific terminator (APC, DSC,
576  OSC) to wait for forever - use a small timeout. This reduces the chance of
577  the pane locking up completely when sent garbage (cat /dev/random or
578  similar).
579
580* Support SIGUSR2 to toggle logging on a running server, also generate the
581  "out" log file with -vv not -vvvv.
582
583* Make set-clipboard a three state option: on (tmux both sends to outside
584  terminal and accepts from applications inside); external (tmux sends outside
585  but does not accept inside); and off.
586
587* Fix OSC 4 palette setting for bright foreground colours. GitHub issue 954.
588
589* Use setrgbf and setrgbb terminfo(5) capabilities to set RGB colours, if they
590  are available. (Tc is still supported as well.)
591
592* Fix redrawing panes when they are resized several times but end up with the
593  size unchanged (for example, splitw/resizep -Z/breakp).
594
595* Major rewrite of choose mode. Now includes preview, sorting, searching and
596  tagging; commands that can be executed directly from the mode (for example,
597  to delete one or more buffers); and filtering in tree mode.
598
599* choose-window and choose-session are now aliases of choose-tree (in the
600  command-alias option).
601
602* Support OSC 10 and OSC 11 to set foreground and background colours.
603
604* Check the U8 capability to determine whether to use UTF-8 line drawing
605  characters for ACS.
606
607* Some missing notifications for layout changes.
608
609* Control mode clients now do not affect session sizes until they issue
610  refresh-client -C. new-session -x and -y works with control clients even if
611  the session is not detached.
612
613* All new sessions that are unattached (whether with -d or started with no
614  terminal) are now created with size 80 x 24. Whether the status line is on or
615  off does not affect the size of new sessions until they are attached.
616
617* Expand formats in option names and add -F flag to expand them in option values.
618
619* Remember the search string for a pane even if copy mode is exited and entered
620  again.
621
622* Some further BCE fixes (scroll up, reverse index).
623
624* Improvements to how terminals are cleared (entirely or partially).
625
626CHANGES FROM 2.4 TO 2.5, 09 May 2017
627
628* Reset updated flag when restarting #() command so that new output is properly
629  recognised. GitHub issue 922.
630
631* Fix ECH with a background colour.
632
633* Do not rely on the terminal not moving the cursor after DL or EL.
634
635* Fix send-keys and send-prefix in copy-mode (so C-b C-b works). GitHub issue
636  905.
637
638* Set the current pane for rotate-window so it works in command sequences.
639
640* Add pane_mode format.
641
642* Differentiate M-Up from Escape+Up when possible (that is, in terminals with
643  xterm(1) style function keys). GitHub issue 907.
644
645* Add session_stack and window_stack_index formats.
646
647* Some new control mode notifications and corresponding hooks:
648  pane-mode-changed, window-pane-changed, client-session-changed,
649  session-window-changed.
650
651* Format pane_search_string for last search term while in copy mode (useful
652  with command-prompt -I).
653
654* Fix a problem with high CPU usage and multiple clients with #(). GitHub issue
655  889.
656
657* Fix UTF-8 combining characters in column 0.
658
659* Fix reference counting so that panes are properly destroyed and their
660  processes killed.
661
662* Clamp SU (CSI S) parameter to work around a bug in Konsole.
663
664* Tweak line wrapping in full width panes to play more nicely with terminal
665  copy and paste.
666
667* Fix when we emit SGR 0 in capture-pane -e.
668
669* Do not change TERM until after config file parsing has finished, so that
670  commands run inside the config file can use it to make decisions (typically
671  about default-terminal).
672
673* Make the initial client wait until config file parsing has finished to avoid
674  racing with commands.
675
676* Fix core when if-shell fails.
677
678* Only use ED to clear screen if the pane is at the bottom.
679
680* Fix multibyte UTF-8 output.
681
682* Code improvements around target (-t) resolution.
683
684* Change how the default target (for commands without -t) is managed across
685  command sequences: now it is set up at the start and commands are required
686  to update it if needed. Fixes binding command sequences to mouse keys.
687
688* Make if-shell from the config file work correctly.
689
690* Change to always check the root key table if no binding is found in the
691  current table (prefix table or copy-mode table or whatever). This means that
692  root key bindings will take effect even in copy mode, if not overridden by a
693  copy mode key binding.
694
695* Fix so that the history file works again.
696
697* Run config file without a client rather than using the first client, restores
698  previous behaviour.
699
700* If a #() command doesn't exit, continue to read from it and use its last full
701  line of output.
702
703* Handle slow terminals and fast output better: when the amount of data
704  outstanding gets too large, discard output until it is drained and we are
705  able to do a full redraw. Prevents tmux sitting on a huge buffer that the
706  terminal will take forever to consume.
707
708* Do not redraw a client unless we realistically think it can accept the data -
709  defer redraws until the client has nothing else waiting to write.
710
711CHANGES FROM 2.3 TO 2.4, 20 April 2017
712
713Incompatible Changes
714====================
715
716* Key tables have undergone major changes. Mode key tables are no longer
717  separate from the main key tables. All mode key tables have been removed,
718  together with the -t flag to bind-key and unbind-key.
719
720  The emacs-edit, vi-edit, emacs-choose and vi-choose tables have been replaced
721  by fixed key bindings in the command prompt and choose modes. The mode-keys
722  and status-keys options remain.
723
724  The emacs-copy and vi-copy tables have been replaced by the copy-mode and
725  copy-mode-vi tables. Commands are sent using the -X and -N flags to
726  send-keys. So the following:
727
728    bind -temacs-copy C-Up scroll-up
729    bind -temacs-copy -R5 WheelUpPane scroll-up
730
731  Becomes:
732
733    bind -Tcopy-mode C-Up send -X scroll-up
734    bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up
735
736  These changes allows the full command parser (including command sequences) and
737  command set to be used - for example, the normal command prompt with editing
738  and history is now used for searching, jumping, and so on instead of a custom
739  one. The default C-r binding is now:
740
741    bind -Tcopy-mode C-r command-prompt -i -p'search up' "send -X search-backward-incremental '%%'"
742
743  There are also some new commmands available with send -X, such as
744  copy-pipe-and-cancel.
745* set-remain-on-exit has gone -- can be achieved with hooks instead.
746* Hooks: before hooks have been removed and only a selection of commands now
747  have after hooks (they are no longer automatic). Additional hooks have been
748  added.
749* The xterm-keys option now defaults to on.
750
751Normal Changes
752==============
753
754* Support for mouse double and triple clicks.
755* BCE (Background Colour Erase) is now supported.
756* All occurrences of a search string in copy mode are now highlighted;
757  additionally, the number of search results is displayed. The highlighting
758  updates interactively with the default emacs key bindings (incremental
759  search).
760* source-file now understands glob patterns.
761* Formats now have simple comparisons:
762
763    #{==:a,b}
764    #{!=:a,b}
765
766* There are the following new formats:
767
768  - #{version} -- the tmux server version;
769  - #{client_termtype} -- the terminal type of the client;
770  - #{client_name} -- the name of a client;
771  - #{client_written} -- the number of bytes written to the client.
772
773* The configuration file now accepts %if/%endif conditional blocks which are
774  processed when it is parsed; the argument is a format string (useful with the
775  new format comparison options).
776* detach-client now has -E to execute a command replacing the client instead of
777  exiting.
778* Add support for custom command aliases, this is an array option which
779  contains items of the form "alias=command". This is consulted when an
780  unknown command is parsed.
781* break-pane now has -n to specify the new window name.
782* OSC 52 support has been added for programs inside tmux to set a tmux buffer.
783* The mouse "all event" mode (1003) is now supported.
784* Palette setting is now possible (OSC 4 and 104).
785* Strikethrough support (a recent terminfo is required).
786* Grouped sessions can now be named (new -t).
787* terminal-overrides and update-environment are now array options (the previous
788  set -ag syntax should work without change).
789* There have been substantial performance improvements.
790
791CHANGES FROM 2.2 TO 2.3, 29 September 2016
792
793Incompatible Changes
794====================
795
796None.
797
798Normal Changes
799==============
800
801* New option 'pane-border-status' to add text in the pane borders.
802* Support for hooks on commands: 'after' and 'before' hooks.
803* 'source-file' understands '-q' to suppress errors for nonexistent files.
804* Lots of UTF8 improvements, especially on MacOS.
805* 'window-status-separator' understands #[] expansions.
806* 'split-window' understands '-f' for performing a full-width split.
807* Allow report count to be specified when using 'bind-key -R'.
808* 'set -a' for appending to user options (@foo) is now supported.
809* 'display-panes' can now accept a command to run, rather than always
810  selecting the pane.
811
812CHANGES FROM 2.1 TO 2.2, 10 April 2016
813
814Incompatible Changes
815====================
816
817* The format strings which referenced time have been removed.  Instead:
818
819  #{t:window_activity}
820
821can be used.
822
823* Support for TMPDIR has been removed.  Use TMUX_TMPDIR instead.
824* UTF8 detection now happens automatically if the client supports it, hence
825  the:
826
827  mouse-utf8
828  utf8
829
830  options has been removed.
831* The:
832
833  mouse_utf8_flag
834
835  format string has been removed.
836* The -I option to show-messages has been removed.  See:
837
838  #{t:start_time}
839
840  format option instead.
841
842Normal Changes
843==============
844
845* Panes are unzoomed with selectp -LRUD
846* New formats added:
847
848  #{scroll_position}
849  #{socket_path}
850  #{=10:...} -- limit to N characters (from the start)
851  #{=-10:...} -- limit to N characters (from the end)
852  #{t:...} -- used to format time-based formats
853  #{b:...} -- used to ascertain basename from string
854  #{d:...} -- used to ascertain dirname from string
855  #{s:...} -- used to perform substitutions on a string
856
857* Job output is run via the format system, so formats work again
858* If display-time is set to 0, then the indicators wait for a key to be
859  pressed.
860* list-keys and list-commands can be run without starting the tmux server.
861* kill-session learns -C to clear all alerts in all windows of the session.
862* Support for hooks (internal for now), but hooks for the following have been
863  implemented:
864
865  alert-bell
866  alert-silence
867  alert-activity
868  client-attached
869  client-detached
870  client-resized
871  pane-died
872  pane-exited
873
874* RGB (24bit) colour support.  The 'Tc' flag must be set in the external TERM
875  entry (using terminal-overrides or a custom terminfo entry).
876
877CHANGES FROM 2.0 TO 2.1, 18 October 2015
878
879Incompatible Changes
880====================
881
882* Mouse-mode has been rewritten.  There's now no longer options for:
883	- mouse-resize-pane
884	- mouse-select-pane
885	- mouse-select-window
886	- mode-mouse
887
888  Instead there is just one option:  'mouse' which turns on mouse support
889  entirely.
890* 'default-terminal' is now a session option.  Furthermore, if this is set
891  to 'screen-*' then emulate what screen does.  If italics are wanted, this
892  can be set to 'tmux' but this is still new and not necessarily supported
893  on all platforms with older ncurses installs.
894* The c0-* options for rate-limiting have been removed.  Instead, a backoff
895  approach is used.
896
897Normal Changes
898==============
899
900* New formats:
901	- session_activity
902	- window_linked
903	- window_activity_format
904	- session_alerts
905	- session_last_attached
906	- client_pid
907	- pid
908* 'copy-selection', 'append-selection', 'start-named-buffer' now understand
909  an '-x' flag to prevent it exiting copying mode.
910* 'select-pane' now understands '-P' to set window/pane background colours.
911* 'renumber-windows' now understands windows which are unlinked.
912* 'bind' now understands multiple key tables.  Allows for key-chaining.
913* 'select-layout' understands '-o' to undo the last layout change.
914* The environment is updated when switching sessions as well as attaching.
915* 'select-pane' now understands '-M' for marking a pane.  This marked pane
916  can then be used with commands which understand src-pane specifiers
917  automatically.
918* If a session/window target is prefixed with '=' then only an exact match
919  is considered.
920* 'move-window' understands '-a'.
921* 'update-environment' understands '-E' when attach-session is used on an
922  already attached client.
923* 'show-environment' understands '-s' to output Bourne-compatible commands.
924* New option: 'history-file' to save/restore command prompt history.
925* Copy mode is exited if the history is cleared whilst in copy-mode.
926* 'copy-mode' learned '-e' to exit copy-mode when scrolling to end.
927
928CHANGES FROM 1.9a TO 2.0, 06 March 2015
929
930Incompatible Changes
931====================
932
933* The choose-list command has been removed.
934* 'terminal-overrides' is now a server option, not a session option.
935* 'message-limit' is now a server option, not a session option.
936* 'monitor-content' option has been removed.
937* 'pane_start_path' option has been removed.
938* The "info" mechanism which used to (for some commands) provide feedback
939  has been removed, and like other commands, they now produce nothing on
940  success.
941
942Normal Changes
943==============
944
945* tmux can now write an entry to utmp if the library 'utempter' is present
946  at compile time.
947* set-buffer learned append mode (-a), and a corresponding
948  'append-selection' command has been added to copy-mode.
949* choose-mode now has the following commands which can be bound:
950	- start-of-list
951	- end-of-list
952	- top-line
953	- bottom-line
954
955* choose-buffer now understands UTF-8.
956* Pane navigation has changed:
957	- The old way of always using the top or left if the choice is ambiguous.
958	- The new way of remembering the last used pane is annoying if the
959	  layout is balanced and the leftmost is obvious to the user (because
960	  clearly if we go right from the top-left in a tiled set of four we want
961	  to end up in top-right, even if we were last using the bottom-right).
962
963      So instead, use a combination of both: if there is only one possible
964      pane alongside the current pane, move to it, otherwise choose the most
965      recently used of the choice.
966* 'set-buffer' can now be told to give names to buffers.
967* The 'new-session', 'new-window', 'split-window', and 'respawn-pane' commands
968  now understand multiple arguments and handle quoting problems correctly.
969* 'capture-pane' understands '-S-' to mean the start of the pane, and '-E-' to
970  mean the end of the pane.
971* Support for function keys beyond F12 has changed.  The following explains:
972	- F13-F24 are S-F1 to S-F12
973	- F25-F36 are C-F1 to C-F12
974	- F37-F48 are C-S-F1 to C-S-F12
975	- F49-F60 are M-F1 to M-F12
976	- F61-F63 are M-S-F1 to M-S-F3
977
978 Therefore, F13 becomes a binding of S-F1, etc.
979* Support using pane id as part of session or window specifier (so % means
980  session-of-%1 or window-of-%1) and window id as part of session
981  (so @1 means session-of-@1).
982* 'copy-pipe' command now understands formats via -F
983* 'if-shell'  command now understands formats via -F
984* 'split-window' and 'join-window' understand -b to create the pane to the left
985  or above the target pane.
986
987CHANGES FROM 1.9 TO 1.9a, 22 February 2014
988
989NOTE: This is a bug-fix release to address some important bugs which just
990missed the 1.9 deadline, but were found afterwards.
991
992Normal Changes
993==============
994
995* Fix crash due to uninitialized lastwp member of layout_cell
996* Fix -fg/-bg/-style with 256 colour terminals.
997
998CHANGES FROM 1.8 TO 1.9, 20 February 2014
999
1000NOTE:  This release has bumped the tmux protocol version.  It is therefore
1001advised that the prior tmux server is restarted when this version of tmux is
1002installed, to avoid protocol mismatch errors for newer clients trying to
1003talk to an older running tmux server.
1004
1005Incompatible Changes
1006====================
1007
1008* 88 colour support has been removed.
1009* 'default-path' has been removed.  The new-window command accepts '-c' to
1010  cater for this.  The previous value of "." can be replaced with: 'neww -c
1011  $PWD', the previous value of '' which meant current path of the pane can
1012  be specified as:  'neww -c "#{pane_current_path}"'
1013
1014Deprecated Changes
1015==================
1016
1017* The single format specifiers:  #A -> #Z (where defined) have been
1018  deprecated and replaced with longer-named equivalents, as listed in the
1019  FORMATS section of the tmux manpage.
1020* The various foo-{fg,bg,attr} commands have been deprecated and replaced
1021  with equivalent foo-style option instead.  Currently this is still
1022  backwards-compatible, but will be removed over time.
1023
1024Normal Changes
1025==============
1026
1027* A new environment variable TMUX_TMPDIR is now honoured, allowing the
1028  socket directory to be set outside of TMPDIR (/tmp/ if not set).
1029* If -s not given to swap-pane the current pane is assumed.
1030* A #{pane_synchronized} format specifier has been added to be a conditional
1031  format if a pane is in a synchronised mode (c.f. synchronize-panes)
1032* Tmux now runs under Cygwin natively.
1033* Formats can now be nested within each other and expanded accordingly.
1034* Added 'automatic-rename-format' option to allow the automatic rename
1035  mechanism to use something other than the default of
1036  #{pane_current_command}.
1037* new-session learnt '-c' to specify the starting directory for that session
1038  and all subsequent windows therein.
1039* The session name is now shown in the message printed to the terminal when
1040  a session is detached.
1041* Lots more format specifiers have been added.
1042* Server race conditions have been fixed; in particular commands are not run
1043  until after the configuration file is read completely.
1044* Case insensitive searching in tmux's copy-mode is now possible.
1045* attach-session and switch-client learnt the '-t' option to accept a window
1046  and/or a pane to use.
1047* Copy-mode is only exited if no selection is in progress.
1048* Paste key in copy-mode is now possible to enter text from the clipboard.
1049* status-interval set to '0' now works as intended.
1050* tmux now supports 256 colours running under fbterm.
1051* Many bug fixes!
1052
1053CHANGES FROM 1.7 TO 1.8, 26 March 2013
1054
1055Incompatible Changes
1056====================
1057
1058* layout redo/undo has been removed.
1059
1060Normal Changes
1061==============
1062
1063* Add halfpage up/down bindings to copy mode.
1064* Session choosing fixed to work with unattached sessions.
1065* New window options window-status-last-{attr,bg,fg} to denote the last
1066  window which was active.
1067* Scrolling in copy-mode now scrolls the region without moving the mouse
1068  cursor.
1069* run-shell learnt '-t' to specify the pane to use when displaying output.
1070* Support for middle-click pasting.
1071* choose-tree learns '-u' to start uncollapsed.
1072* select-window learnt '-T' to toggle to the last window if it's already
1073  current.
1074* New session option 'assume-paste-time' for pasting text versus key-binding
1075  actions.
1076* choose-* commands now work outside of an attached client.
1077* Aliases are now shown for list-commands command.
1078* Status learns about formats.
1079* Free-form options can be set with set-option if prepended with an '@'
1080  sign.
1081* capture-pane learnt '-p' to send to stdout, and '-e' for capturing escape
1082  sequences, and '-a' to capture the alternate screen, and '-P' to dump
1083  pending output.
1084* Many new formats added (client_session, client_last_session, etc.)
1085* Control mode, which is a way for a client to send tmux commands.
1086  Currently more useful to users of iterm2.
1087* resize-pane learnt '-x' and '-y' for absolute pane sizing.
1088* Config file loading now reports errors from all files which are loaded via
1089  the 'source-file' command.
1090* 'copy-pipe' mode command to copy selection and pipe the selection to a
1091  command.
1092* Panes can now emit focus notifications for certain applications
1093  which use those.
1094* run-shell and if-shell now accept formats.
1095* resize-pane learnt '-Z' for zooming a pane temporarily.
1096* new-session learnt '-A' to make it behave like attach-session.
1097* set-option learnt '-o' to prevent setting an option which is already set.
1098* capture-pane and show-options learns '-q' to silence errors.
1099* New command 'wait-for' which blocks a client until woken up again.
1100* Resizing panes will now reflow the text inside them.
1101* Lots and lots of bug fixes, fixing memory-leaks, etc.
1102* Various manpage improvements.
1103
1104CHANGES FROM 1.6 TO 1.7, 13 October 2012
1105
1106* tmux configuration files now support line-continuation with a "\" at the
1107  end of a line.
1108* New option status-position to move the status line to the top or bottom of
1109  the screen.
1110* Enforce history-limit option when clearing the screen.
1111* Give each window a unique id, like panes but prefixed with @.
1112* Add pane id to each pane in layout description (while still accepting
1113  the old form).
1114* Provide defined ways to set the various default-path possibilities: ~
1115  for home directory, . for server start directory, - for session start
1116  directory and empty for the pane's working directory (the default). All
1117  can also be used as part of a relative path (eg -/foo). Also provide -c
1118  flags to neww and splitw to override default-path setting.
1119* Add -l flag to send-keys to send input literally (without translating
1120  key names).
1121* Allow a single option to be specified to show-options to show just that
1122  option.
1123* New command "move-pane" (like join-pane but allows the same window).
1124* join-pane and move-pane commands learn "-b" option to place the pane to
1125  the left or above.
1126* Support for bracketed-paste mode.
1127* Allow send-keys command to accept hex values.
1128* Add locking around "start-server" to avoid race-conditions.
1129* break-pane learns -P/-F arguments for display formatting.
1130* set-option learns "-q" to make it quiet, and not print out anything.
1131* copy mode learns "wrap-search" option.
1132* Add a simple form of output rate limiting by counting the number of
1133  certain C0 sequences (linefeeds, backspaces, carriage returns) and if it
1134  exceeds a threshold (current default 250/millisecond), start to redraw
1135  the pane every 100 milliseconds instead of making each change as it
1136  comes. Two configuration options - c0-change-trigger and
1137  c0-change-interval.
1138* find-window learns new flags:  "-C", "-N", "-T" to match against either or
1139  all of a window's content, name, or title.  Defaults to all three options
1140  if none specified.
1141* find-window automatically selects the appropriate pane for the found
1142  matches.
1143* show-environment can now accept one option to show that environment value.
1144* Exit mouse mode when end-of-screen reached when scrolling with the mouse
1145  wheel.
1146* select-layout learns -u and -U for layout history stacks.
1147* kill-window, detach-client, kill-session all  learn "-a" option for
1148  killing all but the current thing specified.
1149* move-window learns "-r" option to renumber window sequentially in a
1150  session.
1151* New session option "renumber-windows" to automatically renumber windows in
1152  a session when a window is closed.  (see "move-window -r").
1153* Only enter copy-mode on scroll up.
1154* choose-* and list-* commands all use "-F" for format specifiers.
1155* When spawning external commands, the value from the "default-shell" option
1156  is now used, rather than assuming /bin/sh.
1157* New choose-tree command to render window/sessions as a tree for selection.
1158* display-message learns new format options.
1159* For linked-windows across sessions, all flags for that window are now
1160  cleared across sessions.
1161* Lots and lots of bug fixes, fixing memory-leaks, etc.
1162* Various manpage improvements.
1163
1164CHANGES FROM 1.5 TO 1.6, 23 January 2012
1165
1166* Extend the mode-mouse option to add a third choice which means the mouse
1167  does not enter copy mode.
1168* Add a -r flag to switch-client to toggle the client read-only flag.
1169* Add pane-base-index option.
1170* Support \ for line continuation in the configuration file.
1171* Framework for more powerful formatting of command output and use it for
1172  list-{panes,windows,sessions}. This allows more descriptive replacements
1173  (such as #{session_name}) and conditionals.
1174* Mark dead panes with some text saying they are dead.
1175* Reject $SHELL if it is not a full path.
1176* Add -S option to refresh-client to redraw status line.
1177* Add an else clause for if-shell.
1178* Try to resolve relative paths for loadb and saveb (first, using client
1179  working directory, if any, then default-path or session working directory).
1180* Support for \e[3J to clear the history and send the corresponding
1181  terminfo code (E3) before locking.
1182* When in copy mode, make repeat count indicate buffer to replace, if used.
1183* Add screen*:XT to terminal-overrides for tmux-in-tmux.
1184* Status-line message attributes added.
1185* Move word-separators to be a session rather than window option.
1186* Change the way the working directory for new processes is discovered. If
1187  default-path isn't empty, it is used. Otherwise, if a new window is created
1188  from the command-line, the working directory of the client is used. If not,
1189  platform specific code is used to retrieve the current working directory
1190  of the process in the active pane. If that fails, the directory where the
1191  session was created is used, instead.
1192* Do not change the current pane if both mouse-select-{pane,window} are
1193  enabled.
1194* Add \033[s and \033[u to save and restore cursor position.
1195* Allow $HOME to be used as default-path.
1196* Add CNL and CPL escape sequences.
1197* Calculate last position correctly for UTF-8 wide characters.
1198* Add an option allow-rename to disable the window rename escape sequence.
1199* Attributes for each type of status-line alert (ie bell, content and
1200  activity) added. Therefore, remove the superfluous options
1201  window-status-alert-{attr,bg,fg}.
1202* Add a -R flag to send-keys to reset the terminal.
1203* Add strings to allow the aixterm bright colours to be used when
1204  configuring colours.
1205* Drop the ability to have a list of keys in the prefix in favour of two
1206  separate options, prefix and prefix2.
1207* Flag -2 added to send-prefix to send the secondary prefix key.
1208* Show pane size in top right of display panes mode.
1209* Some memory leaks plugged.
1210* More command-prompt editing improvements.
1211* Various manpage improvements.
1212* More Vi mode improvements.
1213
1214CHANGES FROM 1.4 TO 1.5, 09 July 2011
1215
1216* Support xterm mouse modes 1002 and 1003.
1217* Change from a per-session stack of buffers to one global stack. This renders
1218  copy-buffer useless and makes buffer-limit now a server option.
1219* Fix most-recently-used choice by avoiding reset the activity timer for
1220  unattached sessions every second.
1221* Add a -P option to new-window and split-window to print the new window or
1222  pane index in target form (useful to pass it into other commands).
1223* Handle a # at the end of a replacement string (such as status-left)
1224  correctly.
1225* Support for UTF-8 mouse input (\033[1005h) which was added in xterm 262.
1226  If the new mouse-utf8 option is on, UTF-8 mouse input is enabled for all
1227  UTF-8 terminals. The option defaults to on if LANG etc are set in the same
1228  manner as the utf8 option.
1229* Support for HP-UX.
1230* Accept colours of the hex form #ffffff and translate to the nearest from the
1231  xterm(1) 256-colour set.
1232* Clear the non-blocking IO flag (O_NONBLOCK) on the stdio file descriptors
1233  before closing them (fixes things like "tmux ls && cat").
1234* Use TMPDIR if set.
1235* Fix next and previous session functions to actually work.
1236* Support -x and -y for new-session to specify the initial size of the window
1237  if created detached with -d.
1238* Make bind-key accept characters with the top-bit-set and print them as octal.
1239* Set $TMUX without the session when background jobs are run.
1240* Simplify the way jobs work and drop the persist type, so all jobs are
1241  fire-and-forget.
1242* Accept tcgetattr/tcsetattr(3) failure, fixes problems with fatal() if the
1243  terminal disappears while locked.
1244* Add a -P option to detach to HUP the client's parent process (usually causing
1245  it to exit as well).
1246* Support passing through escape sequences to the underlying terminal by using
1247  DCS with a "tmux;" prefix.
1248* Prevent tiled producing a corrupt layout when only one column is needed.
1249* Give each pane created in a tmux server a unique id (starting from 0), put it
1250  in the TMUX_PANE environment variable and accept it as a target.
1251* Allow a start and end line to be specified for capture-pane which may be
1252  negative to capture part of the history.
1253* Add -a and -s options to lsp to list all panes in the server or session
1254  respectively. Likewise add -s to lsw.
1255* Change -t on display-message to be target-pane for the #[A-Z] replacements
1256  and add -c as target-client.
1257* The attach-session command now prefers the most recently used unattached
1258  session.
1259* Add -s option to detach-client to detach all clients attached to a session.
1260* Add -t to list-clients.
1261* Change window with mouse wheel over status line if mouse-select-window is on.
1262* When mode-mouse is on, automatically enter copy mode when the mouse is
1263  dragged or the mouse wheel is used. Also exit copy mode when the mouse wheel
1264  is scrolled off the bottom.
1265* Provide #h character pair for short hostname (no domain).
1266* Don't use strnvis(3) for the title as it breaks UTF-8.
1267* Use the tsl and fsl terminfo(5) capabilities to update terminal title and
1268  automatically fill them in on terminals with the XT capability (which means
1269  their title setting is xterm-compatible).
1270* Add a new option, mouse-resize-pane. When on, panes may be resized by
1271  dragging their borders.
1272* Fix crash by resetting last pane on {break,swap}-pane across windows.
1273* Add three new copy-mode commands - select-line, copy-line, copy-end-of-line.
1274* Support setting the xterm clipboard when copying from copy mode using the
1275  xterm escape sequence for the purpose (if xterm is configured to allow it).
1276* Support xterm(1) cursor colour change sequences through terminfo(5) Cc
1277  (set) and Cr (reset) extensions.
1278* Support DECSCUSR sequence to set the cursor style with two new terminfo(5)
1279  extensions, Cs and Csr.
1280* Make the command-prompt custom prompts recognize the status-left option
1281  character pairs.
1282* Add a respawn-pane command.
1283* Add a couple of extra xterm-style keys that gnome terminal provides.
1284* Allow the initial context on prompts to be set with the new -I option to
1285  command-prompt. Include the current window and session name in the prompt
1286  when renaming and add a new key binding ($) for rename session.
1287* Option bell-on-alert added to trigger the terminal bell when there is an
1288  alert.
1289* Change the list-keys format so that it shows the keys using actual tmux
1290  commands which should be able to be directly copied into the config file.
1291* Show full targets for lsp/lsw -a.
1292* Make confirm-before prompt customizable with -p option like command-prompt
1293  and add the character pairs #W and #P to the default kill-{pane,window}
1294  prompts.
1295* Avoid sending data to suspended/locked clients.
1296* Small memory leaks in error paths plugged.
1297* Vi mode improvements.
1298
1299CHANGES FROM 1.3 TO 1.4, 27 December 2010
1300
1301* Window bell reporting fixed.
1302* Show which pane is active in the list-panes output.
1303* Backoff reworked.
1304* Prevent the server from dying when switching into copy mode when already
1305  in a different mode.
1306* Reset running jobs when the status line is enabled or disabled.
1307* Simplify xterm modifier detection.
1308* Avoid crashing in copy mode if the screen size is too small for the
1309  indicator.
1310* Flags -n and -p added to switch-client.
1311* Use UTF-8 line drawing characters on UTF-8 terminals, thus fixing some
1312  terminals (eg putty) which disable the vt100 ACS mode switching sequences
1313  in UTF-8 mode. On terminals without ACS, use ASCII equivalents.
1314* New server option exit-unattached added.
1315* New session option destroy-unattached added.
1316* Fall back on normal session choice method if $TMUX exists but is invalid
1317  rather than rejecting.
1318* Mark repeating keys with "(repeat)" in the key list.
1319* When removing a pane, don't change the active pane unless the active pane
1320  is actually the one being removed.
1321* New command last-pane added.
1322* AIX fixes.
1323* Flag -a added to unbind-key.
1324* Add XAUTHORITY to update-environment.
1325* More info regarding window and pane flags is now shown in list-*.
1326* If VISUAL or EDITOR contains "vi" configure mode-keys and status-key to vi.
1327* New window option monitor-silence and session option visual-silence added.
1328* In the built-in layouts distribute the panes more evenly.
1329* Set the default value of main-pane-width to 80 instead of 81.
1330* Command-line flag -V added.
1331* Instead of keeping a per-client prompt history make it global.
1332* Fix rectangle copy to behave like emacs (the cursor is not part of the
1333  selection on the right edge but on the left it is).
1334* Flag -l added to switch-client.
1335* Retrieve environment variables from the global environment rather than
1336  getenv(3), thus allowing them to be updated during the configuration file.
1337* New window options other-pane-{height,width} added.
1338* More minor bugs fixed and manpage improvements.
1339
1340CHANGES FROM 1.2 TO 1.3, 18 July 2010
1341
1342* New input parser.
1343* Flags to move through panes -UDLR added to select-pane.
1344* Commands up-pane, and down-pane removed, since equivalent behaviour is now
1345  available through the target flag (-t:+ and -t:-).
1346* Jump-forward/backward in copy move (based on vi's F, and f commands).
1347* Make paste-buffer accept a pane as a target.
1348* Flag -a added to new-window to insert a window after an existing one, moving
1349  windows up if necessary.
1350* Merge more mode into copy mode.
1351* Run job commands explicitly in the global environment (which can be modified
1352  with setenv -g), rather than with the environment tmux started with.
1353* Use the machine's hostname as the default title, instead of an empty string.
1354* Prevent double free if the window option remain-on-exit is set.
1355* Key string conversions rewritten.
1356* Mark zombie windows as dead in the choose-window list.
1357* Tiled layout added.
1358* Signal handling reworked.
1359* Reset SIGCHLD after fork to fix problems with some shells.
1360* Select-prompt command removed. Therefore, bound ' to command-prompt -p index
1361  "select-window -t:%%" by default.
1362* Catch SIGHUP and terminate if running as a client, thus avoiding clients from
1363  being left hanging around when, for instance, a SSH session is disconnected.
1364* Solaris 9 fixes (such as adding compat {get,set}env(3) code).
1365* Accept none instead of default for attributes.
1366* Window options window-status-alert-{alert,bg,fg} added.
1367* Flag -s added to the paste-buffer command to specify a custom separator.
1368* Allow dragging to make a selection in copy mode if the mode-mouse option is
1369  set.
1370* Support the mouse scroll wheel.
1371* Make pipe-pane accept special character sequences (eg #I).
1372* Fix problems with window sizing when starting tmux from .xinitrc.
1373* Give tmux sockets (but not the containing folder) group permissions.
1374* Extend the target flags (ie -t) to accept an offset (for example -t:+2), and
1375  make it wrap windows, and panes.
1376* New command choose-buffer added.
1377* New server option detach-on-destroy to set what happens to a client when the
1378  session it is attached to is destroyed. If on (default), the client is
1379  detached. Otherwise, the client is switched to the most recently active of
1380  the remaining sessions.
1381* The commands load-buffer, and save-buffer now accept a dash (-) as the file
1382  to read from stdin, or write to stdout.
1383* Custom layouts added.
1384* Additional code reduction, bug fixes, and manpage enhancements.
1385
1386CHANGES FROM 1.1 TO 1.2, 10 March 2010
1387
1388* Switch to libevent.
1389* Emulate the ri (reverse index) capability, ergo allowing tmux to at least
1390  start on Sun consoles (TERM=sun, or sun-color).
1391* Assign each entry a number, or lowercase letter in choose mode, and accept
1392  that as a shortcut key.
1393* Permit top-bit-set characters to be entered in the status line.
1394* Mark no-prefix keys with (no prefix), rather than [] in list-keys.
1395* New command show-messages (alias showmsgs), and new session option
1396  message-limit, to show a per-client log of status lines messages up to the
1397  number defined by message-limit.
1398* Do not interpret #() for display-message to avoid leaking commands.
1399* New window options window-status-format, and window-status-current-format to
1400  control the format of each window in the status line.
1401* Add a -p flag to display-message to print the output, instead of displaying
1402  it in the status line.
1403* Emulate il1, dl1, ich1 to run with vt100 feature set.
1404* New command capture-pane (alias capturep) to copy the entire pane contents
1405  to a paste buffer.
1406* Avoid duplicating code by adding a -w flag to set-option, and show-options to
1407  set, and show window options. The commands set-window-option, and
1408  show-window-options are now aliases.
1409* Panes can now be referred to as top, bottom, top-left, etc.
1410* Add server-wide options, which can be set with set-option -s, and shown with
1411  show-options -s.
1412* New server option quiet (like -q from the command line).
1413* New server option escape-time to set the timeout used to detect if escapes
1414  are alone, part of a function key, or meta sequence.
1415* New session options pane-active-border-bg, pane-active-border-fg,
1416  pane-border-bg, and pane-border-fg to set pane colours.
1417* Make split-window accept a pane target, instead of a window.
1418* New command join-pane (alias joinp) to split, and move an existing pane into
1419  the space (the opposite of break-pane), thus simplifying calls to
1420  split-window, followed by move-window.
1421* Permit S- prefix on keys for shift when the terminal/terminfo supports them.
1422* Window targets (-t flag) can now refer to the last window (!), next (+), and
1423  previous (-) window by number.
1424* Mode keys to jump to the bottom/top of history, end of the next word, scroll
1425  up/down, and reverse search in copy mode.
1426* New session option display-panes-active-colour to display the active pane in
1427  a different colour with the display-panes command.
1428* Read the socket path from $TMUX if it's present, and -L, and -S are not
1429  given.
1430* Vi-style mode keys B, W, and E to navigate between words in copy mode.
1431* Start in more mode when configuration file errors are detected.
1432* Rectangle copy support added.
1433* If attach-session was specified with the -r flag, make the client read-only.
1434* Per-window alternate-screen option.
1435* Make load-buffer work with FIFOs.
1436* New window option word-separators to set the characters considered as word
1437  separators in copy mode.
1438* Permit keys in copy mode to be prefixed by a repeat count, entered with [1-9]
1439  in vi mode, or M-[1-9] in emacs mode.
1440* utf8 improvements.
1441* As usual, additional code reduction, bug fixes, and manpage enhancements.
1442
1443CHANGES FROM 1.0 TO 1.1, 05 November 2009
1444
1445* New run-shell (alias run) command to run an external command without a
1446  window, capture it's stdout, and send it to output mode.
1447* Ability to define multiple prefix keys.
1448* Internal locking mechanism removed. Instead, detach each client and run the
1449  external command specified in the new session option lock-command (by default
1450  lock -np), thus allowing the system password to be used.
1451* set-password command, and -U command line flag removed per the above change.
1452* Add support for -c command line flag to execute a shell command.
1453* New lock-client (alias lockc), and lock-session (alias locks) commands to
1454  lock a particular client, or all clients attached to a session.
1455* Support C-n/C-p/C-v/M-v with emacs keys in choice mode.
1456* Use : for goto line rather than g in vi mode.
1457* Try to guess which client to use when no target client was specified. Finds
1458  the current session, and if only one client is present, use it. Otherwise,
1459  return the most recently used client.
1460* Make C-Down/C-Up in copy mode scroll the screen down/up one line without
1461  moving the cursor.
1462* Scroll mode superseded by copy mode.
1463* New synchronize-panes window option to send all input to all other panes in
1464  the same window.
1465* New lock-server session option to lock, when off (on by default), each
1466  session when it has been idle for the lock-after-time setting. When on, the
1467  entire server locks when all sessions have been idle for their individual
1468  lock-after-time setting.
1469* Add support for grouped sessions which have independent name, options,
1470  current window, but where the linked windows are synchronized (ie creating,
1471  killing windows are mirrored between the sessions). A grouped session may be
1472  created by passing -t to new-session.
1473* New mouse-select-pane session option to select the current pane with the
1474  mouse.
1475* Queue, and run commands in the background for if-shell, status-left,
1476  status-right, and #() by starting each once every status-interval. Adds the
1477  capability to call some programs which would previously cause the server to
1478  hang (eg sleep/tmux). It also avoids running commands excessively (ie if used
1479  multiple times, it will be run only once).
1480* When a window is zombified and automatic-rename is on, append [dead] to the
1481  name.
1482* Split list-panes (alias lsp) off from list-windows.
1483* New pipe-pane (alias pipep) to redirect a pane output to an external command.
1484* Support for automatic-renames for Solaris.
1485* Permit attributes to be turned off in #[] by prefixing with no (eg nobright).
1486* Add H/M/L in vi mode, and M-R/M-r in emacs to move the cursor to the top,
1487  middle, and bottom of the screen.
1488* -a option added to kill-pane to kill all except current pane.
1489* The -d command line flag is now gone (can be replaced by terminal-overrides).
1490  Just use op/AX to detect default colours.
1491* input/tty/utf8 improvements.
1492* xterm-keys rewrite.
1493* Additional code reduction, and bug fixes.
1494
1495CHANGES FROM 0.9 TO 1.0, 20 September 2009
1496
1497* Option to alter the format of the window title set by tmux.
1498* Backoff for a while after multiple incorrect password attempts.
1499* Quick display of pane numbers (C-b q).
1500* Better choose-window, choose-session commands and a new choose-client command.
1501* Option to request multiple responses when using command-prompt.
1502* Improved environment handling.
1503* Combine wrapped lines when pasting.
1504* Option to override terminal settings (terminal-overrides).
1505* Use the full range of ACS characters for drawing pane separator lines.
1506* Customisable mode keys.
1507* Status line colour options, with embedded colours in status-left/right, and
1508  an option to centre the window list.
1509* Much improved layouts, including both horizontal and vertical splitting.
1510* Optional visual bell, activity and content indications.
1511* Set the utf8 and status-utf8 options when the server is started with -u.
1512* display-message command to show a message in the status line, by default some
1513  information about the current window.
1514* Improved current process detection on NetBSD.
1515* unlink-window -k is now the same as kill-window.
1516* attach-session now works from inside tmux.
1517* A system-wide configuration file, /etc/tmux.conf.
1518* A number of new commands in copy mode, including searching.
1519* Panes are now specified using the target (-t) notation.
1520* -t now accepts fnmatch(3) patterns and looks for prefixes.
1521* Translate \r into \n when pasting.
1522* Support for binding commands to keys without the prefix key
1523* Support for alternate screen (terminfo smcup/rmcup).
1524* Maintain data that goes off screen after reducing the window size, so it can
1525  be restored when the size is increased again.
1526* New if-shell command to test a shell command before running a tmux command.
1527* tmux now works as the shell.
1528* Man page reorganisation.
1529* Many minor additions, much code tidying and several bug fixes.
1530
1531CHANGES FROM 0.8 TO 0.9, 01 July 2009
1532
1533* Major changes to build infrastructure: cleanup of makefiles and addition
1534  of a configure script.
1535* monitor-content window option to monitor a window for a specific fnmatch(3)
1536  pattern. The find-window command also now accepts fnmatch(3) patterns.
1537* previous-layout and select-layout commands, and a main-horizontal layout.
1538* Recreate the server socket on SIGUSR1.
1539* clear-history command.
1540* Use ACS line drawing characters for pane separator lines.
1541* UTF-8 improvements, and code to detect UTF-8 support by looking at
1542  environment variables.
1543* The resize-pane-up and resize-pane-down commands are now merged together
1544  into a new resize-pane command with -U and -D flags.
1545* confirm-before command to request a yes/no answer before executing dangerous
1546  commands.
1547* Status line bug fixes, support for UTF-8 (status-utf8 option), and a key to
1548  paste from the paste buffer.
1549* Support for some additional escape sequences and terminal features, including
1550  better support for insert mode and tab stops.
1551* Improved window resizing behaviour, modelled after xterm.
1552* Some code reduction and a number of miscellaneous bug fixes.
1553
1554================================================================================
1555
1556On 01 June 2009, tmux was imported into the OpenBSD base system. From this date
1557onward changes are logged as part of the normal CVS commit message to either
1558OpenBSD or SourceForge CVS. This file will be updated to contain a summary of
1559major changes with each release, and to mention important configuration or
1560command syntax changes during development.
1561
1562The list of older changes is below.
1563
1564================================================================================
1565
156621 May 2009
1567
1568* stat(2) files before trying to load them to avoid problems, for example
1569  with "source-file /dev/zero".
1570
157119 May 2009
1572
1573* Try to guess if the window is UTF-8 by outputting a three-byte UTF-8 wide
1574  character and seeing how much the cursor moves. Currently tries to figure out
1575  if this works by some stupid checks on the terminal, these need to be
1576  rethought. Also might be better using a width 1 character rather than width 2.
1577* If LANG contains "UTF-8", assume the terminal supports UTF-8, on the grounds
1578  that anyone who configures it probably wants UTF-8. Not certain if this is
1579  a perfect idea but let's see if it causes any problems.
1580* New window option: monitor-content. Searches for a string in a window and if
1581  it matches, highlight the status line.
1582
158318 May 2009
1584
1585* main-horizontal layout and main-pane-height option to match vertical.
1586* New window option main-pane-width to set the width of the large left pane with
1587  main-vertical (was left-vertical) layout.
1588* Lots of layout cleanup. manual layout is now manual-vertical.
1589
159016 May 2009
1591
1592* select-layout command and a few default key bindings (M-0, M-1, M-2, M-9) to
1593  select layouts.
1594* Recreate server socket on SIGUSR1, per SF feature request 2792533.
1595
159614 May 2009
1597
1598* Keys in status line (p in vi mode, M-y in emacs) to paste the first line
1599  of the upper paste buffer. Suggested by Dan Colish.
1600* clear-history command to clear a pane's history.
1601* Don't force wrapping with \n when asked, let the cursor code figure it out.
1602  Should fix terminals which use this to detect line breaks.
1603* Major cleanup and restructuring of build infrastructure. Still separate files
1604  for GNU and BSD make, but they are now hugely simplified at the expense of
1605  adding a configure script which must be run before make. Now build and
1606  install with:
1607
1608	$ ./configure && make && sudo make install
1609
161004 May 2009
1611
1612* Use ACS line drawing characters for pane separator lines.
1613
161430 April 2009
1615
1616* Support command sequences without a space before the semicolon, for example
1617  "neww; neww" now works as well as "neww ; neww". "neww;neww" is still an
1618  error.
1619* previous-layout command.
1620* Display the layout name in window lists.
1621* Merge resize-pane-up and resize-pane-down into resize-pane with -U and -D
1622  flags.
1623
162429 April 2009
1625
1626* Get rid of compat/vis.* - only one function was used which is easily
1627  replaced,and less compat code == good.
1628
162927 April 2009
1630
1631* Avoid using the prompt history when the server is locked, and prevent any
1632  input entered from being added to the client's prompt history.
1633* New command, confirm-before (alias confirm), which asks for confirmation
1634  before executing a command. Bound "&" and "x" by default to confirm-before
1635  "kill-window" and confirm-before "kill-pane", respectively.
1636
163723 April 2009
1638
1639* Support NEL, yet another way of making newline. Fixes the output from some
1640  Gentoo packaging thing. Reported by someone on SF then logs that allowed a
1641  fix sent by tcunha.
1642* Use the xenl terminfo flag to detect early-wrap terminals like the FreeBSD
1643  console. Many thanks for a very informative email from Christian Weisgerber.
1644
164521 April 2009
1646
1647* tmux 0.8 released.
1648
164917 April 2009
1650
1651* Remove the right number of characters from the buffer when escape then
1652  a cursor key (or other key prefixed by \033) is pressed. Reported by
1653  Stuart Henderson.
1654
165503 April 2009
1656
1657* rotate-window command. -U flag (default) for up, -D flag for down.
1658
165902 April 2009
1660
1661* Change scroll/pane redraws to only redraw the single pane affected rather
1662  than the entire window.
1663* If redrawing the region would mean redrawing > half the pane, just schedule
1664  to redraw the entire window. Also add a flag to skip updating the window any
1665  further if it is scheduled to be redrawn. This has the effect of batching
1666  multiple redraws together.
1667
166801 April 2009
1669
1670* Basic horizontal splitting and layout management. Still some redraw and other
1671  issues - particularly, don't mix with manual pane resizing, be careful when
1672  viewing from multiple clients and don't expect shell windows to redraw very
1673  well after the layout is changed; generally cycling the layout a few times
1674  will fix most problems. Getting this in for testing while I think about how
1675  to deal with manual mode.
1676
1677  Split window as normal and cycle the layouts with C-b space. Some of the
1678  layouts will work better when swap-pane comes along.
1679
168031 March 2009
1681
1682* AIX port, thanks to cmihai for access to a box. Only tested on 6.1 with xlc
1683  10.1 (make sure CC is set). Needs GNU make and probably ncurses (didn't try
1684  plain curses). Also won't build with DEBUG, so comment the FDEBUG=1 line in
1685  GNUmakefile.
1686* Draw a vertical line on the right when the window size is less than the
1687  terminal size. This is partly to shake out any horizontal limit bugs on the
1688  way to horizontal splitting/pane tiling. Currently a bit slow since it has to
1689  do a lot of redrawing but hopefully that will improve as I get some better
1690  ideas for how to do it.
1691* Fix remaining problems with copy and paste and UTF-8.
1692
169328 March 2009
1694
1695* Better UTF-8 support, including combined characters. Unicode data is now
1696  stored as UTF-8 in a separate array, the code does a lookup into this every
1697  time it gets to a UTF-8 cell. Zero width characters are just appended onto
1698  the UTF-8 data for the previous cell. This also means that almost no bytes
1699  extra are wasted non-Unicode data (yay).
1700
1701  Still some oddities, such as copy mode skips over wide characters in a
1702  strange way, and the code could do with some tidying.
1703* Key repeating is now a property of the key binding not of the command.
1704  Repeat is turned on when the key is bound with the -r flag to bind-key.
1705  next/previous-window no longer repeat by default as it turned out to annoy
1706  me.
1707
170827 March 2009
1709
1710* Clear using ED when redrawing the screen. I foolishly assumed using spaces
1711  would be equivalent and terminals would pick up on this, but apparently not.
1712  This fixes copy and paste in xterm/rxvt.
1713* Sockets in /tmp are now created in a subdirectory named, tmux-UID, eg
1714  tmux-1000. The default socket is thus /tmp/tmux-UID/default. To start a
1715  separate server, the new -L command line option should be used: this creates
1716  a socket in the same directory with a different name ("-L main" will create
1717  socket called "main"). -S should only be used to place the socket outside
1718  /tmp. This makes sockets a little more secure and a bit more convenient to
1719  use multiple servers.
1720
172121 March 2009
1722
1723* New session flag "set-remain-on-exit" to set remain-on-exit flag for new
1724  windows created in that session (like "remain-by-default" used to do). Not
1725  perfectly happy about this, but until I can think of a good way to introduce
1726  it generically (maybe a set of options in the session) this will do. Fixes
1727  SF request 2527847.
1728
172907 March 2009
1730
1731* Support for 88 colour terminals.
1732* break-pane command to create a new window using an existing pane.
1733
173402 March 2009
1735
1736* Make escape key timer work properly so escape+key can be used without
1737  lightning fast key presses.
1738
173913 February 2009
1740
1741* Redo mode keys slightly more cleanly and apply them to command prompt
1742  editing. vi or emacs mode is controlled by the session option status-keys.
1743
174412 February 2009
1745
1746* Looking up argv[0] is expensive, so just use p_comm for the window name which
1747  is good enough. Also increase name update time to 500 ms.
1748
174911 February 2009
1750
1751* Only use ri when actually at the top of the screen; just move the cursor up
1752  otherwise.
1753* FreeBSD's console wraps lines at $COLUMNS - 1 rather than $COLUMNS (the
1754  cursor can never be beyond $COLUMNS - 1) and does not appear to support
1755  changing this behaviour, or any of the obvious possibilities (turning off
1756  right margin wrapping, insert mode). This is irritating, most notably because
1757  it impossible to write to the very bottom-right of the screen without
1758  scrolling. To work around this, if built on FreeBSD and run with a "cons"
1759  $TERM, the bottom-right cell on the screen is omitted.
1760* Emulate scroll regions (slowly) to support the few terminals which don't have
1761  it (some of which don't really have any excuse).
1762
176310 February 2009
1764
1765* No longer redraw the status line every status-interval unless it has actually
1766  changed.
1767
176808 February 2009
1769
1770* Don't treat empty arguments ("") differently when parsing configuration
1771  file/command prompt rather than command line.
1772* tmux 0.7 released.
1773
177403 February 2009
1775
1776* New command, copy-buffer (alias copyb), to copy a session paste buffer to
1777  another session.
1778
177901 February 2009
1780
1781* The character pair #(command) may now contain (escaped) right parenthesis.
1782
178330 January 2009
1784
1785* . now bound to "command-prompt 'move-window %%'" by default, from joshe.
1786
178729 January 2009
1788
1789* Window options to set status line fg, bg and attributes for a single
1790  window. Options are: window-status-fg, window-status-bg,
1791  window-status-attr. Set to "default" to use the session status colours.
1792
1793  This allows quite neat things like:
1794
1795	$ cat ~/bin/xssh
1796	#!/bin/sh
1797
1798	if [ ! -z "$TMUX" ]; then
1799	case "$1" in
1800    	natalya)
1801	        tmux setw window-status-fg red >/dev/null
1802		;;
1803	natasha)
1804        	tmux setw window-status-fg yellow >/dev/null
1805		;;
1806	esac
1807	fi
1808	ssh "$@"
1809	[ ! -z "$TMUX" ] && tmux setw -u window-status-fg >/dev/null
1810	$ alias ssh="~/bin/xssh"
1811
1812* Support #(command) in status-left, and status-right, which is displayed as
1813  the first line of command's output (e.g. set -g status-right
1814  "#(whoami)@#(hostname -s)"). Commands with )s aren't supported.
1815
181628 January 2009
1817
1818* Support mouse in copy mode to move cursor. Can't do anything else at the
1819  moment until other mouse modes are handled.
1820* Better support for at least the most common variant of mouse input: parse it
1821  and adjust for different panes. Also support mouse in window/session choice
1822  mode.
1823
182427 January 2009
1825
1826* Bring back the fancy window titles with session/window names: it is easy to
1827  work around problems with elinks (see FAQ).
1828* -u flag to scroll-mode and copy-mode to start scrolled one page
1829  up. scroll-mode -u is bound to prefix,page-up (ppage) by default.
1830* Allow status, mode and message attributes to be changed by three new options:
1831  status-attr, mode-attr, message-attr. A comma-separated list is accepted
1832  containing: bright, dim, underscore, blink, reverse, hidden, italics, for
1833  example:
1834
1835	set -g status-attr bright,blink
1836
1837  From Josh Elsasser, thanks!
1838
183926 January 2009
1840
1841* Be more clever about picking the right process to create the window name.
1842* Don't balls up the terminal on UTF-8 combined characters. Don't support them
1843  properly either - they are just discarded for the moment.
1844
184525 January 2009
1846
1847* load-buffer command
1848
184923 January 2009
1850
1851* Use reverse colours rather than swapping fg and bg for message, mode and
1852  status line. This makes these usable on black and white terminals.
1853* Better error messages when creating a session or window fails.
1854* Oops. Return non-zero on error. Reported by Will Maier.
1855
185621 January 2009
1857
1858* Handle SIGTERM (and kill-server which uses it), a bit more neatly - tidy
1859  up properly and print a nicer message. Same effect though :-).
1860* new-window now supports -k to kill target window if it exists.
1861* Bring back split-window -p and -l options to specify the height a percentage
1862  or as a number of lines.
1863* Make window and session choice modes allow you to choose items in vi keys
1864  mode (doh!). As a side-effect, this makes enter copy selection (as well
1865  as C-w/M-w) when using emacs keys in copy mode. Reported by merdely.
1866
186720 January 2009
1868
1869* Darwin support for automatic-rename from joshe; Darwin doesn't seem to have
1870  a sane method of getting argv[0] and searching for the precise insane way
1871  is too frustrating, so this just uses the executable name.
1872* Try to change the window title to match the command running it in. This is
1873  done by reading argv[0] from the process group leader of the group that owns
1874  the tty (tcgetpgrp()). This can't be done portably so some OS-dependent code
1875  is introduced (ugh); OpenBSD, FreeBSD and Linux are supported at the moment.
1876
1877  A new window flag, automatic-rename, is available: if this is set to off, the
1878  window name is not changed. Specifying a name with the new-window,
1879  new-session or rename-window commands will automatically set this flag to off
1880  for the window in question. To disable it entirely set the option to off
1881  globally (setw -g automatic-rename off).
1882
188319 January 2009
1884
1885* Fix various stupid issues when the status line is turned off. Grr.
1886* Use reverse attributes for clock and cursor, otherwise they do not
1887  appear on black and white terminals.
1888* An error in a command sequence now stops execution of that sequence.
1889  Internally, each command code now passes a return code back rather than
1890  talking to the calling client (if any) directly.
1891* attach-session now tries to start the server if it isn't already started - if
1892  no sessions are created in .tmux.conf this will cause an error.
1893* Clean up starting server by making initial client get a special socketpair.
1894
189518 January 2009
1896
1897* Unbreak UTF-8.
1898* -a flag to next-window and previous-window to select the next or previous
1899  window with activity or bell. Bound to M-n and M-p.
1900* find-window command to search window names, titles and visible content (but
1901  not history) for a string. If only one is found, the window is selected
1902  otherwise a choice list is shown. This (as with the other choice commands)
1903  only works from a key. Bound to "f" by default.
1904* Cleaned up command printing code, also enclose arguments with spaces in "s.
1905* Added command sequences. These are entered by separating each argument by a ;
1906  argument (spaces on both sides), for example:
1907
1908	lsk ; lsc
1909
1910  To use a literal ; as the argument prefix it with \, for example:
1911
1912	bind x lsk \; lsc
1913
1914  Commands are executed from left to right. Also note that command sequences do
1915  not support repeat-time repetition unless all commands making up the sequence
1916  support it.
1917* suspend-client command to suspend a client. Don't try to background it
1918  though...
1919* Mark attached sessions in sessions lists. Suggested by Simon Kuhnle.
1920
192117 January 2009
1922
1923* tmux 0.6 released.
1924
192515 January 2009
1926
1927* Support #H for hostname and #S for session name in status-left/right.
1928* Two new commands, choose-window and choose-session which work only when bound
1929  to a key and allow the window or session to be selected from a list. These
1930  are now bound to "w" and "s" instead of the list commands.
1931
193214 January 2009
1933
1934* Rework the prefix-time stuff. The option is now called repeat-time and
1935  defaults to 500 ms. It only applies to a small subset of commands, currently:
1936  up-pane, down-pane, next-window, previous-window, resize-pane-up,
1937  resize-pane-down. These are the commands for which it is obviously useful,
1938  having it for everything else was just bloody annoying.
1939* The alt-up and alt-down keys now resize a pane by five lines at a time.
1940* switch-pane is now select-pane and requires -p to select a pane. The
1941  "o" key binding is changed to down-pane.
1942* up-pane and down-pane commands, bound to arrow up and down by default.
1943* Multiple vertical window splitting. Minimum pane size is four lines, an
1944  (unhelpful) error will be shown if attempting to split a window with less
1945  that eight lines. If the window is resized, as many panes are shown as can
1946  fit without reducing them below four lines. There is (currently!) not a way
1947  to show a hidden pane without making the window larger.
1948
1949  Note the -p and -l options to split-window are now gone, these may reappear
1950  once I think them through again.
1951* Server locking on inactivity (lock-after-time) is now disabled by default.
1952
195313 January 2009
1954
1955* kill-pane command.
1956
195712 January 2009
1958
1959* command-prompt now accepts a single argument, a template string. Any
1960  occurrences of %% in this string are replaced by whatever is entered at the
1961  prompt and the result is executed as a command. This allows things like (now
1962  bound by default):
1963
1964  	 bind , command-prompt "rename-window %%"
1965
1966  Or my favourite:
1967
1968         bind x command-prompt "split-window 'man %%'"
1969
1970* Option to set prefix time, allowing multiple commands to be entered without
1971  pressing the prefix key again, so long as they each typed within this time of
1972  each other.
1973* Yet more hacks for key handling. Think it is just about working now.
1974* Two commands, resize-pane-up and resize-pane-down to resize a pane.
1975* Make the window pane code handle panes of different sizes, and add a -l
1976  and -p arguments to split-window to specify the new window size in lines
1977  or as a percentage.
1978
197911 January 2009
1980
1981* Vertical window splitting. Currently can only split a window into two panes.
1982  New split-window command splits (bound to ") and switch-pane command (bound to
1983  o) switches between panes.
1984
1985  close-pane, swap-pane commands are to follow. Also to come are pane resizing,
1986  >2 panes, the ability to break a pane out to a full window and vice versa and
1987  possibly horizontal splitting.
1988
1989  Panes are subelements of windows rather than being windows in their own
1990  right. I tried to make them windows (so the splitting was at the session or
1991  client level) but this rapidly became very complex and invasive. So in the
1992  interests of having something working, I just made it so each window can have
1993  two child processes instead of one (and it still took me 12 hours straight
1994  coding). Now the concept is proven and much of the support code is there,
1995  this may change in future if more flexibility is needed.
1996* save-buffer command, from Tiago Cunha.
1997
199810 January 2009
1999
2000* New option, lock-after-time. If there is no activity in the period specified
2001  by this option (in seconds), tmux will lock the server. Default is 1800 (30
2002  minutes), set to 0 to disable.
2003* Server locking. Two new commands: set-password to set a password (a
2004  preencrypted password may be specified with -c); and lock-server to lock the
2005  server until the password is entered. Also an additional command line flag,
2006  -U, to unlock from the shell. The default password is blank (any password
2007  accepted). If specifying an encrypted password from encrypt(1) in .tmux.conf
2008  with -c, don't forget to enclose it in single-quotes (') to prevent shell
2009  variable expansion.
2010* If a window is created from the command line, tmux will now use the same
2011  current working directory for the new process. A new default-path option to
2012  sets the working directory for processes created from keys or interactively
2013  from the prompt.
2014* New mode to display a large clock. Entered with clock-mode command (bound to
2015  C-b t by default); two window options: clock-mode-colour and clock-mode-style
2016  (12 or 24). This will probably be used as the basis for window locking.
2017* New command, server-info, to show some server information and terminal
2018  details.
2019
202009 January 2009
2021
2022* Stop using ncurses variables and instead build a table of the codes we want
2023  into an array for each terminal type. This makes the code a little more
2024  untidy in places but gets rid of the awful global variables and calling
2025  setterm all the time, and shoves all the ncurses-dependent mess into a single
2026  file, tty-term.c. It also allows overriding single terminal codes, this is
2027  used to fix rxvt on some platforms (where it is missing dch) and in future
2028  may allow user customisation a la vim.
2029* Update key handling code. Simplify, support ctrl properly and add a new
2030  window option (xterm-keys) to output xterm key codes including ctrl and,
2031  if available, alt and shift.
2032
203308 January 2009
2034
2035* If built without DEBUG (the release versions), don't cause a fatal error if
2036  the grid functions notice an input error, just log and ignore the
2037  request. This might mean me getting shouted at less often when bugs kill
2038  long-running sessions, at least in release versions.
2039* Hopefully fix cursor out-of-bounds checking when writing to grid. When I
2040  wrote the code I must have forgotten that the cursor can be one cell off the
2041  right of the screen (yes, I know), so there were number of out-of-bounds/
2042  overflow problems.
2043
204407 January 2009
2045
2046* New flag to set and setw, -u, to unset an option (allowing it to inherit from)
2047  the global options again.
2048* Added more info messages for options changes.
2049* A bit of tidying and reorganisation of options code.
2050
205106 January 2009
2052
2053* Don't crash when backspacing if cursor is off the right of the screen,
2054  reported by David Chisnall.
2055* Complete words at any point inside command in prompt, also use option name
2056  as well as command names.
2057* Per-client prompt history of up to 100 items.
2058* Use a splay tree for key bindings instead of an array. As a side-effect this
2059  sorts them when listed.
2060
206122 December 2008
2062
2063* Use the right keys for home and end.
2064
206520 December 2008
2066
2067* Add vim mode for tmux configuration file to examples/, from Tiago Cunha.
2068
206915 December 2008
2070
2071* New command, source-file (alias source), to load a configuration
2072  file. Written by Tiago Cunha, many thanks.
2073
207413 December 2008
2075
2076* Work around lack of dch. On Linux, the rxvt termcap doesn't have it (it is
2077  lying, but we can't really start disbelieving termcaps...). This is a bit
2078  horrible - I can see no way to do it without pretty much redrawing the whole
2079  line, but it works...
2080
208110 December 2008
2082
2083* glibc's getopt(3) is useless: it is not POSIX compliant without jumping
2084  through non-portable hoops, and the method of resetting it is unclear (the
2085  man page on my system says set optind to 1, but other sources say 0). So,
2086  import OpenBSD's getopt_long.c into compat/ for use on Linux and use the
2087  clearly documented optreset = optind = 1 method. This fixes some strange
2088  issues with command parsing (getting the syntax wrong would prevent any
2089  further commands being parsed).
2090
209106 December 2008
2092
2093* Bring set/setw/show/showw into line with other commands. This means that by
2094  default they now affect the current window (if any); the new -g flag must be
2095  passed to set the global options. This changes the behaviour of set/show and
2096  WILL BREAK CURRENT CONFIGURATIONS.
2097
2098  In summary, whether in the configuration file, the command prompt, or a key
2099  binding, use -g to set a global option, use -t to specify a particular window
2100  or session, or omit both to try and use the current window or session.
2101
2102  This makes set/show a bit of a pain but is the correct behaviour for
2103  setw/showw and is the same as every other command, so we can put up with a
2104  bit of pain for consistency.
2105* Redo window options. They now work in the same way to session options with a
2106  global options set. showw/setw commands now have similar syntax to show/set
2107  (including the ability to use abbreviations).
2108
2109  PLEASE NOTE this includes the following configuration-breaking changes:
2110
2111  - remain-by-default is now GONE, use "setw -g remain-on-exit" to apply the
2112    global window option instead;
2113  - mode-keys is now a window option rather than session - use "setw [-g]
2114    mode-keys" instead of set.
2115
2116  There are also some additions:
2117
2118  - message-fg and message-bg session options to control status line message
2119    colours;
2120  - mode-fg and mode-bg window options to set colours in window modes such as
2121    copy mode.
2122
2123  The options code still a mess and now there is twice as much of it :-(.
2124
212502 December 2008
2126
2127* Add support for including the window title in status-left or status-right
2128  strings by including the character pair "#T". This may be prefixed with
2129  a number to specify a maximum length, for example "#24T" to use at most
2130  24 characters of the title.
2131* Introduce two new options, status-left-length and status-right-length,
2132  control the maximum length of left and right components of the status bar.
2133* elinks (and possibly others) bypass the terminal and talk directly to X to
2134  restore the window title when exiting. tmux can't know about this particular
2135  bit of stupidity so the title ends up strange - the prefix isn't terribly
2136  important and elinks is quite useful so just get rid of it.
2137
213827 November 2008
2139
2140* Tweaks to support Dragonfly.
2141
214217 November 2008
2143
2144* tmux 0.5 released.
2145
214616 November 2008
2147
2148* New window option: "utf8"; this must be on (it is off by default) for UTF-8
2149  to be parsed. The global/session option "utf8-default" controls the setting
2150  for new windows.
2151
2152  This means that by default tmux does not handle UTF-8. To use UTF-8 by
2153  default it is necessary to a) "set utf8-default on" in .tmux.conf b) start
2154  tmux with -u on any terminal which support UTF-8.
2155
2156  It seems a bit unnecessary for this to be a per-window option but that is
2157  the easiest way to do it, and it can't do any harm...
2158* Enable default colours if op contains \033[39;49m, based on a report from
2159  fulvio ciriaco.
2160
216112 November 2008
2162
2163* Keep stack of last windows rather than just most recent; based on a diff from
2164  joshe.
2165
216604 November 2008
2167
2168* Don't try to redraw status line when showing a prompt or message; if it does,
2169  the status timer is never reset so it redraws on every loop. Spotted by
2170  joshe.
2171
217209 October 2008
2173
2174* Translate 256 colours into 16 if 256 is not available, same as screen does.
2175* Better support for OSC command (only to set window title now), and also
2176  support using APC for the same purpose (some Linux default shell profiles do
2177  this).
2178
217925 September 2008
2180
2181* Large internal rewrite to better support 256 colours and UTF-8. Screen data
2182  is now stored as single two-way array of structures rather than as multiple
2183  separate arrays. Also simplified a lot of code.
2184
2185  Only external changes are three new flags, -2, -d and -u, which force tmux to
2186  assume the terminal supports 256 colours, default colours (useful for
2187  xterm-256color which lacks the AX flag), or UTF-8 respectively.
2188
218910 September 2008
2190
2191* Split off colour conversion code from screen code.
2192
219309 September 2008
2194
2195* Initial UTF-8 support. A bit ugly and with a limit of 4096 UTF-8
2196  characters per window.
2197
219808 September 2008
2199
2200* 256 colour support. tmux attempts to autodetect the terminal by looking
2201  both at what ncurses reports (usually wrong for xterm) and checking if
2202  the TERM contains "256col". For xterm TERM=xterm-256color is needed (as
2203  well as a build that support 256 colours); this seems to work for rxvt
2204  as well. On non-256 colour terminals, high colours are translated to white
2205  foreground and black background.
2206
220728 August 2008
2208
2209* Support OS X/Darwin thanks to bsd-poll.c from OpenSSH. Also convert
2210  from clock_gettime(2) to gettimeofday(2) as OS X doesn't support the
2211  former; microsecond accuracy will have to be sufficient ;-).
2212
221307 August 2008
2214
2215* Lose some unused/useless wrapper functions.
2216
221725 July 2008
2218
2219* Shell variables may now be defined and used in configuration file. Define
2220  variables with:
2221
2222	VAR=1
2223
2224  And use with:
2225
2226        renamew ${VAR}
2227	renamew "x${VAR}x"
2228
2229 Also some other fixes to make, for example, "abc""abc" work similarly to
2230 the shell.
2231
223224 July 2008
2233
2234* Finally lose inconsistently-used SCREEN_DEF* defines.
2235* If cursor mode is on, switch the arrow keys from \033[A to \033OA.
2236* Support the numeric keypad in both application and numbers mode. This is
2237  different from screen which always keeps it in application mode.
2238
223919 July 2008
2240
2241* Unbreak "set status" - tmux thought it was ambiguous, reported by rivo nurges.
2242
224302 July 2008
2244
2245* Split vi and emacs mode keys into two tables and add an option (mode-keys)
2246  to select between them. Default is emacs, use,
2247
2248     tmux set mode-keys vi
2249
2250  to change to vi.
2251
2252  vi mode uses space to start selection, enter to copy selection and escape
2253  to clear selection.
2254
225501 July 2008
2256
2257* Protocol versioning. Clients which identify as a different version from the
2258  server will be rejected.
2259* tmux 0.4 released.
2260
226129 June 2008
2262
2263* Zombie windows. These are not closed when the child process dies. May be
2264  set for a window with the new "remain-on-exit" option; the default setting
2265  of this flag for new windows may be set with the "remain-by-default" session
2266  option.
2267
2268  A window may be restarted with the respawn-window command:
2269
2270  	respawn-window [-k] [command]
2271
2272  If -k is given, any existing process running in the window is killed;
2273  if command is omitted, the same command as when the window was first
2274  created is used.
2275
227627 June 2008
2277
2278* Handle nonexistent session or client to -t properly.
2279
228025 June 2008
2281
2282* select-prompt command to allow a window to be selected at a prompt. Only
2283  windows in the current session may be selected. Bound to ' by default.
2284  Suggested by merdely.
2285* move-window command. Requested by merdely.
2286* Support binding alt keys (prefixed with M-). Change default to use
2287  C- for ctrl keys (^ is still accepted as an alternative).
2288* Slim down default key bindings: support lowercase only.
2289* Handle escaped keys properly (parse eg \033b into a single key code) and
2290  use this to change copy mode next/previous work to M-f and M-b to match
2291  emacs.
2292
229324 June 2008
2294
2295* Next word (C-n/w) and previous word (C-b/b) in copy mode.
2296
229723 June 2008
2298
2299* list-commands command (alias lscm).
2300* Split information about options into a table and use it to parse options
2301  on input (allowing abbreviations) and to print them with show-options
2302  (meaning that bell-action gets a proper string). This turned out a bit ugly
2303  though :-/.
2304
230522 June 2008
2306
2307* Do not translate black and white into default if the terminal supports
2308  default colours. This was nice to force programs which didn't use default
2309  colours to be properly transparent in rxvt/aterm windows with a background
2310  image, but it causes trouble if someone redefines the default foreground and
2311  background (to have black on white or something).
2312
231321 June 2008
2314
2315* Naive tab completion in the command prompt. This only completes command
2316  names if a) they are at the start of the text b) the cursor is at
2317  the end of the text c) the text contains no spaces.
2318* Only attempt to set the title where TERM looks like an xterm (contains
2319  "xterm", "rxvt" or is "screen"). I hate this but I don't see a better way:
2320  setting the title actually kills some other terminals pretty much dead.
2321* Strip padding out of terminfo(5) strings. Currently the padding is just
2322  ignored, this may need to be altered if there are any software terminals
2323  out there that actually need it.
2324
232520 June 2008
2326
2327* buffer-limit option to set maximum size of buffer stack. Default is 9.
2328* Initial buffer improvements. Each session has a stack of buffers and each
2329  buffer command takes a -b option to manipulate items on the stack. If -b
2330  is omitted, the top entry is used. The following commands are currently
2331  available:
2332
2333	set-buffer [-b index] [-t target-session] string
2334	paste-buffer [-d] [-b index] [-t target-window]
2335	delete-buffer [-b index] [-t target-session]
2336	show-buffers [-t target-session]
2337	show-buffer [-b index] [-t target-session]
2338
2339  -d to paste-buffer deletes the buffer after pasting it.
2340* New option, display-time, sets the time status line messages stay on screen
2341  (unless a key is pressed). Set in milliseconds, default is 750 (0.75 seconds).
2342  The timer is only checked every 100 ms or so.
2343
234419 June 2008
2345
2346* Use "status" consistently for status line option, and prefix for "prefix" key
2347  option.
2348* Allow commands to be entered at a prompt. This is triggered with the
2349  command-prompt command, bound to : by default.
2350* Show status messages properly, without blocking the server.
2351
235218 June 2008
2353
2354* New option, set-titles. On by default, this attempts to set the window title
2355  using the \e]2;...\007 xterm code.
2356
2357  Note that elinks requires the STY environment variable (used by screen) to be
2358  set before it will set the window title. So, if you want window titles set by
2359  elinks, set STY before running it (any value will do). I can't do this for all
2360  windows since setting it to an invalid value breaks screen.
2361* Show arrows at either end of status line when scrolled if more windows
2362  exist. Highlight the arrow if a hidden window has activity or bell.
2363* Scroll the status line to show the current window if necessary. Also handle
2364  windows smaller than needed better (show a blank status line instead of
2365  hanging or crashing).
2366
236717 June 2008
2368
2369* tmux 0.3 released.
2370
237116 June 2008
2372
2373* Add some information messages when window options are changed, suggested by
2374  Mike Erdely. Also add a -q command-line option to suppress them.
2375* show-window-options (showw) command.
2376
237715 June 2008
2378
2379* show-options (show) command to show one or all options.
2380
238114 June 2008
2382
2383* New window options: force-width and force-height. This will force a window
2384  to an arbitrary width and height (0 for the default unlimited). This is
2385  neat for emacs which doesn't have a sensible way to force hard wrapping at 80
2386  columns. Also, don't try to be clever and use clr_eol when redrawing the
2387  whole screen, it causes trouble since the redraw functions are used to draw
2388  the blank areas too.
2389* Clear the blank area below windows properly when they are smaller than client,
2390  also add an indicator line to show the vertical limit.
2391* Don't die on empty strings in config file, reported by Will Maier.
2392
239308 June 2008
2394
2395* Set socket mode +x if any sessions are attached and -x if not.
2396
239707 June 2008
2398
2399* Make status-interval actually changeable.
2400
240106 June 2008
2402
2403* New window option: aggressive-resize. Normally, windows are resized to the
2404  size of the smallest attached session to which they are linked. This means a
2405  window only changes size when sessions are detached or attached, or they are
2406  linked or unlinked from a session. This flag changes a window to be the size
2407  of the smallest attached session for which it is the current window - it is
2408  resized every time a session changes to it or away from it. This is nice for
2409  things that handle SIGWINCH well (like irssi) and bad for things like shells.
2410* The server now exits when no sessions remain.
2411* Fix bug with inserting characters with TERM=xterm-color.
2412
241305 June 2008
2414
2415* Completely reorganise command parsing. Much more common code in cmd-generic.c
2416  and a new way of specifying windows, clients or sessions. Now, most commands
2417  take a -t argument, which specifies a client, a session, or a window target.
2418  Clients and sessions are given alone (sessions are fnmatch(3)d and
2419  clients currently not), windows are give by (client|session):index. For
2420  example, if a user is in session "1" window 0 on /dev/ttypi, these should all
2421  be equivalent:
2422
2423	tmux renamew newname			(current session and window)
2424	tmux renamew -t: newname		(current session and window)
2425	tmux renamew -t:0 newname		(current session, window 0)
2426	tmux renamew -t0 newname		(current session, window 0)
2427	tmux renamew -t1:0 newname		(session 1, window 0)
2428	tmux renamew -t1: newname		(session 1's current window)
2429	tmux renamew -t/dev/ttypi newname	(client /dev/ttypi's current
2430						 session and window)
2431	tmux renamew -t/dev/ttypi: newname	(client /dev/ttypi's current
2432						 session and window)
2433	tmux renamew -t/dev/ttypi:0 newname	(client /dev/ttypi's current
2434						 session, window 0)
2435
2436  This does have some downsides, for example, having to use -t on selectw,
2437
2438	tmux selectw -t7
2439
2440  is annoying. But then using non-flagged arguments would mean renaming the
2441  current window would need to be something like:
2442
2443	tmux renamew : newname
2444
2445  It might be better not to try and be so consistent; comments to the usual
2446  address ;-).
2447* Infrastructure for printing arguments in list-keys output. Easy ones only for
2448  now.
2449
245004 June 2008
2451
2452* Add some vi(1) key bindings in copy mode, and support binding ^[, ^\, ^]
2453  ^^ and ^_. Both from/prompted by Will Maier.
2454* setw monitor-activity and set status without arguments now toggle the current
2455  value; suggested by merdely.
2456* New command set-window-option (alias setw) to set the single current window
2457  option: monitor-activity to determine whether window activity is shown in
2458  the status bar for that window (default off).
2459* Change so active/bell windows are inverted in status line.
2460* Activity monitoring - window with activity are marked in status line. No
2461  way to disable this/filter windows yet.
2462* Brought select-window command into line with everything else; it now uses
2463  -i for the window index.
2464* Strings to display on the left and right of the status bar may now be set
2465  with the status-left and status-right options. These are passed through
2466  strftime(3) before being displayed. The status bar is automatically updated
2467  at an interval set by the status-interval option. The default is to display
2468  nothing on the left and the date and time on the left; the default update
2469  interval is 15 seconds.
2470
247103 June 2008
2472
2473* Per session options. Setting options without specifying a session sets the
2474  global options as normal (global options are inherited by all sessions);
2475  passing -c or -s will set the option only for that session.
2476* Because a client has a session attached, any command needing a session can
2477  take a client and use its session. So, anything that used to accept -s now
2478  accepts -c as well.
2479* -s to specify session name now supports fnmatch(3) wildcards; if multiple
2480  sessions are found, or if no -s is specified, the most newly created is used.
2481* If no command is specified, assume new-session. As a byproduct, clean up
2482  command default values into separate init functions.
2483* kill-server command.
2484
248502 June 2008
2486
2487* New command, start-server (alias "start"), to start the tmux server and do
2488  nothing else. This is good if you have a configuration file which creates
2489  windows or sessions (like me): in that case, starting the server the first
2490  time tmux new is run is bad since it creates a new session and window (as
2491  it is supposed to - starting the server is a side-effect).
2492
2493  Instead, I have a little script which does the equivalent of:
2494
2495  	tmux has -s0 2>/dev/null || tmux start
2496  	tmux attach -d -s0
2497
2498  And I use it to start the server if necessary and attach to my primary
2499  session.
2500* Basic configuration file in ~/.tmux.conf or specified with -f. This is file
2501  contains a set of tmux commands that are run the first time the server is
2502  started. The configuration commands are executed before any others, so
2503  if you have a configuration file that contains:
2504
2505	new -d
2506	neww -s0
2507
2508  And you do the following without an existing server running:
2509
2510	tmux new
2511
2512  You will end up with two sessions, session 0 with two windows (created by
2513  the configuration file) and your client attached to session 1 with one
2514  window (created by the command-line command). I'm not completely happy with
2515  this, it seems a little non-obvious, but I haven't yet decided what to do
2516  about it.
2517
2518  There is no environment variable handling or other special stuff yet.
2519
2520  In the future, it might be nice to be able to have per-session configuration
2521  settings, probably by having conditionals in the file (so you could, for
2522  example, have commands to define a particular window layout that would only
2523  be invoked if you called tmux new -smysession and mysession did not already
2524  exist).
2525* BIG CHANGE: -s and -c to specify session name and client name are now passed
2526  after the command rather than before it. So, for example:
2527
2528	tmux -s0 neww
2529
2530  Becomes:
2531
2532	tmux neww -s0
2533
2534  This is to allow them to be used in the (forthcoming) configuration file
2535  THIS WILL BREAK ANY CURRENT SCRIPTS OR ALIASES USING -s OR -c.
2536
253701 June 2008
2538
2539* Bug fix: don't die if -k passed to link-window and the destination doesn't
2540  exist.
2541* New command, send-keys, will send a set of keys to a window.
2542
254331 May 2008
2544
2545* Fix so tmux doesn't hang if the initial window fails for some reason. This
2546  was highlighted by problems on Darwin, thanks to Elias Pipping for the report
2547  and access to a test account. (tmux still won't work on Darwin since its
2548  poll(2) is broken.)
2549
255002 January 2008
2551
2552* Don't attempt to reset the tty on exit if it has been closed externally.
2553
255406 December 2007
2555
2556* Restore checks for required termcap entries and add a few more obvious
2557  emulations.
2558* Another major reorganisation, this time of screen handling. A new set of
2559  functions, screen_write_*, are now used to write to a screen and a tty
2560  simultaneously. These are used by the input parser to update the base
2561  window screen and also by the different modes which now interpose their own
2562  screen.
2563
256430 November 2007
2565
2566* Support \ek...\e\ to set window name.
2567
256827 November 2007
2569
2570* Enable/disable mouse when asked, if terminal claims to support it. Mouse
2571  sequences are just passed through unaltered for the moment.
2572* Big internal reorganisation. Rather than leaving control of the tty solely in
2573  the client and piping all data through a socket to it, change so that the
2574  server opens the tty again and reads and writes to it directly. This avoids
2575  a lot of buffering and copying. Also reorganise the redrawing stuff so that
2576  everything goes through screen_draw_* - this makes the code simpler, but
2577  still needs broken up more, and all the ways of writing to screens should be
2578  more consistent.
2579
258026 November 2007
2581
2582* Rather than shifting up one line at a time once the history is full,
2583  shift by 10% of the history each time. This is faster.
2584* Add ^A and ^E to copy mode to move to start-of-line/end-of-line.
2585
258624 November 2007
2587
2588* Support for alt charset mode (VT100 graphics characters).
2589
259023 November 2007
2591
2592* Mostly complete copy & paste. Copy mode entered with C-b [ (copy-mode
2593  command). In copy mode, arrow keys/page up/page down/hjkl/C-u/C-f navigate,
2594  space or C-space starts selection, and enter or C-w copies and (important!)
2595  exits copy mode. C-b ] (paste-buffer) pastes into current window. No
2596  extra utility keys (bol/eol/clear selection/etc), only one single buffer,
2597  and no buffer manipulation commands (clear/view/etc) yet. The code is also
2598  fugly :-(.
2599* history-limit option to set maximum history. Does not apply retroactively to
2600  existing windows! Lines take up a variable amount of space, but a reasonable
2601  guess for an 80-column terminal is 250 KB per 1000 lines (of history used,
2602  an empty history takes no space).
2603
260421 November 2007
2605
2606* Create every line as zero length and only expand it as data is written,
2607  rather than creating at full size immediately.
2608* Make command output (eg list-keys) go to a scrollable window similar to
2609  scroll mode.
2610* Redo screen redrawing so it is a) readable b) split into utility functions
2611  that can be used outside screen.c. Use these to make scroll mode only
2612  redraw what it has to which gets rid of irritating flickering status box and
2613  makes it much faster.
2614* Full line width memory and horizontal scrolling in history.
2615* Initial support for scroll history. = to enter scrolling mode, and then
2616  vi keys or up/down/pgup/pgdown to navigate. Q to exit. No horizontal history
2617  yet (need per-line sizes) and a few kinks to be worked out (resizing while in
2618  history mode will probably cause trouble).
2619
262020 November 2007
2621
2622* Fix format string error with "must specify a client" message. Also
2623  sprinkle some printflike tags.
2624* tmux 0.1 released.
2625
262617 November 2007
2627
2628* (nicm) Add -k option to link-window to kill target window if it exists.
2629
263016 November 2007
2631
2632* (nicm) Split in-client display into two columns. This is a hack but not a lot
2633  more so than that bit is already and it helps with lots of keys.
2634* (nicm) switch-client command to switch client between different sessions. This
2635  is pretty cool:
2636
2637	$ tmux bind q switch 0
2638	$ tmux bind w switch 1
2639
2640  Then you can switch between sessions 0 and 1 with a key :-).
2641* (nicm) Accept "-c client-tty" on command line to allow client manipulation
2642  commands, and change detach-/refresh-session to detach-/refresh-client (this
2643  loses the -a behaviour, but at some point -session versions may return, and
2644  -c will allow fnmatch(3)).
2645* (nicm) List available commands on ambiguous command.
2646
264712 November 2007
2648
2649* (nicm) If the terminal supports default colours (AX present), force black
2650  background and white foreground to default. This is useful on transparent
2651  *terms for programs which don't do it themselves (like most(1)).
2652* (nicm) Fill in the rest of the man page.
2653* (nicm) kill-session command.
2654
265509 November 2007
2656
2657* (nicm) C-space is now "^ " not "^@".
2658* (nicm) Support tab (\011).
2659* (nicm) Initial man page outline.
2660* (nicm) -V to show version.
2661* (nicm) rename-session command.
2662
266308 November 2007
2664
2665* (nicm) Check for required terminal capabilities on start.
2666
266731 October 2007
2668
2669* (nicm) Linux port.
2670
267130 October 2007
2672
2673* (nicm) swap-window command. Same as link-window but swaps windows.
2674
267526 October 2007
2676
2677* (nicm) Saving scroll region on \e7 causes problems with ncmpc so I guess
2678  it is not required.
2679* (nicm) unlink-window command.
2680* (nicm) link-window command to link an existing window into another session
2681  (or another index in the same session). Syntax:
2682
2683	tmux -s dstname link-window [-i dstidx] srcname srcidx
2684
2685* (nicm) Redo window data structures. The global array remains, but each per-
2686  session list is now a RB tree of winlink structures. This disassociates the
2687  window index from the array size (allowing arbitrary indexes) which still
2688  allowing windows to have multiple indexes.
2689
269025 October 2007
2691
2692* (nicm) has-session command: checks if session exists.
2693
269424 October 2007
2695
2696* (nicm) Support for \e6n to request cursor position. resize(1) now works.
2697* (nicm) Support for \e7, \e8 save/restore cursor and attribute sequences.
2698  Currently don't save mode (probably should). Also change some cases where
2699  out-of-bound values are ignored to limit them to within range (there are
2700  others than need to be checked too).
2701
270223 October 2007
2703
2704* (nicm) Lift limit on session name passed with -s.
2705* (nicm) Show size in session/window lists.
2706* (nicm) Pass tty up to server when client identifies and add a list-clients
2707  command to list connected clients.
2708
270920 October 2007
2710
2711* (nicm) Add default-command option and change default to be $SHELL rather than
2712  $SHELL -l. Also try to read shell from passwd db if $SHELL isn't present.
2713
271419 October 2007
2715
2716* (nicm) -n on new-session is now -s, and -n is now the initial window name.
2717  This was documented but not implemented :-/.
2718* (nicm) kill-window command, bound to & by default (because it should be hard
2719  to hit accidently).
2720* (nicm) bell-style option with three choices: "none" completely ignore bell;
2721  "any" pass through a bell in any window to current; "current" ignore bells
2722  except in current window. This applies only to the bell terminal signal,
2723  the status bar always reflects any bells.
2724* (nicm) Refresh session command.
2725
272612 October 2007
2727
2728* (nicm) Add a warning if $TMUX exists on new/attach.
2729* (nicm) send-prefix command. Bound to C-b by default.
2730* (nicm) set status, status-fg, status-bg commands. fg and bg are as a number
2731  from 0 to 8 or a string ("red", "blue", etc). status may be 1/0, on/off,
2732  yes/no.
2733* (nicm) Make status line mark window in yellow on bell.
2734
273504 October 2007
2736
2737* (nicm) -d option to attach to detach all other clients on the same session.
2738* (nicm) Partial resizing support. Still buggy. A C-b S and back sometimes fixes
2739  it when it goes wonky.
2740* (mxey) Added my tmux start script as an example (examples/start-tmux.sh).
2741* (mxey) New sessions can now be given a command for their first window.
2742* (mxey) Fixed usage statement for new-window.
2743* (nicm) attach-session (can't believe I forgot it until now!) and list-windows
2744  commands.
2745* (nicm) rename-window and select-window commands.
2746* (nicm) set-option command (alias set): "tmux set-option prefix ^A".
2747* (nicm) Key binding and unbinding is back.
2748
274903 October 2007
2750
2751* (nicm) {new,next,last,previous}-window.
2752* (nicm) Rewrite command handling so commands are much more generic and the
2753  same commands are used for command line and keys (although most will probably
2754  need to check how they are called). Currently incomplete (only new/detach/ls
2755  implemented). Change: -s is now passed before command again!
2756* (nicm) String number arguments. So you can do: tmux bind ^Q create "blah".
2757* (nicm) Key binding. tmux bind key command [argument] and tmux unbind key.
2758  Key names are in a table in key-string.c, plus A is A, ^A is ctrl-A.
2759  Possible commands are in cmd.c (look at cmd_bind_table).
2760* (nicm) Move command parsing into the client. Also rename some messages and
2761  tidy up a few bits. Lots more tidying up needed :-/.
2762
276302 October 2007
2764
2765* (nicm) Redraw client status lines on rename.
2766* (nicm) Error on ambiguous command.
2767
276801 October 2007
2769
2770* (nicm) Restore window title handling.
2771* (nicm) Simple uncustomisable status line with window list.
2772
277330 September 2007
2774
2775* (nicm) Window info command for debugging, C-b I.
2776
277729 September 2007
2778
2779* (nicm) Deleting/inserting lines should follow scrolling region. Fix.
2780* (nicm) Allow creation of detached sessions: "tmux new-session -d".
2781* (nicm) Permit error messages to be passed back for transient clients like
2782  rename. Also make rename -i work.
2783* (nicm) Pass through bell in any window to current.
2784
278528 September 2007
2786
2787* (nicm) Major rewrite of input parser:
2788	- Lose the old weirdness in favour of a state machine.
2789	- Merge in parsing from screen.c.
2790	- Split key parsing off into a separate file.
2791  This is step one towards hopefully allowing a status line. It requires
2792  that we output data as if the terminal had one line less than it really does -
2793  a serious problem when it comes to things like scrolling. This change
2794  consolidates all the range checking and limiting together which should make
2795  it easier.
2796* (mxey) Added window renaming, like "tmux rename [-s session] [-i index] name"
2797
279827 September 2007
2799
2800* Split "tmux list" into "tmux list-sessions" (ls) and "list-windows" (lsw).
2801* New command session selection:
2802	- if name is specified, look for it and use it if it exists, otherwise
2803	  error
2804	- if no name specified, try the current session from $TMUX
2805	- if $TMUX doesn't exist, and there is only one session, use it,
2806	  otherwise error
2807
280826 September 2007
2809
2810* Add command aliases, so "ls" is an alias for "list".
2811* Rename some commands and alter syntax to take options after a la CVS. Also
2812  change some flags. So:
2813
2814	tmux -s/socket -nabc new
2815
2816  Becomes:
2817
2818	tmux -S/socket new -sabc
2819
2820* Major tidy and split of client/server code.
2821
282222 September 2007
2823
2824* Window list command (C-b W). Started by Maximilian Gass, finished by me.
2825
282620 September 2007
2827
2828* Specify meta via environment variable (META).
2829* Record last window and ^L key to switch to it. Largely from Maximilian Gass.
2830* Reset ignored signals in child after forkpty, makes ^C work.
2831* Wrap on next/previous. From Maximilian Gass.
2832
283319 September 2007
2834
2835* Don't renumber windows on close.
2836
283728 August 2007
2838
2839* Scrolling region (\e[r) support.
2840
284127 August 2007
2842
2843* Change screen.c to work more logically and hopefully fix heap corruption.
2844
284509 July 2007
2846
2847* Initial import to CVS. Basic functions are working, albeit with a couple of
2848  showstopper memory bugs and many missing features. Detaching, reattaching,
2849  creating new sessions, listing sessions work acceptably for using with shells.
2850  Simple curses programs (top, systat, tetris) and more complicated ones (mutt,
2851  emacs) that don't require scrolling regions (ESC[r) mostly work fine
2852  (including mutt, emacs). No status bar yet and no key remapping or other
2853  customisation.
2854