# LibTmux::Server.new

- **Module:** LibTmux
- **Package:** libtmux
- **Language:** Ruby
- **Kind:** method
- **Source:** https://github.com/libtmux/libtmux-ruby/blob/dcc9f8b5a6970144a9e7d80cd5f381d8f6198372/gems/libtmux/lib/libtmux/server.rb#L137
- **Page:** https://libtmux.org/en/ruby/v0.1.0.alpha.2/reference/libtmux-server-new/

```
def self.new: (
  ?endpoint: ::LibTmux::Endpoint?,
  ?socket_path: ::String?,
  ?socket_name: ::String?,
  ?executable: ::String,
  ?max_requests: ::Integer,
  ?max_controls: ::Integer,
  ?close_timeout: ::Numeric,
  ?version_timeout: ::Numeric
) -> ::LibTmux::Server
```

Behavior: Borrowed bindings.

Behavior contract: Borrowed bindings.

## Examples

Connect a Server client to an existing endpoint and close it without stopping the daemon. The outer Server.start block owns the private demonstration server. Use Ruby 4.0.7, Bundler, Git and tmux 3.2a or newer on Unix, with /bin/cat and /bin/sh available. In an empty directory, fetch the documented library revision:

```console
$ git clone https://github.com/libtmux/libtmux-ruby.git libtmux-source && \
  git -C libtmux-source checkout dcc9f8b5a6970144a9e7d80cd5f381d8f6198372
```

Save this dependency file as Gemfile:

```ruby
source "https://rubygems.org"

gem "libtmux", path: "libtmux-source/gems/libtmux"
```

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

[Source example](https://github.com/libtmux/libtmux-ruby/blob/dcc9f8b5a6970144a9e7d80cd5f381d8f6198372/examples/api/server.rb).

```ruby
# frozen_string_literal: true

require "libtmux"

begin
  LibTmux::Server.start do |owner|
    owner.new_session(name: "work", command: ["/bin/cat"])
    server = LibTmux::Server.new(endpoint: owner.endpoint)
    begin
      puts "connected sessions: #{server.list_sessions.length}"
    ensure
      server.close
    end
    puts "sessions after client close: #{owner.list_sessions.length}"
  end
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:

```console
$ bundle config set --local path vendor/bundle && \
  bundle install --jobs 2 && \
  bundle exec ruby server.rb
```

Expected output:

```text
connected sessions: 1
sessions after client close: 1
```
