Core LibraryalphaAPI Reference

Choose documentation 3

v0.1.0.alpha.3

Current version

v0.1.0.alpha.3
English

Prerelease This site documents an alpha of libtmux. Its structure, URLs and APIs are subject to change.

method libtmux-ruby v0.1.0.alpha.3

Async.open

Behavior: Async scope.

Source and package
Qualified name
LibTmux::Async.open
Module
LibTmux
Declared in
Async
Package
libtmux-async
Source
gems/libtmux-async/lib/libtmux/async.rb
def self.open: [T] ( server: ::LibTmux::Server, ?parent: untyped, **untyped ) { (::LibTmux::Async::Scope) -> T } -> T

Description#

Behavior contract: Async scope.

Examples#

Open an Async scope over an existing server and capture every pane concurrently, in input order. Use Ruby 4.0.7, Bundler, Git and tmux 3.3a or newer on Unix, with /bin/cat and /bin/sh available. In an empty directory, fetch the documented library revision:

Terminal window
$ git clone https://github.com/libtmux/libtmux-ruby.git libtmux-source && \
git -C libtmux-source checkout d8ce4bbee0ca7748a81929f81f7d8d07f8c51267

Save this dependency file as Gemfile:

source "https://rubygems.org"
gem "libtmux-async", path: "libtmux-source/gems/libtmux-async"

Save this complete program as async_scope.rb. Its Server.start block owns a private tmux server and stops it on exit, including after an error. View source

# frozen_string_literal: true
begin
# docs:begin main
require "libtmux"
require "libtmux/async"
LibTmux::Server.start do |server|
server.new_session(name: "work", command: ["/bin/cat"])
server.new_session(name: "logs", command: ["/bin/cat"])
Async do |parent|
LibTmux::Async.open(parent: parent, server: server) do |scope|
refs = scope.server.list_panes.map(&:ref)
screens = scope.map(refs, concurrency: 2) { |ref| scope.server.pane(ref).capture }
puts "captured panes: #{screens.length}"
puts "all succeeded: #{screens.all?(&:success?)}"
end
end.wait
end
# docs:end main
rescue StandardError => error
warn "#{error.class}: #{error.message}"
exit 1
end

Install the runtime dependencies and run the saved program. An operation or cleanup error makes it exit unsuccessfully:

Terminal window
$ bundle config set --local path vendor/bundle && \
bundle install --jobs 2 && \
bundle exec ruby async_scope.rb

Expected output:

captured panes: 2
all succeeded: true
Type parameters
Parameters
Raises
  • ArgumentError

Discussed in Page session metadata from Ruby

Esc

Type to search.

Reference preview Open reference