Commit Graph

79 Commits

Author SHA1 Message Date
Nicholas Marriott
16064a410e Merge branch 'master' into command_parser 2026-07-21 08:34:58 +01:00
nicm
2711780dff Move per-client window sizes into control.c since the only user is for
control mode.
2026-07-17 12:15:52 +00:00
Nicholas Marriott
baf71480d0 Merge remote-tracking branch 'origin/master' into command_parser
# Conflicts:
#	cmd-queue.c
#	notify.c
#	options.c
2026-07-13 11:12:46 +01:00
nicm
7f2b0ae16e Do not make pty fds blocking again until all the data has been consumed
or control mode clients can get stuck, GitHub issue 5356 from Ben Maurer.
2026-07-10 15:45:11 +00:00
nicm
d29aa12117 Replace the notification system with events. Events can carry a payload of
additional payload (to reduce problems with lifetime of objects) and are
delivered to one or more event sinks. This is more powerful and reduces the
complex dependencies between control mode and hooks. Events are now used for
hooks, control mode notifications and for monitors (set-hook -B).

wait-for can now wait for an event to fire (-E flag, with -F to for filter),
with -v to print the payload, as well as listing (-l) waiting clients on an
event and forcing one to wake (-w).

A few additional hooks are also now available (pane-created, pane-resized, etc)
and some of the existing ones have additional format variables available.
2026-07-10 13:38:45 +00:00
nicm
1508bec957 Don't bother to send notifications to clients with CLIENT_EXIT, GitHub
issue 5357 from Ben Maurer.
2026-07-10 07:25:05 +00:00
nicm
de024e04d7 Add set-hook -B install a subscription like in control mode.
Subscriptions are formats which are checked once a second and if changed
invoke a hook. show-hooks -B lists.
2026-07-05 08:24:00 +00:00
nicm
8e03310afe Move monitor stuff out of control.c into its own file for reuse. 2026-07-03 22:58:23 +00:00
Nicholas Marriott
54f5c82500 Convert most of remaining bits. 2026-06-30 18:19:26 +01:00
Your Name
9e8cf6f0e2 Stub out all users of old API. 2026-06-30 09:39:45 +01:00
Thomas Adam
f1f0158741 Merge branch 'obsd-master' 2026-05-12 12:01:11 +01:00
nicm
800837ff3f Fix control mode teardown ordering for queued pane output, GitHub issue
5064 from Aaron Campbell.
2026-05-12 09:27:28 +00:00
Thomas Adam
ad94405dac Merge branch 'obsd-master' 2026-05-05 16:01:08 +01:00
nicm
cae229cadc Discard queued data and clear offsets when turning pane off to prevent
later read of data that has been removed. From Aaron Campbell in GitHub
issue 5054.
2026-05-05 12:02:12 +00:00
Thomas Adam
9d3dcdbc38 Merge branch 'obsd-master' 2026-05-03 20:01:09 +01:00
nicm
637d4c3083 Fix control client hang on exit after toggling no-output, GitHub issue
5049 from Aaron Campbell.
2026-05-03 15:01:21 +00:00
Thomas Adam
9a94f48663 Merge branch 'obsd-master' 2026-05-01 16:01:09 +01:00
nicm
56200ca044 Do not leak cached last result from control subs, from Aaron Campbell in
GitHub issue 5047.
2026-05-01 09:59:42 +00:00
Thomas Adam
9de3c0495f Merge branch 'obsd-master' 2026-04-14 12:01:08 +01:00
nicm
31c93c483a Another check for partially initialized control client, from Matt
Koscica in GitHub issue 5004.
2026-04-14 08:32:30 +00:00
Thomas Adam
0d77555c97 Merge branch 'obsd-master' 2026-03-09 16:01:09 +00:00
nicm
881bec958e Fix server crash when control client session is destroyed, from Renaud
Allard in GitHub issue 4916.
2026-03-09 14:33:55 +00:00
Thomas Adam
4cc3de4f84 Merge branch 'obsd-master' 2026-02-17 08:51:05 +00:00
nicm
c9162837a0 Pull format allocation outside of loop for control subs, from Conor
Taylor in GitHub issue 4848.
2026-02-16 08:42:57 +00:00
Thomas Adam
d3522c328c Merge branch 'obsd-master' 2026-02-12 11:10:01 +00:00
nicm
1cf17b06ae Batch printable output in control mode, from Conor Taylor in GitHub issue 4848. 2026-02-10 08:40:03 +00:00
Thomas Adam
f7b30ed3d4 Merge branch 'obsd-master' 2022-08-24 10:01:13 +01:00
nicm
e867528209 Check for NULL returns from bufferevent_new. 2022-08-24 07:22:30 +00:00
Thomas Adam
dc6bc0e95a Merge branch 'obsd-master' 2022-07-06 12:01:09 +01:00
nicm
9e03df5500 Defer reading from control client until the command line command has
completed.
2022-07-06 08:31:59 +00:00
Thomas Adam
c7266ca78d Merge branch 'obsd-master' into master 2021-08-25 10:01:10 +01:00
nicm
a252fadf8a Fix up some printflike attributes. 2021-08-25 07:09:30 +00:00
Thomas Adam
a8be47f0f4 Merge branch 'obsd-master' into master 2021-08-17 22:01:18 +01:00
nicm
5fdea440ce Treat a pane that has died the same as no pane when sending data to
control mode clients, GitHub issue 2828.
2021-08-17 20:17:21 +00:00
Nicholas Marriott
a3011be0d2 Look for libevent2 differently from libevent for platforms with both. 2021-01-17 17:21:51 +00:00
nicm
ed946dccc7 Some other warnings, GitHub issue 2382. 2020-09-18 11:20:59 +00:00
nicm
66d5e5de7a Add a way for control mode clients to subscribe to a format and be
notified of changes rather than having to poll. GitHub issue 2242.
2020-07-06 09:14:20 +00:00
nicm
2372b0fdc6 Add a flag to make a client wait for an empty line before exiting in
control mode to avoid stray commands ending up in the shell.
2020-06-18 08:34:22 +00:00
nicm
d8d7769104 Check if a pane needs to be paused when output is written rather than
just when it is queued.
2020-06-12 08:35:01 +00:00
nicm
50ee41423f Add a -A option to pause a pane manually. 2020-06-11 09:55:47 +00:00
nicm
23d79cfda8 Instead of a buffer size limit on each pane, set a limit of 300 seconds
of data for each client in control mode.
2020-06-10 07:27:10 +00:00
nicm
fddcad6957 When the pause-after flag is set, send an alternative %extended-output
form instead of %output with the age of the output.
2020-06-10 06:23:43 +00:00
nicm
c586208991 Add support for pausing a pane when the output buffered for a control
mode client gets too far behind. The pause-after flag with a time is set
on the pane with refresh-client -f and a paused pane may be resumed with
refresh-client -A. GitHub issue 2217.
2020-06-05 07:33:57 +00:00
nicm
f3931497f8 Use CLOCK_MONOTONIC for timer measurement and add a timestamp to control
mode %output blocks.
2020-06-02 08:17:27 +00:00
nicm
563b7331da Remove blocks from queue when pane disappears. 2020-06-01 21:08:05 +00:00
nicm
a54a88edd6 Instead of sending all data to control mode clients as fast as possible,
add a limit of how much data will be sent to the client and try to use
it for panes with some degree of fairness. GitHub issue 2217, with
George Nachman.
2020-06-01 09:43:00 +00:00
nicm
ea610a3119 Pass the stdout file descriptor from the client as well as stdin and use
them for control clients directly instead of passing everything via the
client.
2020-05-26 08:41:47 +00:00
nicm
18aab90959 Give control code its own state struct. 2020-05-24 09:40:17 +00:00
nicm
9a0763c3a0 Move client offset stuff into control.c since only control clients will
need it.
2020-05-22 11:07:04 +00:00
nicm
31e3f2d530 Support code for control mode flow control: allow clients to have
separate offsets (used and acknowleged) into the pane buffers; turn off
reading from panes when no clients can accept the data; and add a -A
flag to refresh-client to let clients turn receiving a pane on and off.
2020-05-21 07:24:13 +00:00