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