summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 7aec002a1dacad3570dabf9433a5520f97a1f34c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
- window creation/idle time
- better errors when creating new windows/sessions (how?)
- implicitly add exec to the commands for new windows (switch to disable it)?
- it would be nice to have multichar commands eg C-b K K
- commands:
 	extend list-clients to list clients attached to a session (-a for all?)
	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 (need window creation/use times)
- lift SHRT_MAX limits for history?
- flags to centre screen in window
- better terminal emulation
- activity/bell should be per-window not per-link? what if it is cur win in
  session not being watched?
- next prev word etc in command prompt
- many more info() displays for various things
- use a better termcap internally instead of screen, perhaps xterm
- fix rxvt cursor fg issue (text under cursor can have non-white fg)
- 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?
- set-option should be set-session-option and should be overall global options
      also quiet, utf8 and maybe other flags?
  -g is a bit unexpected in conf file
- clear window title on exit
- the output code (tty.c) could do with optimisation depending on term
  capabilities
- 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
- attach should have a flag to create session if it doesn't exist
- 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
- get it passing all the vttest tests that don't require resizing the terminal
- esc seq to set window name and title should be documented, and name variant
  should clear automatic-rename
- way to set socket path from config file
- XXX once env stuff is in, default-path and VISUAL/EDITOR should be picked up
  when session is started
- what about utmp etc? can tmux update it like screen? setgid?
- 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??
- tidy up and prioritise todo list ;-)
- neww and attach can create a session if none exists?
       would work fine with config file since
- a way for force-width/height to apply to only one pane (how?)
- command to list what is actually running in each window with command line,
  pid (need some adaption of the osdep code)
- support for bce
- it would be nice if the start/end line keys in copy mode were aware of
  wrapped lines
- 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
- handle resize better in copy mode
- way to copy stuff that is off screen due to resize
- commands should be able to succeed or fail and have || or && for command
  lists
- support the mouse wheel to scroll through history
- some way to KEEP a command running continually and just use its LAST line of
  output
- bind commands to mouse buttons
- UTF-8 to a non-UTF-8 terminal should not be able to balls up
  the terminal - www/ruby-addressable; make regress
- copy mode needs a tidy/cleanup
- ability to save history (to buffer?)
- 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
- UTF-8 should be a pointer into a combined string buffer
- check irssi (term_charset) works with UTF-8
- support esc-esc to quit in modes
- fix ctrl+F1-F4 output. to what?
- look into xterm clearing its selection when scrolling etc
- better utf8 support:
  	 window names
	 prompt input
	 message display
	 copy and paste cursor and wide characters
	 ...?
- session history for client and last-session command
- option to change status line colour when current window is in a mode?
- option to move copy mode indicator into status line
- list-buffer/show-buffer should display UTF-8
- selection behaviour closer to vi in vi mode
- live update: server started with -U connects to server, requests sessions and
  windows, receives fds
- convert status line history to be server global (anything else?)
- command to show a tree of sessions-windows-panes (active marked with *)
- 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
- -h option to capture-pane to capture the history as well
- bells should be passed between sessions with visual-bell etc
- use screen-256color when started on 256 colour terminal??
- if-shell/run-shell should block further command execution in the same command
  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)
- allow buffer to be specified when copying in copy mode
- multiline status line
- flag for absolute pane size to resize-pane
- sanity check input to socket
- select-buffer command
- support title stack, both internally and externally
	http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1149299+0+archive/2010/freebsd-questions/20100207.freebsd-questions
- copy buffers should be global, limit can be server option, nuke copy-buffer
  command
- command to show status line information briefly when it is off
- some way to pad # stuff with spaces, #!2T maybe
- FreeBSD console problems
- a binding to "scroll down and exit at bottom" copy mode
- some way to pass keystrokes in copy mode through to underlying window
- 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
- some way to create transient sessions which die when disconnected (option?)

For 1.4 (not in order):

3 why are alerts per-winlink? try per window?
4 audit of escape sequence support vs xterm
5 support binding keys to mouse (mouse-select-pane -> mouse-keys or something,
  mouse click == select-pane -t %%, mouse scroll up == copy-mode)
6 rectangle copy: when selecting leftward, cursor should be inside block per
  emacs key to rotate corner at which cursor is
7 last-pane command ***
9 something for -t "last window in session" so a session can be used as a stack
10 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
11 documentation improvements - rlpowell's tutorial
                              - build instructions
12 better configure? with-libevent
14 bind commands to key sequences?
16 monitor, bell etc should monitor /all/ panes in the window not just one
18 a history of commands that can be reversed (reverse member of each command, and a buffer)
19 info() when changing to same window
20 don't pass UTF-8 through vis for titles
21 clearing screen should push lines into history
...