2012-10-05 00:57:31 +02:00
|
|
|
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
|
|
|
|
==============
|
|
|
|
|
2011-07-04 15:36:12 +02:00
|
|
|
- implicitly add exec to the commands for new windows (switch to disable it)?
|
2011-01-26 03:05:02 +01:00
|
|
|
- bring back detach-session to detach all clients on a session?
|
2007-11-16 22:12:31 +01:00
|
|
|
- allow fnmatch for -c, so that you can, eg, detach all clients
|
2007-11-23 14:11:43 +01:00
|
|
|
- garbage collect window history (100 lines at a time?) if it hasn't been used
|
2010-12-11 19:06:42 +01:00
|
|
|
in $x time
|
2008-06-16 08:10:02 +02:00
|
|
|
- flags to centre screen in window
|
2008-06-16 22:26:48 +02:00
|
|
|
- activity/bell should be per-window not per-link? what if it is cur win in
|
|
|
|
session not being watched?
|
2009-01-18 01:08:43 +01:00
|
|
|
- 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
|
2009-05-04 19:58:27 +02:00
|
|
|
- support other mouse modes (highlight etc) and use it in copy mode
|
2009-03-21 13:44:06 +01:00
|
|
|
- set-remain-on-exit is a bit of a hack, some way to do it generically?
|
2009-05-04 15:20:02 +02:00
|
|
|
- would be nice to be able to use "--" to mark start of command w/ neww etc
|
|
|
|
to avoid quoting
|
2009-05-11 21:03:30 +02:00
|
|
|
- make command sequences more usable: don't require space after ;, handle
|
2009-04-21 23:11:46 +02:00
|
|
|
errors better
|
|
|
|
- attach should have a flag to create session if it doesn't exist
|
2009-06-03 19:52:29 +02:00
|
|
|
- choice and more mode would be better per client than per window?
|
2009-07-26 17:58:40 +02:00
|
|
|
- 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
|
2009-06-25 23:25:36 +02:00
|
|
|
- way to set socket path from config file
|
2009-07-11 15:48:05 +02:00
|
|
|
- what about utmp etc? can tmux update it like screen? setgid?
|
2009-07-16 09:35:41 +02:00
|
|
|
- warts on current naming:
|
|
|
|
- display-time but message-fg/bg/attr
|
|
|
|
- list-* vs show-*
|
|
|
|
- server-info
|
2009-07-30 23:55:16 +02:00
|
|
|
- up-pane/down-pane/swap-pane -U/swap-pane -D vs next-*/previous-*
|
2009-10-13 16:27:57 +02:00
|
|
|
- split-window -> split-pane??
|
2009-08-11 12:06:27 +02:00
|
|
|
- a way for force-width/height to apply to only one pane (how?)
|
2009-07-25 02:12:24 +02:00
|
|
|
- command to list what is actually running in each window with command line,
|
|
|
|
pid (need some adaption of the osdep code)
|
2009-08-11 12:06:27 +02:00
|
|
|
- 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)
|
2010-12-11 19:06:42 +01:00
|
|
|
-- idea of a "view" onto a window, need base x/y offsets for redraw
|
2009-08-14 00:36:20 +02:00
|
|
|
- handle resize better in copy mode
|
|
|
|
- way to copy stuff that is off screen due to resize
|
2009-09-07 17:41:52 +02:00
|
|
|
- commands should be able to succeed or fail and have || or && for command
|
|
|
|
lists
|
2009-10-10 17:17:50 +02:00
|
|
|
- some way to KEEP a command running continually and just use its LAST line of
|
|
|
|
output
|
2009-10-13 01:13:06 +02:00
|
|
|
- UTF-8 to a non-UTF-8 terminal should not be able to balls up
|
|
|
|
the terminal - www/ruby-addressable; make regress
|
2009-11-02 21:24:07 +01:00
|
|
|
- support esc-esc to quit in modes
|
2009-11-18 14:56:06 +01:00
|
|
|
- fix ctrl+F1-F4 output. to what?
|
2010-12-11 19:06:42 +01:00
|
|
|
- better utf8 support: window names, prompt input, message display
|
2009-11-23 21:29:04 +01:00
|
|
|
- session history for client and last-session command
|
2009-12-13 16:47:16 +01:00
|
|
|
- option to change status line colour when current window is in a mode?
|
2010-03-10 16:18:49 +01:00
|
|
|
- option to move copy mode indicator into status line
|
2010-01-03 18:15:57 +01:00
|
|
|
- list-buffer/show-buffer should display UTF-8
|
|
|
|
- selection behaviour closer to vi in vi mode
|
2010-01-14 23:10:23 +01:00
|
|
|
- live update: server started with -U connects to server, requests sessions and
|
|
|
|
windows, receives fds
|
2010-01-18 20:44:01 +01:00
|
|
|
- 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
|
2010-01-25 21:38:50 +01:00
|
|
|
- link panes into multiple windows
|
2010-01-31 00:53:07 +01:00
|
|
|
- bells should be passed between sessions with visual-bell etc
|
2010-02-04 00:47:22 +01:00
|
|
|
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)
|
2010-12-11 19:06:42 +01:00
|
|
|
- multiline status line (no?)
|
2010-02-11 22:16:11 +01:00
|
|
|
- flag for absolute pane size to resize-pane
|
|
|
|
- sanity check input to socket
|
2010-03-02 00:56:46 +01:00
|
|
|
- support title stack, both internally and externally
|
|
|
|
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1149299+0+archive/2010/freebsd-questions/20100207.freebsd-questions
|
2010-03-06 14:24:35 +01:00
|
|
|
- command to show status line information briefly when it is off
|
2010-03-11 00:32:49 +01:00
|
|
|
- some way to pad # stuff with spaces, #!2T maybe
|
2010-03-27 14:43:13 +01:00
|
|
|
- a binding to "scroll down and exit at bottom" copy mode
|
|
|
|
- some way to pass keystrokes in copy mode through to underlying window
|
2010-04-06 00:28:56 +02:00
|
|
|
- last window update time and # replacement for it for display-message
|
2010-04-18 09:37:09 +02:00
|
|
|
- find-window across sessions - other ways to make session handling easier?
|
2010-04-28 21:08:40 +02:00
|
|
|
- ' and " should be parsed the same (eg "\e" vs '\e') in config and command
|
2010-05-24 20:21:07 +02:00
|
|
|
prompt?
|
|
|
|
- command to toggle selection not to move it in copy-mode
|
2010-12-11 19:06:42 +01:00
|
|
|
- audit of escape sequence support vs xterm
|
|
|
|
- support binding keys to mouse (mouse-select-pane -> mouse-keys or something,
|
2010-09-01 00:44:01 +02:00
|
|
|
mouse click == select-pane -t %%, mouse scroll up == copy-mode)
|
2010-12-11 19:06:42 +01:00
|
|
|
- something for -t "last window in session" so a session can be used as a stack
|
|
|
|
- synchronous commands - client sends cmd and blocks, neww/splitw saves client
|
|
|
|
ptr then when program inside died, sends MSG_SOMETHING with wait status to
|
|
|
|
client
|
2011-02-12 16:51:11 +01:00
|
|
|
- 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
|
2010-12-11 19:06:42 +01:00
|
|
|
- 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
|
2012-12-08 20:16:45 +01:00
|
|
|
- incremental searching in copy mode.
|
2010-12-11 19:06:42 +01:00
|
|
|
- configurable borders and empty space filler for when panes < window?
|
2010-12-31 02:39:50 +01:00
|
|
|
- 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)
|
2011-01-01 02:59:03 +01:00
|
|
|
- multiple keys could be done with tables, ie have prefixes go and instead
|
|
|
|
bind -n ^A prefix-table "default"
|
|
|
|
where prefix-table sets command lookup table and sets prefix flag, then next
|
|
|
|
key is looked up in that table
|
2011-01-01 06:01:54 +01:00
|
|
|
- pass shell commands as argv rather than strings, allow them to be specified
|
|
|
|
in commands without quotes
|
2011-03-28 20:59:37 +02:00
|
|
|
- numeric prefix in copy mode should be paste buffer for C-w
|
2011-03-28 22:14:30 +02:00
|
|
|
- named buffers and allow gaps in the stack
|
2011-04-12 18:58:49 +02:00
|
|
|
- get rid of separate UTF-8 cell stuff: add 1 byte to cell and store BMP as
|
|
|
|
uint16_t+3 bits of flags. anything <=0xffff is Unicode, higher are used to
|
|
|
|
build tree of combined characters/non-BMP (LRU dropped when full)
|
2011-04-15 21:01:51 +02:00
|
|
|
- entry in FAQ about what to do when someone does mkdir /tmp/tmux-1000
|
2011-05-17 20:20:04 +02:00
|
|
|
- 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
|
2011-10-23 12:21:02 +02:00
|
|
|
- support for borderless panes
|
2011-06-05 12:29:33 +02:00
|
|
|
- run-shell/if-shell should support status_replace stuff
|
|
|
|
- wait-pane command or another way to make it synchronous/wait for command to
|
|
|
|
finish
|
2011-06-05 13:03:10 +02:00
|
|
|
- last-pane across sessions
|
2011-06-28 01:04:44 +02:00
|
|
|
- attach should take a pane and select it as well as attaching
|
2011-08-15 11:01:23 +02:00
|
|
|
- panes should have names like windows
|
2011-08-16 11:58:49 +02:00
|
|
|
- command-prompt doesn't work if made read-only. why?
|
2011-09-23 14:34:31 +02:00
|
|
|
- option to quote format eg #{session_name:quoted}
|
2011-10-02 08:33:32 +02:00
|
|
|
- formats need conditions for >0 (for #P)
|
2011-10-02 08:44:16 +02:00
|
|
|
- fetch full command line on !Linux, and add option to strip prefixes
|
|
|
|
such as "sh " "/bin/sh " etc etc
|
2011-10-28 00:43:02 +02:00
|
|
|
- synchronize-windows option
|
2011-11-16 00:12:28 +01:00
|
|
|
- append to buffer in copy mode
|
2012-02-21 09:56:18 +01:00
|
|
|
- way to paste w/o trailing whitespace
|
2012-03-12 14:58:11 +01:00
|
|
|
- flag to switch-client to switch all clients
|
2012-03-16 08:37:19 +01:00
|
|
|
- history of layouts and undo/redo flags to selectl
|
|
|
|
- way to tag a layout as a number/name
|
2012-03-20 11:24:12 +01:00
|
|
|
- optimize pane redraws, 20120318184853.GK10965@yelena.nicm.ath.cx
|
2012-04-01 10:39:19 +02:00
|
|
|
- support multibyte key strings
|
2012-05-10 08:04:31 +02:00
|
|
|
- allow commands to be executed when certaing patterns in a screen
|
|
|
|
are clicked on with the mouse
|
2012-07-09 22:46:41 +02:00
|
|
|
- flag to make next/previous commands skip a window
|
2012-07-11 11:28:11 +02:00
|
|
|
- way to do tmux command/run-shell from mode keys
|
|
|
|
- send command to all windows
|
2012-08-12 20:56:25 +02:00
|
|
|
- choose-pane command
|
2012-10-04 23:45:22 +02:00
|
|
|
- Augment choose-tree to do this? TA to investigate.
|
|
|
|
- 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.
|
2012-10-23 19:47:52 +02:00
|
|
|
- add -c for new-session like new-window
|
2013-02-09 15:52:11 +01:00
|
|
|
- flag to choose-* for sort order (eg sort windows/sessions/clients by last
|
|
|
|
used time) - perhaps using formats (but what about numeric sort)?
|
2013-02-09 17:21:20 +01:00
|
|
|
- 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
|
2013-02-21 17:43:04 +01:00
|
|
|
- maybe keep last layout + size around and if size reverts just put it back
|
|
|
|
- way to set hints/limits about pane size for resizing
|
2013-02-23 16:43:13 +01:00
|
|
|
- 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
|
2012-10-05 00:57:31 +02:00
|
|
|
|
|
|
|
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??
|
|
|
|
- if-shell/run-shell should block further command execution in the same command
|
2011-05-22 22:48:57 +02:00
|
|
|
* 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!
|