From ee652677a6fed6b4579e2eec3e93adac138db914 Mon Sep 17 00:00:00 2001 From: Brenno Lemos Date: Wed, 11 Oct 2023 11:40:49 -0300 Subject: [PATCH] feat: ignore windows with empty classes or titles (if any rule uses title) --- include/modules/hyprland/workspaces.hpp | 2 ++ src/modules/hyprland/workspaces.cpp | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/modules/hyprland/workspaces.hpp b/include/modules/hyprland/workspaces.hpp index 1ab90457..9f259614 100644 --- a/include/modules/hyprland/workspaces.hpp +++ b/include/modules/hyprland/workspaces.hpp @@ -97,6 +97,8 @@ class Workspaces : public AModule, public EventHandler { std::string get_rewrite(std::string window_class, std::string window_title); std::string& get_window_separator() { return format_window_separator_; } + bool window_rewrite_config_uses_title() const { return any_window_rewrite_rule_uses_title_; } + private: void onEvent(const std::string&) override; void update_window_count(); diff --git a/src/modules/hyprland/workspaces.cpp b/src/modules/hyprland/workspaces.cpp index b8dc5e00..3be2acf2 100644 --- a/src/modules/hyprland/workspaces.cpp +++ b/src/modules/hyprland/workspaces.cpp @@ -124,7 +124,7 @@ auto Workspaces::register_ipc() -> void { gIPC->registerForIPC("movewindow", this); gIPC->registerForIPC("urgent", this); - if (any_window_rewrite_rule_uses_title_) { + if (window_rewrite_config_uses_title()) { spdlog::info( "Registering for Hyprland's 'windowtitle' events because a user-defined window " "rewrite rule uses the 'title' field."); @@ -378,7 +378,13 @@ void Workspace::initialize_window_map(const Json::Value &clients_data) { void Workspace::insert_window(WindowAddress addr, std::string window_class, std::string window_title) { + if (window_class.empty() && + (!workspace_manager_.window_rewrite_config_uses_title() || window_title.empty())) { + return; + } + auto window_repr = workspace_manager_.get_rewrite(window_class, window_title); + if (!window_repr.empty()) { window_map_[addr] = window_repr; } @@ -817,7 +823,7 @@ void Workspaces::set_urgent_workspace(std::string windowaddress) { std::string Workspaces::get_rewrite(std::string window_class, std::string window_title) { std::string window_repr_key; - if (any_window_rewrite_rule_uses_title_) { + if (window_rewrite_config_uses_title()) { window_repr_key = fmt::format("class<{}> title<{}>", window_class, window_title); } else { window_repr_key = fmt::format("class<{}>", window_class);