diff --git a/include/modules/xwindow.hpp b/include/modules/xwindow.hpp index f59aa6fc..1e257e42 100644 --- a/include/modules/xwindow.hpp +++ b/include/modules/xwindow.hpp @@ -14,52 +14,12 @@ POLYBAR_NS class connection; namespace modules { - /** - * Wrapper used to update the event mask of the - * currently active to enable title tracking - */ class active_window { public: - explicit active_window(xcb_window_t win) - : m_connection(configure_connection().create()), m_window(m_connection, win) { - try { - m_window.change_event_mask(XCB_EVENT_MASK_PROPERTY_CHANGE); - } catch (const xpp::x::error::window& err) { - } - } - - ~active_window() { - try { - m_window.change_event_mask(XCB_EVENT_MASK_NO_EVENT); - } catch (const xpp::x::error::window& err) { - } - } - - /** - * Check if current window matches passed value - */ - bool match(const xcb_window_t win) const { - return m_window == win; - } - - /** - * Get the title by returning the first non-empty value of: - * _NET_WM_VISIBLE_NAME - * _NET_WM_NAME - */ - string title(xcb_ewmh_connection_t* ewmh) { - string title; - - if (!(title = ewmh_util::get_visible_name(ewmh, m_window)).empty()) { - return title; - } else if (!(title = ewmh_util::get_wm_name(ewmh, m_window)).empty()) { - return title; - } else if (!(title = icccm_util::get_wm_name(m_connection, m_window)).empty()) { - return title; - } else { - return ""; - } - } + explicit active_window(xcb_window_t win); + ~active_window(); + bool match(const xcb_window_t win) const; + string title(xcb_ewmh_connection_t* ewmh) const; private: connection& m_connection; @@ -72,18 +32,18 @@ namespace modules { */ class xwindow_module : public static_module, public xpp::event::sink { public: - using static_module::static_module; + xwindow_module(const bar_settings&, const logger&, const config&, string); void setup(); void teardown(); void handle(const evt::property_notify& evt); void update(); - string get_output(); bool build(builder* builder, const string& tag) const; private: static constexpr const char* TAG_LABEL{"