hyprland/workspaces: allow using the original window class/title

This turns the values of window rewrite rules in hyprland/workspaces from static strings to format strings with the values {class} and {title} available.
pull/2787/head
Emily Ellis 2023-12-30 21:07:40 -05:00
parent 99d26e44ee
commit ff09ef6d71
2 changed files with 4 additions and 2 deletions

View File

@ -24,7 +24,7 @@ Addressed by *hyprland/workspaces*
*window-rewrite*: ++ *window-rewrite*: ++
typeof: object ++ typeof: object ++
Regex rules to map window class to an icon or preferred method of representation for a workspace's window. Regex rules to map window class to an icon or preferred method of representation for a workspace's window.
Keys are the rules, while the values are the methods of representation. Keys are the rules, while the values are the methods of representation. Values may use the placeholders {class} and {title} to use the window's original class and/or title respectively.
Rules may specify `class<...>`, `title<...>`, or both in order to fine-tune the matching. Rules may specify `class<...>`, `title<...>`, or both in order to fine-tune the matching.
*window-rewrite-default*: *window-rewrite-default*:

View File

@ -891,7 +891,9 @@ std::string Workspaces::getRewrite(std::string window_class, std::string window_
} else { } else {
windowReprKey = fmt::format("class<{}>", window_class); windowReprKey = fmt::format("class<{}>", window_class);
} }
return m_windowRewriteRules.get(windowReprKey); auto const rewriteRule = m_windowRewriteRules.get(windowReprKey);
return fmt::format(fmt::runtime(rewriteRule), fmt::arg("class", window_class),
fmt::arg("title", window_title));
} }
WindowCreationPayload::WindowCreationPayload(std::string workspace_name, WindowCreationPayload::WindowCreationPayload(std::string workspace_name,