| 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 -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 6 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 Sept 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. |