1
0
Fork 0
mirror of https://github.com/polybar/polybar.git synced 2024-11-25 13:55:47 -05:00

feat(xwindow): Add label-empty

Allows for custom text, when window title is empty
This commit is contained in:
Keno Goertz 2018-04-02 00:00:16 +02:00 committed by Patrick Ziegler
parent 8f75e685cc
commit d31570fe2f
2 changed files with 13 additions and 3 deletions

View file

@ -30,6 +30,11 @@ namespace modules {
*/ */
class xwindow_module : public static_module<xwindow_module>, public event_handler<evt::property_notify> { class xwindow_module : public static_module<xwindow_module>, public event_handler<evt::property_notify> {
public: public:
enum class state {
NONE,
ACTIVE,
EMPTY
};
explicit xwindow_module(const bar_settings&, string); explicit xwindow_module(const bar_settings&, string);
void update(bool force = false); void update(bool force = false);
@ -43,6 +48,7 @@ namespace modules {
connection& m_connection; connection& m_connection;
unique_ptr<active_window> m_active; unique_ptr<active_window> m_active;
map<state, label_t> m_statelabels;
label_t m_label; label_t m_label;
}; };
} }

View file

@ -77,7 +77,8 @@ namespace modules {
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL}); m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL});
if (m_formatter->has(TAG_LABEL)) { if (m_formatter->has(TAG_LABEL)) {
m_label = load_optional_label(m_conf, name(), TAG_LABEL, "%title%"); m_statelabels.emplace(state::ACTIVE, load_optional_label(m_conf, name(), "label", "%title%"));
m_statelabels.emplace(state::EMPTY, load_optional_label(m_conf, name(), "label-empty", ""));
} }
} }
@ -118,9 +119,12 @@ namespace modules {
m_active = make_unique<active_window>(m_connection, win); m_active = make_unique<active_window>(m_connection, win);
} }
if (m_label) { if (m_active) {
m_label = m_statelabels.at(state::ACTIVE)->clone();
m_label->reset_tokens(); m_label->reset_tokens();
m_label->replace_token("%title%", m_active ? m_active->title() : ""); m_label->replace_token("%title%", m_active->title());
} else {
m_label = m_statelabels.at(state::EMPTY)->clone();
} }
} }