| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
Call event_init() before loading the config file, since potentially it could
set up events.
|
|
|
|
|
| |
Switch jobs over to use a bufferevent.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Initial changes to move tmux to libevent.
This moves the client-side loops are pretty much fully over to event-based only
(tmux.c and client.c) but server-side (server.c and friends) treats libevent as
a sort of clever poll, waking up after every event to run various things.
Moving the server stuff over to bufferevents and timers and so on will come
later.
|
|
|
|
|
|
|
|
|
|
| |
Change session and client activity and creation time members to have more
meaningful names.
Also, remove the code to try and update the session activity time for the
command client when a command message is received as is pointless because it
des not have a session.
|
|
|
|
|
| |
Reorder slightly to tidy code.
|
|
|
|
|
| |
Move the poll registration functions into the server-*.c files.
|
|
|
|
|
| |
tabs are better; ok nicm
|
|
|
|
|
|
| |
Clear signal flags /before/ taking action and continue afterwards to reduce
chance of dropping signals. Pointed out by deraadt@.
|
|
|
|
|
|
|
|
|
|
|
| |
Split the server code handling clients, jobs and windows off into separate
files from server.c (merging server-msg.c into the client file) and rather than
iterating over each set after poll(), allow a callback to be specified when the
fd is added and just walk once over the returned pollfds calling each callback
where needed.
More to come, getting this in so it is tested.
|
|
|
|
|
|
| |
When a session is unattached, reset its activity timer to prevent it locking
instantly when reattached.
|
|
|
|
|
| |
Similarly add a tty_cursor_pane function to tidy up most of the calls.
|
|
|
|
|
| |
_absolute is redundant, just use tty_region.
|
|
|
|
|
|
| |
Cleanup: use two functions for region setting, one for absolute and one inside
pane.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a pipe-pane command to allow a pane to be piped to a shell command, for
example:
pipe-pane 'cat >~/out'
No arguments stops outputing and closes the pipe; the -o flag toggles a pipe
and on and off (useful for key bindings).
Suggested by espie@.
|