dwl/window: add .active styling class for active windows

This commit is contained in:
Alex Denes
2025-02-08 04:01:11 +00:00
parent c32d5e3883
commit 8685e88ec4
3 changed files with 17 additions and 2 deletions
+2
View File
@@ -19,6 +19,7 @@ class Window : public AAppIconLabel, public sigc::trackable {
void handle_layout(const uint32_t layout);
void handle_title(const char *title);
void handle_appid(const char *ppid);
void handle_active(const uint32_t active);
void handle_layout_symbol(const char *layout_symbol);
void handle_frame();
@@ -30,6 +31,7 @@ class Window : public AAppIconLabel, public sigc::trackable {
std::string title_;
std::string appid_;
std::string layout_symbol_;
bool active_;
uint32_t layout_;
struct zdwl_ipc_output_v2 *output_status_;
+4
View File
@@ -109,6 +109,10 @@ If no expression matches, the format output is left unchanged.
Invalid expressions (e.g., mismatched parentheses) are skipped.
# STYLE
- *#window.active*
# EXAMPLES
```
+11 -2
View File
@@ -19,7 +19,7 @@ static void toggle_visibility(void *data, zdwl_ipc_output_v2 *zdwl_output_v2) {
}
static void active(void *data, zdwl_ipc_output_v2 *zdwl_output_v2, uint32_t active) {
// Intentionally empty
static_cast<Window *>(data)->handle_active(active);
}
static void set_tag(void *data, zdwl_ipc_output_v2 *zdwl_output_v2, uint32_t tag, uint32_t state,
@@ -74,7 +74,9 @@ static const wl_registry_listener registry_listener_impl = {.global = handle_glo
.global_remove = handle_global_remove};
Window::Window(const std::string &id, const Bar &bar, const Json::Value &config)
: AAppIconLabel(config, "window", id, "{}", 0, true), bar_(bar) {
: AAppIconLabel(config, "window", id, "{}", 0, true),
bar_(bar),
active_(false) {
struct wl_display *display = Client::inst()->wl_display;
struct wl_registry *registry = wl_display_get_registry(display);
@@ -102,6 +104,8 @@ void Window::handle_title(const char *title) { title_ = Glib::Markup::escape_tex
void Window::handle_appid(const char *appid) { appid_ = Glib::Markup::escape_text(appid); }
void Window::handle_active(const uint32_t active) { active_ = active != 0; }
void Window::handle_layout_symbol(const char *layout_symbol) {
layout_symbol_ = Glib::Markup::escape_text(layout_symbol);
}
@@ -118,6 +122,11 @@ void Window::handle_frame() {
if (tooltipEnabled()) {
label_.set_tooltip_text(title_);
}
if (active_) {
box_.get_style_context()->add_class("active");
} else {
box_.get_style_context()->remove_class("active");
}
}
} // namespace waybar::modules::dwl