NOTES ===== This file describes rough notes regarding ideas for potential future tmux development. It's not necessarily guaranteed that items in this TODO file will ever get implemented. It is asked therefore, that anyone thinking of undertaking a task in this TODO file, email tmux-users@lists.sf.net to discuss the feature. Thie file is split up between tmux user interface (UI) issues, and terminal compatibility issues. TMUX UI ISSUES ============== - implicitly add exec to the commands for new windows (switch to disable it)? - bring back detach-session to detach all clients on a session? - allow fnmatch for -c, so that you can, eg, detach all clients - garbage collect window history (100 lines at a time?) if it hasn't been used in $x time - flags to centre screen in window - activity/bell should be per-window not per-link? what if it is cur win in session not being watched? - should be able to move to a hidden pane and it would be moved into view. pane number in status line/top-right would be cool for this - support other mouse modes (highlight etc) and use it in copy mode - set-remain-on-exit is a bit of a hack, some way to do it generically? - would be nice to be able to use "--" to mark start of command w/ neww etc to avoid quoting - make command sequences more usable: don't require space after ;, handle errors better - choice and more mode would be better per client than per window? - hooks to which commands may be attached, for example: tmux add-hook "new-session" if-shell "[ -e $HOME/.tmux-session.conf ]" source-file $HOME/.tmux-session.conf - way to set socket path from config file - warts on current naming: - display-time but message-fg/bg/attr - list-* vs show-* - server-info - up-pane/down-pane/swap-pane -U/swap-pane -D vs next-*/previous-* - split-window -> split-pane?? - some way to force a screen to use the entire terminal even if it is forced to be smaller by other clients. pan smaller terminal? (like screen F) -- idea of a "view" onto a window, need base x/y offsets for redraw - commands should be able to succeed or fail and have || or && for command lists - some way to keep a command running continually and just use its last line of output - UTF-8 to a non-UTF-8 terminal should not be able to balls up the terminal - www/ruby-addressable; make regress - support esc-esc to quit in modes - fix ctrl+F1-F4 output. to what? - better utf8 support: window names, prompt input, message display - option to move copy mode indicator into status line - selection behaviour closer to vi in vi mode - live update: server started with -U connects to server, requests sessions and windows, receives fds - sort out inheriting config from shell on new sessions/windows: should pick up default-path/termios/etc from client if possible, else leave empty/default - link panes into multiple windows - bells should be passed between sessions with visual-bell etc sequence until its shell exits, to allow them to be used from the config file - better session sharing: create-socket command to create socket somewhere (-r flag for readonly) - multiline status line (no?) - support title stack, both internally and externally http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1149299+0+archive/2010/freebsd-questions/20100207.freebsd-questions - some way to pad # stuff with spaces, #!2T maybe - a binding to "scroll down and exit at bottom" copy mode - some way to pass keystrokes in copy mode through to underlying window. why? - last window update time and # replacement for it for display-message - find-window across sessions - other ways to make session handling easier? - ' and " should be parsed the same (eg "\e" vs '\e') in config and command prompt? - command to toggle selection not to move it in copy-mode - audit of escape sequence support vs xterm - support binding keys to mouse (mouse-select-pane -> mouse-keys or something, mouse click == select-pane -t %%, mouse scroll up == copy-mode) - bind commands to key sequences? -- make it so ALL keys go through a table, first an implicit table in which C-b is the only default binding to a command that says "next key from $othertable" and so on. means -n can go away as well - monitor, bell etc should monitor /all/ panes in the window not just one - a history of commands that can be reversed (reverse member of each command, and a buffer) - info() when changing to same window - way to add dest for break-pane; maybe some easier way to unbreak-pane - case insensitive searching - incremental searching in copy mode. - configurable borders and empty space filler for when panes < window? - mouse-select-pane will screw up with !MODE_MOUSE_STANDARD (it sets the flag on w/o checking the others before calling tty_update_mode) - pass shell commands as argv rather than strings, allow them to be specified in commands without quotes - named buffers and allow gaps in the stack - monitor-activity is broken in several ways with multiple clients - monitor-activity should be more powerful (eg set a region) - maybe a way to put pane names instead of window names in status line - support for borderless panes - wait-for command 20130222153957.GY6782@yelena.nicm.ath.cx - last-pane across sessions - panes should have names like windows - command-prompt doesn't work if made read-only. why? - option to quote format eg #{session_name:quoted} - formats need conditions for >0 (for #P) - fetch full command line on !Linux, and add option to strip prefixes such as "sh " "/bin/sh " etc etc - synchronize-windows option - append to buffer in copy mode - way to paste w/o trailing whitespace - flag to switch-client to switch all clients - history of layouts and undo/redo flags to selectl - way to tag a layout as a number/name - optimize pane redraws, 20120318184853.GK10965@yelena.nicm.ath.cx - support multibyte key strings - allow commands to be executed when certain patterns in a screen are clicked on with the mouse - flag to make next/previous commands skip a window - way to do tmux command/run-shell from mode keys - send command to all windows - choose-pane command (augment choose-tree to do this?) - choose-mode and copy-mode are very similar. Perhaps make choose-mode a subset of copy-mode in that it inherits key-bindings and other traits but not all - add -c for new-session like new-window - flag to choose-* for sort order (eg sort windows/sessions/clients by last used time) - perhaps using formats (but what about numeric sort)? - instead of separate window and session options, just one master options list with each option having a type (window or session), then options on window, on session, and global. for window options we look window->session->global, and for session we look session->global - maybe keep last layout + size around and if size reverts just put it back - way to set hints/limits about pane size for resizing - revamp layouts: they are too complicated, should be more closely integrated, should support hints, layout sets should just be a special case of custom layouts, and we should support panes that are not attached to a cell at all. this could be the time to introduce panelink to replace layout_cell - run-shell/if-shell should support formats - attach should take a pane and select it as well as attaching - attach should have a flag to create session if it doesn't exist. or better new a flag to attach it TERMINAL ISSUES ================ - use a better termcap internally instead of screen, perhaps xterm - clear window title on exit (see using xterm title stack) - get it passing all the vttest tests that don't require resizing the terminal - support for bce - use screen-256color when started on 256 colour terminal? * We need a tmux terminfo entry to document the extensions we are using in upstream terminfo. Must NOT change (only add or remove) anything from TERM=screen so we can fallback!