Server.wait_for
Retiring the client cannot remove a dispatched waiter from tmux's queue.
Source and package
- Qualified name
-
LibTmux:: Async:: Server# wait _for - Module
- LibTmux::Async
- Declared in
Server- Package
- libtmux-async
- Source
- gems/libtmux/lib/libtmux/operations.rb
- def wait_for: ( ::String, ?action: :wait | :signal | :lock | :unlock, ?timeout: ::Numeric, ?cancel: untyped ) -> ::Lib
Tmux:: Command Result -
Public owner:
LibTmux::Server#wait_forDescription#
Behavior contract: Wait channels.
Examples#
Cancel an Async task whose tmux request is waiting and read the delivery evidence on the Cancelled error. Use Ruby 3.3 or newer with Bundler, and tmux 3.3a or newer, on Unix with
/bin/catand/bin/shavailable. In an empty directory, save thisGemfile:source "https://rubygems.org"gem "libtmux-async", "0.1.1"Save this complete program as
async_run.rb. ItsServer.start()block owns a private tmux server and stops it on exit, including after an error. View source# frozen_string_literal: truebegin# docs:begin mainrequire "libtmux"require "libtmux/async"LibTmux::Server.start do |server|server.new_session(name: "work", command: ["/bin/cat"])Async do |parent|LibTmux::Async.open(parent: parent, server: server) do |scope|waiting = parent.async doscope.server.run(["wait-for", "-S", "ready", ";", "wait-for", "held"], timeout: 5)rescue LibTmux::Cancelled => errorerrorendscope.server.wait_for("ready", timeout: 5)waiting.cancelfailure = waiting.waitputs "request: #{failure.class}"puts "delivery: #{failure.delivery}"endend.waitend# docs:end mainrescue StandardError => errorwarn "#{error.class}: #{error.message}"exit 1endInstall the gem and run the program. An operation or cleanup error makes it exit unsuccessfully:
Terminal window $ bundle install && \bundle exec ruby async_run.rbExpected output:
request: LibTmux::Cancelleddelivery: possibly_sent
tmux command#
The tmux commands behind wait_for.
tmux C API#
The C declarations in tmux that implement these commands.