From a6980fca7fef9b71e2cfad3855308f11e709e7d2 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 28 Jun 2019 14:16:09 +0200 Subject: [PATCH] feat: ellipsize modules --- include/ALabel.hpp | 2 +- src/ALabel.cpp | 4 ++-- src/bar.cpp | 10 +++++----- src/modules/sway/mode.cpp | 5 +++-- src/modules/sway/window.cpp | 2 +- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/ALabel.hpp b/include/ALabel.hpp index 9e1a08d..f4ca8af 100644 --- a/include/ALabel.hpp +++ b/include/ALabel.hpp @@ -10,7 +10,7 @@ namespace waybar { class ALabel : public AModule { public: ALabel(const Json::Value &, const std::string &, const std::string &, const std::string &format, - uint16_t interval = 0); + uint16_t interval = 0, bool ellipsize = false); virtual ~ALabel() = default; virtual auto update() -> void; virtual std::string getIcon(uint16_t, const std::string &alt = "", uint16_t max = 0); diff --git a/src/ALabel.cpp b/src/ALabel.cpp index 8fa8cee..3d9f2b2 100644 --- a/src/ALabel.cpp +++ b/src/ALabel.cpp @@ -5,7 +5,7 @@ namespace waybar { ALabel::ALabel(const Json::Value& config, const std::string& name, const std::string& id, - const std::string& format, uint16_t interval) + const std::string& format, uint16_t interval, bool ellipsize) : AModule(config, name, id, config["format-alt"].isString()), format_(config_["format"].isString() ? config_["format"].asString() : format), interval_(config_["interval"] == "once" @@ -21,7 +21,7 @@ ALabel::ALabel(const Json::Value& config, const std::string& name, const std::st if (config_["max-length"].isUInt()) { label_.set_max_width_chars(config_["max-length"].asUInt()); label_.set_ellipsize(Pango::EllipsizeMode::ELLIPSIZE_END); - } else if (label_.get_max_width_chars() == -1) { + } else if (ellipsize && label_.get_max_width_chars() == -1) { label_.set_ellipsize(Pango::EllipsizeMode::ELLIPSIZE_END); } diff --git a/src/bar.cpp b/src/bar.cpp index 4d02148..860bcec 100644 --- a/src/bar.cpp +++ b/src/bar.cpp @@ -302,9 +302,9 @@ void waybar::Bar::getModules(const Factory& factory, const std::string& pos) { auto waybar::Bar::setupWidgets() -> void { window.add(box_); - box_.pack_start(left_, true, true); + box_.pack_start(left_, false, false); box_.set_center_widget(center_); - box_.pack_end(right_, true, true); + box_.pack_end(right_, false, false); // Convert to button code for every module that is used. setupAltFormatKeyForModuleList("modules-left"); @@ -316,13 +316,13 @@ auto waybar::Bar::setupWidgets() -> void { getModules(factory, "modules-center"); getModules(factory, "modules-right"); for (auto const& module : modules_left_) { - left_.pack_start(*module, false, true, 0); + left_.pack_start(*module, false, false); } for (auto const& module : modules_center_) { - center_.pack_start(*module, true, true, 0); + center_.pack_start(*module, false, false); } std::reverse(modules_right_.begin(), modules_right_.end()); for (auto const& module : modules_right_) { - right_.pack_end(*module, false, false, 0); + right_.pack_end(*module, false, false); } } diff --git a/src/modules/sway/mode.cpp b/src/modules/sway/mode.cpp index 1f1cd88..d202b8b 100644 --- a/src/modules/sway/mode.cpp +++ b/src/modules/sway/mode.cpp @@ -3,7 +3,8 @@ namespace waybar::modules::sway { -Mode::Mode(const std::string& id, const Json::Value& config) : ALabel(config, "mode", id, "{}") { +Mode::Mode(const std::string& id, const Json::Value& config) + : ALabel(config, "mode", id, "{}", 0, true) { ipc_.subscribe(R"(["mode"])"); ipc_.signal_event.connect(sigc::mem_fun(*this, &Mode::onEvent)); // Launch worker @@ -14,7 +15,7 @@ Mode::Mode(const std::string& id, const Json::Value& config) : ALabel(config, "m void Mode::onEvent(const struct Ipc::ipc_response& res) { try { std::lock_guard lock(mutex_); - auto payload = parser_.parse(res.payload); + auto payload = parser_.parse(res.payload); if (payload["change"] != "default") { mode_ = Glib::Markup::escape_text(payload["change"].asString()); } else { diff --git a/src/modules/sway/window.cpp b/src/modules/sway/window.cpp index 0616a32..1036239 100644 --- a/src/modules/sway/window.cpp +++ b/src/modules/sway/window.cpp @@ -4,7 +4,7 @@ namespace waybar::modules::sway { Window::Window(const std::string& id, const Bar& bar, const Json::Value& config) - : ALabel(config, "window", id, "{}"), bar_(bar), windowId_(-1) { + : ALabel(config, "window", id, "{}", 0, true), bar_(bar), windowId_(-1) { ipc_.subscribe(R"(["window","workspace"])"); ipc_.signal_event.connect(sigc::mem_fun(*this, &Window::onEvent)); ipc_.signal_cmd.connect(sigc::mem_fun(*this, &Window::onCmd));