mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-04 01:32:42 +01:00 
			
		
		
		
	Merge pull request #1014 from Moonlight-Angel/disable-auto-back-and-forth
Add a way to configure auto_back_and_forth on Sway workspaces
This commit is contained in:
		@@ -20,7 +20,7 @@ class Workspaces : public AModule, public sigc::trackable {
 | 
			
		||||
  auto update() -> void;
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  static inline const std::string workspace_switch_cmd_ = "workspace --no-auto-back-and-forth \"{}\"";
 | 
			
		||||
  static inline const std::string workspace_switch_cmd_ = "workspace {} \"{}\"";
 | 
			
		||||
 | 
			
		||||
  static int convertWorkspaceNameToNum(std::string name);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,12 +66,16 @@ Addressed by *sway/workspaces*
 | 
			
		||||
    Lists workspaces that should always be shown, even when non existent
 | 
			
		||||
 | 
			
		||||
*on-update*: ++
 | 
			
		||||
	typeof: string ++
 | 
			
		||||
	Command to execute when the module is updated.
 | 
			
		||||
    typeof: string ++
 | 
			
		||||
    Command to execute when the module is updated.
 | 
			
		||||
 | 
			
		||||
*numeric-first*: ++
 | 
			
		||||
	typeof: bool ++
 | 
			
		||||
	Whether to put workspaces starting with numbers before workspaces that do not start with a number.
 | 
			
		||||
    typeof: bool ++
 | 
			
		||||
    Whether to put workspaces starting with numbers before workspaces that do not start with a number.
 | 
			
		||||
 | 
			
		||||
*disable-auto-back-and-forth*: ++
 | 
			
		||||
    typeof: bool ++
 | 
			
		||||
    Whether to disable *workspace_auto_back_and_forth* when clicking on workspaces. If this is set to *true*, clicking on a workspace you are already on won't do anything, even if *workspace_auto_back_and_forth* is enabled in the Sway configuration.
 | 
			
		||||
 | 
			
		||||
# FORMAT REPLACEMENTS
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -257,11 +257,19 @@ Gtk::Button &Workspaces::addButton(const Json::Value &node) {
 | 
			
		||||
          ipc_.sendCmd(
 | 
			
		||||
              IPC_COMMAND,
 | 
			
		||||
              fmt::format(workspace_switch_cmd_ + "; move workspace to output \"{}\"; " + workspace_switch_cmd_,
 | 
			
		||||
                          "--no-auto-back-and-forth",
 | 
			
		||||
                          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_, node["name"].asString()));
 | 
			
		||||
          ipc_.sendCmd(
 | 
			
		||||
              IPC_COMMAND,
 | 
			
		||||
              fmt::format("workspace {} \"{}\"",
 | 
			
		||||
                          config_["disable-auto-back-and-forth"].asBool()
 | 
			
		||||
                            ? "--no-auto-back-and-forth"
 | 
			
		||||
                            : "",
 | 
			
		||||
                          node["name"].asString()));
 | 
			
		||||
        }
 | 
			
		||||
      } catch (const std::exception &e) {
 | 
			
		||||
        spdlog::error("Workspaces: {}", e.what());
 | 
			
		||||
@@ -322,7 +330,9 @@ bool Workspaces::handleScroll(GdkEventScroll *e) {
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  try {
 | 
			
		||||
    ipc_.sendCmd(IPC_COMMAND, fmt::format(workspace_switch_cmd_, name));
 | 
			
		||||
    ipc_.sendCmd(
 | 
			
		||||
        IPC_COMMAND,
 | 
			
		||||
        fmt::format(workspace_switch_cmd_, "--no-auto-back-and-forth", name));
 | 
			
		||||
  } catch (const std::exception &e) {
 | 
			
		||||
    spdlog::error("Workspaces: {}", e.what());
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user