summaryrefslogtreecommitdiffstats
path: root/TODO
blob: a65688f985f374dfa5420fbda7951d24bb6953a7 (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
- command bits and pieces:
	* use "--" to mark start of command w/ neww etc to avoid quoting
	* why doesn't command-prompt work if made read-only?
	* allow multiple targets: fnmatch for -t/-c, for example detach all
	  clients with -t*
	* add -c for new-session like new-window
	* attach should take a pane and select it as well as attaching
	* ' and " should be parsed the same (eg "\e" vs '\e') in config
	  and command prompt
	* last-pane across sessions
	* exact match operator for targets (or break the substring match
	  and require eg x* instead of just x)

- make command sequences more usable
	* don't require space after ;
	* options for error handling: && and ||?

- options bits and pieces:
	* set-remain-on-exit is a complete hack
	* way to set socket path from config file
	* -fg/-bg/-attr is crap - better just foo-style options which accept
	  fg=,bg=,bright and so on like #[]

- format improvements:
	* option to quote format (#{session_name:quoted})
	* formats need conditions for >0 (for #P)
	* some way to pad # stuff with spaces, #!2T maybe
	* status stuff is redundant with formats

- choose mode improvements:
	* choose-pane command (augment choose-tree to do this?)
	* choose-mode and copy-mode are very similar, make choose-mode a subset?
	* flag to choose-* for sort order
	* choose mode would be better per client than per window
	* two choices (first one then second, for swap-pane and join-pane)

- improve monitor-*:
	* straighten out rules for multiple clients
	* think about what happens across sessions
	* monitor changes within a region
	* perhaps monitor /all/ panes in the window not just one

- panning over window (window larger than visible)

- link panes into multiple windows

- improve mouse support:
	* bind commands to mouse in different areas? 
	* more fine-grained options
	* commands executed when clicking on a pattern (URL)

- hooks!

- warts on current naming:
	* display-time but message-fg/bg/attr
	* list-* vs show-*
	* server-info
	* split-window -> split-pane??

- way to keep a job running just read its last line of output for #()

- better UTF-8 support:
	* #22T can split in the middle of UTF-8 characters!
	* window names and titles
	* message display
	* prompt input
	* multibyte key input

- live update: server started with -U connects to server, requests sessions and
  windows, receives file descriptors

- there are inconsistencies in what we get from old shell and what comes from
  config for new sessions and windows

- multiline status line?

- support title stack, both internally and externally (restore on detach)
	http://docs.freebsd.org/cgi/getmsg.cgi?fetch=1149299+0+archive/2010/freebsd-questions/20100207.freebsd-questions

- last window update time and format for it

- 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

- copy/paste improvements:
	* case insensitive searching
	* incremental searching
	* append to buffer
	* paste w/o trailing whitespace
	* named buffers and allow gaps in the stack
	* command to toggle selection not to move it in copy-mode

- 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)

- way to tag a layout as a number/name

- optimize pane redraws, 20120318184853.GK10965@yelena.nicm.ath.cx

- 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

- use a better termcap internally instead of screen, perhaps xterm

- 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

- send arrow key sequences for mouse scroll wheel when in alternate screen

- the way pane, window, session destroy is handled is too complicated and the
  distinction between session.c, window.c and server-fn.c functions is not
  clear. could we just have kill_pane(), kill_window(), unlink_window(),
  kill_session() that fix up all data structures (flagging sessions as dead)
  and return a value to say whether clients need to be checked for dead
  sessions? sort of like session_detach now but more so. or some other scheme
  to make it simpler and clearer? also would be nice to remove/rename
  server-fn.c.