# io.github.libtmux.PaneInput

- **Module:** io.github.libtmux
- **Package:** io.github.libtmux:libtmux
- **Language:** Java
- **Kind:** class
- **Source:** https://github.com/libtmux/libtmux-java/blob/c067fced0dfd19bd6dd3d260e9d4c336becdb063/libtmux/src/main/java/io/github/libtmux/PaneInput.java#L25
- **Page:** https://libtmux.org/en/java/latest/reference/io-github-libtmux-paneinput-paneinput/

One writer at a time for a pane's keyboard, paste, and shell run.

Those three share one screen. {@link #hold} throws if another thread already has the pane.
The same thread may hold it again; the pane is free when the outer hold closes. {@link
Pane#sendKeys}, {@link Pane#sendLiteral}, {@link Pane#paste}, {@link Pane#pasteBuffer}, and {@link
Pane#run} take a hold for the call and release it when they return. A command still running after
{@code run} returns is not held unless the caller kept {@link #hold} or {@link #holdInterruptible}
around that call. Raw commands and {@link CommandChain} steps do not take it.

{@link #holdInterruptible} is that longer hold. Another thread may {@link #enterInterrupt} it
to send a stop, and that entry does not take the pane. Closing the run's lease still releases
it, including from the thread that notices the command has finished.

## Members

### Other members

- [`enterInterrupt`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-enterinterrupt/) (method): Enters a pane {@link #holdInterruptible} is holding, without taking it.
- [`held`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-held-16tz/) (method): Every pane held right now, for diagnosing a lease nothing ever closes.
- [`Held`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-held-6kxu/) (class): One pane's outstanding hold.
- [`heldSince`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-heldsince/) (method): Reports when the current hold on this pane was acquired, so a lease nothing ever closes can be found from outside the thread holding it.
- [`hold`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-hold/) (method): Excludes other threads from this pane until the lease closes. The pane is the one its capture named: the same id on a server started since is another pane, and is not held.
- [`holdInterruptible`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-holdinterruptible/) (method): Holds the pane for a command that another thread may have to stop.
- [`Lease`](/en/java/latest/reference/io-github-libtmux-paneinput-paneinput-lease/) (class): Releases one matching hold. Closing twice releases once. Any thread may close it.
