Instant Terminal Sharing
Go to file
Nicholas Marriott 6bca92db4d Rather than running status-left, status-right and window title #() with popen
immediately every redraw, queue them up and run them in the background,
starting each once every status-interval. The actual status line uses the
output from the last run.

This brings several advantages:

- tmux itself may be called from inside #() without causing the server to hang;
- likewise, sleep or similar doesn't cause the server to block;
- commands aren't run excessively often when redrawing;
- commands shared by status-left and status-right, or used multiple times, will
  only be run once.

run-shell and if-shell still use system()/popen() but will be changed over to
use this too later.
2009-10-10 15:03:01 +00:00
array.h Import tmux, a terminal multiplexor allowing (among other things) a single 2009-06-01 22:58:49 +00:00
attributes.c Don't dereference NULL if buf winds up being empty. Can't happen 2009-06-02 11:14:08 +00:00
buffer-poll.c Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
buffer.c A few trivial optimisations: no need to check for zero size if calling 2009-08-20 19:14:42 +00:00
cfg.c When using source-file, run the commands in the context of the source-file 2009-08-23 17:29:51 +00:00
client-fn.c Switch tmux to use imsg. This is the last major change to make the 2009-08-11 17:18:35 +00:00
client.c Support -c like sh(1) to execute a command, useful when tmux is a login 2009-09-23 12:03:30 +00:00
clock.c Permit options such as status-bg to be configured using the entire 256 colour 2009-09-10 17:16:24 +00:00
cmd-attach-session.c Infrastructure and commands to manage the environment for processes started 2009-08-08 21:52:43 +00:00
cmd-bind-key.c Final pieces of mode key rebinding: bind-key and unbind-key now accept a -t 2009-07-28 17:05:10 +00:00
cmd-break-pane.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-choose-client.c Reference count clients and sessions rather than relying on a saved index for 2009-09-07 21:01:50 +00:00
cmd-choose-session.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-choose-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-clear-history.c Remove some dead code found by clang. 2009-07-30 17:29:12 +00:00
cmd-clock-mode.c Now that pane targets (-t) are supported, switch some commands to use them 2009-08-18 16:21:04 +00:00
cmd-command-prompt.c Use KEYC_NONE constant instead of 0 on init. 2009-09-21 15:32:06 +00:00
cmd-confirm-before.c The cursession member in struct cmd_ctx is always either curclient->session or 2009-08-23 16:45:00 +00:00
cmd-copy-buffer.c Use KEYC_NONE constant instead of 0 on init. 2009-09-21 15:32:06 +00:00
cmd-copy-mode.c Remove scroll mode which is now redundant, copy mode should be used instead. 2009-10-06 07:19:32 +00:00
cmd-delete-buffer.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-detach-client.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-display-message.c Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
cmd-display-panes.c Add a new display-panes command, with two options (display-panes-colour and 2009-08-31 20:46:19 +00:00
cmd-down-pane.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-find-window.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-generic.c Initialise the arg2 pointer properly (also free it when freeing the 2009-08-26 18:09:52 +00:00
cmd-has-session.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-if-shell.c Use KEYC_NONE constant instead of 0 on init. 2009-09-21 15:32:06 +00:00
cmd-kill-pane.c Move some common and untidy code for window link/unlink into generic functions 2009-09-20 17:27:18 +00:00
cmd-kill-server.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-kill-session.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-kill-window.c Move some common and untidy code for window link/unlink into generic functions 2009-09-20 17:27:18 +00:00
cmd-last-window.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-link-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-list-buffers.c Give each paste buffer a size member instead of requiring them to be 2009-09-07 18:50:45 +00:00
cmd-list-clients.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-list-commands.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-list-keys.c Final pieces of mode key rebinding: bind-key and unbind-key now accept a -t 2009-07-28 17:05:10 +00:00
cmd-list-sessions.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-list-windows.c Handle ttyname(3) failure better. 2009-08-08 16:05:01 +00:00
cmd-list.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-load-buffer.c Give each paste buffer a size member instead of requiring them to be 2009-09-07 18:50:45 +00:00
cmd-lock-client.c New lock-client and lock-session commands to lock an individual client or all 2009-09-24 14:17:09 +00:00
cmd-lock-server.c Don't allow locked or suspended clients to limit the size of active clients. 2009-09-24 07:02:56 +00:00
cmd-lock-session.c New lock-client and lock-session commands to lock an individual client or all 2009-09-24 14:17:09 +00:00
cmd-move-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-new-session.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-new-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-next-layout.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-next-window.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-paste-buffer.c Give each paste buffer a size member instead of requiring them to be 2009-09-07 18:50:45 +00:00
cmd-previous-layout.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-previous-window.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-refresh-client.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-rename-session.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-rename-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-resize-pane.c Merge pane number into the target specification for pane commands. Instead of 2009-07-30 13:45:56 +00:00
cmd-respawn-window.c Rather than constructing an entire termios struct from ttydefaults.h, just let 2009-09-16 12:35:04 +00:00
cmd-rotate-window.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-run-shell.c run-shell command to run a shell command without opening a window, sending 2009-09-20 19:15:01 +00:00
cmd-save-buffer.c Give each paste buffer a size member instead of requiring them to be 2009-09-07 18:50:45 +00:00
cmd-select-layout.c If select-layout is not given an argument, repply the last layout used in the 2009-07-28 06:48:44 +00:00
cmd-select-pane.c Merge pane number into the target specification for pane commands. Instead of 2009-07-30 13:45:56 +00:00
cmd-select-prompt.c Switch the prompt code to return an empty string when the user enters no 2009-08-13 23:44:18 +00:00
cmd-select-window.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-send-keys.c Nuke -i option which isn't used anymore. 2009-09-21 15:25:36 +00:00
cmd-send-prefix.c Permit multiple prefix keys to be defined, separated by commas, for example: 2009-09-22 12:38:10 +00:00
cmd-server-info.c Reference count clients and sessions rather than relying on a saved index for 2009-09-07 21:01:50 +00:00
cmd-set-buffer.c Give each paste buffer a size member instead of requiring them to be 2009-09-07 18:50:45 +00:00
cmd-set-environment.c Add flags for 1+2 and 2 arguments to the generic target code, use it for 2009-08-11 12:53:37 +00:00
cmd-set-option.c Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
cmd-set-window-option.c Add a simple synchronize-panes window option: when set, all input to any pane 2009-10-09 07:27:00 +00:00
cmd-show-buffer.c Give each paste buffer a size member instead of requiring them to be 2009-09-07 18:50:45 +00:00
cmd-show-environment.c Infrastructure and commands to manage the environment for processes started 2009-08-08 21:52:43 +00:00
cmd-show-options.c Move common code from show-options and show-window-options into a function. 2009-09-21 14:46:47 +00:00
cmd-show-window-options.c Move common code from show-options and show-window-options into a function. 2009-09-21 14:46:47 +00:00
cmd-source-file.c Use KEYC_NONE constant instead of 0 on init. 2009-09-21 15:32:06 +00:00
cmd-split-window.c Use KEYC_NONE constant instead of 0 on init. 2009-09-21 15:32:06 +00:00
cmd-start-server.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-string.c Infrastructure and commands to manage the environment for processes started 2009-08-08 21:52:43 +00:00
cmd-suspend-client.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-swap-pane.c Remove some dead code found by clang. 2009-07-30 17:29:12 +00:00
cmd-swap-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-switch-client.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd-unbind-key.c Final pieces of mode key rebinding: bind-key and unbind-key now accept a -t 2009-07-28 17:05:10 +00:00
cmd-unlink-window.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
cmd-up-pane.c Make all messages sent between the client and server fixed size. 2009-07-26 12:58:44 +00:00
cmd.c Fix comment. 2009-10-07 07:02:40 +00:00
colour.c Permit options such as status-bg to be configured using the entire 256 colour 2009-09-10 17:16:24 +00:00
environ.c Nuke a dead variable found with clang and an unused declaration with lint. 2009-08-09 15:17:50 +00:00
grid-view.c Support "alternate screen" mode (terminfo smcup/rmcup) typically used by full 2009-07-13 10:43:52 +00:00
grid.c Stick line length to what is actually used (removing an optimization that 2009-09-15 15:14:09 +00:00
imsg-buffer.c Enclose repeated buffer draining code in a new msgbuf_drain() 2009-09-15 18:12:51 +00:00
imsg.c Switch tmux to use imsg. This is the last major change to make the 2009-08-11 17:18:35 +00:00
imsg.h Enclose repeated buffer draining code in a new msgbuf_drain() 2009-09-15 18:12:51 +00:00
input-keys.c Detect backspace by looking at termios VERASE and translate it into \177 (which 2009-07-26 21:42:08 +00:00
input.c Nuke unused variable. 2009-08-20 10:48:25 +00:00
job.c Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
key-bindings.c Remove scroll mode which is now redundant, copy mode should be used instead. 2009-10-06 07:19:32 +00:00
key-string.c Accept ^? for backspace as well as BSpace. 2009-10-06 07:32:26 +00:00
layout-set.c If select-layout is not given an argument, repply the last layout used in the 2009-07-28 06:48:44 +00:00
layout.c Improved layout code. 2009-07-19 13:21:40 +00:00
log.c Remove a couple of unused functions and fix a type ("FALLTHOUGH"), found by 2009-07-21 18:40:30 +00:00
Makefile Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
mode-key.c Support J and K for scroll up and scroll down in copy mode with vi keys, 2009-10-07 15:58:40 +00:00
names.c Regularise some fatal messages. 2009-09-20 14:58:12 +00:00
options-cmd.c Permit multiple prefix keys to be defined, separated by commas, for example: 2009-09-22 12:38:10 +00:00
options.c Permit multiple prefix keys to be defined, separated by commas, for example: 2009-09-22 12:38:10 +00:00
paste.c Regularise some fatal messages. 2009-09-20 14:58:12 +00:00
procname.c Nuke a dead variable found with clang and an unused declaration with lint. 2009-08-09 15:17:50 +00:00
resize.c Don't allow locked or suspended clients to limit the size of active clients. 2009-09-24 07:02:56 +00:00
screen-redraw.c Permit options such as status-bg to be configured using the entire 256 colour 2009-09-10 17:16:24 +00:00
screen-write.c Stick line length to what is actually used (removing an optimization that 2009-09-15 15:14:09 +00:00
screen.c Change the way the grid is stored, previously it was: 2009-08-08 13:29:27 +00:00
server-fn.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
server-msg.c Support for individual session idle time locking. May be enabled by turning off 2009-10-10 09:46:11 +00:00
server.c Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
session.c Add "grouped sessions" which have independent name, options, current window and 2009-10-10 10:02:48 +00:00
status.c Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
tmux.1 Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
tmux.c New option, mouse-select-pane. If on, the mouse may be used to select the 2009-10-10 14:51:16 +00:00
tmux.h Rather than running status-left, status-right and window title #() with popen 2009-10-10 15:03:01 +00:00
tty-keys.c Regularise some fatal messages. 2009-09-20 14:58:12 +00:00
tty-term.c Check the return value of strunvis against -1 not NULL. 2009-08-23 11:40:05 +00:00
tty.c There is no point setting the scroll region up for line feeds unless scrolling 2009-10-10 10:36:46 +00:00
utf8.c Miscellaneous unused functions, including one which was basically a 2009-06-25 06:15:04 +00:00
window-choose.c Permit options such as status-bg to be configured using the entire 256 colour 2009-09-10 17:16:24 +00:00
window-clock.c Use gmtime_r so the current time isn't overwritten, the minute comparison works 2009-06-27 14:40:22 +00:00
window-copy.c Make C-Up and C-Down in copy mode scroll the screen up and down one line 2009-10-06 07:09:00 +00:00
window-more.c Permit options such as status-bg to be configured using the entire 256 colour 2009-09-10 17:16:24 +00:00
window.c New option, mouse-select-pane. If on, the mouse may be used to select the 2009-10-10 14:51:16 +00:00
xmalloc.c Import tmux, a terminal multiplexor allowing (among other things) a single 2009-06-01 22:58:49 +00:00