{"record":{"id":"d64a3373aed79b03","repo":"glzr-io/glazewm","slug":"unsupported-ipc-command","errorCode":null,"errorMessage":"Unsupported IPC command.","messagePattern":"Unsupported IPC command\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/wm/src/ipc_server.rs","lineNumber":317,"sourceCode":"                }\r\n              }\r\n            }\r\n          }\r\n        });\r\n\r\n        ClientResponseData::EventSubscribe(EventSubscribeData {\r\n          subscription_id,\r\n        })\r\n      }\r\n      AppCommand::Unsub { subscription_id } => {\r\n        self\r\n          .unsubscribe_tx\r\n          .send(subscription_id)\r\n          .context(\"Failed to unsubscribe from event.\")?;\r\n\r\n        ClientResponseData::EventUnsubscribe\r\n      }\r\n      AppCommand::Start { .. } => bail!(\"Unsupported IPC command.\"),\r\n    };\r\n\r\n    Ok(response_data)\r\n  }\r\n\r\n  fn to_client_response_msg(\r\n    client_message: String,\r\n    response_data: anyhow::Result<ClientResponseData>,\r\n  ) -> anyhow::Result<Message> {\r\n    let error = response_data.as_ref().err().map(ToString::to_string);\r\n    let success = response_data.as_ref().is_ok();\r\n\r\n    let message = ServerMessage::ClientResponse(ClientResponseMessage {\r\n      client_message,\r\n      data: response_data.ok(),\r\n      error,\r\n      success,\r\n    });\r","sourceCodeStart":299,"sourceCodeEnd":335,"githubUrl":"https://github.com/glzr-io/glazewm/blob/5709ad0a3c7c386bbc3e38166a865ffc12937515/packages/wm/src/ipc_server.rs#L299-L335","documentation":"`handle_app_command` dispatches `AppCommand` variants to their handlers. The `Start` command is not supported by the IPC server (it exists only for launching the app), so any client sending it gets this bail.","triggerScenarios":"Sending `{\"commandType\":\"wm-disable\"...}` style messages is fine, but sending `AppCommand::Start` over the IPC WebSocket — e.g. a client reusing the CLI's full command enum including `start` — hits this arm.","commonSituations":"Custom IPC clients or scripts constructing commands from the full `AppCommand` enum and accidentally including `start`, or outdated clients using deprecated command shapes.","solutions":["Remove the `Start` command from IPC client usage; launch the WM via its executable directly","Use only commands supported over IPC (focus, move, resize, subscribe, etc.)","Match against the current IPC command surface in wm-ipc-client"],"exampleFix":"// before\nsend_command(AppCommand::Start { path: ... });\n// after\nspawn glazewm.exe directly instead of sending Start over IPC;","handlingStrategy":"validation","validationCode":"if matches!(command, AppCommand::Start { .. }) {\n  eprintln!(\"Start cannot be sent over IPC; launch the WM executable instead\");\n} else {\n  send_ipc_command(command)?;\n}","typeGuard":null,"tryCatchPattern":"match send_ipc_command(cmd) {\n  Err(e) if e.to_string().contains(\"Unsupported IPC command\") => {\n    eprintln!(\"{cmd:?} is not supported over IPC\");\n  }\n  r => r?,\n}","preventionTips":["Filter the command enum to IPC-supported variants in clients","Regenerate IPC clients from the current wm-ipc-client types","Handle this response gracefully and show available commands"],"tags":["ipc","unsupported-command"],"backgroundTag":"unsupported-operation","analyzedSha":"5709ad0a3c7c386bbc3e38166a865ffc12937515","analyzedAt":"2026-09-08T03:26:40.288Z","contentChangedAt":"2026-09-08T03:26:40.288Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}