wlr/taskbar: add support for rewrite rules

This commit is contained in:
David Schulte 2023-07-02 12:23:36 +02:00
parent 91588fb8bb
commit c55cd82b39
2 changed files with 29 additions and 1 deletions

View File

@ -81,6 +81,10 @@ Addressed by *wlr/taskbar*
typeof: object ++
Dictionary of app_id to be replaced with
*rewrite*: ++
typeof: object ++
Rules to rewrite the module format output. See *rewrite rules*.
# FORMAT REPLACEMENTS
*{icon}*: The icon of the application.
@ -109,6 +113,18 @@ Addressed by *wlr/taskbar*
*close*: Close the application.
# REWRITE RULES
*rewrite* is an object where keys are regular expressions and values are
rewrite rules if the expression matches. Rules may contain references to
captures of the expression.
Regular expression and replacement follow ECMA-script rules.
If no expression matches, the format output is left unchanged.
Invalid expressions (e.g., mismatched parentheses) are skipped.
# EXAMPLES
```
@ -124,6 +140,10 @@ Addressed by *wlr/taskbar*
],
"app_ids-mapping": {
"firefoxdeveloperedition": "firefox-developer-edition"
},
"rewrite": {
"Firefox Web Browser": "Firefox",
"Foot Server": "Terminal"
}
}
```

View File

@ -22,6 +22,8 @@
#include "util/format.hpp"
#include "util/string.hpp"
#include "util/rewrite_string.hpp"
namespace waybar::modules::wlr {
/* Icon loading functions */
@ -622,6 +624,9 @@ void Task::update() {
fmt::format(fmt::runtime(format_before_), fmt::arg("title", title), fmt::arg("name", name),
fmt::arg("app_id", app_id), fmt::arg("state", state_string()),
fmt::arg("short_state", state_string(true)));
txt = waybar::util::rewriteString(txt, config_["rewrite"]);
if (markup)
text_before_.set_markup(txt);
else
@ -633,6 +638,9 @@ void Task::update() {
fmt::format(fmt::runtime(format_after_), fmt::arg("title", title), fmt::arg("name", name),
fmt::arg("app_id", app_id), fmt::arg("state", state_string()),
fmt::arg("short_state", state_string(true)));
txt = waybar::util::rewriteString(txt, config_["rewrite"]);
if (markup)
text_after_.set_markup(txt);
else