# LibTmux::Async::Server

- **Module:** LibTmux::Async
- **Package:** LibTmux-Async
- **Language:** Perl
- **Kind:** class
- **Source:** https://github.com/libtmux/libtmux-perl/blob/352715a4fa66a96eed7763b90daaa536aa2f121d/packages/async/lib/LibTmux/Async/Server.pm#L1
- **Page:** https://libtmux.org/en/perl/latest/reference/libtmux-async-server/

```
package LibTmux::Async::Server;
```

Optional Future facade over the core protocol


## SYNOPSIS


```perl
    use v5.44;
    use IO::Async::Loop::Ppoll;
    use LibTmux::Async::Server;
    my $loop = IO::Async::Loop::Ppoll->new;
    my $server = LibTmux::Async::Server->new(loop => $loop, socket_name => 'owned');
    my $capture = $server->snapshot;
    $loop->await($capture);
    my $panes = $capture->get->panes->where({ active => true });
    $loop->await($server->close);
```



## Examples

Complete installed-package program with an owned tmux fixture and result/cleanup assertions.

[Source example](https://github.com/libtmux/libtmux-perl/blob/352715a4fa66a96eed7763b90daaa536aa2f121d/examples/await.pl).

```perl
use v5.44;
use FindBin;
use lib "$FindBin::Bin/../scripts/lib";
use IO::Async::Loop::Ppoll;
use Future::AsyncAwait;
use LibTmux::Async::Server;
use LibTmuxFixture;
async sub capture_count ($server) {
    my $snapshot = await $server->snapshot;
    my $count    = $snapshot->panes->count;
    await $server->close;
    return $count;
}
LibTmuxFixture->run(
    sub ($sync, $root) {
        $sync->new_session(
            name    => 'await-example',
            command => ['/bin/sleep', '120']
        );
        my $loop   = IO::Async::Loop::Ppoll->new;
        my $server = LibTmux::Async::Server->new(
            loop        => $loop,
            socket_path => "$root/s",
            executable  => $ENV{LIBTMUX_TEST_TMUX} // 'tmux'
        );
        my $work = capture_count($server);
        $loop->await($work);
        die 'await result differs' unless $work->get == 1;
        say 'optional caller await syntax: ok';
    }
);
```

## Members

### Collections and queries

- [`clients`](/en/perl/latest/reference/libtmux-async-server-clients/) (method): See [`"clients" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-clients/) for arguments, returned value, and completion.
- [`snapshot`](/en/perl/latest/reference/libtmux-async-server-snapshot/) (method): See [`"snapshot" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-snapshot/) for arguments, returned value, and completion.
- [`query_panes`](/en/perl/latest/reference/libtmux-async-server-query_panes/) (method): See [`"query_panes" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-query_panes/) for arguments, returned value, and completion. Its observer runs inline in void context; a returned [Future](https://metacpan.org/pod/Future) is ignored. Cancellation before the decision suppresses it. If the observer cancels its query or calls [`"close"`](/en/perl/latest/reference/libtmux-async-server-close/), cancellation takes precedence over subsequent return or exception delivery. Continue driving the loop until close cleanup completes.

### Common operations

- [`capture_pane`](/en/perl/latest/reference/libtmux-async-server-capture_pane/) (method): See [`"capture_pane" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-capture_pane/) for arguments, returned value, and completion.
- [`send_keys`](/en/perl/latest/reference/libtmux-async-server-send_keys/) (method): See [`"send_keys" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-send_keys/) for arguments, returned value, and completion.
- [`new_session`](/en/perl/latest/reference/libtmux-async-server-new_session/) (method): See [`"new_session" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-new_session/) for arguments, returned value, and completion.
- [`new_window`](/en/perl/latest/reference/libtmux-async-server-new_window/) (method): See [`"new_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-new_window/) for arguments, returned value, and completion.
- [`split_pane`](/en/perl/latest/reference/libtmux-async-server-split_pane/) (method): See [`"split_pane" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-split_pane/) for arguments, returned value, and completion.
- [`kill_server`](/en/perl/latest/reference/libtmux-async-server-kill_server/) (method): See [`"kill_server" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-kill_server/) for arguments, returned value, and completion.
- [`select_layout`](/en/perl/latest/reference/libtmux-async-server-select_layout/) (method): See [`"select_layout" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-select_layout/) for arguments, returned value, and completion.
- [`kill_session`](/en/perl/latest/reference/libtmux-async-server-kill_session/) (method): See [`"kill_session" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-kill_session/) for arguments, returned value, and completion.
- [`kill_window`](/en/perl/latest/reference/libtmux-async-server-kill_window/) (method): See [`"kill_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-kill_window/) for arguments, returned value, and completion.
- [`kill_pane`](/en/perl/latest/reference/libtmux-async-server-kill_pane/) (method): See [`"kill_pane" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-kill_pane/) for arguments, returned value, and completion.
- [`rename_session`](/en/perl/latest/reference/libtmux-async-server-rename_session/) (method): See [`"rename_session" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-rename_session/) for arguments, returned value, and completion.
- [`rename_window`](/en/perl/latest/reference/libtmux-async-server-rename_window/) (method): See [`"rename_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-rename_window/) for arguments, returned value, and completion.
- [`link_window`](/en/perl/latest/reference/libtmux-async-server-link_window/) (method): See [`"link_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-link_window/) for arguments, returned value, and completion.
- [`unlink_window`](/en/perl/latest/reference/libtmux-async-server-unlink_window/) (method): See [`"unlink_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-unlink_window/) for arguments, returned value, and completion.
- [`select_window`](/en/perl/latest/reference/libtmux-async-server-select_window/) (method): See [`"select_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-select_window/) for arguments, returned value, and completion.
- [`select_pane`](/en/perl/latest/reference/libtmux-async-server-select_pane/) (method): See [`"select_pane" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-select_pane/) for arguments, returned value, and completion.
- [`resize_pane`](/en/perl/latest/reference/libtmux-async-server-resize_pane/) (method): See [`"resize_pane" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-resize_pane/) for arguments, returned value, and completion.
- [`show_hooks`](/en/perl/latest/reference/libtmux-async-server-show_hooks/) (method): See [`"show_hooks" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-show_hooks/) for arguments, returned value, and completion.
- [`move_window`](/en/perl/latest/reference/libtmux-async-server-move_window/) (method): See [`"move_window" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-move_window/) for arguments, returned value, and completion.
- [`set_title`](/en/perl/latest/reference/libtmux-async-server-set_title/) (method): See [`"set_title" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-set_title/) for arguments, returned value, and completion.
- [`show_buffer`](/en/perl/latest/reference/libtmux-async-server-show_buffer/) (method): See [`"show_buffer" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-show_buffer/) for arguments, returned value, and completion.
- [`set_buffer`](/en/perl/latest/reference/libtmux-async-server-set_buffer/) (method): See [`"set_buffer" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-set_buffer/) for arguments, returned value, and completion.
- [`delete_buffer`](/en/perl/latest/reference/libtmux-async-server-delete_buffer/) (method): See [`"delete_buffer" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-delete_buffer/) for arguments, returned value, and completion.
- [`cmd`](/en/perl/latest/reference/libtmux-async-server-cmd/) (method): See [`"cmd" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-cmd/) for arguments, returned value, and completion.
- [`set_option`](/en/perl/latest/reference/libtmux-async-server-set_option/) (method): See [`"set_option" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-set_option/) for arguments, returned value, and completion.
- [`unset_option`](/en/perl/latest/reference/libtmux-async-server-unset_option/) (method): See [`"unset_option" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-unset_option/) for arguments, returned value, and completion.
- [`set_hook`](/en/perl/latest/reference/libtmux-async-server-set_hook/) (method): See [`"set_hook" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-set_hook/) for arguments, returned value, and completion.
- [`set_environment`](/en/perl/latest/reference/libtmux-async-server-set_environment/) (method): See [`"set_environment" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-set_environment/) for arguments, returned value, and completion.
- [`unset_environment`](/en/perl/latest/reference/libtmux-async-server-unset_environment/) (method): See [`"unset_environment" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-unset_environment/) for arguments, returned value, and completion.
- [`get_option`](/en/perl/latest/reference/libtmux-async-server-get_option/) (method): See [`"get_option" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-get_option/) for arguments, returned value, and completion.
- [`detach_client`](/en/perl/latest/reference/libtmux-async-server-detach_client/) (method): See [`"detach_client" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-detach_client/) for arguments, returned value, and completion.
- [`get_environment`](/en/perl/latest/reference/libtmux-async-server-get_environment/) (method): See [`"get_environment" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-get_environment/) for arguments, returned value, and completion.

### Other members

- [`attach_argv`](/en/perl/latest/reference/libtmux-async-server-attach_argv/) (method): See [`"attach_argv" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-attach_argv/) for arguments, returned value, and completion.
- [`batch`](/en/perl/latest/reference/libtmux-async-server-batch/) (method): See [`"batch" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-batch/) for arguments, returned value, and completion.
- [`close`](/en/perl/latest/reference/libtmux-async-server-close/) (method): Cancel active operations, suppress subsequent command continuations, reject new operations, and return a fresh cleanup observer [Future](https://metacpan.org/pod/Future). Only successful `is_done` completion proves owned processes and pipes finished. Cancellation of an observer does not cancel cleanup. The caller must drive its borrowed loop through shutdown. No tmux server is destroyed by closing this facade.
- [`execute`](/en/perl/latest/reference/libtmux-async-server-execute/) (method): See [`"execute" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-execute/) for arguments, returned value, and completion.
- [`explain_panes`](/en/perl/latest/reference/libtmux-async-server-explain_panes/) (method): See [`"explain_panes" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-explain_panes/) for arguments, returned value, and completion.
- [`listings`](/en/perl/latest/reference/libtmux-async-server-listings/) (method): See [`"listings" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-listings/) for arguments, returned value, and completion.
- [`new`](/en/perl/latest/reference/libtmux-async-server-new/) (method): `new(loop => $loop, %connection_options)` constructs without I/O. Borrow an [IO::Async::Loop::Ppoll](https://metacpan.org/pod/IO::Async::Loop::Ppoll); connection options belong to [`"new" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-new/). `max_concurrent` and `max_queue` configure the owned [`LibTmux::Async::Transport`](/en/perl/latest/reference/libtmux-async-transport/). Its [`backend and signal contract`](/en/perl/latest/reference/libtmux-async-transport-new/) applies to this facade. No event loop is run implicitly.
- [`send_text`](/en/perl/latest/reference/libtmux-async-server-send_text/) (method): See [`"send_text" in LibTmux::Server`](/en/perl/latest/reference/libtmux-server-send_text/) for arguments, returned value, and completion.
