diff --git a/config.cmake b/config.cmake index 577036b4..d6ed90eb 100644 --- a/config.cmake +++ b/config.cmake @@ -176,14 +176,12 @@ enable-click = false ; Available tokens: ; %name% -; Only show tags on the same output as the bar -;pin-tags = true - -label-title = "%title%" +label-title = %title% label-title-padding = 2 label-title-forefround = ${colors.primary} label-title-maxlen = 30 +label-layout = %layout% label-layout-padding = 2 label-layout-foreground = #000 label-layout-background = ${colors.primary} @@ -199,16 +197,22 @@ label-unfocused = %name% label-unfocused-padding = 2 ; visible = Active tag on unfocused monitor -label-visible = %index% +label-visible = %name% label-visible-background = ${self.label-focused-background} label-visible-underline = ${self.label-focused-underline} label-visible-padding = ${self.label-focused-padding} ; urgent = Tag with urgency hint set -label-urgent = %index% +label-urgent = %name% label-urgent-background = ${colors.alert} label-urgent-padding = 2 +; empty = Tags with no windows assigned +; This can be set to an empty string to hide empty tags +label-empty = %name% +label-empty-background = ${colors.primary} +label-empty-padding = 2 + ; Separator in between workspaces ; label-separator = | diff --git a/include/modules/dwm.hpp b/include/modules/dwm.hpp index 449f0d99..3565c147 100644 --- a/include/modules/dwm.hpp +++ b/include/modules/dwm.hpp @@ -19,7 +19,7 @@ namespace modules { URGENT, ///< Tag is urgent, overrides all below UNFOCUSED, ///< Monitor is not selected, but tag is selected VISIBLE, ///< Tag is not selected, but occupied - NONE ///< Tag is unoccupied and unselected + EMPTY ///< Tag is unoccupied and unselected }; struct tag_t { @@ -67,7 +67,6 @@ namespace modules { auto reconnect_dwm() -> bool; bool m_click{true}; - bool m_pin_tags{false}; const dwmipc::Monitor* m_active_mon = nullptr; const dwmipc::Monitor* m_bar_mon = nullptr; diff --git a/src/modules/dwm.cpp b/src/modules/dwm.cpp index 32a34b77..4592254e 100644 --- a/src/modules/dwm.cpp +++ b/src/modules/dwm.cpp @@ -41,7 +41,7 @@ namespace modules { m_state_labels.insert( std::make_pair(state_t::URGENT, load_optional_label(m_conf, name(), "label-urgent", DEFAULT_STATE_LABEL))); m_state_labels.insert( - std::make_pair(state_t::NONE, load_optional_label(m_conf, name(), "label-none", DEFAULT_STATE_LABEL))); + std::make_pair(state_t::EMPTY, load_optional_label(m_conf, name(), "label-empty", DEFAULT_STATE_LABEL))); } m_seperator_label = load_optional_label(m_conf, name(), "label-separator", ""); @@ -55,7 +55,6 @@ namespace modules { } m_click = m_conf.get(name(), "enable-click", m_click); - m_pin_tags = m_conf.get(name(), "pin-tags", m_pin_tags); try { update_monitor_ref(); @@ -141,24 +140,21 @@ namespace modules { } else if (tag == TAG_LABEL_STATE) { bool first = true; for (const auto& tag : m_tags) { - // Print tags without state only if m_pin_tags - if ((tag.state == state_t::NONE && m_pin_tags) || (!m_pin_tags && tag.state != state_t::NONE)) { - // Don't insert separator before first tag - if (first) { - first = false; - } else if (*m_seperator_label) { - builder->node(m_seperator_label); - } + // Don't insert separator before first tag + if (first) { + first = false; + } else if (*m_seperator_label) { + builder->node(m_seperator_label); + } - if (m_click) { - builder->cmd(mousebtn::LEFT, EVENT_PREFIX + string{EVENT_LCLICK} + "-" + to_string(tag.bit_mask)); - builder->cmd(mousebtn::RIGHT, EVENT_PREFIX + string{EVENT_RCLICK} + "-" + to_string(tag.bit_mask)); - builder->node(tag.label); - builder->cmd_close(); - builder->cmd_close(); - } else { - builder->node(tag.label); - } + if (m_click) { + builder->cmd(mousebtn::LEFT, EVENT_PREFIX + string{EVENT_LCLICK} + "-" + to_string(tag.bit_mask)); + builder->cmd(mousebtn::RIGHT, EVENT_PREFIX + string{EVENT_RCLICK} + "-" + to_string(tag.bit_mask)); + builder->node(tag.label); + builder->cmd_close(); + builder->cmd_close(); + } else { + builder->node(tag.label); } } } else { @@ -202,7 +198,7 @@ namespace modules { // Monitor unselected - Tag selected UNFOCUSED // Tag unselected - Tag occupied - Tag non-urgent VISIBLE // Tag unselected - Tag occupied - Tag urgent URGENT - // Tag unselected - Tag unoccupied PIN? + // Tag unselected - Tag unoccupied EMPTY auto tag_state = m_bar_mon->tag_state; bool is_mon_active = m_bar_mon == m_active_mon; @@ -221,7 +217,7 @@ namespace modules { return state_t::VISIBLE; } - return state_t::NONE; + return state_t::EMPTY; } void dwm_module::update_monitor_ref() { @@ -258,7 +254,7 @@ namespace modules { if (client_id != 0) { try { new_title = m_ipc->get_client(client_id)->name; - } catch (const dwmipc::IPCError &err) { + } catch (const dwmipc::IPCError& err) { throw module_error(err.what()); } }