summaryrefslogtreecommitdiffstats
path: root/CHANGES
blob: 6185202c06efe4b00bfda31b2ab2ae1b5617ff81 (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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
02 June 2008

* New command, start-server (alias "start"), to start the tmux server and do
  nothing else. This is good if you have a configuration file which creates
  windows or sessions (like me): in that case, starting the server the first
  time tmux new is run is bad since it creates a new session and window (as
  it is supposed to - starting the server is a side-effect).

  Instead, I have a little script which does the equivalent of:

  	tmux has -s0 2>/dev/null || tmux start
  	tmux attach -d -s0

  And I use it to start the server if necessary and attach to my primary
  session.
* Basic configuration file in ~/.tmux.conf or specified with -f. This is file
  contains a set of tmux commands that are run the first time the server is
  started. The configuration commands are executed before any others, so
  if you have a configuration file that contains:

	new -d
	neww -s0

  And you do the following without an existing server running:

	tmux new

  You will end up with two sessions, session 0 with two windows (created by
  the configuration file) and your client attached to session 1 with one
  window (created by the command-line command). I'm not completely happy with
  this, it seems a little non-obvious, but I haven't yet decided what to do
  about it.

  There is no environment variable handling or other special stuff yet.

  In the future, it might be nice to be able to have per-session configuration
  settings, probably by having conditionals in the file (so you could, for
  example, have commands to define a particular window layout that would only
  be invoked if you called tmux new -smysession and mysession did not already
  exist).
* BIG CHANGE: -s and -c to specify session name and client name are now passed
  after the command rather than before it. So, for example:

	tmux -s0 neww

  Becomes:

	tmux neww -s0

  This is to allow them to be used in the (forthcoming) configuration file
  THIS WILL BREAK ANY CURRENT SCRIPTS OR ALIASES USING -s OR -c.

01 June 2008

* Bug fix: don't die if -k passed to link-window and the destination doesn't
  exist.
* New command, send-keys, will send a set of keys to a window.

31 May 2008

* Fix so tmux doesn't hang if the initial window fails for some reason. This
  was highlighted by problems on Darwin, thanks to Elias Pipping for the report
  and access to a test account. (tmux still won't work on Darwin since its
  poll(2) is broken.)

02 January 2008

* Don't attempt to reset the tty on exit if it has been closed externally.

06 December 2007

* Restore checks for required termcap entries and add a few more obvious
  emulations.
* Another major reorganisation, this time of screen handling. A new set of
  functions, screen_write_*, are now used to write to a screen and a tty
  simultaneously. These are used by the input parser to update the base
  window screen and also by the different modes which now interpose their own
  screen.

30 November 2007

* Support \ek...\e\ to set window name.

27 November 2007

* Enable/disable mouse when asked, if terminal claims to support it. Mouse
  sequences are just passed through unaltered for the moment.
* Big internal reorganisation. Rather than leaving control of the tty solely in
  the client and piping all data through a socket to it, change so that the
  server opens the tty again and reads and writes to it directly. This avoids
  a lot of buffering and copying. Also reorganise the redrawing stuff so that
  everything goes through screen_draw_* - this makes the code simpler, but
  still needs broken up more, and all the ways of writing to screens should be
  more consistent.

26 November 2007

* Rather than shifting up one line at a time once the history is full,
  shift by 10% of the history each time. This is faster.
* Add ^A and ^E to copy mode to move to start-of-line/end-of-line.

24 November 2007

* Support for alt charset mode (VT100 graphics characters).

23 November 2007

* Mostly complete copy & paste. Copy mode entered with C-b [ (copy-mode
  command). In copy mode, arrow keys/page up/page down/hjkl/C-u/C-f navigate,
  space or C-space starts selection, and enter or C-w copies and (important!)
  exits copy mode. C-b ] (paste-buffer) pastes into current window. No
  extra utility keys (bol/eol/clear selection/etc), only one single buffer,
  and no buffer manipulation commands (clear/view/etc) yet. The code is also
  fugly :-(.
* history-limit option to set maximum history. Does not apply retroactively to
  existing windows! Lines take up a variable amount of space, but a reasonable
  guess for an 80-column terminal is 250 KB per 1000 lines (of history used,
  an empty history takes no space).

21 November 2007

* Create every line as zero length and only expand it as data is written,
  rather than creating at full size immediately.
* Make command output (eg list-keys) go to a scrollable window similar to
  scroll mode.
* Redo screen redrawing so it is a) readable b) split into utility functions
  that can be used outside screen.c. Use these to make scroll mode only
  redraw what it has to which gets rid of irritating flickering status box and
  makes it much faster.
* Full line width memory and horizontal scrolling in history.
* Initial support for scroll history. = to enter scrolling mode, and then
  vi keys or up/down/pgup/pgdown to navigate. Q to exit. No horizontal history
  yet (need per-line sizes) and a few kinks to be worked out (resizing while in
  history mode will probably cause trouble).

20 November 2007

* Fix format string error with "must specify a client" message. Also
  sprinkle some printflike tags.
* tmux 0.1 released.

17 November 2007

* (nicm) Add -k option to link-window to kill target window if it exists.

16 November 2007

* (nicm) Split in-client display into two columns. This is a hack but not a lot
  more so than that bit is already and it helps with lots of keys.
* (nicm) switch-client command to switch client between different sessions. This
  is pretty cool:

	$ tmux bind q switch 0
	$ tmux bind w switch 1

  Then you can switch between sessions 0 and 1 with a key :-). 
* (nicm) Accept "-c client-tty" on command line to allow client manipulation
  commands, and change detach-/refresh-session to detach-/refresh-client (this
  loses the -a behaviour, but at some point -session versions may return, and
  -c will allow fnmatch(3)).
* (nicm) List available commands on ambiguous command.

12 November 2007

* (nicm) If the terminal supports default colours (AX present), force black 
  background and white foreground to default. This is useful on transparent
  *terms for programs which don't do it themselves (like most(1)).
* (nicm) Fill in the rest of the man page.
* (nicm) kill-session command.

09 November 2007

* (nicm) C-space is now "^ " not "^@".
* (nicm) Support tab (\011).
* (nicm) Initial man page outline.
* (nicm) -V to show version.
* (nicm) rename-session command.

08 November 2007

* (nicm) Check for required terminal capabilities on start.

31 October 2007

* (nicm) Linux port.

30 October 2007

* (nicm) swap-window command. Same as link-window but swaps windows.

26 October 2007

* (nicm) Saving scroll region on \e7 causes problems with ncmpc so I guess
  it is not required.
* (nicm) unlink-window command.
* (nicm) link-window command to link an existing window into another session
  (or another index in the same session). Syntax:

	tmux -s dstname link-window [-i dstidx] srcname srcidx

* (nicm) Redo window data structures. The global array remains, but each per-
  session list is now a RB tree of winlink structures. This disassociates the
  window index from the array size (allowing arbitrary indexes) which still
  allowing windows to have multiple indexes.

25 October 2007

* (nicm) has-session command: checks if session exists.

24 October 2007

* (nicm) Support for \e6n to request cursor position. resize(1) now works.
* (nicm) Support for \e7, \e8 save/restore cursor and attribute sequences.
  Currently don't save mode (probably should). Also change some cases where
  out-of-bound values are ignored to limit them to within range (there are
  others than need to be checked too).

23 October 2007

* (nicm) Lift limit on session name passed with -s.
* (nicm) Show size in session/window lists.
* (nicm) Pass tty up to server when client identifies and add a list-clients
  command to list connected clients.

20 October 2007

* (nicm) Add default-command option and change default to be $SHELL rather than
  $SHELL -l. Also try to read shell from passwd db if $SHELL isn't present.

19 October 2007

* (nicm) -n on new-session is now -s, and -n is now the initial window name.
  This was documented but not implemented :-/.
* (nicm) kill-window command, bound to & by default (because it should be hard
  to hit accidently).
* (nicm) bell-style option with three choices: "none" completely ignore bell;
  "any" pass through a bell in any window to current; "current" ignore bells
  except in current window. This applies only to the bell terminal signal,
  the status bar always reflects any bells.
* (nicm) Refresh session command.

12 October 2007

* (nicm) Add a warning if $TMUX exists on new/attach.
* (nicm) send-prefix command. Bound to C-b by default.
* (nicm) set status, status-fg, status-bg commands. fg and bg are as a number
  from 0 to 8 or a string ("red", "blue", etc). status may be 1/0, on/off,
  yes/no.
* (nicm) Make status line mark window in yellow on bell.

04 October 2007

* (nicm) -d option to attach to detach all other clients on the same session.
* (nicm) Partial resizing support. Still buggy. A C-b S and back sometimes fixes
  it when it goes wonky.
* (mxey) Added my tmux start script as an example (examples/start-tmux.sh).
* (mxey) New sessions can now be given a command for their first window.
* (mxey) Fixed usage statement for new-window.
* (nicm) attach-session (can't believe I forgot it until now!) and list-windows
  commands.
* (nicm) rename-window and select-window commands.
* (nicm) set-option command (alias set): "tmux set-option prefix ^A".
* (nicm) Key binding and unbinding is back.

03 October 2007

* (nicm) {new,next,last,previous}-window.
* (nicm) Rewrite command handling so commands are much more generic and the
  same commands are used for command line and keys (although most will probably
  need to check how they are called). Currently incomplete (only new/detach/ls
  implemented). Change: -s is now passed before command again!
* (nicm) String number arguments. So you can do: tmux bind ^Q create "blah".
* (nicm) Key binding. tmux bind key command [argument] and tmux unbind key.
  Key names are in a table in key-string.c, plus A is A, ^A is ctrl-A.
  Possible commands are in cmd.c (look at cmd_bind_table).
* (nicm) Move command parsing into the client. Also rename some messages and
  tidy up a few bits. Lots more tidying up needed :-/.

02 October 2007

* (nicm) Redraw client status lines on rename.
* (nicm) Error on ambiguous command.

01 October 2007

* (nicm) Restore window title handling.
* (nicm) Simple uncustomisable status line with window list.

30 September 2007

* (nicm) Window info command for debugging, C-b I.

29 September 2007

* (nicm) Deleting/inserting lines should follow scrolling region. Fix.
* (nicm) Allow creation of detached sessions: "tmux new-session -d".
* (nicm) Permit error messages to be passed back for transient clients like 
  rename. Also make rename -i work.
* (nicm) Pass through bell in any window to current.

28 September 2007

* (nicm) Major rewrite of input parser:
	- Lose the old weirdness in favour of a state machine.
	- Merge in parsing from screen.c.
	- Split key parsing off into a separate file.
  This is step one towards hopefully allowing a status line. It requires
  that we output data as if the terminal had one line less than it really does -
  a serious problem when it comes to things like scrolling. This change 
  consolidates all the range checking and limiting together which should make
  it easier.
* (mxey) Added window remaming, like "tmux rename [-s session] [-i index] name"
    
27 September 2007

* Split "tmux list" into "tmux list-sessions" (ls) and "list-windows" (lsw).
* New command session selection:
	- if name is specified, look for it and use it if it exists, otherwise
	  error
	- if no name specified, try the current session from $TMUX
	- if $TMUX doesn't exist, and there is only one session, use it,
	  otherwise error

26 September 2007

* Add command aliases, so "ls" is an alias for "list".
* Rename some commands and alter syntax to take options after a la CVS. Also
  change some flags. So:

	tmux -s/socket -nabc new

  Becomes:
	
	tmux -S/socket new -sabc

* Major tidy and split of client/server code.

22 September 2007

* Window list command (C-b W). Started by Maximilian Gass, finished by me.

20 September 2007

* Specify meta via environment variable (META).
* Record last window and ^L key to switch to it. Largely from Maximilian Gass.
* Reset ignored signals in child after forkpty, makes ^C work.
* Wrap on next/previous. From Maximilian Gass.

19 September 2007

* Don't renumber windows on close.

28 August 2007

* Scrolling region (\e[r) support.

27 August 2007

* Change screen.c to work more logically and hopefully fix heap corruption.

09 July 2007

* Initial import to CVS. Basic functions are working, albeit with a couple of 
  showstopper memory bugs and many missing features. Detaching, reattaching,
  creating new sessions, listing sessions work acceptably for using with shells.
  Simple curses programs (top, systat, tetris) and more complicated ones (mutt,
  emacs) that don't require scrolling regions (ESC[r) mostly work fine
  (including mutt, emacs). No status bar yet and no key remapping or other
  customisation.

$Id$