dwl/window: allow hiding of title when either inactive or empty
This commit is contained in:
@@ -32,6 +32,8 @@ class Window : public AAppIconLabel, public sigc::trackable {
|
|||||||
std::string appid_;
|
std::string appid_;
|
||||||
std::string layout_symbol_;
|
std::string layout_symbol_;
|
||||||
bool active_;
|
bool active_;
|
||||||
|
bool hide_inactive_;
|
||||||
|
bool hide_empty_;
|
||||||
uint32_t layout_;
|
uint32_t layout_;
|
||||||
|
|
||||||
struct zdwl_ipc_output_v2 *output_status_;
|
struct zdwl_ipc_output_v2 *output_status_;
|
||||||
|
|||||||
@@ -17,6 +17,16 @@ Addressed by *dwl/window*
|
|||||||
default: {title} ++
|
default: {title} ++
|
||||||
The format, how information should be displayed.
|
The format, how information should be displayed.
|
||||||
|
|
||||||
|
*hide-empty*: ++
|
||||||
|
typeof: bool ++
|
||||||
|
default: false ++
|
||||||
|
Option to hide the module when the content would be empty.
|
||||||
|
|
||||||
|
*hide-inactive*: ++
|
||||||
|
typeof: bool ++
|
||||||
|
default: false ++
|
||||||
|
Option to hide the module when the window is unfocused.
|
||||||
|
|
||||||
*rotate*: ++
|
*rotate*: ++
|
||||||
typeof: integer ++
|
typeof: integer ++
|
||||||
Positive value to rotate the text label (in 90 degree increments).
|
Positive value to rotate the text label (in 90 degree increments).
|
||||||
|
|||||||
@@ -76,7 +76,15 @@ static const wl_registry_listener registry_listener_impl = {.global = handle_glo
|
|||||||
Window::Window(const std::string &id, const Bar &bar, const Json::Value &config)
|
Window::Window(const std::string &id, const Bar &bar, const Json::Value &config)
|
||||||
: AAppIconLabel(config, "window", id, "{}", 0, true),
|
: AAppIconLabel(config, "window", id, "{}", 0, true),
|
||||||
bar_(bar),
|
bar_(bar),
|
||||||
active_(false) {
|
active_(false),
|
||||||
|
hide_inactive_(false),
|
||||||
|
hide_empty_(false) {
|
||||||
|
if (config_["hide-inactive"].isBool()) {
|
||||||
|
hide_inactive_ = config["hide-inactive"].asBool();
|
||||||
|
}
|
||||||
|
if (config_["hide-empty"].isBool()) {
|
||||||
|
hide_empty_ = config["hide-empty"].asBool();
|
||||||
|
}
|
||||||
struct wl_display *display = Client::inst()->wl_display;
|
struct wl_display *display = Client::inst()->wl_display;
|
||||||
struct wl_registry *registry = wl_display_get_registry(display);
|
struct wl_registry *registry = wl_display_get_registry(display);
|
||||||
|
|
||||||
@@ -122,10 +130,18 @@ void Window::handle_frame() {
|
|||||||
if (tooltipEnabled()) {
|
if (tooltipEnabled()) {
|
||||||
label_.set_tooltip_text(title_);
|
label_.set_tooltip_text(title_);
|
||||||
}
|
}
|
||||||
if (active_) {
|
if (hide_empty_ && title_.empty()) {
|
||||||
box_.get_style_context()->add_class("active");
|
box_.set_visible(false);
|
||||||
} else {
|
} else {
|
||||||
box_.get_style_context()->remove_class("active");
|
if (active_) {
|
||||||
|
box_.get_style_context()->add_class("active");
|
||||||
|
box_.set_visible(true);
|
||||||
|
} else {
|
||||||
|
box_.get_style_context()->remove_class("active");
|
||||||
|
if (hide_inactive_) {
|
||||||
|
box_.set_visible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user