# config.ShellCommand

- **Module:** config
- **Package:** tmux-workspace
- **Language:** Rust
- **Kind:** struct
- **Source:** https://github.com/libtmux/libtmux-rs/blob/f0e37052c232636b61d095817046e6bfc8f2ca40/crates/tmux-workspace/src/config.rs#L238
- **Page:** https://libtmux.org/en/rs/latest/workspace/reference/config-shellcommand/

One command typed into a pane, with tmuxp's per-command settings.

A file writes it as a string, or as a mapping with `cmd` and any of
`enter`, `sleep_before` and `sleep_after`. A setting given here holds for
the commands after it in the same pane until one of them sets its own,
because that is what tmuxp does: `enter: false` on one command leaves the
next one unentered too.

## Example

```rust
use tmux_workspace::{ShellCommand, Workspace};

let workspace = Workspace::from_yaml(
    "
session_name: demo
windows:
  - panes:
      - shell_command:
          - cd src
          - cmd: cargo test
            enter: false
",
)?;

let commands = &workspace.windows[0].panes[0].shell_commands;
assert_eq!(commands[0], ShellCommand::new("cd src"));
assert_eq!(commands[1].cmd, "cargo test");
assert_eq!(commands[1].enter, Some(false));
```

## Members

- `cmd` (attribute): The text typed into the pane.
- `enter` (attribute): Whether to press Enter after it. `None` keeps whatever is in force.
- `sleep_before` (attribute): How long to wait before typing it. `None` keeps whatever is in force.
- `sleep_after` (attribute): How long to wait after typing it. `None` keeps whatever is in force.
- `new` (method): A command with no settings of its own.
