tmate/TODO

183 lines
9.3 KiB
Plaintext
Raw Normal View History

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)?
- bring back detach-session to detach all clients on a session?
- 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
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
- 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)
-- 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?
- 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)
- 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
- 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)
- 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
- 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.
- 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)
- 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
- 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
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!