| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
| |
sent to stdin before it is needed, which can be inconvenient (eg pasting
commands). Instead, start with stdin disabled and reuse MSG_STDIN from
server->client to mean that stdin should be enabled. Based on a diff
from Chris Johnsen.
|
|
|
|
|
| |
xfree is not particularly helpful, remove it. From Thomas Adam.
|
|
|
|
|
|
|
|
|
| |
Add a skeleton mode to tmux (called "control mode") that let's tmux
commands be sent and output received on stdout. This can be used to
integrate with other terminal emulators and should allow some other
things to be made simpler later. More to come so doesn't do much yet and
deliberately not documented.
|
|
|
|
|
| |
Add a helper function to send ready message.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of passing stdin/stdout/stderr file descriptors over imsg and
handling them in the server, handle them in the client and pass buffers
over imsg. This is much tidier for some upcoming changes and the
performance hit isn't critical.
The tty fd is still passed to the server as before.
This bumps the tmux protocol version so new clients and old servers are
incompatible.
|
|
|
|
|
|
|
| |
Add a flag to move-window to renumber the windows in a session (closing
any gaps) and add an option to do this automatically each time a window
is killed. From Thomas Adam.
|
|
|
|
|
|
| |
Add notify hooks for various events, the functions are currently empty
stubs but will be filled in for control mode later. From George Nachman.
|
|
|
|
|
|
| |
Check event_initialized before event_del if event may not have been set
up; libevent2 complains about this. Reported by Moriyoshi Koizumi.
|
|
|
|
|
|
|
| |
Call bufferevent_free before closing file descriptor associated with it
or bugs in $EventMechanism on $OtherOS makes libevent get it's knickers
in a twist. From Dylan Alex Simon.
|
|
|
|
|
|
| |
Support for \e[3J to clear the history. Also send the corresponding
terminfo code (E3) before locking.
|
|
|
|
|
|
| |
Mark dead panes with some text saying they are dead, suggested by and
with help from Randy Stauner.
|
| |
|
|
|
|
|
| |
Set $TMUX without the session when background jobs are run.
|
|
|
|
|
|
|
|
|
| |
Don't reset the activity timer for unattached sessions every second,
this screws up the choice of most-recently-used. Instead, break the time
update into a little function and do it when the session is attached.
Pointed out by joshe@.
|
|
|
|
|
|
| |
server_kill_window can modify the RB tree so don't use RB_FOREACH, fixes
crash seen by Dan Harnett.
|
|
|
|
|
|
|
|
|
|
|
| |
Store sessions in an RB tree by name rather than a list, this is tidier
and allows them to easily be shown sorted in various lists
(list-sessions/choose-sessions).
Keep a session index which is used in a couple of places internally but
make it an ever-increasing number rather than filling in gaps with new
sessions.
|
|
|
|
|
| |
Use pointer rather than index for the client's last session.
|
|
|
|
|
| |
a key binding (L) to move a client back to its last session.
|
|
|
|
|
|
| |
Set cause when failing due to linking a window to itself, from Martin
Pieuchot.
|
|
|
|
|
|
| |
Skip NULL entries in the sessions list when choosing the next session,
from Simon Olofsson.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two new options:
- server option "exit-unattached" makes the server exit when no clients
are attached, even if sessions are present;
- session option "destroy-unattached" destroys a session once no clients
are attached to it.
These are useful for preventing tmux remaining in the background where
it is undesirable and when using tmux as a login shell to keep a limit
on new sessions.
|
|
|
|
|
|
| |
Treat trying to link or move to the same window as an error to avoid
removing it accidentally.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When changing so that the client passes its stdout and stderr as well as
stdin up to the server, I forgot one essential point - the tmux server
could now be both the producer and consumer. This happens when tmux is
run inside tmux, as well as when piping tmux commands together.
So, using stdio(3) was a bad idea - if sufficient data was written, this
could block in write(2). When that happened and the server was both
producer and consumer, it deadlocks.
Change to use libevent bufferevents for the client stdin, stdout and
stderr instead. This is trivial enough for output but requires a
callback mechanism to trigger when stdin is finished.
This relies on the underlying polling mechanism for libevent to work
with whatever devices to which the user could redirect stdin, stdout or
stderr, hence the change to use poll(2) over kqueue(2) for tmux.
|
|
|
|
|
|
|
| |
New option, detach-on-destroy, to set what happens to a client when the session
it is attached to is destroyed. If on (the default), it is detached; if off, it
is switched to the most recently active session.
|
|
|
|
|
| |
Use server_destroy_session() for kill-session.
|
|
|
|
|
|
| |
Having a list of winlinks->alerts for each session is stupid, just store
the alert flags directly in the winlink itself.
|
|
|
|
|
|
|
|
| |
If remain-on-exit is set, both the error callback and a SIGCHLD could
destroy the same pane (because the first one doesn't remove it from the
list of panes), causing the pane bufferevent to be freed twice. So don't
free it if the fd has already been set to -1, from Romain Francoise.
|
| |
|
| |
|
|
|
|
|
|
| |
When a window is destroyed, remove all links to it from each session rather
than just the first. Reported by Robin Lee Powell.
|
|
|
|
|
|
| |
Options to set the colour of the pane borders, with different colours for the
active pane.
|
|
|
|
|
|
| |
Fix a couple of problems with grouped sessions reported by danh: redraw
properly and choose the correct last window after a window is killed.
|
|
|
|
|
|
|
| |
Massive spaces->tabs and trailing whitespace cleanup, hopefully for the last
time now I've configured emacs to make them displayed in really annoying
colours...
|
|
|
|
|
|
| |
Remove a couple of unused arguments where possible, and add /* ARGSUSED */ to
the rest to reduce lint output.
|
|
|
|
|
| |
Destroy panes immediately rather than checking them all every loop.
|
|
|
|
|
| |
Use timeout events for the identify and message timers.
|
|
|
|
|
|
| |
Don't reenlist the client imsg event every loop, instead have a small function
to it and call it after the event triggers or after a imsg is added.
|
|
|
|
|
|
|
|
|
| |
Set the current window pointer to NULL when killing a winlink that is to be
replaced with link-window -k. This prevents it being pushed onto the last
window stack and causing a use-after-free.
Only took me an hour to find this :-/...
|
|
|
|
|
|
|
|
|
|
| |
Add "grouped sessions" which have independent name, options, current window and
so on but where the linked windows are synchronized (ie creating, killing
windows and so on are mirrored between the sessions). A grouped session may be
created by passing -t to new-session.
Had this around for a while, tested by a couple of people.
|
|
|
|
|
|
| |
Check for already locked/suspended clients in server_lock_client rather than
its callers.
|
|
|
|
|
|
| |
New lock-client and lock-session commands to lock an individual client or all
clients attached to a session respectively.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the internal tmux locking and instead detach each client and run the
command specified by a new option "lock-command" (by default "lock -np") in
each client.
This means each terminal has to be unlocked individually but simplifies the
code and allows the system password to be used to unlock.
Note that the set-password command is gone, so it will need to be removed from
configuration files, and the -U command line flag has been removed.
This is the third protocol version change so again it is best to stop the tmux
server before upgrading.
|
|
|
|
|
|
| |
Move some common and untidy code for window link/unlink into generic functions
instead of duplicating it in move/link window..
|
|
|
|
|
| |
Regularise some fatal messages.
|
|
|
|
|
| |
Tidy some common code for destroying sessions into a new function.
|
|
|
|
|
|
|
|
| |
Only redraw all clients once when the backoff timer expires rather than every
second all the time.
Reported by Simon Nicolussi.
|
|
|
|
|
|
| |
308.
- While there, remove some duplicate code from the compat header file.
|
|
|
|
|
|
| |
When incorrect passwords are entered, behave similarly to login(1) and backoff
for a bit. Based on a diff from martynas@.
|
|
|
|
|
|
|
| |
Use "Password:" with no space for password prompts and don't display a *s for
the password, like pretty much everything else. From martynas@ with minor
tweaks by me.
|
|
|
|
|
|
|
| |
Add a new display-panes command, with two options (display-panes-colour and
display-panes-time), which displays a visual indication of the number of each
pane.
|