Core Library0.xAPI Reference

Choose documentation 3

v0.1.1

Current version

v0.1.1
English

Early release libtmux is released, and its APIs may still change between releases. This site's structure and URLs may change too.

Ruby API

method libtmux-ruby v0.1.1

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 3.3 or newer with Bundler, and tmux 3.3a or newer, on Unix with /bin/cat and /bin/sh available. In an empty directory, save this Gemfile:

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

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 gem and run the program. An operation or cleanup error makes it exit unsuccessfully:

Terminal window
$ bundle install && \
bundle exec ruby async_scope.rb

Expected output:

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

Guides#

Pages that discuss open.

Esc

Type to search.

Reference previewOpen reference