zellij-org/zellij · error · anyhow::Error

CliAssets missing terminal_window_size

Error message

CliAssets missing terminal_window_size

What it means

Error "CliAssets missing terminal_window_size" thrown in zellij-org/zellij.

Source

Thrown at zellij-utils/src/ipc/protobuf_conversion.rs:874

impl TryFrom<crate::client_server_contract::client_server_contract::CliAssets>
    for crate::input::cli_assets::CliAssets
{
    type Error = anyhow::Error;
    fn try_from(
        cli_assets: crate::client_server_contract::client_server_contract::CliAssets,
    ) -> Result<Self> {
        Ok(Self {
            config_file_path: cli_assets.config_file_path.map(PathBuf::from),
            config_dir: cli_assets.config_dir.map(PathBuf::from),
            should_ignore_config: cli_assets.should_ignore_config,
            configuration_options: cli_assets
                .configuration_options
                .map(|o| o.try_into())
                .transpose()?,
            layout: cli_assets.layout.map(|l| l.try_into()).transpose()?,
            terminal_window_size: cli_assets
                .terminal_window_size
                .ok_or_else(|| anyhow!("CliAssets missing terminal_window_size"))?
                .try_into()?,
            data_dir: cli_assets.data_dir.map(PathBuf::from),
            is_debug: cli_assets.is_debug,
            max_panes: cli_assets.max_panes.map(|m| m as usize),
            force_run_layout_commands: cli_assets.force_run_layout_commands,
            cwd: cli_assets.cwd.map(PathBuf::from),
            host_terminal_env: cli_assets.host_terminal_env.into_iter().collect(),
            initial_panes: if cli_assets.initial_panes.is_empty() {
                None
            } else {
                Some(
                    cli_assets
                        .initial_panes
                        .into_iter()
                        .map(|p| p.try_into())
                        .collect::<Result<Vec<_>>>()?,
                )
            },

View on GitHub (pinned to e839bfffa5)

Solutions

  1. Include the required 'terminal_window_size' field in the protobuf message before sending it.
  2. Verify the sender populates all mandatory fields; add a presence check before conversion.

When it happens

Trigger: Occurs when a protobuf message received over IPC omits the required field; deserialization fails instead of using a default.

Common situations: Occurs when a client or plugin sends an incompletely populated message, often from a version mismatch or hand-crafted payload.


AI-assisted analysis of zellij-org/zellij@e839bfffa5 (2026-08-19). Data as JSON: /api/errors/c7476f0db053f203. Report an issue: GitHub.