diff --git a/src/core/listeners.c b/src/core/listeners.c index a698a54..fed169c 100644 --- a/src/core/listeners.c +++ b/src/core/listeners.c @@ -5,6 +5,7 @@ #include "core/binding.h" #include "core/layout.h" #include "core/state.h" +#include "core/window.h" #define FOR_EACH_LISTENER(FIELD, BODY) \ do { \ @@ -117,7 +118,7 @@ static bool listeners_window_snapshot( *out = (zdwm_window_t){ .workspace = window->workspace_id, .id = window->id, - .title = window->title, + .title = window_get_showing_title(window), .focused = workspace->focused_window_id == window->id, .urgent = window->urgent, .skip_taskbar = window->skip_taskbar, diff --git a/src/core/window.c b/src/core/window.c index d0b4385..ca722c2 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -145,3 +145,11 @@ bool window_can_resize(const window_t *window) { return true; } + +const char *window_get_showing_title(const window_t *window) { + if (window->title) return window->title; + if (window->instance_name) return window->instance_name; + if (window->class_name) return window->class_name; + if (window->app_id) return window->app_id; + return nullptr; +} diff --git a/src/core/window.h b/src/core/window.h index c566541..e3a3a48 100644 --- a/src/core/window.h +++ b/src/core/window.h @@ -67,3 +67,4 @@ bool window_need_resize(const window_t *window, int32_t width, int32_t height); bool window_should_has_border(const window_t *window); bool window_should_fix_size(const window_t *window); bool window_can_resize(const window_t *window); +const char *window_get_showing_title(const window_t *window);