diff options
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 2441 |
1 files changed, 2441 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES new file mode 100644 index 00000000..9e630b38 --- /dev/null +++ b/CHANGES @@ -0,0 +1,2441 @@ +CHANGES FROM 2.8 to master + +* ... + +CHANGES FROM 2.7 to 2.8 + +* Make display-panes block the client until a pane is chosen or it + times out. + +* Clear history on RIS like most other terminals do. + +* Add an "Any" key to run a command if a key is pressed that is not + bound in the current key table. + +* Expand formats in load-buffer and save-buffer. + +* Add a rectangle_toggle format. + +* Add set-hook -R to run a hook immediately. + +* Add README.ja. + +* Add pane focus hooks. + +* Allow any punctuation as separator for s/x/y not only /. + +* Improve resizing with the mouse (fix resizing the wrong pane in some + layouts, and allow resizing multiple panes at the same time). + +* Allow , and } to be escaped in formats as #, and #}. + +* Add KRB5CCNAME to update-environment. + +* Change meaning of -c to display-message so the client is used if it + matches the session given to -t. + +* Fixes to : form of SGR. + +* Add x and X to choose-tree to kill sessions, windows or panes. + +CHANGES FROM 2.6 TO 2.7 + +* Remove EVENT_* variables from environment on platforms where tmux uses them + so they do not pass on to panes. + +* Fixes for hooks at server exit. + +* Remove SGR 10 (was equivalent to SGR 0 but no other terminal seems to do + this). + +* Expand formats in window and session names. + +* Add -Z flag to choose-tree, choose-client, choose-buffer to automatically + zoom the pane when the mode is entered and unzoom when it exits, assuming the + pane is not already zoomed. This is now part of the default key bindings. + +* Add C-g to exit modes with emacs keys. + +* Add exit-empty option to exit server if no sessions (defaults to on). + +* Show if a filter is present in choose modes. + +* Add pipe-pane -I to to connect stdin of the child process. + +* Performance improvements for reflow. + +* Use RGB terminfo(5) capability to detect RGB colour terminals (the existing + Tc extension remains unchanged). + +* Support for ISO colon-separated SGR sequences. + +* Add select-layout -E to spread panes out evenly (bound to E key). + +* Support wide characters properly when reflowing. + +* Pass PWD to new panes as a hint to shells, as well as calling chdir(). + +* Performance improvements for the various choose modes. + +* Only show first member of session groups in tree mode (-G flag to choose-tree + to show all). + +* Support %else in config files to match %if; from Brad Town in GitHub issue + 1071. + +* Fix "kind" terminfo(5) capability to be S-Down not S-Up. + +* Add a box around the preview label in tree mode. + +* Show exit status and time in the remain-on-exit pane text; from Timo + Boettcher in GitHub issue 1103. + +* Correctly use pane-base-index in tree mode. + +* Change the allow-rename option default to off. + +* Support for xterm(1) title stack escape sequences (GitHub issue 1075 from + Brad Town). + +* Correctly remove padding cells to fix a UTF-8 display problem (GitHub issue + 1090). + +CHANGES FROM 2.5 TO 2.6, 05 October 2017 + +* Add select-pane -T to set pane title. + +* Fix memory leak when lines with BCE are removed from history. + +* Fix (again) the "prefer unattached" behaviour of attach-session. + +* Reorder how keys are checked to allow keys to be specified that have a + leading escape. GitHub issue 1048. + +* Support REP escape sequence (\033[b). + +* Run alert hooks based on options rather than always, and allow further bells + even if there is an existing bell. + +* Add -d flag to display-panes to override display-panes-time. + +* Add selection_present format when in copy mode (allows key bindings that do + something different if there is a selection). + +* Add pane_at_left, pane_at_right, pane_at_top and pane_at_bottom formats. + +* Make bell, activity and silence alerting more consistent by: removing the + bell-on-alert option; adding activity-action and silence-action options with + the same possible values as the existing bell-action; adding a "both" value + for the visual-bell, visual-activity and visual-silence options to trigger + both a bell and a message. + +* Add a pane_pipe format to show if pipe-pane is active. + +* Block signals between forking and resetting signal handlers so that the + libevent signal handler doesn't get called in the child and incorrectly write + into the signal pipe that it still shares with the parent. GitHub issue 1001. + +* Allow punctuation in pane_current_command. + +* Add -c for respawn-pane and respawn-window. + +* Wait for any remaining data to flush when a pane is closed while pipe-pane is + in use. + +* Fix working out current client with no target. GitHub issue 995. + +* Try to fallback to C.UTF-8 as well as en_US.UTF-8 when looking for a UTF-8 + locale. + +* Add user-keys option for user-defined key escape sequences (mapped to User0 + to User999 keys). + +* Add pane-set-clipboard hook. + +* FAQ file has moved out of repository to online. + +* Fix problem with high CPU usage when a client dies unexpectedly. GitHub issue + 941. + +* Do a dance on OS X 10.10 and above to return tmux to the user namespace, + allowing access to the clipboard. + +* Do not allow escape sequences which expect a specific terminator (APC, DSC, + OSC) to wait for forever - use a small timeout. This reduces the chance of + the pane locking up completely when sent garbage (cat /dev/random or + similar). + +* Support SIGUSR2 to toggle logging on a running server, also generate the + "out" log file with -vv not -vvvv. + +* Make set-clipboard a three state option: on (tmux both sends to outside + terminal and accepts from applications inside); external (tmux sends outside + but does not accept inside); and off. + +* Fix OSC 4 palette setting for bright foreground colours. GitHub issue 954. + +* Use setrgbf and setrgbb terminfo(5) capabilities to set RGB colours, if they + are available. (Tc is still supported as well.) + +* Fix redrawing panes when they are resized several times but end up with the + size unchanged (for example, splitw/resizep -Z/breakp). + +* Major rewrite of choose mode. Now includes preview, sorting, searching and + tagging; commands that can be executed directly from the mode (for example, + to delete one or more buffers); and filtering in tree mode. + +* choose-window and choose-session are now aliases of choose-tree (in the + command-alias option). + +* Support OSC 10 and OSC 11 to set foreground and background colours. + +* Check the U8 capability to determine whether to use UTF-8 line drawing + characters for ACS. + +* Some missing notifications for layout changes. + +* Control mode clients now do not affect session sizes until they issue + refresh-client -C. new-session -x and -y works with control clients even if + the session is not detached. + +* All new sessions that are unattached (whether with -d or started with no + terminal) are now created with size 80 x 24. Whether the status line is on or + off does not affect the size of new sessions until they are attached. + +* Expand formats in option names and add -F flag to expand them in option values. + +* Remember the search string for a pane even if copy mode is exited and entered + again. + +* Some further BCE fixes (scroll up, reverse index). + +* Improvements to how terminals are cleared (entirely or partially). + +CHANGES FROM 2.4 TO 2.5, 09 May 2017 + +* Reset updated flag when restarting #() command so that new output is properly + recognised. GitHub issue 922. + +* Fix ECH with a background colour. + +* Do not rely on the terminal not moving the cursor after DL or EL. + +* Fix send-keys and send-prefix in copy-mode (so C-b C-b works). GitHub issue + 905. + +* Set the current pane for rotate-window so it works in command sequences. + +* Add pane_mode format. + +* Differentiate M-Up from Escape+Up when possible (that is, in terminals with + xterm(1) style function keys). GitHub issue 907. + +* Add session_stack and window_stack_index formats. + +* Some new control mode notifications and corresponding hooks: + pane-mode-changed, window-pane-changed, client-session-changed, + session-window-changed. + +* Format pane_search_string for last search term while in copy mode (useful + with command-prompt -I). + +* Fix a problem with high CPU usage and multiple clients with #(). GitHub issue + 889. + +* Fix UTF-8 combining characters in column 0. + +* Fix reference counting so that panes are properly destroyed and their + processes killed. + +* Clamp SU (CSI S) parameter to work around a bug in Konsole. + +* Tweak line wrapping in full width panes to play more nicely with terminal + copy and paste. + +* Fix when we emit SGR 0 in capture-pane -e. + +* Do not change TERM until after config file parsing has finished, so that + commands run inside the config file can use it to make decisions (typically + about default-terminal). + +* Make the initial client wait until config file parsing has finished to avoid + racing with commands. + +* Fix core when if-shell fails. + +* Only use ED to clear screen if the pane is at the bottom. + +* Fix multibyte UTF-8 output. + +* Code improvements around target (-t) resolution. + +* Change how the default target (for commands without -t) is managed across + command sequences: now it is set up at the start and commands are required + to update it if needed. Fixes binding command sequences to mouse keys. + +* Make if-shell from the config file work correctly. + +* Change to always check the root key table if no binding is found in the + current table (prefix table or copy-mode table or whatever). This means that + root key bindings will take effect even in copy mode, if not overridden by a + copy mode key binding. + +* Fix so that the history file works again. + +* Run config file without a client rather than using the first client, restores + previous behaviour. + +* If a #() command doesn't exit, continue to read from it and use its last full + line of output. + +* Handle slow terminals and fast output better: when the amount of data + outstanding gets too large, discard output until it is drained and we are + able to do a full redraw. Prevents tmux sitting on a huge buffer that the + terminal will take forever to consume. + +* Do not redraw a client unless we realistically think it can accept the data - + defer redraws until the client has nothing else waiting to write. + +CHANGES FROM 2.3 TO 2.4, 20 April 2017 + +Incompatible Changes +==================== + +* Key tables have undergone major changes. Mode key tables are no longer + separate from the main key tables. All mode key tables have been removed, + together with the -t flag to bind-key and unbind-key. + + The emacs-edit, vi-edit, emacs-choose and vi-choose tables have been replaced + by fixed key bindings in the command prompt and choose modes. The mode-keys + and status-keys options remain. + + The emacs-copy and vi-copy tables have been replaced by the copy-mode and + copy-mode-vi tables. Commands are sent using the -X and -N flags to + send-keys. So the following: + + bind -temacs-copy C-Up scroll-up + bind -temacs-copy -R5 WheelUpPane scroll-up + + Becomes: + + bind -Tcopy-mode C-Up send -X scroll-up + bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up + + These changes allows the full command parser (including command sequences) and + command set to be used - for example, the normal command prompt with editing + and history is now used for searching, jumping, and so on instead of a custom + one. The default C-r binding is now: + + bind -Tcopy-mode C-r command-prompt -i -p'search up' "send -X search-backward-incremental '%%'" + + There are also some new commmands available with send -X, such as + copy-pipe-and-cancel. +* set-remain-on-exit has gone -- can be achieved with hooks instead. +* Hooks: before hooks have been removed and only a selection of commands now + have after hooks (they are no longer automatic). Additional hooks have been + added. +* The xterm-keys option now defaults to on. + +Normal Changes +============== + +* Support for mouse double and triple clicks. +* BCE (Background Colour Erase) is now supported. +* All occurrences of a search string in copy mode are now highlighted; + additionally, the number of search results is displayed. The highlighting + updates interactively with the default emacs key bindings (incremental + search). +* source-file now understands glob patterns. +* Formats now have simple comparisons: + + #{==:a,b} + #{!=:a,b} + +* There are the following new formats: + + - #{version} -- the tmux server version; + - #{client_termtype} -- the terminal type of the client; + - #{client_name} -- the name of a client; + - #{client_written} -- the number of bytes written to the client. + +* The configuration file now accepts %if/%endif conditional blocks which are + processed when it is parsed; the argument is a format string (useful with the + new format comparison options). +* detach-client now has -E to execute a command replacing the client instead of + exiting. +* Add support for custom command aliases, this is an array option which + contains items of the form "alias=command". This is consulted when an + unknown command is parsed. +* break-pane now has -n to specify the new window name. +* OSC 52 support has been added for programs inside tmux to set a tmux buffer. +* The mouse "all event" mode (1003) is now supported. +* Palette setting is now possible (OSC 4 and 104). +* Strikethrough support (a recent terminfo is required). +* Grouped sessions can now be named (new -t). +* terminal-overrides and update-environment are now array options (the previous + set -ag syntax should work without change). +* There have been substantial performance improvements. + +CHANGES FROM 2.2 TO 2.3, 29 September 2016 + +Incompatible Changes +==================== + +None. + +Normal Changes +============== + +* New option 'pane-border-status' to add text in the pane borders. +* Support for hooks on commands: 'after' and 'before' hooks. +* 'source-file' understands '-q' to suppress errors for nonexistent files. +* Lots of UTF8 improvements, especially on MacOS. +* 'window-status-separator' understands #[] expansions. +* 'split-window' understands '-f' for performing a full-width split. +* Allow report count to be specified when using 'bind-key -R'. +* 'set -a' for appending to user options (@foo) is now supported. +* 'display-panes' can now accept a command to run, rather than always + selecting the pane. + +CHANGES FROM 2.1 TO 2.2, 10 April 2016 + +Incompatible Changes +==================== + +* The format strings which referenced time have been removed. Instead: + + #{t:window_activity} + +can be used. + +* Support for TMPDIR has been removed. Use TMUX_TMPDIR instead. +* UTF8 detection now happens automatically if the client supports it, hence + the: + + mouse-utf8 + utf8 + + options has been removed. +* The: + + mouse_utf8_flag + + format string has been removed. +* The -I option to show-messages has been removed. See: + + #{t:start_time} + + format option instead. + +Normal Changes +============== + +* Panes are unzoomed with selectp -LRUD +* New formats added: + + #{scroll_position} + #{socket_path} + #{=10:...} -- limit to N characters (from the start) + #{=-10:...} -- limit to N characters (from the end) + #{t:...} -- used to format time-based formats + #{b:...} -- used to ascertain basename from string + #{d:...} -- used to ascertain dirname from string + #{s:...} -- used to perform substitutions on a string + +* Job output is run via the format system, so formats work again +* If display-time is set to 0, then the indicators wait for a key to be + pressed. +* list-keys and list-commands can be run without starting the tmux server. +* kill-session learns -C to clear all alerts in all windows of the session. +* Support for hooks (internal for now), but hooks for the following have been + implemented: + + alert-bell + alert-silence + alert-activity + client-attached + client-detached + client-resized + pane-died + pane-exited + +* RGB (24bit) colour support. The 'Tc' flag must be set in the external TERM + entry (using terminal-overrides or a custom terminfo entry). + +CHANGES FROM 2.0 TO 2.1, 18 October 2015 + +Incompatible Changes +==================== + +* Mouse-mode has been rewritten. There's now no longer options for: + - mouse-resize-pane + - mouse-select-pane + - mouse-select-window + - mode-mouse + + Instead there is just one option: 'mouse' which turns on mouse support + entirely. +* 'default-terminal' is now a session option. Furthermore, if this is set + to 'screen-*' then emulate what screen does. If italics are wanted, this + can be set to 'tmux' but this is still new and not necessarily supported + on all platforms with older ncurses installs. +* The c0-* options for rate-limiting have been removed. Instead, a backoff + approach is used. + +Normal Changes +============== + +* New formats: + - session_activity + - window_linked + - window_activity_format + - session_alerts + - session_last_attached + - client_pid + - pid +* 'copy-selection', 'append-selection', 'start-named-buffer' now understand + an '-x' flag to prevent it exiting copying mode. +* 'select-pane' now understands '-P' to set window/pane background colours. +* 'renumber-windows' now understands windows which are unlinked. +* 'bind' now understands multiple key tables. Allows for key-chaining. +* 'select-layout' understands '-o' to undo the last layout change. +* The environment is updated when switching sessions as well as attaching. +* 'select-pane' now understands '-M' for marking a pane. This marked pane + can then be used with commands which understand src-pane specifiers + automatically. +* If a session/window target is prefixed with '=' then only an exact match + is considered. +* 'move-window' understands '-a'. +* 'update-environment' understands '-E' when attach-session is used on an + already attached client. +* 'show-environment' understands '-s' to output Bourne-compatible commands. +* New option: 'history-file' to save/restore command prompt history. +* Copy mode is exited if the history is cleared whilst in copy-mode. +* 'copy-mode' learned '-e' to exit copy-mode when scrolling to end. + +CHANGES FROM 1.9a TO 2.0, 06 March 2015 + +Incompatible Changes +==================== + +* The choose-list command has been removed. +* 'terminal-overrides' is now a server option, not a session option. +* 'message-limit' is now a server option, not a session option. +* 'monitor-content' option has been removed. +* 'pane_start_path' option has been removed. +* The "info" mechanism which used to (for some commands) provide feedback + has been removed, and like other commands, they now produce nothing on + success. + +Normal Changes +============== + +* tmux can now write an entry to utmp if the library 'utempter' is present + at compile time. +* set-buffer learned append mode (-a), and a corresponding + 'append-selection' command has been added to copy-mode. +* choose-mode now has the following commands which can be bound: + - start-of-list + - end-of-list + - top-line + - bottom-line + +* choose-buffer now understands UTF-8. +* Pane navigation has changed: + - The old way of always using the top or left if the choice is ambiguous. + - The new way of remembering the last used pane is annoying if the + layout is balanced and the leftmost is obvious to the user (because + clearly if we go right from the top-left in a tiled set of four we want + to end up in top-right, even if we were last using the bottom-right). + + So instead, use a combination of both: if there is only one possible + pane alongside the current pane, move to it, otherwise choose the most + recently used of the choice. +* 'set-buffer' can now be told to give names to buffers. +* The 'new-session', 'new-window', 'split-window', and 'respawn-pane' commands + now understand multiple arguments and handle quoting problems correctly. +* 'capture-pane' understands '-S-' to mean the start of the pane, and '-E-' to + mean the end of the pane. +* Support for function keys beyond F12 has changed. The following explains: + - F13-F24 are S-F1 to S-F12 + - F25-F36 are C-F1 to C-F12 + - F37-F48 are C-S-F1 to C-S-F12 + - F49-F60 are M-F1 to M-F12 + - F61-F63 are M-S-F1 to M-S-F3 + + Therefore, F13 becomes a binding of S-F1, etc. +* Support using pane id as part of session or window specifier (so % means + session-of-%1 or window-of-%1) and window id as part of session + (so @1 means session-of-@1). +* 'copy-pipe' command now understands formats via -F +* 'if-shell' command now understands formats via -F +* 'split-window' and 'join-window' understand -b to create the pane to the left + or above the target pane. + +CHANGES FROM 1.9 TO 1.9a, 22 February 2014 + +NOTE: This is a bug-fix release to address some important bugs which just +missed the 1.9 deadline, but were found afterwards. + +Normal Changes +============== + +* Fix crash due to uninitialized lastwp member of layout_cell +* Fix -fg/-bg/-style with 256 colour terminals. + +CHANGES FROM 1.8 TO 1.9, 20 February 2014 + +NOTE: This release has bumped the tmux protocol version. It is therefore +advised that the prior tmux server is restarted when this version of tmux is +installed, to avoid protocol mismatch errors for newer clients trying to +talk to an older running tmux server. + +Incompatible Changes +==================== + +* 88 colour support has been removed. +* 'default-path' has been removed. The new-window command accepts '-c' to + cater for this. The previous value of "." can be replaced with: 'neww -c + $PWD', the previous value of '' which meant current path of the pane can + be specified as: 'neww -c "#{pane_current_path}"' + +Deprecated Changes +================== + +* The single format specifiers: #A -> #Z (where defined) have been + deprecated and replaced with longer-named equivalents, as listed in the + FORMATS section of the tmux manpage. +* The various foo-{fg,bg,attr} commands have been deprecated and replaced + with equivalent foo-style option instead. Currently this is still + backwards-compatible, but will be removed over time. + +Normal Changes +============== + +* A new environment variable TMUX_TMPDIR is now honoured, allowing the + socket directory to be set outside of TMPDIR (/tmp/ if not set). +* If -s not given to swap-pane the current pane is assumed. +* A #{pane_synchronized} format specifier has been added to be a conditional + format if a pane is in a synchronised mode (c.f. synchronize-panes) +* Tmux now runs under Cygwin natively. +* Formats can now be nested within each other and expanded accordingly. +* Added 'automatic-rename-format' option to allow the automatic rename + mechanism to use something other than the default of + #{pane_current_command}. +* new-session learnt '-c' to specify the starting directory for that session + and all subsequent windows therein. +* The session name is now shown in the message printed to the terminal when + a session is detached. +* Lots more format specifiers have been added. +* Server race conditions have been fixed; in particular commands are not run + until after the configuration file is read completely. +* Case insensitive searching in tmux's copy-mode is now possible. +* attach-session and switch-client learnt the '-t' option to accept a window + and/or a pane to use. +* Copy-mode is only exited if no selection is in progress. +* Paste key in copy-mode is now possible to enter text from the clipboard. +* status-interval set to '0' now works as intended. +* tmux now supports 256 colours running under fbterm. +* Many bug fixes! + +CHANGES FROM 1.7 TO 1.8, 26 March 2013 + +Incompatible Changes +==================== + +* layout redo/undo has been removed. + +Normal Changes +============== + +* Add halfpage up/down bindings to copy mode. +* Session choosing fixed to work with unattached sessions. +* New window options window-status-last-{attr,bg,fg} to denote the last + window which was active. +* Scrolling in copy-mode now scrolls the region without moving the mouse + cursor. +* run-shell learnt '-t' to specify the pane to use when displaying output. +* Support for middle-click pasting. +* choose-tree learns '-u' to start uncollapsed. +* select-window learnt '-T' to toggle to the last window if it's already + current. +* New session option 'assume-paste-time' for pasting text versus key-binding + actions. +* choose-* commands now work outside of an attached client. +* Aliases are now shown for list-commands command. +* Status learns about formats. +* Free-form options can be set with set-option if prepended with an '@' + sign. +* capture-pane learnt '-p' to send to stdout, and '-e' for capturing escape + sequences, and '-a' to capture the alternate screen, and '-P' to dump + pending output. +* Many new formats added (client_session, client_last_session, etc.) +* Control mode, which is a way for a client to send tmux commands. + Currently more useful to users of iterm2. +* resize-pane learnt '-x' and '-y' for absolute pane sizing. +* Config file loading now reports errors from all files which are loaded via + the 'source-file' command. +* 'copy-pipe' mode command to copy selection and pipe the selection to a + command. +* Panes can now emit focus notifications for certain applications + which use those. +* run-shell and if-shell now accept formats. +* resize-pane learnt '-Z' for zooming a pane temporarily. +* new-session learnt '-A' to make it behave like attach-session. +* set-option learnt '-o' to prevent setting an option which is already set. +* capture-pane and show-options learns '-q' to silence errors. +* New command 'wait-for' which blocks a client until woken up again. +* Resizing panes will now reflow the text inside them. +* Lots and lots of bug fixes, fixing memory-leaks, etc. +* Various manpage improvements. + +CHANGES FROM 1.6 TO 1.7, 13 October 2012 + +* tmux configuration files now support line-continuation with a "\" at the + end of a line. +* New option status-position to move the status line to the top or bottom of + the screen. +* Enforce history-limit option when clearing the screen. +* Give each window a unique id, like panes but prefixed with @. +* Add pane id to each pane in layout description (while still accepting + the old form). +* Provide defined ways to set the various default-path possibilities: ~ + for home directory, . for server start directory, - for session start + directory and empty for the pane's working directory (the default). All + can also be used as part of a relative path (eg -/foo). Also provide -c + flags to neww and splitw to override default-path setting. +* Add -l flag to send-keys to send input literally (without translating + key names). +* Allow a single option to be specified to show-options to show just that + option. +* New command "move-pane" (like join-pane but allows the same window). +* join-pane and move-pane commands learn "-b" option to place the pane to + the left or above. +* Support for bracketed-paste mode. +* Allow send-keys command to accept hex values. +* Add locking around "start-server" to avoid race-conditions. +* break-pane learns -P/-F arguments for display formatting. +* set-option learns "-q" to make it quiet, and not print out anything. +* copy mode learns "wrap-search" option. +* Add a simple form of output rate limiting by counting the number of + certain C0 sequences (linefeeds, backspaces, carriage returns) and if it + exceeds a threshold (current default 250/millisecond), start to redraw + the pane every 100 milliseconds instead of making each change as it + comes. Two configuration options - c0-change-trigger and + c0-change-interval. +* find-window learns new flags: "-C", "-N", "-T" to match against either or + all of a window's content, name, or title. Defaults to all three options + if none specified. +* find-window automatically selects the appropriate pane for the found + matches. +* show-environment can now accept one option to show that environment value. +* Exit mouse mode when end-of-screen reached when scrolling with the mouse + wheel. +* select-layout learns -u and -U for layout history stacks. +* kill-window, detach-client, kill-session all learn "-a" option for + killing all but the current thing specified. +* move-window learns "-r" option to renumber window sequentially in a + session. +* New session option "renumber-windows" to automatically renumber windows in + a session when a window is closed. (see "move-window -r"). +* Only enter copy-mode on scroll up. +* choose-* and list-* commands all use "-F" for format specifiers. +* When spawning external commands, the value from the "default-shell" option + is now used, rather than assuming /bin/sh. +* New choose-tree command to render window/sessions as a tree for selection. +* display-message learns new format options. +* For linked-windows across sessions, all flags for that window are now + cleared across sessions. +* Lots and lots of bug fixes, fixing memory-leaks, etc. +* Various manpage improvements. + +CHANGES FROM 1.5 TO 1.6, 23 January 2012 + +* Extend the mode-mouse option to add a third choice which means the mouse + does not enter copy mode. +* Add a -r flag to switch-client to toggle the client read-only flag. +* Add pane-base-index option. +* Support \ for line continuation in the configuration file. +* Framework for more powerful formatting of command output and use it for + list-{panes,windows,sessions}. This allows more descriptive replacements + (such as #{session_name}) and conditionals. +* Mark dead panes with some text saying they are dead. +* Reject $SHELL if it is not a full path. +* Add -S option to refresh-client to redraw status line. +* Add an else clause for if-shell. +* Try to resolve relative paths for loadb and saveb (first, using client + working directory, if any, then default-path or session working directory). +* Support for \e[3J to clear the history and send the corresponding + terminfo code (E3) before locking. +* When in copy mode, make repeat count indicate buffer to replace, if used. +* Add screen*:XT to terminal-overrides for tmux-in-tmux. +* Status-line message attributes added. +* Move word-separators to be a session rather than window option. +* Change the way the working directory for new processes is discovered. If + default-path isn't empty, it is used. Otherwise, if a new window is created + from the command-line, the working directory of the client is used. If not, + platform specific code is used to retrieve the current working directory + of the process in the active pane. If that fails, the directory where the + session was created is used, instead. +* Do not change the current pane if both mouse-select-{pane,window} are + enabled. +* Add \033[s and \033[u to save and restore cursor position. +* Allow $HOME to be used as default-path. +* Add CNL and CPL escape sequences. +* Calculate last position correctly for UTF-8 wide characters. +* Add an option allow-rename to disable the window rename escape sequence. +* Attributes for each type of status-line alert (ie bell, content and + activity) added. Therefore, remove the superfluous options + window-status-alert-{attr,bg,fg}. +* Add a -R flag to send-keys to reset the terminal. +* Add strings to allow the aixterm bright colours to be used when + configuring colours. +* Drop the ability to have a list of keys in the prefix in favour of two + separate options, prefix and prefix2. +* Flag -2 added to send-prefix to send the secondary prefix key. +* Show pane size in top right of display panes mode. +* Some memory leaks plugged. +* More command-prompt editing improvements. +* Various manpage improvements. +* More Vi mode improvements. + +CHANGES FROM 1.4 TO 1.5, 09 July 2011 + +* Support xterm mouse modes 1002 and 1003. +* Change from a per-session stack of buffers to one global stack. This renders + copy-buffer useless and makes buffer-limit now a server option. +* Fix most-recently-used choice by avoiding reset the activity timer for + unattached sessions every second. +* Add a -P option to new-window and split-window to print the new window or + pane index in target form (useful to pass it into other commands). +* Handle a # at the end of a replacement string (such as status-left) + correctly. +* Support for UTF-8 mouse input (\033[1005h) which was added in xterm 262. + If the new mouse-utf8 option is on, UTF-8 mouse input is enabled for all + UTF-8 terminals. The option defaults to on if LANG etc are set in the same + manner as the utf8 option. +* Support for HP-UX. +* Accept colours of the hex form #ffffff and translate to the nearest from the + xterm(1) 256-colour set. +* Clear the non-blocking IO flag (O_NONBLOCK) on the stdio file descriptors + before closing them (fixes things like "tmux ls && cat"). +* Use TMPDIR if set. +* Fix next and previous session functions to actually work. +* Support -x and -y for new-session to specify the initial size of the window + if created detached with -d. +* Make bind-key accept characters with the top-bit-set and print them as octal. +* Set $TMUX without the session when background jobs are run. +* Simplify the way jobs work and drop the persist type, so all jobs are + fire-and-forget. +* Accept tcgetattr/tcsetattr(3) failure, fixes problems with fatal() if the + terminal disappears while locked. +* Add a -P option to detach to HUP the client's parent process (usually causing + it to exit as well). +* Support passing through escape sequences to the underlying terminal by using + DCS with a "tmux;" prefix. +* Prevent tiled producing a corrupt layout when only one column is needed. +* Give each pane created in a tmux server a unique id (starting from 0), put it + in the TMUX_PANE environment variable and accept it as a target. +* Allow a start and end line to be specified for capture-pane which may be + negative to capture part of the history. +* Add -a and -s options to lsp to list all panes in the server or session + respectively. Likewise add -s to lsw. +* Change -t on display-message to be target-pane for the #[A-Z] replacements + and add -c as target-client. +* The attach-session command now prefers the most recently used unattached + session. +* Add -s option to detach-client to detach all clients attached to a session. +* Add -t to list-clients. +* Change window with mouse wheel over status line if mouse-select-window is on. +* When mode-mouse is on, automatically enter copy mode when the mouse is + dragged or the mouse wheel is used. Also exit copy mode when the mouse wheel + is scrolled off the bottom. +* Provide #h character pair for short hostname (no domain). +* Don't use strnvis(3) for the title as it breaks UTF-8. +* Use the tsl and fsl terminfo(5) capabilities to update terminal title and + automatically fill them in on terminals with the XT capability (which means + their title setting is xterm-compatible). +* Add a new option, mouse-resize-pane. When on, panes may be resized by + dragging their borders. +* Fix crash by resetting last pane on {break,swap}-pane across windows. +* Add three new copy-mode commands - select-line, copy-line, copy-end-of-line. +* Support setting the xterm clipboard when copying from copy mode using the + xterm escape sequence for the purpose (if xterm is configured to allow it). +* Support xterm(1) cursor colour change sequences through terminfo(5) Cc + (set) and Cr (reset) extensions. +* Support DECSCUSR sequence to set the cursor style with two new terminfo(5) + extensions, Cs and Csr. +* Make the command-prompt custom prompts recognize the status-left option + character pairs. +* Add a respawn-pane command. +* Add a couple of extra xterm-style keys that gnome terminal provides. +* Allow the initial context on prompts to be set with the new -I option to + command-prompt. Include the current window and session name in the prompt + when renaming and add a new key binding ($) for rename session. +* Option bell-on-alert added to trigger the terminal bell when there is an + alert. +* Change the list-keys format so that it shows the keys using actual tmux + commands which should be able to be directly copied into the config file. +* Show full targets for lsp/lsw -a. +* Make confirm-before prompt customizable with -p option like command-prompt + and add the character pairs #W and #P to the default kill-{pane,window} + prompts. +* Avoid sending data to suspended/locked clients. +* Small memory leaks in error paths plugged. +* Vi mode improvements. + +CHANGES FROM 1.3 TO 1.4, 27 December 2010 + +* Window bell reporting fixed. +* Show which pane is active in the list-panes output. +* Backoff reworked. +* Prevent the server from dying when switching into copy mode when already + in a different mode. +* Reset running jobs when the status line is enabled or disabled. +* Simplify xterm modifier detection. +* Avoid crashing in copy mode if the screen size is too small for the + indicator. +* Flags -n and -p added to switch-client. +* Use UTF-8 line drawing characters on UTF-8 terminals, thus fixing some + terminals (eg putty) which disable the vt100 ACS mode switching sequences + in UTF-8 mode. On terminals without ACS, use ASCII equivalents. +* New server option exit-unattached added. +* New session option destroy-unattached added. +* Fall back on normal session choice method if $TMUX exists but is invalid + rather than rejecting. +* Mark repeating keys with "(repeat)" in the key list. +* When removing a pane, don't change the active pane unless the active pane + is actually the one being removed. +* New command last-pane added. +* AIX fixes. +* Flag -a added to unbind-key. +* Add XAUTHORITY to update-environment. +* More info regarding window and pane flags is now shown in list-*. +* If VISUAL or EDITOR contains "vi" configure mode-keys and status-key to vi. +* New window option monitor-silence and session option visual-silence added. +* In the built-in layouts distribute the panes more evenly. +* Set the default value of main-pane-width to 80 instead of 81. +* Command-line flag -V added. +* Instead of keeping a per-client prompt history make it global. +* Fix rectangle copy to behave like emacs (the cursor is not part of the + selection on the right edge but on the left it is). +* Flag -l added to switch-client. +* Retrieve environment variables from the global environment rather than + getenv(3), thus allowing them to be updated during the configuration file. +* New window options other-pane-{height,width} added. +* More minor bugs fixed and manpage improvements. + +CHANGES FROM 1.2 TO 1.3, 18 July 2010 + +* New input parser. +* Flags to move through panes -UDLR added to select-pane. +* Commands up-pane, and down-pane removed, since equivalent behaviour is now + available through the target flag (-t:+ and -t:-). +* Jump-forward/backward in copy move (based on vi's F, and f commands). +* Make paste-buffer accept a pane as a target. +* Flag -a added to new-window to insert a window after an existing one, moving + windows up if necessary. +* Merge more mode into copy mode. +* Run job commands explicitly in the global environment (which can be modified + with setenv -g), rather than with the environment tmux started with. +* Use the machine's hostname as the default title, instead of an empty string. +* Prevent double free if the window option remain-on-exit is set. +* Key string conversions rewritten. +* Mark zombie windows as dead in the choose-window list. +* Tiled layout added. +* Signal handling reworked. +* Reset SIGCHLD after fork to fix problems with some shells. +* Select-prompt command removed. Therefore, bound ' to command-prompt -p index + "select-window -t:%%" by default. +* Catch SIGHUP and terminate if running as a client, thus avoiding clients from + being left hanging around when, for instance, a SSH session is disconnected. +* Solaris 9 fixes (such as adding compat {get,set}env(3) code). +* Accept none instead of default for attributes. +* Window options window-status-alert-{alert,bg,fg} added. +* Flag -s added to the paste-buffer command to specify a custom separator. +* Allow dragging to make a selection in copy mode if the mode-mouse option is + set. +* Support the mouse scroll wheel. +* Make pipe-pane accept special character sequences (eg #I). +* Fix problems with window sizing when starting tmux from .xinitrc. +* Give tmux sockets (but not the containing folder) group permissions. +* Extend the target flags (ie -t) to accept an offset (for example -t:+2), and + make it wrap windows, and panes. +* New command choose-buffer added. +* New server option detach-on-destroy to set what happens to a client when the + session it is attached to is destroyed. If on (default), the client is + detached. Otherwise, the client is switched to the most recently active of + the remaining sessions. +* The commands load-buffer, and save-buffer now accept a dash (-) as the file + to read from stdin, or write to stdout. +* Custom layouts added. +* Additional code reduction, bug fixes, and manpage enhancements. + +CHANGES FROM 1.1 TO 1.2, 10 March 2010 + +* Switch to libevent. +* Emulate the ri (reverse index) capability, ergo allowing tmux to at least + start on Sun consoles (TERM=sun, or sun-color). +* Assign each entry a number, or lowercase letter in choose mode, and accept + that as a shortcut key. +* Permit top-bit-set characters to be entered in the status line. +* Mark no-prefix keys with (no prefix), rather than [] in list-keys. +* New command show-messages (alias showmsgs), and new session option + message-limit, to show a per-client log of status lines messages up to the + number defined by message-limit. +* Do not interpret #() for display-message to avoid leaking commands. +* New window options window-status-format, and window-status-current-format to + control the format of each window in the status line. +* Add a -p flag to display-message to print the output, instead of displaying + it in the status line. +* Emulate il1, dl1, ich1 to run with vt100 feature set. +* New command capture-pane (alias capturep) to copy the entire pane contents + to a paste buffer. +* Avoid duplicating code by adding a -w flag to set-option, and show-options to + set, and show window options. The commands set-window-option, and + show-window-options are now aliases. +* Panes can now be referred to as top, bottom, top-left, etc. +* Add server-wide options, which can be set with set-option -s, and shown with + show-options -s. +* New server option quiet (like -q from the command line). +* New server option escape-time to set the timeout used to detect if escapes + are alone, part of a function key, or meta sequence. +* New session options pane-active-border-bg, pane-active-border-fg, + pane-border-bg, and pane-border-fg to set pane colours. +* Make split-window accept a pane target, instead of a window. +* New command join-pane (alias joinp) to split, and move an existing pane into + the space (the opposite of break-pane), thus simplifying calls to + split-window, followed by move-window. +* Permit S- prefix on keys for shift when the terminal/terminfo supports them. +* Window targets (-t flag) can now refer to the last window (!), next (+), and + previous (-) window by number. +* Mode keys to jump to the bottom/top of history, end of the next word, scroll + up/down, and reverse search in copy mode. +* New session option display-panes-active-colour to display the active pane in + a different colour with the display-panes command. +* Read the socket path from $TMUX if it's present, and -L, and -S are not + given. +* Vi-style mode keys B, W, and E to navigate between words in copy mode. +* Start in more mode when configuration file errors are detected. +* Rectangle copy support added. +* If attach-session was specified with the -r flag, make the client read-only. +* Per-window alternate-screen option. +* Make load-buffer work with FIFOs. +* New window option word-separators to set the characters considered as word + separators in copy mode. +* Permit keys in copy mode to be prefixed by a repeat count, entered with [1-9] + in vi mode, or M-[1-9] in emacs mode. +* utf8 improvements. +* As usual, additional code reduction, bug fixes, and manpage enhancements. + +CHANGES FROM 1.0 TO 1.1, 05 November 2009 + +* New run-shell (alias run) command to run an external command without a + window, capture it's stdout, and send it to output mode. +* Ability to define multiple prefix keys. +* Internal locking mechanism removed. Instead, detach each client and run the + external command specified in the new session option lock-command (by default + lock -np), thus allowing the system password to be used. +* set-password command, and -U command line flag removed per the above change. +* Add support for -c command line flag to execute a shell command. +* New lock-client (alias lockc), and lock-session (alias locks) commands to + lock a particular client, or all clients attached to a session. +* Support C-n/C-p/C-v/M-v with emacs keys in choice mode. +* Use : for goto line rather than g in vi mode. +* Try to guess which client to use when no target client was specified. Finds + the current session, and if only one client is present, use it. Otherwise, + return the most recently used client. +* Make C-Down/C-Up in copy mode scroll the screen down/up one line without + moving the cursor. +* Scroll mode superseded by copy mode. +* New synchronize-panes window option to send all input to all other panes in + the same window. +* New lock-server session option to lock, when off (on by default), each + session when it has been idle for the lock-after-time setting. When on, the + entire server locks when all sessions have been idle for their individual + lock-after-time setting. +* Add support for grouped sessions which have independent name, options, + current window, but where the linked windows are synchronized (ie creating, + killing windows are mirrored between the sessions). A grouped session may be + created by passing -t to new-session. +* New mouse-select-pane session option to select the current pane with the + mouse. +* Queue, and run commands in the background for if-shell, status-left, + status-right, and #() by starting each once every status-interval. Adds the + capability to call some programs which would previously cause the server to + hang (eg sleep/tmux). It also avoids running commands excessively (ie if used + multiple times, it will be run only once). +* When a window is zombified and automatic-rename is on, append [dead] to the + name. +* Split list-panes (alias lsp) off from list-windows. +* New pipe-pane (alias pipep) to redirect a pane output to an external command. +* Support for automatic-renames for Solaris. +* Permit attributes to be turned off in #[] by prefixing with no (eg nobright). +* Add H/M/L in vi mode, and M-R/M-r in emacs to move the cursor to the top, + middle, and bottom of the screen. +* -a option added to kill-pane to kill all except current pane. +* The -d command line flag is now gone (can be replaced by terminal-overrides). + Just use op/AX to detect default colours. +* input/tty/utf8 improvements. +* xterm-keys rewrite. +* Additional code reduction, and bug fixes. + +CHANGES FROM 0.9 TO 1.0, 20 September 2009 + +* Option to alter the format of the window title set by tmux. +* Backoff for a while after multiple incorrect password attempts. +* Quick display of pane numbers (C-b q). +* Better choose-window, choose-session commands and a new choose-client command. +* Option to request multiple responses when using command-prompt. +* Improved environment handling. +* Combine wrapped lines when pasting. +* Option to override terminal settings (terminal-overrides). +* Use the full range of ACS characters for drawing pane separator lines. +* Customisable mode keys. +* Status line colour options, with embedded colours in status-left/right, and + an option to centre the window list. +* Much improved layouts, including both horizontal and vertical splitting. +* Optional visual bell, activity and content indications. +* Set the utf8 and status-utf8 options when the server is started with -u. +* display-message command to show a message in the status line, by default some + information about the current window. +* Improved current process detection on NetBSD. +* unlink-window -k is now the same as kill-window. +* attach-session now works from inside tmux. +* A system-wide configuration file, /etc/tmux.conf. +* A number of new commands in copy mode, including searching. +* Panes are now specified using the target (-t) notation. +* -t now accepts fnmatch(3) patterns and looks for prefixes. +* Translate \r into \n when pasting. +* Support for binding commands to keys without the prefix key +* Support for alternate screen (terminfo smcup/rmcup). +* Maintain data that goes off screen after reducing the window size, so it can + be restored when the size is increased again. +* New if-shell command to test a shell command before running a tmux command. +* tmux now works as the shell. +* Man page reorganisation. +* Many minor additions, much code tidying and several bug fixes. + +CHANGES FROM 0.8 TO 0.9, 01 July 2009 + +* Major changes to build infrastructure: cleanup of makefiles and addition + of a configure script. +* monitor-content window option to monitor a window for a specific fnmatch(3) + pattern. The find-window command also now accepts fnmatch(3) patterns. +* previous-layout and select-layout commands, and a main-horizontal layout. +* Recreate the server socket on SIGUSR1. +* clear-history command. +* Use ACS line drawing characters for pane separator lines. +* UTF-8 improvements, and code to detect UTF-8 support by looking at + environment variables. +* The resize-pane-up and resize-pane-down commands are now merged together + into a new resize-pane command with -U and -D flags. +* confirm-before command to request a yes/no answer before executing dangerous + commands. +* Status line bug fixes, support for UTF-8 (status-utf8 option), and a key to + paste from the paste buffer. +* Support for some additional escape sequences and terminal features, including + better support for insert mode and tab stops. +* Improved window resizing behaviour, modelled after xterm. +* Some code reduction and a number of miscellaneous bug fixes. + +================================================================================ + +On 01 June 2009, tmux was imported into the OpenBSD base system. From this date +onward changes are logged as part of the normal CVS commit message to either +OpenBSD or SourceForge CVS. This file will be updated to contain a summary of +major changes with each release, and to mention important configuration or +command syntax changes during development. + +The list of older changes is below. + +================================================================================ + +21 May 2009 + +* stat(2) files before trying to load them to avoid problems, for example + with "source-file /dev/zero". + +19 May 2009 + +* Try to guess if the window is UTF-8 by outputting a three-byte UTF-8 wide + character and seeing how much the cursor moves. Currently tries to figure out + if this works by some stupid checks on the terminal, these need to be + rethought. Also might be better using a width 1 character rather than width 2. +* If LANG contains "UTF-8", assume the terminal supports UTF-8, on the grounds + that anyone who configures it probably wants UTF-8. Not certain if this is + a perfect idea but let's see if it causes any problems. +* New window option: monitor-content. Searches for a string in a window and if + it matches, highlight the status line. + +18 May 2009 + +* main-horizontal layout and main-pane-height option to match vertical. +* New window option main-pane-width to set the width of the large left pane with + main-vertical (was left-vertical) layout. +* Lots of layout cleanup. manual layout is now manual-vertical. + +16 May 2009 + +* select-layout command and a few default key bindings (M-0, M-1, M-2, M-9) to + select layouts. +* Recreate server socket on SIGUSR1, per SF feature request 2792533. + +14 May 2009 + +* Keys in status line (p in vi mode, M-y in emacs) to paste the first line + of the upper paste buffer. Suggested by Dan Colish. +* clear-history command to clear a pane's history. +* Don't force wrapping with \n when asked, let the cursor code figure it out. + Should fix terminals which use this to detect line breaks. +* Major cleanup and restructuring of build infrastructure. Still separate files + for GNU and BSD make, but they are now hugely simplified at the expense of + adding a configure script which must be run before make. Now build and + install with: + + $ ./configure && make && sudo make install + +04 May 2009 + +* Use ACS line drawing characters for pane separator lines. + +30 April 2009 + +* Support command sequences without a space before the semicolon, for example + "neww; neww" now works as well as "neww ; neww". "neww;neww" is still an + error. +* previous-layout command. +* Display the layout name in window lists. +* Merge resize-pane-up and resize-pane-down into resize-pane with -U and -D + flags. + +29 April 2009 + +* Get rid of compat/vis.* - only one function was used which is easily + replaced,and less compat code == good. + +27 April 2009 + +* Avoid using the prompt history when the server is locked, and prevent any + input entered from being added to the client's prompt history. +* New command, confirm-before (alias confirm), which asks for confirmation + before executing a command. Bound "&" and "x" by default to confirm-before + "kill-window" and confirm-before "kill-pane", respectively. + +23 April 2009 + +* Support NEL, yet another way of making newline. Fixes the output from some + Gentoo packaging thing. Reported by someone on SF then logs that allowed a + fix sent by tcunha. +* Use the xenl terminfo flag to detect early-wrap terminals like the FreeBSD + console. Many thanks for a very informative email from Christian Weisgerber. + +21 April 2009 + +* tmux 0.8 released. + +17 April 2009 + +* Remove the right number of characters from the buffer when escape then + a cursor key (or other key prefixed by \033) is pressed. Reported by + Stuart Henderson. + +03 April 2009 + +* rotate-window command. -U flag (default) for up, -D flag for down. + +02 April 2009 + +* Change scroll/pane redraws to only redraw the single pane affected rather + than the entire window. +* If redrawing the region would mean redrawing > half the pane, just schedule + to redraw the entire window. Also add a flag to skip updating the window any + further if it is scheduled to be redrawn. This has the effect of batching + multiple redraws together. + +01 April 2009 + +* Basic horizontal splitting and layout management. Still some redraw and other + issues - particularly, don't mix with manual pane resizing, be careful when + viewing from multiple clients and don't expect shell windows to redraw very + well after the layout is changed; generally cycling the layout a few times + will fix most problems. Getting this in for testing while I think about how + to deal with manual mode. + + Split window as normal and cycle the layouts with C-b space. Some of the + layouts will work better when swap-pane comes along. + +31 March 2009 + +* AIX port, thanks to cmihai for access to a box. Only tested on 6.1 with xlc + 10.1 (make sure CC is set). Needs GNU make and probably ncurses (didn't try + plain curses). Also won't build with DEBUG, so comment the FDEBUG=1 line in + GNUmakefile. +* Draw a vertical line on the right when the window size is less than the + terminal size. This is partly to shake out any horizontal limit bugs on the + way to horizontal splitting/pane tiling. Currently a bit slow since it has to + do a lot of redrawing but hopefully that will improve as I get some better + ideas for how to do it. +* Fix remaining problems with copy and paste and UTF-8. + +28 March 2009 + +* Better UTF-8 support, including combined characters. Unicode data is now + stored as UTF-8 in a separate array, the code does a lookup into this every + time it gets to a UTF-8 cell. Zero width characters are just appended onto + the UTF-8 data for the previous cell. This also means that almost no bytes + extra are wasted non-Unicode data (yay). + + Still some oddities, such as copy mode skips over wide characters in a + strange way, and the code could do with some tidying. +* Key repeating is now a property of the key binding not of the command. + Repeat is turned on when the key is bound with the -r flag to bind-key. + next/previous-window no longer repeat by default as it turned out to annoy + me. + +27 March 2009 + +* Clear using ED when redrawing the screen. I foolishly assumed using spaces + would be equivalent and terminals would pick up on this, but apparently not. + This fixes copy and paste in xterm/rxvt. +* Sockets in /tmp are now created in a subdirectory named, tmux-UID, eg + tmux-1000. The default socket is thus /tmp/tmux-UID/default. To start a + separate server, the new -L command line option should be used: this creates + a socket in the same directory with a different name ("-L main" will create + socket called "main"). -S should only be used to place the socket outside + /tmp. This makes sockets a little more secure and a bit more convenient to + use multiple servers. + +21 March 2009 + +* New session flag "set-remain-on-exit" to set remain-on-exit flag for new + windows created in that session (like "remain-by-default" used to do). Not + perfectly happy about this, but until I can think of a good way to introduce + it generically (maybe a set of options in the session) this will do. Fixes + SF request 2527847. + +07 March 2009 + +* Support for 88 colour terminals. +* break-pane command to create a new window using an existing pane. + +02 March 2009 + +* Make escape key timer work properly so escape+key can be used without + lightning fast key presses. + +13 February 2009 + +* Redo mode keys slightly more cleanly and apply them to command prompt + editing. vi or emacs mode is controlled by the session option status-keys. + +12 February 2009 + +* Looking up argv[0] is expensive, so just use p_comm for the window name which + is good enough. Also increase name update time to 500 ms. + +11 February 2009 + +* Only use ri when actually at the top of the screen; just move the cursor up + otherwise. +* FreeBSD's console wraps lines at $COLUMNS - 1 rather than $COLUMNS (the + cursor can never be beyond $COLUMNS - 1) and does not appear to support + changing this behaviour, or any of the obvious possibilities (turning off + right margin wrapping, insert mode). This is irritating, most notably because + it impossible to write to the very bottom-right of the screen without + scrolling. To work around this, if built on FreeBSD and run with a "cons" + $TERM, the bottom-right cell on the screen is omitted. +* Emulate scroll regions (slowly) to support the few terminals which don't have + it (some of which don't really have any excuse). + +10 February 2009 + +* No longer redraw the status line every status-interval unless it has actually + changed. + +08 February 2009 + +* Don't treat empty arguments ("") differently when parsing configuration + file/command prompt rather than command line. +* tmux 0.7 released. + +03 February 2009 + +* New command, copy-buffer (alias copyb), to copy a session paste buffer to + another session. + +01 February 2009 + +* The character pair #(command) may now contain (escaped) right parenthesis. + +30 January 2009 + +* . now bound to "command-prompt 'move-window %%'" by default, from joshe. + +29 January 2009 + +* Window options to set status line fg, bg and attributes for a single + window. Options are: window-status-fg, window-status-bg, + window-status-attr. Set to "default" to use the session status colours. + + This allows quite neat things like: + + $ cat ~/bin/xssh + #!/bin/sh + + if [ ! -z "$TMUX" ]; then + case "$1" in + natalya) + tmux setw window-status-fg red >/dev/null + ;; + natasha) + tmux setw window-status-fg yellow >/dev/null + ;; + esac + fi + ssh "$@" + [ ! -z "$TMUX" ] && tmux setw -u window-status-fg >/dev/null + $ alias ssh="~/bin/xssh" + +* Support #(command) in status-left, and status-right, which is displayed as + the first line of command's output (e.g. set -g status-right + "#(whoami)@#(hostname -s)"). Commands with )s aren't supported. + +28 January 2009 + +* Support mouse in copy mode to move cursor. Can't do anything else at the + moment until other mouse modes are handled. +* Better support for at least the most common variant of mouse input: parse it + and adjust for different panes. Also support mouse in window/session choice + mode. + +27 January 2009 + +* Bring back the fancy window titles with session/window names: it is easy to + work around problems with elinks (see FAQ). +* -u flag to scroll-mode and copy-mode to start scrolled one page + up. scroll-mode -u is bound to prefix,page-up (ppage) by default. +* Allow status, mode and message attributes to be changed by three new options: + status-attr, mode-attr, message-attr. A comma-separated list is accepted + containing: bright, dim, underscore, blink, reverse, hidden, italics, for + example: + + set -g status-attr bright,blink + + From Josh Elsasser, thanks! + +26 January 2009 + +* Be more clever about picking the right process to create the window name. +* Don't balls up the terminal on UTF-8 combined characters. Don't support them + properly either - they are just discarded for the moment. + +25 January 2009 + +* load-buffer command + +23 January 2009 + +* Use reverse colours rather than swapping fg and bg for message, mode and + status line. This makes these usable on black and white terminals. +* Better error messages when creating a session or window fails. +* Oops. Return non-zero on error. Reported by Will Maier. + +21 January 2009 + +* Handle SIGTERM (and kill-server which uses it), a bit more neatly - tidy + up properly and print a nicer message. Same effect though :-). +* new-window now supports -k to kill target window if it exists. +* Bring back split-window -p and -l options to specify the height a percentage + or as a number of lines. +* Make window and session choice modes allow you to choose items in vi keys + mode (doh!). As a side-effect, this makes enter copy selection (as well + as C-w/M-w) when using emacs keys in copy mode. Reported by merdely. + +20 January 2009 + +* Darwin support for automatic-rename from joshe; Darwin doesn't seem to have + a sane method of getting argv[0] and searching for the precise insane way + is too frustrating, so this just uses the executable name. +* Try to change the window title to match the command running it in. This is + done by reading argv[0] from the process group leader of the group that owns + the tty (tcgetpgrp()). This can't be done portably so some OS-dependent code + is introduced (ugh); OpenBSD, FreeBSD and Linux are supported at the moment. + + A new window flag, automatic-rename, is available: if this is set to off, the + window name is not changed. Specifying a name with the new-window, + new-session or rename-window commands will automatically set this flag to off + for the window in question. To disable it entirely set the option to off + globally (setw -g automatic-rename off). + +19 January 2009 + +* Fix various stupid issues when the status line is turned off. Grr. +* Use reverse attributes for clock and cursor, otherwise they do not + appear on black and white terminals. +* An error in a command sequence now stops execution of that sequence. + Internally, each command code now passes a return code back rather than + talking to the calling client (if any) directly. +* attach-session now tries to start the server if it isn't already started - if + no sessions are created in .tmux.conf this will cause an error. +* Clean up starting server by making initial client get a special socketpair. + +18 January 2009 + +* Unbreak UTF-8. +* -a flag to next-window and previous-window to select the next or previous + window with activity or bell. Bound to M-n and M-p. +* find-window command to search window names, titles and visible content (but + not history) for a string. If only one is found, the window is selected + otherwise a choice list is shown. This (as with the other choice commands) + only works from a key. Bound to "f" by default. +* Cleaned up command printing code, also enclose arguments with spaces in "s. +* Added command sequences. These are entered by separating each argument by a ; + argument (spaces on both sides), for example: + + lsk ; lsc + + To use a literal ; as the argument prefix it with \, for example: + + bind x lsk \; lsc + + Commands are executed from left to right. Also note that command sequences do + not support repeat-time repetition unless all commands making up the sequence + support it. +* suspend-client command to suspend a client. Don't try to background it + though... +* Mark attached sessions in sessions lists. Suggested by Simon Kuhnle. + +17 January 2009 + +* tmux 0.6 released. + +15 January 2009 + +* Support #H for hostname and #S for session name in status-left/right. +* Two new commands, choose-window and choose-session which work only when bound + to a key and allow the window or session to be selected from a list. These + are now bound to "w" and "s" instead of the list commands. + +14 January 2009 + +* Rework the prefix-time stuff. The option is now called repeat-time and + defaults to 500 ms. It only applies to a small subset of commands, currently: + up-pane, down-pane, next-window, previous-window, resize-pane-up, + resize-pane-down. These are the commands for which it is obviously useful, + having it for everything else was just bloody annoying. +* The alt-up and alt-down keys now resize a pane by five lines at a time. +* switch-pane is now select-pane and requires -p to select a pane. The + "o" key binding is changed to down-pane. +* up-pane and down-pane commands, bound to arrow up and down by default. +* Multiple vertical window splitting. Minimum pane size is four lines, an + (unhelpful) error will be shown if attempting to split a window with less + that eight lines. If the window is resized, as many panes are shown as can + fit without reducing them below four lines. There is (currently!) not a way + to show a hidden pane without making the window larger. + + Note the -p and -l options to split-window are now gone, these may reappear + once I think them through again. +* Server locking on inactivity (lock-after-time) is now disabled by default. + +13 January 2009 + +* kill-pane command. + +12 January 2009 + +* command-prompt now accepts a single argument, a template string. Any + occurrences of %% in this string are replaced by whatever is entered at the + prompt and the result is executed as a command. This allows things like (now + bound by default): + + bind , command-prompt "rename-window %%" + + Or my favourite: + + bind x command-prompt "split-window 'man %%'" + +* Option to set prefix time, allowing multiple commands to be entered without + pressing the prefix key again, so long as they each typed within this time of + each other. +* Yet more hacks for key handling. Think it is just about working now. +* Two commands, resize-pane-up and resize-pane-down to resize a pane. +* Make the window pane code handle panes of different sizes, and add a -l + and -p arguments to split-window to specify the new window size in lines + or as a percentage. + +11 January 2009 + +* Vertical window splitting. Currently can only split a window into two panes. + New split-window command splits (bound to ") and switch-pane command (bound to + o) switches between panes. + + close-pane, swap-pane commands are to follow. Also to come are pane resizing, + >2 panes, the ability to break a pane out to a full window and vice versa and + possibly horizontal splitting. + + Panes are subelements of windows rather than being windows in their own + right. I tried to make them windows (so the splitting was at the session or + client level) but this rapidly became very complex and invasive. So in the + interests of having something working, I just made it so each window can have + two child processes instead of one (and it still took me 12 hours straight + coding). Now the concept is proven and much of the support code is there, + this may change in future if more flexibility is needed. +* save-buffer command, from Tiago Cunha. + +10 January 2009 + +* New option, lock-after-time. If there is no activity in the period specified + by this option (in seconds), tmux will lock the server. Default is 1800 (30 + minutes), set to 0 to disable. +* Server locking. Two new commands: set-password to set a password (a + preencrypted password may be specified with -c); and lock-server to lock the + server until the password is entered. Also an additional command line flag, + -U, to unlock from the shell. The default password is blank (any password + accepted). If specifying an encrypted password from encrypt(1) in .tmux.conf + with -c, don't forget to enclose it in single-quotes (') to prevent shell + variable expansion. +* If a window is created from the command line, tmux will now use the same + current working directory for the new process. A new default-path option to + sets the working directory for processes created from keys or interactively + from the prompt. +* New mode to display a large clock. Entered with clock-mode command (bound to + C-b t by default); two window options: clock-mode-colour and clock-mode-style + (12 or 24). This will probably be used as the basis for window locking. +* New command, server-info, to show some server information and terminal + details. + +09 January 2009 + +* Stop using ncurses variables and instead build a table of the codes we want + into an array for each terminal type. This makes the code a little more + untidy in places but gets rid of the awful global variables and calling + setterm all the time, and shoves all the ncurses-dependent mess into a single + file, tty-term.c. It also allows overriding single terminal codes, this is + used to fix rxvt on some platforms (where it is missing dch) and in future + may allow user customisation a la vim. +* Update key handling code. Simplify, support ctrl properly and add a new + window option (xterm-keys) to output xterm key codes including ctrl and, + if available, alt and shift. + +08 January 2009 + +* If built without DEBUG (the release versions), don't cause a fatal error if + the grid functions notice an input error, just log and ignore the + request. This might mean me getting shouted at less often when bugs kill + long-running sessions, at least in release versions. +* Hopefully fix cursor out-of-bounds checking when writing to grid. When I + wrote the code I must have forgotten that the cursor can be one cell off the + right of the screen (yes, I know), so there were number of out-of-bounds/ + overflow problems. + +07 January 2009 + +* New flag to set and setw, -u, to unset an option (allowing it to inherit from) + the global options again. +* Added more info messages for options changes. +* A bit of tidying and reorganisation of options code. + +06 January 2009 + +* Don't crash when backspacing if cursor is off the right of the screen, + reported by David Chisnall. +* Complete words at any point inside command in prompt, also use option name + as well as command names. +* Per-client prompt history of up to 100 items. +* Use a splay tree for key bindings instead of an array. As a side-effect this + sorts them when listed. + +22 December 2008 + +* Use the right keys for home and end. + +20 December 2008 + +* Add vim mode for tmux configuration file to examples/, from Tiago Cunha. + +15 December 2008 + +* New command, source-file (alias source), to load a configuration + file. Written by Tiago Cunha, many thanks. + +13 December 2008 + +* Work around lack of dch. On Linux, the rxvt termcap doesn't have it (it is + lying, but we can't really start disbelieving termcaps...). This is a bit + horrible - I can see no way to do it without pretty much redrawing the whole + line, but it works... + +10 December 2008 + +* glibc's getopt(3) is useless: it is not POSIX compliant without jumping + through non-portable hoops, and the method of resetting it is unclear (the + man page on my system says set optind to 1, but other sources say 0). So, + import OpenBSD's getopt_long.c into compat/ for use on Linux and use the + clearly documented optreset = optind = 1 method. This fixes some strange + issues with command parsing (getting the syntax wrong would prevent any + further commands being parsed). + +06 December 2008 + +* Bring set/setw/show/showw into line with other commands. This means that by + default they now affect the current window (if any); the new -g flag must be + passed to set the global options. This changes the behaviour of set/show and + WILL BREAK CURRENT CONFIGURATIONS. + + In summary, whether in the configuration file, the command prompt, or a key + binding, use -g to set a global option, use -t to specify a particular window + or session, or omit both to try and use the current window or session. + + This makes set/show a bit of a pain but is the correct behaviour for + setw/showw and is the same as every other command, so we can put up with a + bit of pain for consistency. +* Redo window options. They now work in the same way to session options with a + global options set. showw/setw commands now have similar syntax to show/set + (including the ability to use abbreviations). + + PLEASE NOTE this includes the following configuration-breaking changes: + + - remain-by-default is now GONE, use "setw -g remain-on-exit" to apply the + global window option instead; + - mode-keys is now a window option rather than session - use "setw [-g] + mode-keys" instead of set. + + There are also some additions: + + - message-fg and message-bg session options to control status line message + colours; + - mode-fg and mode-bg window options to set colours in window modes such as + copy mode. + + The options code still a mess and now there is twice as much of it :-(. + +02 December 2008 + +* Add support for including the window title in status-left or status-right + strings by including the character pair "#T". This may be prefixed with + a number to specify a maximum length, for example "#24T" to use at most + 24 characters of the title. +* Introduce two new options, status-left-length and status-right-length, + control the maximum length of left and right components of the status bar. +* elinks (and possibly others) bypass the terminal and talk directly to X to + restore the window title when exiting. tmux can't know about this particular + bit of stupidity so the title ends up strange - the prefix isn't terribly + important and elinks is quite useful so just get rid of it. + +27 November 2008 + +* Tweaks to support Dragonfly. + +17 November 2008 + +* tmux 0.5 released. + +16 November 2008 + +* New window option: "utf8"; this must be on (it is off by default) for UTF-8 + to be parsed. The global/session option "utf8-default" controls the setting + for new windows. + + This means that by default tmux does not handle UTF-8. To use UTF-8 by + default it is necessary to a) "set utf8-default on" in .tmux.conf b) start + tmux with -u on any terminal which support UTF-8. + + It seems a bit unnecessary for this to be a per-window option but that is + the easiest way to do it, and it can't do any harm... +* Enable default colours if op contains \033[39;49m, based on a report from + fulvio ciriaco. + +12 November 2008 + +* Keep stack of last windows rather than just most recent; based on a diff from + joshe. + +04 November 2008 + +* Don't try to redraw status line when showing a prompt or message; if it does, + the status timer is never reset so it redraws on every loop. Spotted by + joshe. + +09 October 2008 + +* Translate 256 colours into 16 if 256 is not available, same as screen does. +* Better support for OSC command (only to set window title now), and also + support using APC for the same purpose (some Linux default shell profiles do + this). + +25 September 2008 + +* Large internal rewrite to better support 256 colours and UTF-8. Screen data + is now stored as single two-way array of structures rather than as multiple + separate arrays. Also simplified a lot of code. + + Only external changes are three new flags, -2, -d and -u, which force tmux to + assume the terminal supports 256 colours, default colours (useful for + xterm-256color which lacks the AX flag), or UTF-8 respectively. + +10 September 2008 + +* Split off colour conversion code from screen code. + +09 September 2008 + +* Initial UTF-8 support. A bit ugly and with a limit of 4096 UTF-8 + characters per window. + +08 September 2008 + +* 256 colour support. tmux attempts to autodetect the terminal by looking + both at what ncurses reports (usually wrong for xterm) and checking if + the TERM contains "256col". For xterm TERM=xterm-256color is needed (as + well as a build that support 256 colours); this seems to work for rxvt + as well. On non-256 colour terminals, high colours are translated to white + foreground and black background. + +28 August 2008 + +* Support OS X/Darwin thanks to bsd-poll.c from OpenSSH. Also convert + from clock_gettime(2) to gettimeofday(2) as OS X doesn't support the + former; microsecond accuracy will have to be sufficient ;-). + +07 August 2008 + +* Lose some unused/useless wrapper functions. + +25 July 2008 + +* Shell variables may now be defined and used in configuration file. Define + variables with: + + VAR=1 + + And use with: + + renamew ${VAR} + renamew "x${VAR}x" + + Also some other fixes to make, for example, "abc""abc" work similarly to + the shell. + +24 July 2008 + +* Finally lose inconsistently-used SCREEN_DEF* defines. +* If cursor mode is on, switch the arrow keys from \033[A to \033OA. +* Support the numeric keypad in both application and numbers mode. This is + different from screen which always keeps it in application mode. + +19 July 2008 + +* Unbreak "set status" - tmux thought it was ambiguous, reported by rivo nurges. + +02 July 2008 + +* Split vi and emacs mode keys into two tables and add an option (mode-keys) + to select between them. Default is emacs, use, + + tmux set mode-keys vi + + to change to vi. + + vi mode uses space to start selection, enter to copy selection and escape + to clear selection. + +01 July 2008 + +* Protocol versioning. Clients which identify as a different version from the + server will be rejected. +* tmux 0.4 released. + +29 June 2008 + +* Zombie windows. These are not closed when the child process dies. May be + set for a window with the new "remain-on-exit" option; the default setting + of this flag for new windows may be set with the "remain-by-default" session + option. + + A window may be restarted with the respawn-window command: + + respawn-window [-k] [command] + + If -k is given, any existing process running in the window is killed; + if command is omitted, the same command as when the window was first + created is used. + +27 June 2008 + +* Handle nonexistent session or client to -t properly. + +25 June 2008 + +* select-prompt command to allow a window to be selected at a prompt. Only + windows in the current session may be selected. Bound to ' by default. + Suggested by merdely. +* move-window command. Requested by merdely. +* Support binding alt keys (prefixed with M-). Change default to use + C- for ctrl keys (^ is still accepted as an alternative). +* Slim down default key bindings: support lowercase only. +* Handle escaped keys properly (parse eg \033b into a single key code) and + use this to change copy mode next/previous work to M-f and M-b to match + emacs. + +24 June 2008 + +* Next word (C-n/w) and previous word (C-b/b) in copy mode. + +23 June 2008 + +* list-commands command (alias lscm). +* Split information about options into a table and use it to parse options + on input (allowing abbreviations) and to print them with show-options + (meaning that bell-action gets a proper string). This turned out a bit ugly + though :-/. + +22 June 2008 + +* Do not translate black and white into default if the terminal supports + default colours. This was nice to force programs which didn't use default + colours to be properly transparent in rxvt/aterm windows with a background + image, but it causes trouble if someone redefines the default foreground and + background (to have black on white or something). + +21 June 2008 + +* Naive tab completion in the command prompt. This only completes command + names if a) they are at the start of the text b) the cursor is at + the end of the text c) the text contains no spaces. +* Only attempt to set the title where TERM looks like an xterm (contains + "xterm", "rxvt" or is "screen"). I hate this but I don't see a better way: + setting the title actually kills some other terminals pretty much dead. +* Strip padding out of terminfo(5) strings. Currently the padding is just + ignored, this may need to be altered if there are any software terminals + out there that actually need it. + +20 June 2008 + +* buffer-limit option to set maximum size of buffer stack. Default is 9. +* Initial buffer improvements. Each session has a stack of buffers and each + buffer command takes a -b option to manipulate items on the stack. If -b + is omitted, the top entry is used. The following commands are currently + available: + + set-buffer [-b index] [-t target-session] string + paste-buffer [-d] [-b index] [-t target-window] + delete-buffer [-b index] [-t target-session] + show-buffers [-t target-session] + show-buffer [-b index] [-t target-session] + + -d to paste-buffer deletes the buffer after pasting it. +* New option, display-time, sets the time status line messages stay on screen + (unless a key is pressed). Set in milliseconds, default is 750 (0.75 seconds). + The timer is only checked every 100 ms or so. + +19 June 2008 + +* Use "status" consistently for status line option, and prefix for "prefix" key + option. +* Allow commands to be entered at a prompt. This is triggered with the + command-prompt command, bound to : by default. +* Show status messages properly, without blocking the server. + +18 June 2008 + +* New option, set-titles. On by default, this attempts to set the window title + using the \e]2;...\007 xterm code. + + Note that elinks requires the STY environment variable (used by screen) to be + set before it will set the window title. So, if you want window titles set by + elinks, set STY before running it (any value will do). I can't do this for all + windows since setting it to an invalid value breaks screen. +* Show arrows at either end of status line when scrolled if more windows + exist. Highlight the arrow if a hidden window has activity or bell. +* Scroll the status line to show the current window if necessary. Also handle + windows smaller than needed better (show a blank status line instead of + hanging or crashing). + +17 June 2008 + +* tmux 0.3 released. + +16 June 2008 + +* Add some information messages when window options are changed, suggested by + Mike Erdely. Also add a -q command-line option to suppress them. +* show-window-options (showw) command. + +15 June 2008 + +* show-options (show) command to show one or all options. + +14 June 2008 + +* New window options: force-width and force-height. This will force a window + to an arbitrary width and height (0 for the default unlimited). This is + neat for emacs which doesn't have a sensible way to force hard wrapping at 80 + columns. Also, don't try to be clever and use clr_eol when redrawing the + whole screen, it causes trouble since the redraw functions are used to draw + the blank areas too. +* Clear the blank area below windows properly when they are smaller than client, + also add an indicator line to show the vertical limit. +* Don't die on empty strings in config file, reported by Will Maier. + +08 June 2008 + +* Set socket mode +x if any sessions are attached and -x if not. + +07 June 2008 + +* Make status-interval actually changeable. + +06 June 2008 + +* New window option: aggressive-resize. Normally, windows are resized to the + size of the smallest attached session to which they are linked. This means a + window only changes size when sessions are detached or attached, or they are + linked or unlinked from a session. This flag changes a window to be the size + of the smallest attached session for which it is the current window - it is + resized every time a session changes to it or away from it. This is nice for + things that handle SIGWINCH well (like irssi) and bad for things like shells. +* The server now exits when no sessions remain. +* Fix bug with inserting characters with TERM=xterm-color. + +05 June 2008 + +* Completely reorganise command parsing. Much more common code in cmd-generic.c + and a new way of specifying windows, clients or sessions. Now, most commands + take a -t argument, which specifies a client, a session, or a window target. + Clients and sessions are given alone (sessions are fnmatch(3)d and + clients currently not), windows are give by (client|session):index. For + example, if a user is in session "1" window 0 on /dev/ttypi, these should all + be equivalent: + + tmux renamew newname (current session and window) + tmux renamew -t: newname (current session and window) + tmux renamew -t:0 newname (current session, window 0) + tmux renamew -t0 newname (current session, window 0) + tmux renamew -t1:0 newname (session 1, window 0) + tmux renamew -t1: newname (session 1's current window) + tmux renamew -t/dev/ttypi newname (client /dev/ttypi's current + session and window) + tmux renamew -t/dev/ttypi: newname (client /dev/ttypi's current + session and window) + tmux renamew -t/dev/ttypi:0 newname (client /dev/ttypi's current + session, window 0) + + This does have some downsides, for example, having to use -t on selectw, + + tmux selectw -t7 + + is annoying. But then using non-flagged arguments would mean renaming the + current window would need to be something like: + + tmux renamew : newname + + It might be better not to try and be so consistent; comments to the usual + address ;-). +* Infrastructure for printing arguments in list-keys output. Easy ones only for + now. + +04 June 2008 + +* Add some vi(1) key bindings in copy mode, and support binding ^[, ^\, ^] + ^^ and ^_. Both from/prompted by Will Maier. +* setw monitor-activity and set status without arguments now toggle the current + value; suggested by merdely. +* New command set-window-option (alias setw) to set the single current window + option: monitor-activity to determine whether window activity is shown in + the status bar for that window (default off). +* Change so active/bell windows are inverted in status line. +* Activity monitoring - window with activity are marked in status line. No + way to disable this/filter windows yet. +* Brought select-window command into line with everything else; it now uses + -i for the window index. +* Strings to display on the left and right of the status bar may now be set + with the status-left and status-right options. These are passed through + strftime(3) before being displayed. The status bar is automatically updated + at an interval set by the status-interval option. The default is to display + nothing on the left and the date and time on the left; the default update + interval is 15 seconds. + +03 June 2008 + +* Per session options. Setting options without specifying a session sets the + global options as normal (global options are inherited by all sessions); + passing -c or -s will set the option only for that session. +* Because a client has a session attached, any command needing a session can + take a client and use its session. So, anything that used to accept -s now + accepts -c as well. +* -s to specify session name now supports fnmatch(3) wildcards; if multiple + sessions are found, or if no -s is specified, the most newly created is used. +* If no command is specified, assume new-session. As a byproduct, clean up + command default values into separate init functions. +* kill-server command. + +02 June 2008 + +* New command, start-server (alias "start"), to start the tmux server and do + nothing else. This is good if you have a configuration file which creates + windows or sessions (like me): in that case, starting the server the first + time tmux new is run is bad since it creates a new session and window (as + it is supposed to - starting the server is a side-effect). + + Instead, I have a little script which does the equivalent of: + + tmux has -s0 2>/dev/null || tmux start + tmux attach -d -s0 + + And I use it to start the server if necessary and attach to my primary + session. +* Basic configuration file in ~/.tmux.conf or specified with -f. This is file + contains a set of tmux commands that are run the first time the server is + started. The configuration commands are executed before any others, so + if you have a configuration file that contains: + + new -d + neww -s0 + + And you do the following without an existing server running: + + tmux new + + You will end up with two sessions, session 0 with two windows (created by + the configuration file) and your client attached to session 1 with one + window (created by the command-line command). I'm not completely happy with + this, it seems a little non-obvious, but I haven't yet decided what to do + about it. + + There is no environment variable handling or other special stuff yet. + + In the future, it might be nice to be able to have per-session configuration + settings, probably by having conditionals in the file (so you could, for + example, have commands to define a particular window layout that would only + be invoked if you called tmux new -smysession and mysession did not already + exist). +* BIG CHANGE: -s and -c to specify session name and client name are now passed + after the command rather than before it. So, for example: + + tmux -s0 neww + + Becomes: + + tmux neww -s0 + + This is to allow them to be used in the (forthcoming) configuration file + THIS WILL BREAK ANY CURRENT SCRIPTS OR ALIASES USING -s OR -c. + +01 June 2008 + +* Bug fix: don't die if -k passed to link-window and the destination doesn't + exist. +* New command, send-keys, will send a set of keys to a window. + +31 May 2008 + +* Fix so tmux doesn't hang if the initial window fails for some reason. This + was highlighted by problems on Darwin, thanks to Elias Pipping for the report + and access to a test account. (tmux still won't work on Darwin since its + poll(2) is broken.) + +02 January 2008 + +* Don't attempt to reset the tty on exit if it has been closed externally. + +06 December 2007 + +* Restore checks for required termcap entries and add a few more obvious + emulations. +* Another major reorganisation, this time of screen handling. A new set of + functions, screen_write_*, are now used to write to a screen and a tty + simultaneously. These are used by the input parser to update the base + window screen and also by the different modes which now interpose their own + screen. + +30 November 2007 + +* Support \ek...\e\ to set window name. + +27 November 2007 + +* Enable/disable mouse when asked, if terminal claims to support it. Mouse + sequences are just passed through unaltered for the moment. +* Big internal reorganisation. Rather than leaving control of the tty solely in + the client and piping all data through a socket to it, change so that the + server opens the tty again and reads and writes to it directly. This avoids + a lot of buffering and copying. Also reorganise the redrawing stuff so that + everything goes through screen_draw_* - this makes the code simpler, but + still needs broken up more, and all the ways of writing to screens should be + more consistent. + +26 November 2007 + +* Rather than shifting up one line at a time once the history is full, + shift by 10% of the history each time. This is faster. +* Add ^A and ^E to copy mode to move to start-of-line/end-of-line. + +24 November 2007 + +* Support for alt charset mode (VT100 graphics characters). + +23 November 2007 + +* Mostly complete copy & paste. Copy mode entered with C-b [ (copy-mode + command). In copy mode, arrow keys/page up/page down/hjkl/C-u/C-f navigate, + space or C-space starts selection, and enter or C-w copies and (important!) + exits copy mode. C-b ] (paste-buffer) pastes into current window. No + extra utility keys (bol/eol/clear selection/etc), only one single buffer, + and no buffer manipulation commands (clear/view/etc) yet. The code is also + fugly :-(. +* history-limit option to set maximum history. Does not apply retroactively to + existing windows! Lines take up a variable amount of space, but a reasonable + guess for an 80-column terminal is 250 KB per 1000 lines (of history used, + an empty history takes no space). + +21 November 2007 + +* Create every line as zero length and only expand it as data is written, + rather than creating at full size immediately. +* Make command output (eg list-keys) go to a scrollable window similar to + scroll mode. +* Redo screen redrawing so it is a) readable b) split into utility functions + that can be used outside screen.c. Use these to make scroll mode only + redraw what it has to which gets rid of irritating flickering status box and + makes it much faster. +* Full line width memory and horizontal scrolling in history. +* Initial support for scroll history. = to enter scrolling mode, and then + vi keys or up/down/pgup/pgdown to navigate. Q to exit. No horizontal history + yet (need per-line sizes) and a few kinks to be worked out (resizing while in + history mode will probably cause trouble). + +20 November 2007 + +* Fix format string error with "must specify a client" message. Also + sprinkle some printflike tags. +* tmux 0.1 released. + +17 November 2007 + +* (nicm) Add -k option to link-window to kill target window if it exists. + +16 November 2007 + +* (nicm) Split in-client display into two columns. This is a hack but not a lot + more so than that bit is already and it helps with lots of keys. +* (nicm) switch-client command to switch client between different sessions. This + is pretty cool: + + $ tmux bind q switch 0 + $ tmux bind w switch 1 + + Then you can switch between sessions 0 and 1 with a key :-). +* (nicm) Accept "-c client-tty" on command line to allow client manipulation + commands, and change detach-/refresh-session to detach-/refresh-client (this + loses the -a behaviour, but at some point -session versions may return, and + -c will allow fnmatch(3)). +* (nicm) List available commands on ambiguous command. + +12 November 2007 + +* (nicm) If the terminal supports default colours (AX present), force black + background and white foreground to default. This is useful on transparent + *terms for programs which don't do it themselves (like most(1)). +* (nicm) Fill in the rest of the man page. +* (nicm) kill-session command. + +09 November 2007 + +* (nicm) C-space is now "^ " not "^@". +* (nicm) Support tab (\011). +* (nicm) Initial man page outline. +* (nicm) -V to show version. +* (nicm) rename-session command. + +08 November 2007 + +* (nicm) Check for required terminal capabilities on start. + +31 October 2007 + +* (nicm) Linux port. + +30 October 2007 + +* (nicm) swap-window command. Same as link-window but swaps windows. + +26 October 2007 + +* (nicm) Saving scroll region on \e7 causes problems with ncmpc so I guess + it is not required. +* (nicm) unlink-window command. +* (nicm) link-window command to link an existing window into another session + (or another index in the same session). Syntax: + + tmux -s dstname link-window [-i dstidx] srcname srcidx + +* (nicm) Redo window data structures. The global array remains, but each per- + session list is now a RB tree of winlink structures. This disassociates the + window index from the array size (allowing arbitrary indexes) which still + allowing windows to have multiple indexes. + +25 October 2007 + +* (nicm) has-session command: checks if session exists. + +24 October 2007 + +* (nicm) Support for \e6n to request cursor position. resize(1) now works. +* (nicm) Support for \e7, \e8 save/restore cursor and attribute sequences. + Currently don't save mode (probably should). Also change some cases where + out-of-bound values are ignored to limit them to within range (there are + others than need to be checked too). + +23 October 2007 + +* (nicm) Lift limit on session name passed with -s. +* (nicm) Show size in session/window lists. +* (nicm) Pass tty up to server when client identifies and add a list-clients + command to list connected clients. + +20 October 2007 + +* (nicm) Add default-command option and change default to be $SHELL rather than + $SHELL -l. Also try to read shell from passwd db if $SHELL isn't present. + +19 October 2007 + +* (nicm) -n on new-session is now -s, and -n is now the initial window name. + This was documented but not implemented :-/. +* (nicm) kill-window command, bound to & by default (because it should be hard + to hit accidently). +* (nicm) bell-style option with three choices: "none" completely ignore bell; + "any" pass through a bell in any window to current; "current" ignore bells + except in current window. This applies only to the bell terminal signal, + the status bar always reflects any bells. +* (nicm) Refresh session command. + +12 October 2007 + +* (nicm) Add a warning if $TMUX exists on new/attach. +* (nicm) send-prefix command. Bound to C-b by default. +* (nicm) set status, status-fg, status-bg commands. fg and bg are as a number + from 0 to 8 or a string ("red", "blue", etc). status may be 1/0, on/off, + yes/no. +* (nicm) Make status line mark window in yellow on bell. + +04 October 2007 + +* (nicm) -d option to attach to detach all other clients on the same session. +* (nicm) Partial resizing support. Still buggy. A C-b S and back sometimes fixes + it when it goes wonky. +* (mxey) Added my tmux start script as an example (examples/start-tmux.sh). +* (mxey) New sessions can now be given a command for their first window. +* (mxey) Fixed usage statement for new-window. +* (nicm) attach-session (can't believe I forgot it until now!) and list-windows + commands. +* (nicm) rename-window and select-window commands. +* (nicm) set-option command (alias set): "tmux set-option prefix ^A". +* (nicm) Key binding and unbinding is back. + +03 October 2007 + +* (nicm) {new,next,last,previous}-window. +* (nicm) Rewrite command handling so commands are much more generic and the + same commands are used for command line and keys (although most will probably + need to check how they are called). Currently incomplete (only new/detach/ls + implemented). Change: -s is now passed before command again! +* (nicm) String number arguments. So you can do: tmux bind ^Q create "blah". +* (nicm) Key binding. tmux bind key command [argument] and tmux unbind key. + Key names are in a table in key-string.c, plus A is A, ^A is ctrl-A. + Possible commands are in cmd.c (look at cmd_bind_table). +* (nicm) Move command parsing into the client. Also rename some messages and + tidy up a few bits. Lots more tidying up needed :-/. + +02 October 2007 + +* (nicm) Redraw client status lines on rename. +* (nicm) Error on ambiguous command. + +01 October 2007 + +* (nicm) Restore window title handling. +* (nicm) Simple uncustomisable status line with window list. + +30 September 2007 + +* (nicm) Window info command for debugging, C-b I. + +29 September 2007 + +* (nicm) Deleting/inserting lines should follow scrolling region. Fix. +* (nicm) Allow creation of detached sessions: "tmux new-session -d". +* (nicm) Permit error messages to be passed back for transient clients like + rename. Also make rename -i work. +* (nicm) Pass through bell in any window to current. + +28 September 2007 + +* (nicm) Major rewrite of input parser: + - Lose the old weirdness in favour of a state machine. + - Merge in parsing from screen.c. + - Split key parsing off into a separate file. + This is step one towards hopefully allowing a status line. It requires + that we output data as if the terminal had one line less than it really does - + a serious problem when it comes to things like scrolling. This change + consolidates all the range checking and limiting together which should make + it easier. +* (mxey) Added window renaming, like "tmux rename [-s session] [-i index] name" + +27 September 2007 + +* Split "tmux list" into "tmux list-sessions" (ls) and "list-windows" (lsw). +* New command session selection: + - if name is specified, look for it and use it if it exists, otherwise + error + - if no name specified, try the current session from $TMUX + - if $TMUX doesn't exist, and there is only one session, use it, + otherwise error + +26 September 2007 + +* Add command aliases, so "ls" is an alias for "list". +* Rename some commands and alter syntax to take options after a la CVS. Also + change some flags. So: + + tmux -s/socket -nabc new + + Becomes: + + tmux -S/socket new -sabc + +* Major tidy and split of client/server code. + +22 September 2007 + +* Window list command (C-b W). Started by Maximilian Gass, finished by me. + +20 September 2007 + +* Specify meta via environment variable (META). +* Record last window and ^L key to switch to it. Largely from Maximilian Gass. +* Reset ignored signals in child after forkpty, makes ^C work. +* Wrap on next/previous. From Maximilian Gass. + +19 September 2007 + +* Don't renumber windows on close. + +28 August 2007 + +* Scrolling region (\e[r) support. + +27 August 2007 + +* Change screen.c to work more logically and hopefully fix heap corruption. + +09 July 2007 + +* Initial import to CVS. Basic functions are working, albeit with a couple of + showstopper memory bugs and many missing features. Detaching, reattaching, + creating new sessions, listing sessions work acceptably for using with shells. + Simple curses programs (top, systat, tetris) and more complicated ones (mutt, + emacs) that don't require scrolling regions (ESC[r) mostly work fine + (including mutt, emacs). No status bar yet and no key remapping or other + customisation. |