aboutsummaryrefslogtreecommitdiff
path: root/server-client.c
Commit message (Collapse)AuthorAge
...
| * Only select pane on click, not drag. From hsim at gmx.li.Nicholas Marriott2011-05-08
| |
| * Add a new option, mouse-resize-pane. When on, panes may be resized byNicholas Marriott2011-05-08
| | | | | | | | dragging their borders. From hsim at gmx.li.
| * Change window with mouse wheel over status line if mouse-select-windowNicholas Marriott2011-05-04
| | | | | | | | is on, from marcel partap.
| * Check if mouse-select-pane is ON not off when setting mouse flags,Nicholas Marriott2011-05-04
| | | | | | | | reported by oga.
| * When mode-mouse is on (it is off by default), automatically enter copyNicholas Marriott2011-04-19
| | | | | | | | | | | | mode when the mouse is dragged or the mouse wheel is used. Also exit copy mode when the mouse wheel is scrolled off the bottom. Discussed with and written by hsim at gmx dot li.
| * Add an option (mouse-select-window) which allows the mouse to be used byNicholas Marriott2011-04-18
| | | | | | | | clicking on the status line, written by hsim at gmx dot li.
| * Change -t on display-message to be target-pane for the #[A-Z]Nicholas Marriott2011-03-29
| | | | | | | | replacements and add -c as target-client.
| * Simplify the way jobs work and drop the persist type, so all jobs areNicholas Marriott2011-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fire-and-forget. Status jobs now managed with two trees of output (new and old), rather than storing the output in the jobs themselves. When the status line is processed any jobs which don't appear in the new tree are started and the output from the old tree displayed. When a job finishes it updates the new tree with its output and that is used for any subsequent redraws. When the status interval expires, the new tree is moved to the old so that all jobs are run again. This fixes the "#(echo %H:%M:%S)" problem which would lead to thousands of identical persistent jobs and high memory use (this can still be achieved by adding "sleep 30" but that is much less likely to happen by accident).
| * Only set a mouse mode for mouse-select-pane if none already set by theNicholas Marriott2011-01-15
| | | | | | | | mode (any will do).
| * Move all calls to fcntl(...O_NONBLOCK) into a function and clear theNicholas Marriott2011-01-08
| | | | | | | | | | flag on the stdio file descriptors before closing them (fixes things like "tmux ls && cat").
| * Support for UTF-8 mouse input (\033[1005h). This was added in xterm 262Nicholas Marriott2011-01-03
| | | | | | | | | | | | | | | | | | | | and supports larger terminals than the older way. If the new mouse-utf8 option is on, UTF-8 mouse input is enabled for all UTF-8 terminals. The option defaults to on if LANG etc are set in the same manner as the utf8 option. With help and based on code from hsim at gmx.li.
| * Don't reset the activity timer for unattached sessions every second,Nicholas Marriott2011-01-01
| | | | | | | | | | | | | | 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@.
| * Support all four of the xterm mouse modes. Based on a diff from hsim atNicholas Marriott2010-12-29
| | | | | | | | gmx.li.
| * Use pointer rather than index for the client's last session.Nicholas Marriott2010-12-20
| |
| * Track the last session for a client and add a flag to switch-client andNicholas Marriott2010-12-11
| | | | | | | | a key binding (L) to move a client back to its last session.
| * Make the prompt history global for all clients which is much more useful ↵Nicholas Marriott2010-12-11
| | | | | | | | than per-client history.
| * Trying to set FD_CLOEXEC on every fd is a lost cause, just useNicholas Marriott2010-10-16
| | | | | | | | closefrom() before exec.
| * Two new options:Nicholas Marriott2010-09-26
| | | | | | | | | | | | | | | | | | | | | | | | - 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.
| * Add missing prototype.Nicholas Marriott2010-08-31
| |
| * Do not need to dup() the tty fd sent from the client because it isNicholas Marriott2010-08-19
| | | | | | | | already dup()d again later. Fixes a leak seen by espie@.
| * Change the way backoff works. Instead of stopping reading from the ptyNicholas Marriott2010-08-11
| | | | | | | | | | | | | | | | | | | | when the client tty backs up too much, just stop updating the tty and only update the internal screen. Then when the tty recovers, force a redraw. This prevents a dodgy client from causing other clients to go into backoff while still allowing tmux to be responsive (locally) when seeing lots of output.
| * dup() the stdin fd so it isn't closed twice (once for stdin, once for tty).Nicholas Marriott2010-07-28
| |
| * When changing so that the client passes its stdout and stderr as well asNicholas Marriott2010-07-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * Send the \n to stdout with the message, not stderr... doh.Nicholas Marriott2010-07-19
| |
| * Return the command client return code with MSG_EXIT now that MSG_ERROR andNicholas Marriott2010-07-11
| | | | | | | | | | | | | | MSG_PRINT are unused. New clients should be compatible with old tmux servers but vice versa may print an error.
| * Send all three of stdin, stdout, stderr from the client to the server, so thatNicholas Marriott2010-06-28
| | | | | | | | | | | | | | | | commands can directly make use of them. This means that load-buffer and save-buffer can have "-" as the file to read from stdin or write to stdout. This is a protocol version bump so the tmux server will need to be restarted after upgrade (or an older client used).
| * Fix problems with window sizing seen by Raghavendra D Prabhu whenNicholas Marriott2010-06-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | starting tmux from .xinitrc. One of the very few things the server relies on the client for now is to pass through a message on SIGWINCH, but there is a condition where potentially a SIGWINCH may be lost during the transition from unattached (main.c) to attached (client.c). So trigger a size change immediately after the client installs its SIGWINCH handler. Also, when the terminal is resized, reset the scroll region and cursor position. Previously, we were clearing our saved idea of these, but in fact some terminals do not reset them on resize, so this caused problems during redraw. While here make a resize to the same size not cause a redraw and rename the tmux.out output log file to include the tmux PID.
| * Pass in the session, rather than the client, to window modes' key()Nicholas Marriott2010-05-23
| | | | | | | | | | | | | | | | | | function. We were only ever using the client to find the session anyway. This allows send-key to work properly for manipulating copy mode from outside tmux. From Micah Cowan.
| * Support attaching a client read-only with a new -r flag to the attach-sessionNicholas Marriott2010-02-06
| | | | | | | | command.
| * Change nested check to compare server socket path rather than just assumingNicholas Marriott2010-02-06
| | | | | | | | that if $TMUX is set it is nested. From Micah Cowan.
| * mouse-select-pane has to redraw the borders now too.Nicholas Marriott2010-01-08
| |
| * Options to set the colour of the pane borders, with different colours for theNicholas Marriott2010-01-03
| | | | | | | | active pane.
| * Add "server options" which are server-wide and not bound to a session orNicholas Marriott2009-12-10
| | | | | | | | | | | | | | window. Set and displayed with "set -s" and "show -s". Currently the only option is "quiet" (like command-line -q, allowing it to be set from .tmux.conf), but others will come along.
| * Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastNicholas Marriott2009-12-03
| | | | | | | | | | 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 */ toNicholas Marriott2009-11-26
| | | | | | | | the rest to reduce lint output.
| * Two new options, window-status-format and window-status-current-format, whichNicholas Marriott2009-11-19
| | | | | | | | | | | | | | | | allow the format of each window in the status line window list to be controlled using similar # sequences as status-left/right. This diff also moves part of the way towards UTF-8 support in window names but it isn't quite there yet.
| * Don't interpret #() for display-message, it usually doesn't make sense and mayNicholas Marriott2009-11-19
| | | | | | | | leak commands.
| * Add a per-client log of status line messages displayed while that clientNicholas Marriott2009-11-18
| | | | | | | | | | | | | | | | exists. A new message-limit session option sets the maximum number of entries and a command, show-messages, shows the log (bound to ~ by default). This (and prompt history) might be better as a single global log but until there are global options it is easier for them to be per client.
| * Tidy up and fix some types, prompted by lint via deraadt.Nicholas Marriott2009-11-13
| |
| * Only need to chmod +x or -x the socket when a client is created, lost orNicholas Marriott2009-11-11
| | | | | | | | attached, rather than every event loop.
| * Switch tty key input over to happen on a read event. This is a bit moreNicholas Marriott2009-11-05
| | | | | | | | | | | | | | | | | | | | complicated because of escape input, but in that case instead of processing a key immediately, schedule a timer and reprocess the bufer when it expires. This currently assumes that keys will be atomic (ie that if eg F1 is pressed the entire sequence is present in the buffer). This is usually but not always true, a change in the tree format so it can differentiate potential (partial) key sequences will happens soon and will allow this to be fixed.
| * Convert the key repeat timer to an event.Nicholas Marriott2009-11-05
| |
| * Move status timer check into the global once-per-second timer, this could maybeNicholas Marriott2009-11-04
| | | | | | | | be done better but one every second is better than once every 50 ms.
| * Use timeout events for the identify and message timers.Nicholas Marriott2009-11-04
| |
| * Don't reenlist the client imsg event every loop, instead have a small functionNicholas Marriott2009-11-04
| | | | | | | | to it and call it after the event triggers or after a imsg is added.
| * Switch tty fds over to a bufferevent.Nicholas Marriott2009-11-04
| |
| * Initial changes to move tmux to libevent.Nicholas Marriott2009-11-04
| | | | | | | | | | | | | | | | | | 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.
| * Add an activity time for clients, like for sessions, and change session andNicholas Marriott2009-11-03
| | | | | | | | | | | | | | | | client lookup to pick the most recently used rather than the most recently created - this is much more useful when used interactively and (because the activity time is set at creation) should have no effect on source-file. Based on a problem reported by Jan Johansson.
| * Change session and client activity and creation time members to have moreNicholas Marriott2009-11-03
| | | | | | | | | | | | | | | | 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.
| * Move the poll registration functions into the server-*.c files.Nicholas Marriott2009-10-27
| |