| Commit message (Collapse) | Author | Age |
... | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|
|
|
|
|
|
| |
Instead of bailing out on the first configuration file error, carry on,
collecting all the errors, then start with the active window in more mode
displaying them.
|
|
|
|
|
| |
Ignore SIGHUP as well.
|
|
|
|
|
|
|
| |
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...
|
|
|
|
|
|
| |
Close the pane if the process died due to a signal, not just if it exited
normally.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Free the pane bufferevent when the fd is closed (the signal could come before
the error callback).
|
|
|
|
|
|
| |
Only need to chmod +x or -x the socket when a client is created, lost or
attached, rather than every event loop.
|
| |
|
|
|
|
|
| |
EVLOOP_ONCE takes care of the wakeup, so no need to call event_loopexit(NULL).
|
|
|
|
|
|
| |
Now all timers are events, there is no longer any need to wake up every 50 ms -
only wake up when an event happens.
|
|
|
|
|
|
| |
Move status timer check into the global once-per-second timer, this could maybe
be done better but one every second is better than once every 50 ms.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Tell the client to exit on configuration file error.
|
|
|
|
|
|
|
|
| |
Convert the window pane (pty master side) fd over to use a bufferevent.
The evbuffer API is very similar to the existing tmux buffer API so this was
remarkably painless. Not many possible ways to do it, I suppose.
|