fix(sway/workspaces): use number when available to avoid parsing issues

This commit is contained in:
Mathis Raguin
2025-12-31 15:40:31 +01:00
parent 0a5da13fbf
commit da4367df2f
2 changed files with 10 additions and 6 deletions
+2 -1
View File
@@ -23,7 +23,8 @@ class Workspaces : public AModule, public sigc::trackable {
auto update() -> void override;
private:
static constexpr std::string_view workspace_switch_cmd_ = "workspace {} {}";
static constexpr std::string_view workspace_switch_cmd_ = "workspace {} \"{}\"";
static constexpr std::string_view workspace_switch_number_cmd_ = "workspace {} number {}";
static constexpr std::string_view persistent_workspace_switch_cmd_ =
R"(workspace {} "{}"; move workspace to output "{}"; workspace {} "{}")";
+8 -5
View File
@@ -369,11 +369,14 @@ Gtk::Button &Workspaces::addButton(const Json::Value &node) {
node["name"].asString(), node["target_output"].asString(),
"--no-auto-back-and-forth", node["name"].asString()));
} else {
ipc_.sendCmd(IPC_COMMAND, fmt::format(workspace_switch_cmd_,
config_["disable-auto-back-and-forth"].asBool()
? "--no-auto-back-and-forth"
: "",
node["name"].asString()));
std::string flag = config_["disable-auto-back-and-forth"].asBool()
? "--no-auto-back-and-forth"
: "";
if (node["num"].asInt() >= 0) {
ipc_.sendCmd(IPC_COMMAND, fmt::format(workspace_switch_number_cmd_, flag, node["num"].asInt()));
} else {
ipc_.sendCmd(IPC_COMMAND, fmt::format(workspace_switch_cmd_, flag, node["name"].asString()));
}
}
} catch (const std::exception &e) {
spdlog::error("Workspaces: {}", e.what());