| Commit message (Collapse) | Author | Age |
... | |
| |
| |
| |
| |
| | |
display-panes-time), which displays a visual indication of the number of each
pane.
|
| |
| |
| |
| | |
been called and it may end up doing close(0). From Kalle Olavi Niemitalo.
|
| |
| |
| |
| |
| | |
command rather than with no context. This makes things like attach work from a
file.
|
| | |
|
| |
| |
| |
| |
| | |
a lot more often than actually finding one, so instead of getting the option
for every check, get it for every dead window found.
|
| |
| |
| |
| | |
explaining why.
|
| |
| |
| |
| |
| |
| | |
ends up as fd 0 (likely if the server is started with "tmux start").
Also add some extra debugging messages to server.c.
|
| |
| |
| |
| | |
tty struct.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
client-server protocol more resilient and make the protocol versioning work
properly. In future, the only things requiring a protocol version bump will be
changes in the message structs, and (when both client and server have this
change) mixing different versions should nicely report an error message.
As a side effect this also makes the code tidier, fixes a problem with the way
errors reported during server startup were handled, and supports fd passing
(which will be used in future).
Looked over by eric@, thanks.
Please note that mixing a client with this change with an older server or vice
versa may cause tmux to crash or hang - tmux should be completely exited before
upgrading.
|
| |
| |
| |
| |
| |
| | |
region before poll(2). This reduces (but does not eliminate) the chance of the
attributes not being normal if tmux is disconnected without warning (ssh ~.,
reboot from inside, etc).
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
cause the client to hang. Instead, send the error message, then mark the client
as bad and start a normal shutdown so the server exits once the error is
written.
This also allows some code duplicating daemon(3) to be trimmed and logging to
begin earlier.
Prompted by Theo noticing the behaviour on error wasn't documented.
|
| |
| |
| |
| |
| |
| | |
a named tree on start and use that for lookups. Also add command to string
translation tables and modify list-keys to show the the mode key bindings (new
-t argument).
|
| |
| |
| |
| |
| | |
new -n flag to bind-key and unbind-key sets or removes these bindings, and
list-key shows them in []s.
|
| |
| |
| |
| | |
tweak a redundant expression in window_pane_set_mode.
|
| |
| |
| |
| | |
locked. From Tom Doherty.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Each window now has a tree of layout cells associated with it. In this tree,
each node is either a horizontal or vertical cell containing a list of other
cells running from left-to-right or top-to-bottom, or a leaf cell which is
associated with a pane.
The major functional changes are:
- panes may now be split arbitrarily both horizontally (splitw -h, C-b %) and
vertically (splitw -v, C-b ");
- panes may be resized both horizontally and vertically (resizep -L/-R/-U/-D,
bound to C-b left/right/up/down and C-b M-left/right/up/down);
- layouts are now applied and then may be modified by resizing or splitting
panes, rather than being fixed and reapplied when the window is resized or
panes are added;
- manual-vertical layout is no longer necessary, and active-only layout is gone
(but may return in future);
- the main-pane layouts now reduce the size of the main pane to fit all panes
if possible.
Thanks to all who tested.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
these are enabled (and the monitor-activity, bell-actio and monitor-content
options are configurated appropriately), when activity, a bell, or content is
detected, a message is shown.
Also tidy up the bell/activity/content code in server.c slightly and fix a
couple of errors.
|
| |
| |
| |
| |
| |
| | |
redraw it as to draw the entire screen, just skip all lines but the last.
This makes horizontal split redraw properly when the status line is off.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
frees the command list bound to the key while it is still being executed,
leading to a use after free. To prevent this, create a dead keys list and defer
freeing replaced or removed key bindings until the main loop when the key
binding will have finished executing.
Found by Johan Friis when creating a key binding to reload his configuration
file.
|
| |
| |
| |
| | |
user-specified one.
|
| |
| |
| |
| |
| | |
clear. No functional change, getting this out of the way to make later options
changes easier.
|
| |
| |
| |
| | |
stdin/stdout/stderr active, so dup them to /dev/null.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
compatibility, *s are implicitly added at the start and end of the pattern.
Also display the line number and the entire line in the results, and lose the
nasty section_string function and the now empty util.c file.
Initially from Tiago Cunha.
|
| |
| |
| |
| |
| | |
broken sometime during the pane/layout changes. Reported/tested by Iain Morgan,
thanks.
|
|
|
|
|
|
|
| |
terminal to be switched between several different windows and programs
displayed on one terminal be detached from one terminal and moved to another.
ok deraadt pirofti
|
|
|
|
|
| |
xfree is not particularly helpful, remove it. From Thomas Adam.
|
|
|
|
|
|
| |
Stop accepting new clients for 1 second on EMFILE/ENFILE. Based on
ongoing fixes to other daemons by Theo.
|
|
|
|
|
|
|
| |
Use a lock file and flock() to serialize server start, avoids problems
when running a bunch of tmux from cron at the same time. Based on a diff
from Tim Ruehsen.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Date: 2011/03/27 21:27:26
Author: nicm
Branch: HEAD
Tag: (none)
Log:
Give each pane created in a tmux server a unique id (starting from 0),
put it in the TMUX_PANE environment variable and accept it as a
target. Suggested by and with testing and tweaks from Ben Boeckel.
|
|
|
|
|
| |
Use LIST_* not SLIST_*.
|
|
|
|
|
|
|
| |
Move all calls to fcntl(...O_NONBLOCK) into a function and clear the
flag on the stdio file descriptors before closing them (fixes things
like "tmux ls && cat").
|
|
|
|
|
|
|
|
|
| |
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@.
|
|
|
|
|
| |
As a consequence buffer-limit is now a server option.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
Merge the before and after attach client code into one in client.c
(instead of two in tmux.c and client.c).
|
|
|
|
|
|
| |
Trying to set FD_CLOEXEC on every fd is a lost cause, just use
closefrom() before exec.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Modify the permissions on the socket when adding or removing +x to show
attached sessions, rather than replacing them.
|
|
|
|
|
|
|
| |
Do not call event_del() for signals after fork(), just use sigaction()
directly instead - calling libevent functions after fork() w/o
event_reinit() is a bad idea, even if in this case it was harmless.
|
|
|
|
|
|
|
| |
Give tmux sockets (but not the containing folder) group
permissions. This allows hardlinks to the sockets to be used more
easily.
|
| |
|
|
|
|
|
|
|
| |
Make signal handler setup/teardown two common functions instead of six,
and reset SIGCHLD after fork to fix problems with some shells. From
Romain Francoise.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Use the array.h code for the causes list.
|