Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions include/modules/hyprland/workspaces.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ class Workspaces : public AModule, public EventHandler {
bool windowRewriteConfigUsesTitle() const { return m_anyWindowRewriteRuleUsesTitle; }
const IconLoader& iconLoader() const { return m_iconLoader; }

bool disableClick() const { return m_disableClick; };

private:
void onEvent(const std::string& e) override;
void updateWindowCount();
Expand Down Expand Up @@ -151,6 +153,8 @@ class Workspaces : public AModule, public EventHandler {
void loadPersistentWorkspacesFromConfig(Json::Value const& clientsJson);
void loadPersistentWorkspacesFromWorkspaceRules(const Json::Value& clientsJson);

void populatedisableClickByConfig(const Json::Value& config);

bool m_allOutputs = false;
bool m_showSpecial = false;
bool m_activeOnly = false;
Expand All @@ -160,6 +164,7 @@ class Workspaces : public AModule, public EventHandler {
bool m_moveToMonitor = false;
bool m_uniqueIcons = false;
bool m_barScroll = false;
bool m_disableClick = false;
Json::Value m_persistentWorkspaceConfig;

// Map for windows stored in workspaces not present in the current bar.
Expand Down
5 changes: 5 additions & 0 deletions man/waybar-hyprland-workspaces.5.scd
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,11 @@ This setting is ignored if *workspace-taskbar.enable* is set to true.
default: false ++
Enables this module to consume all left over space dynamically.

*disable-click*: ++
typeof: bool ++
default: false ++
Disables workspace click.

# FORMAT REPLACEMENTS

*{id}*: id of workspace assigned by compositor
Expand Down
3 changes: 3 additions & 0 deletions src/modules/hyprland/workspace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,9 @@ bool Workspace::handleLeave(GdkEventCrossing* /*event*/) {
return false;
}
bool Workspace::handleClicked(GdkEventButton* bt) const {
if (m_workspaceManager.disableClick()) {
return false;
}
if (bt->type == GDK_BUTTON_PRESS) {
try {
if (id() > 0) { // normal
Expand Down
11 changes: 10 additions & 1 deletion src/modules/hyprland/workspaces.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,7 @@ auto Workspaces::parseConfig(const Json::Value& config) -> void {
populateBoolConfig(config, "move-to-monitor", m_moveToMonitor);
populateBoolConfig(config, "unique-icons", m_uniqueIcons);
populateBoolConfig(config, "enable-bar-scroll", m_barScroll);
populateBoolConfig(config, "disable-click", m_disableClick);

m_persistentWorkspaceConfig = config.get("persistent-workspaces", Json::Value());
populateSortByConfig(config);
Expand Down Expand Up @@ -741,6 +742,14 @@ auto Workspaces::populateIgnoreWorkspacesConfig(const Json::Value& config) -> vo
}
}

auto Workspaces::populatedisableClickByConfig(const Json::Value& config) -> void {
const auto& configdisableClick = config["disable-click"];

if (configdisableClick.isBool()) {
m_disableClick = configdisableClick.asBool();
}
}

auto Workspaces::populateFormatWindowSeparatorConfig(const Json::Value& config) -> void {
const auto& formatWindowSeparator = config["format-window-separator"];
m_formatWindowSeparator =
Expand Down Expand Up @@ -837,7 +846,7 @@ auto Workspaces::populateWorkspaceTaskbarConfig(const Json::Value& config) -> vo
auto posStr = workspaceTaskbar["active-window-position"].asString();
try {
m_activeWindowPosition =
util::parseStringToEnum<ActiveWindowPosition>(posStr, m_activeWindowPositionMap);
util::parseStringToEnum<ActiveWindowPosition>(posStr, m_activeWindowPositionMap);
} catch (const std::invalid_argument& e) {
spdlog::warn(
"Invalid string representation for active-window-position. Falling back to 'none'.");
Expand Down
Loading