summaryrefslogtreecommitdiffstats
path: root/server-fn.c
AgeCommit message (Collapse)Author
2012-09-03If stdin in the client is enable immediately, tmux will eat anythingNicholas Marriott
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.
2012-07-10xfree is not particularly helpful, remove it. From Thomas Adam.Nicholas Marriott
2012-06-18Add a skeleton mode to tmux (called "control mode") that let's tmuxNicholas Marriott
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.
2012-05-22Add a helper function to send ready message.Nicholas Marriott
2012-05-21Instead of passing stdin/stdout/stderr file descriptors over imsg andNicholas Marriott
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.
2012-04-29Add a flag to move-window to renumber the windows in a session (closingNicholas Marriott
any gaps) and add an option to do this automatically each time a window is killed. From Thomas Adam.
2012-03-17Add notify hooks for various events, the functions are currently emptyNicholas Marriott
stubs but will be filled in for control mode later. From George Nachman.
2012-03-17Check event_initialized before event_del if event may not have been setNicholas Marriott
up; libevent2 complains about this. Reported by Moriyoshi Koizumi.
2012-01-29Call bufferevent_free before closing file descriptor associated with itNicholas Marriott
or bugs in $EventMechanism on $OtherOS makes libevent get it's knickers in a twist. From Dylan Alex Simon.
2011-10-23Support for \e[3J to clear the history. Also send the correspondingNicholas Marriott
terminfo code (E3) before locking.
2011-09-05Mark dead panes with some text saying they are dead, suggested by andNicholas Marriott
with help from Randy Stauner.
2011-01-23Set $TMUX without the session when background jobs are run.Nicholas Marriott
2011-01-01Don't reset the activity timer for unattached sessions every second,Nicholas Marriott
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@.
2010-12-23server_kill_window can modify the RB tree so don't use RB_FOREACH, fixesNicholas Marriott
crash seen by Dan Harnett.
2010-12-21Store sessions in an RB tree by name rather than a list, this is tidierNicholas Marriott
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.
2010-12-20Use pointer rather than index for the client's last session.Nicholas Marriott
2010-12-11Track the last session for a client and add a flag to switch-client andNicholas Marriott
a key binding (L) to move a client back to its last session.
2010-10-09Set cause when failing due to linking a window to itself, from MartinNicholas Marriott
Pieuchot.
2010-10-05Skip NULL entries in the sessions list when choosing the next session,Nicholas Marriott
from Simon Olofsson.
2010-09-26Two new options:Nicholas Marriott
- 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.
2010-08-11Treat trying to link or move to the same window as an error to avoidNicholas Marriott
removing it accidentally.
2010-07-24When changing so that the client passes its stdout and stderr as well asNicholas Marriott
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.
2010-06-27New option, detach-on-destroy, to set what happens to a client when the sessionNicholas Marriott
it is attached to is destroyed. If on (the default), it is detached; if off, it is switched to the most recently active session.
2010-06-26Use server_destroy_session() for kill-session.Nicholas Marriott
2010-06-21Having a list of winlinks->alerts for each session is stupid, just storeNicholas Marriott
the alert flags directly in the winlink itself.
2010-04-17If remain-on-exit is set, both the error callback and a SIGCHLD couldNicholas Marriott
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.
2010-03-22Dead functions, lint.Nicholas Marriott
2010-01-23When a window is destroyed, remove all links to it from each session ratherNicholas Marriott
than just the first. Reported by Robin Lee Powell.
2010-01-03Options to set the colour of the pane borders, with different colours for theNicholas Marriott
active pane.
2009-12-22Fix a couple of problems with grouped sessions reported by danh: redrawNicholas Marriott
properly and choose the correct last window after a window is killed.
2009-12-03Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastNicholas Marriott
time now I've configured emacs to make them displayed in really annoying colours...
2009-11-26Remove a couple of unused arguments where possible, and add /* ARGSUSED */ toNicholas Marriott
the rest to reduce lint output.
2009-11-13Destroy panes immediately rather than checking them all every loop.Nicholas Marriott
2009-11-04Use timeout events for the identify and message timers.Nicholas Marriott
2009-11-04Don't reenlist the client imsg event every loop, instead have a small functionNicholas Marriott
to it and call it after the event triggers or after a imsg is added.
2009-10-11Set the current window pointer to NULL when killing a winlink that is to beNicholas Marriott
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 :-/...
2009-10-10Add "grouped sessions" which have independent name, options, current window andNicholas Marriott
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.
2009-10-04Check for already locked/suspended clients in server_lock_client rather thanNicholas Marriott
its callers.
2009-09-24New lock-client and lock-session commands to lock an individual client or allNicholas Marriott
clients attached to a session respectively.
2009-09-23Remove the internal tmux locking and instead detach each client and run theNicholas Marriott
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.
2009-09-20Move some common and untidy code for window link/unlink into generic functionsNicholas Marriott
instead of duplicating it in move/link window..
2009-09-20Regularise some fatal messages.Nicholas Marriott
2009-09-12Tidy some common code for destroying sessions into a new function.Nicholas Marriott
2009-09-05Only redraw all clients once when the backoff timer expires rather than everyNicholas Marriott
second all the time. Reported by Simon Nicolussi.
2009-09-02When incorrect passwords are entered, behave similarly to login(1) and backoffNicholas Marriott
for a bit. Based on a diff from martynas@.
2009-09-01Use "Password:" with no space for password prompts and don't display a *s forNicholas Marriott
the password, like pretty much everything else. From martynas@ with minor tweaks by me.
2009-08-31Add a new display-panes command, with two options (display-panes-colour andNicholas Marriott
display-panes-time), which displays a visual indication of the number of each pane.
2009-08-11Switch tmux to use imsg. This is the last major change to make theNicholas Marriott
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.
2009-08-08Infrastructure and commands to manage the environment for processes startedNicholas Marriott
within tmux. There is a global environment, copied from the external environment when the server is started and each sesssion has an (initially empty) session environment which overrides it. New commands set-environment and show-environment manipulate or display the environments. A new session option, update-environment, is a space-separated list of variables which are updated from the external environment into the session environment every time a new session is created - the default is DISPLAY.
2009-08-07If there is an error in the configuration file, don't just exit(1) as this canNicholas Marriott
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.