# LibTmux.Ref.from_observation/1

- **Module:** LibTmux
- **Package:** libtmux
- **Language:** Elixir
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-elixir/blob/66b9b1c3f3f3186428abdfda2c76f5cf87446710/lib/libtmux/ref.ex#L36
- **Page:** https://libtmux.org/en/elixir/latest/reference/libtmux-ref-from_observation-1/

```
from_observation(arg1)
@spec from_observation(LibTmux.Schema.observation()) ::
        {:ok, t()} | {:error, LibTmux.Error.t()}
```

Builds a reference from an observation's own identity and server instance.

Validates the identity with `new/3` without I/O or a fresh observation.
Malformed identities and other inputs return an `:invalid_target` error.
Other captured fields may remain unloaded or unavailable. A reference does
not prove that its target still exists. Window links retain their tuple
binding and lifetime limitation; domain actions reject window-link refs.

## Examples

```elixir
iex> pane = %LibTmux.Pane{id: "%7", server_instance: "instance-a"}
iex> {:ok, ref} = LibTmux.Ref.from_observation(pane)
iex> {ref.entity, ref.id, ref.server_instance}
{:pane, "%7", "instance-a"}
```

## Parameters

- `arg1` (`LibTmux.Schema.observation()`)
