# LibTmux\Set-TmuxOption

- **Package:** LibTmux
- **Language:** PowerShell
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-powershell/blob/b06c64f844f3173de66b187eaeaf3915814318c6/src/LibTmux.PowerShell/SetTmuxOptionCommand.cs#L7
- **Page:** https://libtmux.org/en/powershell/latest/reference/libtmux-set-tmuxoption/

```
Pane:
Set-TmuxOption
    [-Pane] <LibTmux.Pane>
    -Name <System.String>
    [-Scope <System.Nullable[LibTmux.OptionScope]>]
    [-Global]
    -Value <System.String>
    [-Append]
    [-ExpandFormat]
    [-PreventOverwrite]
    [-PassThru]
    [-Quiet]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Server (default):
Set-TmuxOption
    [-Server] <LibTmux.Server>
    -Name <System.String>
    [-Scope <System.Nullable[LibTmux.OptionScope]>]
    [-Global]
    -Value <System.String>
    [-Append]
    [-ExpandFormat]
    [-PreventOverwrite]
    [-PassThru]
    [-Quiet]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Session:
Set-TmuxOption
    [-Session] <LibTmux.Session>
    -Name <System.String>
    [-Scope <System.Nullable[LibTmux.OptionScope]>]
    [-Global]
    -Value <System.String>
    [-Append]
    [-ExpandFormat]
    [-PreventOverwrite]
    [-PassThru]
    [-Quiet]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Window:
Set-TmuxOption
    [-Window] <LibTmux.Window>
    -Name <System.String>
    [-Scope <System.Nullable[LibTmux.OptionScope]>]
    [-Global]
    -Value <System.String>
    [-Append]
    [-ExpandFormat]
    [-PreventOverwrite]
    [-PassThru]
    [-Quiet]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
```

Set an option in a native tmux owner table.

Store one option or indexed array entry. Append, format expansion and overwrite
protection are delegated to tmux. PassThru returns its native [`TmuxOptionValue`](/en/csharp/latest/reference/libtmux-tmuxoptionvalue/)
readback, so an appended or expanded value is the value stored, not an echo of
the argument. An empty string remains a value. [`WhatIf`](/en/powershell/latest/reference/libtmux-set-tmuxoption/#LibTmux%5CSet-TmuxOption.parameter.WhatIf) performs no tmux I/O.

### Notes

Reads contact tmux explicitly. Empty owner pipelines perform no I/O. Errors retain
the original core exception and native owner as their target. [`ErrorAction`](/en/powershell/latest/reference/libtmux-set-tmuxoption/#LibTmux%5CSet-TmuxOption.parameter.ErrorAction) Continue
permits later owners; Stop terminates the pipeline. Cancellation stops the
operation but cannot undo a dispatched mutation. Set readback is an observation,
not a transaction with other clients.

## Command details

- **Command type:** [`cmdlet`](/en/powershell/latest/reference/glossary/#cmdlet)
- **Default parameter set:** Server
- **Confirmation:** Supports `-WhatIf` and `-Confirm`; confirm impact: Medium.
- **Positional binding:** Enabled.
- **Pipeline inputs:** `LibTmux.Server`: A native server owner.; `LibTmux.Session`: A native session owner.; `LibTmux.Window`: A native window owner.; `LibTmux.Pane`: A native pane owner.
- **Outputs:** `LibTmux.TmuxOptionValue`

Related APIs:

- [Options](https://github.com/libtmux/libtmux-powershell/blob/b06c64f844f3173de66b187eaeaf3915814318c6/docs/options.md)

## Examples

Example 1

Set the key mode on a previously selected native $session and inspect its stored value.

[Source example](https://github.com/libtmux/libtmux-powershell/blob/b06c64f844f3173de66b187eaeaf3915814318c6/docs/reference/LibTmux/Set-TmuxOption.md).

```powershell
$session | LibTmux\Set-TmuxOption -Name 'status-keys' -Value 'vi' -PassThru
```

## Parameters

- `Pane` (`LibTmux.Pane`): The native pane whose table is used. (for `Pane`)
  Required. Position 0. Accepts pipeline input by value. [`ValidateNotNull()`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatenotnullattribute?view=powershellsdk-7.4.0).
- `Name` (`System.String`): The tmux option name, optionally indexed. tmux expands formats in option names; this is not a literal wildcard selector. Whitespace-only names and NUL are rejected.
  Required. Named parameter. Does not accept pipeline input. [`ValidateNotNullOrEmpty()`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatenotnulloremptyattribute?view=powershellsdk-7.4.0). [`ValidatePattern("\\A[^\\x00]*[^\\s\\x00][^\\x00]*\\z")`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatepatternattribute?view=powershellsdk-7.4.0).
- `Scope` (`System.Nullable[LibTmux.OptionScope]`): Override the owner scope with Server, Session, Window or Pane. Omission uses the native owner scope.
  Optional. Named parameter. Does not accept pipeline input. [`ValidateSet(["Server","Session","Window","Pane"])`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatesetattribute?view=powershellsdk-7.4.0).
- `Global` (`System.Management.Automation.SwitchParameter`): Use the global table for the selected scope. For global session defaults from a Server, specify Scope Session and Global.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input.
- `Value` (`System.String`): The value to store. Empty strings are allowed; NUL is rejected.
  Required. Named parameter. Does not accept pipeline input. [`ValidateNotNull()`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatenotnullattribute?view=powershellsdk-7.4.0). [`ValidatePattern("^[^\\x00]*$")`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatepatternattribute?view=powershellsdk-7.4.0).
- `Append` (`System.Management.Automation.SwitchParameter`): Append to the existing value.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input.
- `ExpandFormat` (`System.Management.Automation.SwitchParameter`): Expand tmux formats in the value before storing it.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input.
- `PreventOverwrite` (`System.Management.Automation.SwitchParameter`): Ask tmux to refuse replacement of an existing option; refusal can be an error.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input.
- `PassThru` (`System.Management.Automation.SwitchParameter`): Emit the native value read back after the mutation. Without this switch, emit no success output. Readback still occurs.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input.
- `Quiet` (`System.Management.Automation.SwitchParameter`): Pass tmux its quiet flag. Missing reads emit no objects; suppressed writes may return an absent value with PassThru.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input.
- `Verbose` (`System.Management.Automation.SwitchParameter`): Display verbose messages produced by this command.
  Optional. Named parameter. Switch parameter. Common parameter. Does not accept pipeline input. Aliases: `vb`.
- `Debug` (`System.Management.Automation.SwitchParameter`): Display debug messages produced by this command.
  Optional. Named parameter. Switch parameter. Common parameter. Does not accept pipeline input. Aliases: `db`.
- `ErrorAction` (`System.Management.Automation.ActionPreference`): Choose how this command responds to non-terminating errors.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `ea`.
- `WarningAction` (`System.Management.Automation.ActionPreference`): Choose how this command responds to warning messages.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `wa`.
- `InformationAction` (`System.Management.Automation.ActionPreference`): Choose how this command handles information messages.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `infa`.
- `ProgressAction` (`System.Management.Automation.ActionPreference`): Choose how this command handles progress updates.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `proga`.
- `ErrorVariable` (`System.String`): Store the command's error records in the named variable.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `ev`.
- `WarningVariable` (`System.String`): Store the command's warning records in the named variable.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `wv`.
- `InformationVariable` (`System.String`): Store the command's information records in the named variable.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `iv`.
- `OutVariable` (`System.String`): Save output in the named variable while passing it down the pipeline.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `ov`.
- `OutBuffer` (`System.Int32`): Buffer output before passing it to the next pipeline command.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `ob`.
- `PipelineVariable` (`System.String`): Make the most recent output object available through a named variable within the pipeline.
  Optional. Named parameter. Common parameter. Does not accept pipeline input. Aliases: `pv`.
- `WhatIf` (`System.Management.Automation.SwitchParameter`): Show the selected owner, scope and operation without contacting tmux.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input. Aliases: `wi`.
- `Confirm` (`System.Management.Automation.SwitchParameter`): Ask for confirmation before changing the selected table.
  Optional. Named parameter. Switch parameter. Does not accept pipeline input. Aliases: `cf`.
- `Server` (`LibTmux.Server`): The native server whose table is used. (for `Server`)
  Required. Position 0. Accepts pipeline input by value. [`ValidateNotNull()`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatenotnullattribute?view=powershellsdk-7.4.0).
- `Session` (`LibTmux.Session`): The native session whose table is used. (for `Session`)
  Required. Position 0. Accepts pipeline input by value. [`ValidateNotNull()`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatenotnullattribute?view=powershellsdk-7.4.0).
- `Window` (`LibTmux.Window`): The native window whose table is used. (for `Window`)
  Required. Position 0. Accepts pipeline input by value. [`ValidateNotNull()`](https://learn.microsoft.com/dotnet/api/system.management.automation.validatenotnullattribute?view=powershellsdk-7.4.0).

## Returns

`LibTmux.TmuxOptionValue`: The native stored value, only with PassThru.
