refactor(config): Deduce return type from default value
This commit is contained in:
parent
a0f1d97c2b
commit
78bb3695e6
@ -48,6 +48,8 @@ using std::array;
|
|||||||
using std::vector;
|
using std::vector;
|
||||||
using std::to_string;
|
using std::to_string;
|
||||||
|
|
||||||
|
using namespace std::string_literals;
|
||||||
|
|
||||||
constexpr size_t operator"" _z(unsigned long long n) {
|
constexpr size_t operator"" _z(unsigned long long n) {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
@ -42,11 +42,10 @@ class bar : public xpp::event::sink<evt::button_press, evt::expose, evt::propert
|
|||||||
unique_ptr<tray_manager>&&, unique_ptr<parser>&&, unique_ptr<taskqueue>&&, bool only_initialize_values);
|
unique_ptr<tray_manager>&&, unique_ptr<parser>&&, unique_ptr<taskqueue>&&, bool only_initialize_values);
|
||||||
~bar();
|
~bar();
|
||||||
|
|
||||||
void parse(string&& data) const;
|
|
||||||
void parse(const string& data, bool force = false);
|
|
||||||
|
|
||||||
const bar_settings settings() const;
|
const bar_settings settings() const;
|
||||||
|
|
||||||
|
void parse(string&& data);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void restack_window();
|
void restack_window();
|
||||||
void reconfigure_pos();
|
void reconfigure_pos();
|
||||||
|
@ -11,9 +11,6 @@
|
|||||||
|
|
||||||
POLYBAR_NS
|
POLYBAR_NS
|
||||||
|
|
||||||
#define GET_CONFIG_VALUE(section, var, name) var = m_conf.get<decltype(var)>(section, name, var)
|
|
||||||
#define REQ_CONFIG_VALUE(section, var, name) var = m_conf.get<decltype(var)>(section, name)
|
|
||||||
|
|
||||||
DEFINE_ERROR(value_error);
|
DEFINE_ERROR(value_error);
|
||||||
DEFINE_ERROR(key_error);
|
DEFINE_ERROR(key_error);
|
||||||
|
|
||||||
@ -43,7 +40,7 @@ class config {
|
|||||||
/**
|
/**
|
||||||
* Get parameter for the current bar by name
|
* Get parameter for the current bar by name
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
T get(const string& key) const {
|
T get(const string& key) const {
|
||||||
return get<T>(section(), key);
|
return get<T>(section(), key);
|
||||||
}
|
}
|
||||||
@ -51,7 +48,7 @@ class config {
|
|||||||
/**
|
/**
|
||||||
* Get value of a variable by section and parameter name
|
* Get value of a variable by section and parameter name
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
T get(const string& section, const string& key) const {
|
T get(const string& section, const string& key) const {
|
||||||
auto it = m_sections.find(section);
|
auto it = m_sections.find(section);
|
||||||
if (it == m_sections.end() || it->second.find(key) == it->second.end()) {
|
if (it == m_sections.end() || it->second.find(key) == it->second.end()) {
|
||||||
@ -64,7 +61,7 @@ class config {
|
|||||||
* Get value of a variable by section and parameter name
|
* Get value of a variable by section and parameter name
|
||||||
* with a default value in case the parameter isn't defined
|
* with a default value in case the parameter isn't defined
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
T get(const string& section, const string& key, const T& default_value) const {
|
T get(const string& section, const string& key, const T& default_value) const {
|
||||||
try {
|
try {
|
||||||
string string_value{get<string>(section, key)};
|
string string_value{get<string>(section, key)};
|
||||||
@ -78,7 +75,7 @@ class config {
|
|||||||
/**
|
/**
|
||||||
* Get list of values for the current bar by name
|
* Get list of values for the current bar by name
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
vector<T> get_list(const string& key) const {
|
vector<T> get_list(const string& key) const {
|
||||||
return get_list<T>(section(), key);
|
return get_list<T>(section(), key);
|
||||||
}
|
}
|
||||||
@ -86,7 +83,7 @@ class config {
|
|||||||
/**
|
/**
|
||||||
* Get list of values by section and parameter name
|
* Get list of values by section and parameter name
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
vector<T> get_list(const string& section, const string& key) const {
|
vector<T> get_list(const string& section, const string& key) const {
|
||||||
vector<T> results;
|
vector<T> results;
|
||||||
|
|
||||||
@ -116,7 +113,7 @@ class config {
|
|||||||
* Get list of values by section and parameter name
|
* Get list of values by section and parameter name
|
||||||
* with a default list in case the list isn't defined
|
* with a default list in case the list isn't defined
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
vector<T> get_list(const string& section, const string& key, const vector<T>& default_value) const {
|
vector<T> get_list(const string& section, const string& key, const vector<T>& default_value) const {
|
||||||
vector<T> results;
|
vector<T> results;
|
||||||
|
|
||||||
@ -148,7 +145,7 @@ class config {
|
|||||||
* warning message. If it fails load the value using the new key and given
|
* warning message. If it fails load the value using the new key and given
|
||||||
* fallback value
|
* fallback value
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
T deprecated(const string& section, const string& old, const string& newkey, const T& fallback) const {
|
T deprecated(const string& section, const string& old, const string& newkey, const T& fallback) const {
|
||||||
try {
|
try {
|
||||||
T value{get<T>(section, old)};
|
T value{get<T>(section, old)};
|
||||||
@ -162,7 +159,7 @@ class config {
|
|||||||
/**
|
/**
|
||||||
* @see deprecated<T>
|
* @see deprecated<T>
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T = string>
|
||||||
T deprecated_list(const string& section, const string& old, const string& newkey, const vector<T>& fallback) const {
|
T deprecated_list(const string& section, const string& old, const string& newkey, const vector<T>& fallback) const {
|
||||||
try {
|
try {
|
||||||
vector<T> value{get_list<T>(section, old)};
|
vector<T> value{get_list<T>(section, old)};
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#include <xcb/xcb_icccm.h>
|
#include <xcb/xcb_icccm.h>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "components/bar.hpp"
|
#include "components/bar.hpp"
|
||||||
#include "components/config.hpp"
|
#include "components/config.hpp"
|
||||||
@ -69,9 +68,9 @@ bar::bar(connection& conn, signal_emitter& emitter, const config& config, const
|
|||||||
string bs{m_conf.section()};
|
string bs{m_conf.section()};
|
||||||
|
|
||||||
// Get available RandR outputs
|
// Get available RandR outputs
|
||||||
auto monitor_name = m_conf.get<string>(bs, "monitor", "");
|
auto monitor_name = m_conf.get(bs, "monitor", ""s);
|
||||||
auto monitor_name_fallback = m_conf.get<string>(bs, "monitor-fallback", "");
|
auto monitor_name_fallback = m_conf.get(bs, "monitor-fallback", ""s);
|
||||||
auto monitor_strictmode = m_conf.get<bool>(bs, "monitor-strict", false);
|
auto monitor_strictmode = m_conf.get(bs, "monitor-strict", false);
|
||||||
auto monitors = randr_util::get_monitors(m_connection, m_connection.screen()->root, monitor_strictmode);
|
auto monitors = randr_util::get_monitors(m_connection, m_connection.screen()->root, monitor_strictmode);
|
||||||
|
|
||||||
if (monitors.empty()) {
|
if (monitors.empty()) {
|
||||||
@ -123,46 +122,44 @@ bar::bar(connection& conn, signal_emitter& emitter, const config& config, const
|
|||||||
m_opts.override_redirect = m_conf.get<bool>(bs, "dock");
|
m_opts.override_redirect = m_conf.get<bool>(bs, "dock");
|
||||||
m_conf.warn_deprecated(bs, "dock", "override-redirect");
|
m_conf.warn_deprecated(bs, "dock", "override-redirect");
|
||||||
} catch (const key_error& err) {
|
} catch (const key_error& err) {
|
||||||
m_opts.override_redirect = m_conf.get<bool>(bs, "override-redirect", m_opts.override_redirect);
|
m_opts.override_redirect = m_conf.get(bs, "override-redirect", m_opts.override_redirect);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_opts.dimvalue = m_conf.get<double>(bs, "dim-value", 1.0);
|
m_opts.dimvalue = m_conf.get(bs, "dim-value", 1.0);
|
||||||
m_opts.dimvalue = math_util::cap(m_opts.dimvalue, 0.0, 1.0);
|
m_opts.dimvalue = math_util::cap(m_opts.dimvalue, 0.0, 1.0);
|
||||||
|
|
||||||
// Build WM_NAME
|
// Build WM_NAME
|
||||||
m_opts.wmname = m_conf.get<string>(bs, "wm-name", "polybar-" + bs.substr(4) + "_" + m_opts.monitor->name);
|
m_opts.wmname = m_conf.get(bs, "wm-name", "polybar-" + bs.substr(4) + "_" + m_opts.monitor->name);
|
||||||
m_opts.wmname = string_util::replace(m_opts.wmname, " ", "-");
|
m_opts.wmname = string_util::replace(m_opts.wmname, " ", "-");
|
||||||
|
|
||||||
// Load configuration values
|
// Load configuration values
|
||||||
m_opts.origin = m_conf.get<bool>(bs, "bottom", false) ? edge::BOTTOM : edge::TOP;
|
m_opts.origin = m_conf.get(bs, "bottom", false) ? edge::BOTTOM : edge::TOP;
|
||||||
m_opts.spacing = m_conf.get<decltype(m_opts.spacing)>(bs, "spacing", m_opts.spacing);
|
m_opts.spacing = m_conf.get(bs, "spacing", m_opts.spacing);
|
||||||
m_opts.padding.left = m_conf.get<decltype(m_opts.padding.left)>(bs, "padding-left", m_opts.padding.left);
|
m_opts.padding.left = m_conf.get(bs, "padding-left", m_opts.padding.left);
|
||||||
m_opts.padding.right = m_conf.get<decltype(m_opts.padding.right)>(bs, "padding-right", m_opts.padding.right);
|
m_opts.padding.right = m_conf.get(bs, "padding-right", m_opts.padding.right);
|
||||||
m_opts.module_margin.left =
|
m_opts.module_margin.left = m_conf.get(bs, "module-margin-left", m_opts.module_margin.left);
|
||||||
m_conf.get<decltype(m_opts.module_margin.left)>(bs, "module-margin-left", m_opts.module_margin.left);
|
m_opts.module_margin.right = m_conf.get(bs, "module-margin-right", m_opts.module_margin.right);
|
||||||
m_opts.module_margin.right =
|
m_opts.separator = string_util::trim(m_conf.get(bs, "separator", ""s), '"');
|
||||||
m_conf.get<decltype(m_opts.module_margin.right)>(bs, "module-margin-right", m_opts.module_margin.right);
|
m_opts.locale = m_conf.get(bs, "locale", ""s);
|
||||||
m_opts.separator = string_util::trim(m_conf.get<string>(bs, "separator", ""), '"');
|
|
||||||
m_opts.locale = m_conf.get<string>(bs, "locale", "");
|
|
||||||
|
|
||||||
if (only_initialize_values) {
|
if (only_initialize_values) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load values used to adjust the struts atom
|
// Load values used to adjust the struts atom
|
||||||
m_opts.strut.top = m_conf.get<int>("global/wm", "margin-top", 0);
|
m_opts.strut.top = m_conf.get("global/wm", "margin-top", 0);
|
||||||
m_opts.strut.bottom = m_conf.get<int>("global/wm", "margin-bottom", 0);
|
m_opts.strut.bottom = m_conf.get("global/wm", "margin-bottom", 0);
|
||||||
|
|
||||||
// Load commands used for fallback click handlers
|
// Load commands used for fallback click handlers
|
||||||
vector<action> actions;
|
vector<action> actions;
|
||||||
actions.emplace_back(action{mousebtn::LEFT, m_conf.get<string>(bs, "click-left", "")});
|
actions.emplace_back(action{mousebtn::LEFT, m_conf.get(bs, "click-left", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::MIDDLE, m_conf.get<string>(bs, "click-middle", "")});
|
actions.emplace_back(action{mousebtn::MIDDLE, m_conf.get(bs, "click-middle", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::RIGHT, m_conf.get<string>(bs, "click-right", "")});
|
actions.emplace_back(action{mousebtn::RIGHT, m_conf.get(bs, "click-right", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::SCROLL_UP, m_conf.get<string>(bs, "scroll-up", "")});
|
actions.emplace_back(action{mousebtn::SCROLL_UP, m_conf.get(bs, "scroll-up", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::SCROLL_DOWN, m_conf.get<string>(bs, "scroll-down", "")});
|
actions.emplace_back(action{mousebtn::SCROLL_DOWN, m_conf.get(bs, "scroll-down", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::DOUBLE_LEFT, m_conf.get<string>(bs, "double-click-left", "")});
|
actions.emplace_back(action{mousebtn::DOUBLE_LEFT, m_conf.get(bs, "double-click-left", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::DOUBLE_MIDDLE, m_conf.get<string>(bs, "double-click-middle", "")});
|
actions.emplace_back(action{mousebtn::DOUBLE_MIDDLE, m_conf.get(bs, "double-click-middle", ""s)});
|
||||||
actions.emplace_back(action{mousebtn::DOUBLE_RIGHT, m_conf.get<string>(bs, "double-click-right", "")});
|
actions.emplace_back(action{mousebtn::DOUBLE_RIGHT, m_conf.get(bs, "double-click-right", ""s)});
|
||||||
|
|
||||||
for (auto&& act : actions) {
|
for (auto&& act : actions) {
|
||||||
if (!act.command.empty()) {
|
if (!act.command.empty()) {
|
||||||
@ -171,42 +168,42 @@ bar::bar(connection& conn, signal_emitter& emitter, const config& config, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load foreground/background
|
// Load foreground/background
|
||||||
m_opts.background = color::parse(m_conf.get<string>(bs, "background", color_util::hex<uint16_t>(m_opts.background)));
|
m_opts.background = color::parse(m_conf.get(bs, "background", color_util::hex<uint16_t>(m_opts.background)));
|
||||||
m_opts.foreground = color::parse(m_conf.get<string>(bs, "foreground", color_util::hex<uint16_t>(m_opts.foreground)));
|
m_opts.foreground = color::parse(m_conf.get(bs, "foreground", color_util::hex<uint16_t>(m_opts.foreground)));
|
||||||
|
|
||||||
// Load over-/underline color and size (warn about deprecated params if used)
|
// Load over-/underline color and size (warn about deprecated params if used)
|
||||||
m_conf.warn_deprecated(bs, "linecolor", "{underline,overline}-color");
|
m_conf.warn_deprecated(bs, "linecolor", "{underline,overline}-color");
|
||||||
m_conf.warn_deprecated(bs, "lineheight", "{underline,overline}-size");
|
m_conf.warn_deprecated(bs, "lineheight", "{underline,overline}-size");
|
||||||
|
|
||||||
auto linecolor = color::parse(m_conf.get<string>(bs, "linecolor", "#f00"));
|
auto linecolor = color::parse(m_conf.get(bs, "linecolor", "#f00"s));
|
||||||
auto lineheight = m_conf.get<int>(bs, "lineheight", 0);
|
auto lineheight = m_conf.get(bs, "lineheight", 0);
|
||||||
m_opts.overline.size = m_conf.get<int16_t>(bs, "overline-size", lineheight);
|
m_opts.overline.size = m_conf.get(bs, "overline-size", lineheight);
|
||||||
m_opts.overline.color = color::parse(m_conf.get<string>(bs, "overline-color", linecolor));
|
m_opts.overline.color = color::parse(m_conf.get(bs, "overline-color", linecolor));
|
||||||
m_opts.underline.size = m_conf.get<uint16_t>(bs, "underline-size", lineheight);
|
m_opts.underline.size = m_conf.get(bs, "underline-size", lineheight);
|
||||||
m_opts.underline.color = color::parse(m_conf.get<string>(bs, "underline-color", linecolor));
|
m_opts.underline.color = color::parse(m_conf.get(bs, "underline-color", linecolor));
|
||||||
|
|
||||||
// Load border settings
|
// Load border settings
|
||||||
auto bsize = m_conf.get<int>(bs, "border-size", 0);
|
auto bsize = m_conf.get(bs, "border-size", 0);
|
||||||
auto bcolor = m_conf.get<string>(bs, "border-color", "#00000000");
|
auto bcolor = m_conf.get(bs, "border-color", "#00000000"s);
|
||||||
|
|
||||||
m_opts.borders.emplace(edge::TOP, border_settings{});
|
m_opts.borders.emplace(edge::TOP, border_settings{});
|
||||||
m_opts.borders[edge::TOP].size = m_conf.get<int>(bs, "border-top", bsize);
|
m_opts.borders[edge::TOP].size = m_conf.get(bs, "border-top", bsize);
|
||||||
m_opts.borders[edge::TOP].color = color::parse(m_conf.get<string>(bs, "border-top-color", bcolor));
|
m_opts.borders[edge::TOP].color = color::parse(m_conf.get(bs, "border-top-color", bcolor));
|
||||||
m_opts.borders.emplace(edge::BOTTOM, border_settings{});
|
m_opts.borders.emplace(edge::BOTTOM, border_settings{});
|
||||||
m_opts.borders[edge::BOTTOM].size = m_conf.get<int>(bs, "border-bottom", bsize);
|
m_opts.borders[edge::BOTTOM].size = m_conf.get(bs, "border-bottom", bsize);
|
||||||
m_opts.borders[edge::BOTTOM].color = color::parse(m_conf.get<string>(bs, "border-bottom-color", bcolor));
|
m_opts.borders[edge::BOTTOM].color = color::parse(m_conf.get(bs, "border-bottom-color", bcolor));
|
||||||
m_opts.borders.emplace(edge::LEFT, border_settings{});
|
m_opts.borders.emplace(edge::LEFT, border_settings{});
|
||||||
m_opts.borders[edge::LEFT].size = m_conf.get<int>(bs, "border-left", bsize);
|
m_opts.borders[edge::LEFT].size = m_conf.get(bs, "border-left", bsize);
|
||||||
m_opts.borders[edge::LEFT].color = color::parse(m_conf.get<string>(bs, "border-left-color", bcolor));
|
m_opts.borders[edge::LEFT].color = color::parse(m_conf.get(bs, "border-left-color", bcolor));
|
||||||
m_opts.borders.emplace(edge::RIGHT, border_settings{});
|
m_opts.borders.emplace(edge::RIGHT, border_settings{});
|
||||||
m_opts.borders[edge::RIGHT].size = m_conf.get<int>(bs, "border-right", bsize);
|
m_opts.borders[edge::RIGHT].size = m_conf.get(bs, "border-right", bsize);
|
||||||
m_opts.borders[edge::RIGHT].color = color::parse(m_conf.get<string>(bs, "border-right-color", bcolor));
|
m_opts.borders[edge::RIGHT].color = color::parse(m_conf.get(bs, "border-right-color", bcolor));
|
||||||
|
|
||||||
// Load geometry values
|
// Load geometry values
|
||||||
auto w = m_conf.get<string>(m_conf.section(), "width", "100%");
|
auto w = m_conf.get(m_conf.section(), "width", "100%"s);
|
||||||
auto h = m_conf.get<string>(m_conf.section(), "height", "24");
|
auto h = m_conf.get(m_conf.section(), "height", "24"s);
|
||||||
auto offsetx = m_conf.get<string>(m_conf.section(), "offset-x", "");
|
auto offsetx = m_conf.get(m_conf.section(), "offset-x", ""s);
|
||||||
auto offsety = m_conf.get<string>(m_conf.section(), "offset-y", "");
|
auto offsety = m_conf.get(m_conf.section(), "offset-y", ""s);
|
||||||
|
|
||||||
if ((m_opts.size.w = atoi(w.c_str())) && w.find('%') != string::npos) {
|
if ((m_opts.size.w = atoi(w.c_str())) && w.find('%') != string::npos) {
|
||||||
m_opts.size.w = math_util::percentage_to_value<int>(m_opts.size.w, m_opts.monitor->w);
|
m_opts.size.w = math_util::percentage_to_value<int>(m_opts.size.w, m_opts.monitor->w);
|
||||||
@ -251,7 +248,7 @@ bar::bar(connection& conn, signal_emitter& emitter, const config& config, const
|
|||||||
m_opts.center.x += m_opts.borders[edge::LEFT].size;
|
m_opts.center.x += m_opts.borders[edge::LEFT].size;
|
||||||
|
|
||||||
m_log.trace("bar: Create renderer");
|
m_log.trace("bar: Create renderer");
|
||||||
auto fonts = m_conf.get_list<string>(m_conf.section(), "font", {});
|
auto fonts = m_conf.get_list(m_conf.section(), "font", {});
|
||||||
m_renderer = renderer::make(m_opts, move(fonts));
|
m_renderer = renderer::make(m_opts, move(fonts));
|
||||||
|
|
||||||
m_log.trace("bar: Attaching sink to registry");
|
m_log.trace("bar: Attaching sink to registry");
|
||||||
@ -315,7 +312,7 @@ const bar_settings bar::settings() const {
|
|||||||
* @param data Input string
|
* @param data Input string
|
||||||
* @param force Unless true, do not parse unchanged data
|
* @param force Unless true, do not parse unchanged data
|
||||||
*/
|
*/
|
||||||
void bar::parse(const string& data, bool force) {
|
void bar::parse(string&& data) {
|
||||||
if (!m_mutex.try_lock()) {
|
if (!m_mutex.try_lock()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -326,7 +323,7 @@ void bar::parse(const string& data, bool force) {
|
|||||||
return m_log.trace("bar: Ignoring update (shaded)");
|
return m_log.trace("bar: Ignoring update (shaded)");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data == m_lastinput && !force) {
|
if (data == m_lastinput) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,7 +359,7 @@ void bar::restack_window() {
|
|||||||
string wm_restack;
|
string wm_restack;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
wm_restack = m_conf.get<string>(m_conf.section(), "wm-restack");
|
wm_restack = m_conf.get(m_conf.section(), "wm-restack");
|
||||||
} catch (const key_error& err) {
|
} catch (const key_error& err) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "utils/factory.hpp"
|
#include "utils/factory.hpp"
|
||||||
#include "utils/file.hpp"
|
#include "utils/file.hpp"
|
||||||
#include "utils/string.hpp"
|
#include "utils/string.hpp"
|
||||||
|
#include "x11/color.hpp"
|
||||||
|
|
||||||
POLYBAR_NS
|
POLYBAR_NS
|
||||||
|
|
||||||
@ -268,4 +269,9 @@ chrono::duration<double> config::convert(string&& value) const {
|
|||||||
return chrono::duration<double>{convert<double>(forward<string>(value))};
|
return chrono::duration<double>{convert<double>(forward<string>(value))};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
color config::convert(string&& value) const {
|
||||||
|
return color{forward<string>(value)};
|
||||||
|
}
|
||||||
|
|
||||||
POLYBAR_NS_END
|
POLYBAR_NS_END
|
||||||
|
@ -86,11 +86,11 @@ controller::controller(connection& conn, signal_emitter& emitter, const logger&
|
|||||||
string configured_modules;
|
string configured_modules;
|
||||||
|
|
||||||
if (align == alignment::LEFT) {
|
if (align == alignment::LEFT) {
|
||||||
configured_modules = m_conf.get<string>(m_conf.section(), "modules-left", "");
|
configured_modules = m_conf.get(m_conf.section(), "modules-left", ""s);
|
||||||
} else if (align == alignment::CENTER) {
|
} else if (align == alignment::CENTER) {
|
||||||
configured_modules = m_conf.get<string>(m_conf.section(), "modules-center", "");
|
configured_modules = m_conf.get(m_conf.section(), "modules-center", ""s);
|
||||||
} else if (align == alignment::RIGHT) {
|
} else if (align == alignment::RIGHT) {
|
||||||
configured_modules = m_conf.get<string>(m_conf.section(), "modules-right", "");
|
configured_modules = m_conf.get(m_conf.section(), "modules-right", ""s);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto& module_name : string_util::split(configured_modules, ' ')) {
|
for (auto& module_name : string_util::split(configured_modules, ' ')) {
|
||||||
@ -99,7 +99,7 @@ controller::controller(connection& conn, signal_emitter& emitter, const logger&
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
auto type = m_conf.get<string>("module/" + module_name, "type");
|
auto type = m_conf.get("module/" + module_name, "type");
|
||||||
|
|
||||||
if (type == "custom/ipc" && !m_ipc) {
|
if (type == "custom/ipc" && !m_ipc) {
|
||||||
throw application_error("Inter-process messaging needs to be enabled");
|
throw application_error("Inter-process messaging needs to be enabled");
|
||||||
@ -240,7 +240,7 @@ void controller::read_events() {
|
|||||||
|
|
||||||
vector<int> fds;
|
vector<int> fds;
|
||||||
fds.emplace_back(*m_queuefd[PIPE_READ]);
|
fds.emplace_back(*m_queuefd[PIPE_READ]);
|
||||||
fds.emplace_back(fd_connection = m_connection.get_file_descriptor());
|
fds.emplace_back((fd_connection = m_connection.get_file_descriptor()));
|
||||||
|
|
||||||
if (m_confwatch) {
|
if (m_confwatch) {
|
||||||
m_log.trace("controller: Attach config watch");
|
m_log.trace("controller: Attach config watch");
|
||||||
@ -484,7 +484,7 @@ bool controller::on(const sig_ev::update&) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (!m_writeback) {
|
if (!m_writeback) {
|
||||||
m_bar->parse(move(contents), false);
|
m_bar->parse(move(contents));
|
||||||
} else {
|
} else {
|
||||||
std::cout << contents << std::endl;
|
std::cout << contents << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ screen::screen(connection& conn, signal_emitter& emitter, const logger& logger,
|
|||||||
, m_monitors(randr_util::get_monitors(m_connection, m_root, true))
|
, m_monitors(randr_util::get_monitors(m_connection, m_root, true))
|
||||||
, m_size({conn.screen()->width_in_pixels, conn.screen()->height_in_pixels}) {
|
, m_size({conn.screen()->width_in_pixels, conn.screen()->height_in_pixels}) {
|
||||||
// Check if the reloading has been disabled by the user
|
// Check if the reloading has been disabled by the user
|
||||||
if (!m_conf.get<bool>("settings", "screenchange-reload", false)) {
|
if (!m_conf.get("settings", "screenchange-reload", false)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,9 +50,9 @@ namespace drawtypes {
|
|||||||
auto anim_defaults = load_optional_icon(conf, section, name);
|
auto anim_defaults = load_optional_icon(conf, section, name);
|
||||||
|
|
||||||
if (required) {
|
if (required) {
|
||||||
frames = conf.get_list<string>(section, name);
|
frames = conf.get_list(section, name);
|
||||||
} else {
|
} else {
|
||||||
frames = conf.get_list<string>(section, name, {});
|
frames = conf.get_list(section, name, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < frames.size(); i++) {
|
for (size_t i = 0; i < frames.size(); i++) {
|
||||||
@ -60,7 +60,7 @@ namespace drawtypes {
|
|||||||
vec.back()->copy_undefined(anim_defaults);
|
vec.back()->copy_undefined(anim_defaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto framerate = conf.get<int>(section, name + "-framerate", 1000);
|
auto framerate = conf.get(section, name + "-framerate", 1000);
|
||||||
|
|
||||||
return factory_util::shared<animation>(move(vec), framerate);
|
return factory_util::shared<animation>(move(vec), framerate);
|
||||||
}
|
}
|
||||||
|
@ -132,9 +132,9 @@ namespace drawtypes {
|
|||||||
}, margin{};
|
}, margin{};
|
||||||
|
|
||||||
if (required) {
|
if (required) {
|
||||||
text = conf.get<string>(section, name);
|
text = conf.get(section, name);
|
||||||
} else {
|
} else {
|
||||||
text = conf.get<string>(section, name, move(def));
|
text = conf.get(section, name, move(def));
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t len{text.size()};
|
size_t len{text.size()};
|
||||||
@ -144,9 +144,9 @@ namespace drawtypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto get_left_right = [&](string key) {
|
const auto get_left_right = [&](string key) {
|
||||||
auto value = conf.get<int>(section, key, 0);
|
auto value = conf.get(section, key, 0);
|
||||||
auto left = conf.get<int>(section, key + "-left", value);
|
auto left = conf.get(section, key + "-left", value);
|
||||||
auto right = conf.get<int>(section, key + "-right", value);
|
auto right = conf.get(section, key + "-right", value);
|
||||||
return side_values{static_cast<uint16_t>(left), static_cast<uint16_t>(right)};
|
return side_values{static_cast<uint16_t>(left), static_cast<uint16_t>(right)};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -207,15 +207,15 @@ namespace drawtypes {
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
return factory_util::shared<label>(text,
|
return factory_util::shared<label>(text,
|
||||||
conf.get<string>(section, name + "-foreground", ""),
|
conf.get(section, name + "-foreground", ""s),
|
||||||
conf.get<string>(section, name + "-background", ""),
|
conf.get(section, name + "-background", ""s),
|
||||||
conf.get<string>(section, name + "-underline", ""),
|
conf.get(section, name + "-underline", ""s),
|
||||||
conf.get<string>(section, name + "-overline", ""),
|
conf.get(section, name + "-overline", ""s),
|
||||||
conf.get<int>(section, name + "-font", 0),
|
conf.get(section, name + "-font", 0),
|
||||||
padding,
|
padding,
|
||||||
margin,
|
margin,
|
||||||
conf.get<size_t>(section, name + "-maxlen", 0),
|
conf.get(section, name + "-maxlen", 0_z),
|
||||||
conf.get<bool>(section, name + "-ellipsis", true),
|
conf.get(section, name + "-ellipsis", true),
|
||||||
move(tokens));
|
move(tokens));
|
||||||
// clang-format on
|
// clang-format on
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ namespace drawtypes {
|
|||||||
string format = "%fill%%indicator%%empty%";
|
string format = "%fill%%indicator%%empty%";
|
||||||
unsigned int width;
|
unsigned int width;
|
||||||
|
|
||||||
if ((format = conf.get<decltype(format)>(section, name + "-format", format)).empty()) {
|
if ((format = conf.get(section, name + "-format", format)).empty()) {
|
||||||
throw application_error("Invalid format defined at [" + section + "." + name + "]");
|
throw application_error("Invalid format defined at [" + section + "." + name + "]");
|
||||||
}
|
}
|
||||||
if ((width = conf.get<decltype(width)>(section, name + "-width")) < 1) {
|
if ((width = conf.get<decltype(width)>(section, name + "-width")) < 1) {
|
||||||
@ -101,8 +101,8 @@ namespace drawtypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto pbar = factory_util::shared<progressbar>(bar, width, format);
|
auto pbar = factory_util::shared<progressbar>(bar, width, format);
|
||||||
pbar->set_gradient(conf.get<bool>(section, name + "-gradient", true));
|
pbar->set_gradient(conf.get(section, name + "-gradient", true));
|
||||||
pbar->set_colors(conf.get_list<string>(section, name + "-foreground", {}));
|
pbar->set_colors(conf.get_list(section, name + "-foreground", {}));
|
||||||
|
|
||||||
icon_t icon_empty;
|
icon_t icon_empty;
|
||||||
icon_t icon_fill;
|
icon_t icon_fill;
|
||||||
|
@ -106,7 +106,7 @@ int main(int argc, char** argv) {
|
|||||||
// Dump requested data
|
// Dump requested data
|
||||||
//==================================================
|
//==================================================
|
||||||
if (cli->has("dump")) {
|
if (cli->has("dump")) {
|
||||||
std::cout << conf.get<string>(conf.section(), cli->get("dump")) << std::endl;
|
std::cout << conf.get(conf.section(), cli->get("dump")) << std::endl;
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
if (cli->has("print-wmname")) {
|
if (cli->has("print-wmname")) {
|
||||||
@ -120,7 +120,7 @@ int main(int argc, char** argv) {
|
|||||||
unique_ptr<ipc> ipc{};
|
unique_ptr<ipc> ipc{};
|
||||||
unique_ptr<inotify_watch> config_watch{};
|
unique_ptr<inotify_watch> config_watch{};
|
||||||
|
|
||||||
if (conf.get<bool>(conf.section(), "enable-ipc", false)) {
|
if (conf.get(conf.section(), "enable-ipc", false)) {
|
||||||
ipc = ipc::make();
|
ipc = ipc::make();
|
||||||
}
|
}
|
||||||
if (cli->has("reload")) {
|
if (cli->has("reload")) {
|
||||||
|
@ -25,7 +25,7 @@ namespace modules {
|
|||||||
|
|
||||||
backlight_module::backlight_module(const bar_settings& bar, string name_)
|
backlight_module::backlight_module(const bar_settings& bar, string name_)
|
||||||
: inotify_module<backlight_module>(bar, move(name_)) {
|
: inotify_module<backlight_module>(bar, move(name_)) {
|
||||||
auto card = m_conf.get<string>(name(), "card");
|
auto card = m_conf.get(name(), "card");
|
||||||
|
|
||||||
// Add formats and elements
|
// Add formats and elements
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_BAR, TAG_RAMP});
|
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_BAR, TAG_RAMP});
|
||||||
|
@ -20,8 +20,8 @@ namespace modules {
|
|||||||
*/
|
*/
|
||||||
battery_module::battery_module(const bar_settings& bar, string name_)
|
battery_module::battery_module(const bar_settings& bar, string name_)
|
||||||
: inotify_module<battery_module>(bar, move(name_)) {
|
: inotify_module<battery_module>(bar, move(name_)) {
|
||||||
auto battery = m_conf.get<string>(name(), "battery", "BAT0");
|
auto battery = m_conf.get(name(), "battery", "BAT0"s);
|
||||||
auto adapter = m_conf.get<string>(name(), "adapter", "ADP1");
|
auto adapter = m_conf.get(name(), "adapter", "ADP1"s);
|
||||||
|
|
||||||
auto path_adapter = string_util::replace(PATH_ADAPTER, "%adapter%", adapter) + "/";
|
auto path_adapter = string_util::replace(PATH_ADAPTER, "%adapter%", adapter) + "/";
|
||||||
auto path_battery = string_util::replace(PATH_BATTERY, "%battery%", battery) + "/";
|
auto path_battery = string_util::replace(PATH_BATTERY, "%battery%", battery) + "/";
|
||||||
@ -62,8 +62,8 @@ namespace modules {
|
|||||||
throw module_error("The file '" + path_battery + "[current|power]_now' does not exist");
|
throw module_error("The file '" + path_battery + "[current|power]_now' does not exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fullat = m_conf.get<int>(name(), "full-at", 100);
|
m_fullat = m_conf.get(name(), "full-at", 100);
|
||||||
m_interval = chrono::duration<double>{m_conf.get<float>(name(), "poll-interval", 5.0f)};
|
m_interval = m_conf.get(name(), "poll-interval", 5s);
|
||||||
m_lastpoll = chrono::system_clock::now();
|
m_lastpoll = chrono::system_clock::now();
|
||||||
|
|
||||||
// Load state and capacity level
|
// Load state and capacity level
|
||||||
@ -105,7 +105,7 @@ namespace modules {
|
|||||||
if (!m_bar.locale.empty()) {
|
if (!m_bar.locale.empty()) {
|
||||||
setlocale(LC_TIME, m_bar.locale.c_str());
|
setlocale(LC_TIME, m_bar.locale.c_str());
|
||||||
}
|
}
|
||||||
m_timeformat = m_conf.get<string>(name(), "time-format", "%H:%M:%S");
|
m_timeformat = m_conf.get(name(), "time-format", "%H:%M:%S"s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,22 +16,13 @@ namespace {
|
|||||||
uint32_t make_mask(bspwm_state s1, bspwm_state s2 = bspwm_state::NONE) {
|
uint32_t make_mask(bspwm_state s1, bspwm_state s2 = bspwm_state::NONE) {
|
||||||
uint32_t mask{0U};
|
uint32_t mask{0U};
|
||||||
if (static_cast<uint32_t>(s1)) {
|
if (static_cast<uint32_t>(s1)) {
|
||||||
mask |= 1 << (static_cast<uint32_t>(s1) - 1);
|
mask |= 1U << (static_cast<uint32_t>(s1) - 1U);
|
||||||
}
|
}
|
||||||
if (static_cast<uint32_t>(s2)) {
|
if (static_cast<uint32_t>(s2)) {
|
||||||
mask |= 1 << (static_cast<uint32_t>(s2) - 1);
|
mask |= 1U << (static_cast<uint32_t>(s2) - 1U);
|
||||||
}
|
}
|
||||||
return mask;
|
return mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
// uint32_t check_mask(uint32_t base, bspwm_state s1, bspwm_state s2 = bspwm_state::NONE) {
|
|
||||||
// uint32_t mask{0U};
|
|
||||||
// if (static_cast<uint32_t>(s1))
|
|
||||||
// mask |= 1 << (static_cast<uint32_t>(s1) - 1);
|
|
||||||
// if (static_cast<uint32_t>(s2))
|
|
||||||
// mask |= 1 << (static_cast<uint32_t>(s2) - 1);
|
|
||||||
// return (base & mask) == mask;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace modules {
|
namespace modules {
|
||||||
@ -48,10 +39,10 @@ namespace modules {
|
|||||||
m_subscriber = bspwm_util::make_subscriber();
|
m_subscriber = bspwm_util::make_subscriber();
|
||||||
|
|
||||||
// Load configuration values
|
// Load configuration values
|
||||||
GET_CONFIG_VALUE(name(), m_pinworkspaces, "pin-workspaces");
|
m_pinworkspaces = m_conf.get(name(), "pin-workspaces", m_pinworkspaces);
|
||||||
GET_CONFIG_VALUE(name(), m_click, "enable-click");
|
m_click = m_conf.get(name(), "enable-click", m_click);
|
||||||
GET_CONFIG_VALUE(name(), m_scroll, "enable-scroll");
|
m_scroll = m_conf.get(name(), "enable-scroll", m_scroll);
|
||||||
GET_CONFIG_VALUE(name(), m_revscroll, "reverse-scroll");
|
m_revscroll = m_conf.get(name(), "reverse-scroll", m_revscroll);
|
||||||
|
|
||||||
// Add formats and create components
|
// Add formats and create components
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL_STATE, {TAG_LABEL_STATE}, {TAG_LABEL_MONITOR, TAG_LABEL_MODE});
|
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL_STATE, {TAG_LABEL_STATE}, {TAG_LABEL_MONITOR, TAG_LABEL_MODE});
|
||||||
@ -120,7 +111,7 @@ namespace modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_icons = factory_util::shared<iconset>();
|
m_icons = factory_util::shared<iconset>();
|
||||||
m_icons->add(DEFAULT_ICON, factory_util::shared<label>(m_conf.get<string>(name(), DEFAULT_ICON, "")));
|
m_icons->add(DEFAULT_ICON, factory_util::shared<label>(m_conf.get(name(), DEFAULT_ICON, ""s)));
|
||||||
|
|
||||||
for (const auto& workspace : m_conf.get_list<string>(name(), "ws-icon", {})) {
|
for (const auto& workspace : m_conf.get_list<string>(name(), "ws-icon", {})) {
|
||||||
auto vec = string_util::split(workspace, ';');
|
auto vec = string_util::split(workspace, ';');
|
||||||
|
@ -16,7 +16,7 @@ namespace modules {
|
|||||||
template class module<cpu_module>;
|
template class module<cpu_module>;
|
||||||
|
|
||||||
cpu_module::cpu_module(const bar_settings& bar, string name_) : timer_module<cpu_module>(bar, move(name_)) {
|
cpu_module::cpu_module(const bar_settings& bar, string name_) : timer_module<cpu_module>(bar, move(name_)) {
|
||||||
m_interval = chrono::duration<double>(m_conf.get<float>(name(), "interval", 1));
|
m_interval = m_conf.get(name(), "interval", 1s);
|
||||||
|
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_BAR_LOAD, TAG_RAMP_LOAD, TAG_RAMP_LOAD_PER_CORE});
|
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_BAR_LOAD, TAG_RAMP_LOAD, TAG_RAMP_LOAD_PER_CORE});
|
||||||
|
|
||||||
|
@ -13,16 +13,16 @@ namespace modules {
|
|||||||
setlocale(LC_TIME, m_bar.locale.c_str());
|
setlocale(LC_TIME, m_bar.locale.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_dateformat = string_util::trim(m_conf.get<string>(name(), "date", ""), '"');
|
m_dateformat = string_util::trim(m_conf.get(name(), "date", ""s), '"');
|
||||||
m_dateformat_alt = string_util::trim(m_conf.get<string>(name(), "date-alt", ""), '"');
|
m_dateformat_alt = string_util::trim(m_conf.get(name(), "date-alt", ""s), '"');
|
||||||
m_timeformat = string_util::trim(m_conf.get<string>(name(), "time", ""), '"');
|
m_timeformat = string_util::trim(m_conf.get(name(), "time", ""s), '"');
|
||||||
m_timeformat_alt = string_util::trim(m_conf.get<string>(name(), "time-alt", ""), '"');
|
m_timeformat_alt = string_util::trim(m_conf.get(name(), "time-alt", ""s), '"');
|
||||||
|
|
||||||
if (m_dateformat.empty() && m_timeformat.empty()) {
|
if (m_dateformat.empty() && m_timeformat.empty()) {
|
||||||
throw module_error("No date or time format specified");
|
throw module_error("No date or time format specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_interval = chrono::duration<double>(m_conf.get<double>(name(), "interval", 1.0));
|
m_interval = m_conf.get(name(), "interval", 1s);
|
||||||
|
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_DATE});
|
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_DATE});
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ namespace modules {
|
|||||||
* setting up required components
|
* setting up required components
|
||||||
*/
|
*/
|
||||||
fs_module::fs_module(const bar_settings& bar, string name_) : timer_module<fs_module>(bar, move(name_)) {
|
fs_module::fs_module(const bar_settings& bar, string name_) : timer_module<fs_module>(bar, move(name_)) {
|
||||||
m_mountpoints = m_conf.get_list<string>(name(), "mount");
|
m_mountpoints = m_conf.get_list(name(), "mount");
|
||||||
m_remove_unmounted = m_conf.get(name(), "remove-unmounted", m_remove_unmounted);
|
m_remove_unmounted = m_conf.get(name(), "remove-unmounted", m_remove_unmounted);
|
||||||
m_fixed = m_conf.get(name(), "fixed-values", m_fixed);
|
m_fixed = m_conf.get(name(), "fixed-values", m_fixed);
|
||||||
m_spacing = m_conf.get(name(), "spacing", m_spacing);
|
m_spacing = m_conf.get(name(), "spacing", m_spacing);
|
||||||
|
@ -13,7 +13,7 @@ namespace modules {
|
|||||||
*/
|
*/
|
||||||
github_module::github_module(const bar_settings& bar, string name_)
|
github_module::github_module(const bar_settings& bar, string name_)
|
||||||
: timer_module<github_module>(bar, move(name_)), m_http(http_util::make_downloader()) {
|
: timer_module<github_module>(bar, move(name_)), m_http(http_util::make_downloader()) {
|
||||||
m_accesstoken = m_conf.get<string>(name(), "token");
|
m_accesstoken = m_conf.get(name(), "token");
|
||||||
m_interval = m_conf.get(name(), "interval", 60s);
|
m_interval = m_conf.get(name(), "interval", 60s);
|
||||||
m_empty_notifications = m_conf.get(name(), "empty-notifications", m_empty_notifications);
|
m_empty_notifications = m_conf.get(name(), "empty-notifications", m_empty_notifications);
|
||||||
|
|
||||||
|
@ -23,13 +23,13 @@ namespace modules {
|
|||||||
m_ipc = factory_util::unique<i3ipc::connection>();
|
m_ipc = factory_util::unique<i3ipc::connection>();
|
||||||
|
|
||||||
// Load configuration values
|
// Load configuration values
|
||||||
GET_CONFIG_VALUE(name(), m_click, "enable-click");
|
m_click = m_conf.get(name(), "enable-click", m_click);
|
||||||
GET_CONFIG_VALUE(name(), m_scroll, "enable-scroll");
|
m_scroll = m_conf.get(name(), "enable-scroll", m_scroll);
|
||||||
GET_CONFIG_VALUE(name(), m_revscroll, "reverse-scroll");
|
m_revscroll = m_conf.get(name(), "reverse-scroll", m_revscroll);
|
||||||
GET_CONFIG_VALUE(name(), m_wrap, "wrapping-scroll");
|
m_wrap = m_conf.get(name(), "wrapping-scroll", m_wrap);
|
||||||
GET_CONFIG_VALUE(name(), m_indexsort, "index-sort");
|
m_indexsort = m_conf.get(name(), "index-sort", m_indexsort);
|
||||||
GET_CONFIG_VALUE(name(), m_pinworkspaces, "pin-workspaces");
|
m_pinworkspaces = m_conf.get(name(), "pin-workspaces", m_pinworkspaces);
|
||||||
GET_CONFIG_VALUE(name(), m_strip_wsnumbers, "strip-wsnumbers");
|
m_strip_wsnumbers = m_conf.get(name(), "strip-wsnumbers", m_strip_wsnumbers);
|
||||||
|
|
||||||
m_conf.warn_deprecated(name(), "wsname-maxlen", "%name:min:max%");
|
m_conf.warn_deprecated(name(), "wsname-maxlen", "%name:min:max%");
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ namespace modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_icons = factory_util::shared<iconset>();
|
m_icons = factory_util::shared<iconset>();
|
||||||
m_icons->add(DEFAULT_WS_ICON, factory_util::shared<label>(m_conf.get<string>(name(), DEFAULT_WS_ICON, "")));
|
m_icons->add(DEFAULT_WS_ICON, factory_util::shared<label>(m_conf.get(name(), DEFAULT_WS_ICON, ""s)));
|
||||||
|
|
||||||
for (const auto& workspace : m_conf.get_list<string>(name(), "ws-icon", {})) {
|
for (const auto& workspace : m_conf.get_list<string>(name(), "ws-icon", {})) {
|
||||||
auto vec = string_util::split(workspace, ';');
|
auto vec = string_util::split(workspace, ';');
|
||||||
|
@ -24,11 +24,11 @@ namespace modules {
|
|||||||
throw module_error("No ipc hooks defined");
|
throw module_error("No ipc hooks defined");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_actions[mousebtn::LEFT] = m_conf.get<string>(name(), "click-left", "");
|
m_actions[mousebtn::LEFT] = m_conf.get(name(), "click-left", ""s);
|
||||||
m_actions[mousebtn::MIDDLE] = m_conf.get<string>(name(), "click-middle", "");
|
m_actions[mousebtn::MIDDLE] = m_conf.get(name(), "click-middle", ""s);
|
||||||
m_actions[mousebtn::RIGHT] = m_conf.get<string>(name(), "click-right", "");
|
m_actions[mousebtn::RIGHT] = m_conf.get(name(), "click-right", ""s);
|
||||||
m_actions[mousebtn::SCROLL_UP] = m_conf.get<string>(name(), "scroll-up", "");
|
m_actions[mousebtn::SCROLL_UP] = m_conf.get(name(), "scroll-up", ""s);
|
||||||
m_actions[mousebtn::SCROLL_DOWN] = m_conf.get<string>(name(), "scroll-down", "");
|
m_actions[mousebtn::SCROLL_DOWN] = m_conf.get(name(), "scroll-down", ""s);
|
||||||
|
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_OUTPUT, {TAG_OUTPUT});
|
m_formatter->add(DEFAULT_FORMAT, TAG_OUTPUT, {TAG_OUTPUT});
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ namespace modules {
|
|||||||
template class module<memory_module>;
|
template class module<memory_module>;
|
||||||
|
|
||||||
memory_module::memory_module(const bar_settings& bar, string name_) : timer_module<memory_module>(bar, move(name_)) {
|
memory_module::memory_module(const bar_settings& bar, string name_) : timer_module<memory_module>(bar, move(name_)) {
|
||||||
m_interval = chrono::duration<double>(m_conf.get<float>(name(), "interval", 1));
|
m_interval = m_conf.get(name(), "interval", 1s);
|
||||||
|
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_BAR_USED, TAG_BAR_FREE});
|
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL, TAG_BAR_USED, TAG_BAR_FREE});
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ namespace modules {
|
|||||||
while (true) {
|
while (true) {
|
||||||
string level_param{"menu-" + to_string(m_levels.size())};
|
string level_param{"menu-" + to_string(m_levels.size())};
|
||||||
|
|
||||||
if (m_conf.get<string>(name(), level_param + "-0", "").empty()) {
|
if (m_conf.get(name(), level_param + "-0", ""s).empty()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,14 +40,14 @@ namespace modules {
|
|||||||
while (true) {
|
while (true) {
|
||||||
string item_param{level_param + "-" + to_string(m_levels.back()->items.size())};
|
string item_param{level_param + "-" + to_string(m_levels.back()->items.size())};
|
||||||
|
|
||||||
if (m_conf.get<string>(name(), item_param, "").empty()) {
|
if (m_conf.get(name(), item_param, ""s).empty()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.trace("%s: Creating menu level item %i", name(), m_levels.back()->items.size());
|
m_log.trace("%s: Creating menu level item %i", name(), m_levels.back()->items.size());
|
||||||
auto item = factory_util::unique<menu_tree_item>();
|
auto item = factory_util::unique<menu_tree_item>();
|
||||||
item->label = load_label(m_conf, name(), item_param);
|
item->label = load_label(m_conf, name(), item_param);
|
||||||
item->exec = m_conf.get<string>(name(), item_param + "-exec", EVENT_MENU_CLOSE);
|
item->exec = m_conf.get(name(), item_param + "-exec", string{EVENT_MENU_CLOSE});
|
||||||
m_levels.back()->items.emplace_back(move(item));
|
m_levels.back()->items.emplace_back(move(item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ namespace modules {
|
|||||||
|
|
||||||
auto format = make_unique<module_format>();
|
auto format = make_unique<module_format>();
|
||||||
|
|
||||||
format->value = m_conf.get<string>(m_modname, name, move(fallback));
|
format->value = m_conf.get(m_modname, name, move(fallback));
|
||||||
format->fg = m_conf.get(m_modname, name + "-foreground", ""s);
|
format->fg = m_conf.get(m_modname, name + "-foreground", ""s);
|
||||||
format->bg = m_conf.get(m_modname, name + "-background", ""s);
|
format->bg = m_conf.get(m_modname, name + "-background", ""s);
|
||||||
format->ul = m_conf.get(m_modname, name + "-underline", ""s);
|
format->ul = m_conf.get(m_modname, name + "-underline", ""s);
|
||||||
|
@ -70,8 +70,8 @@ namespace modules {
|
|||||||
}
|
}
|
||||||
if (m_formatter->has(TAG_ICON_RANDOM) || m_formatter->has(TAG_ICON_REPEAT) ||
|
if (m_formatter->has(TAG_ICON_RANDOM) || m_formatter->has(TAG_ICON_REPEAT) ||
|
||||||
m_formatter->has(TAG_ICON_REPEAT_ONE)) {
|
m_formatter->has(TAG_ICON_REPEAT_ONE)) {
|
||||||
m_toggle_on_color = m_conf.get<string>(name(), "toggle-on-foreground", "");
|
m_toggle_on_color = m_conf.get(name(), "toggle-on-foreground", ""s);
|
||||||
m_toggle_off_color = m_conf.get<string>(name(), "toggle-off-foreground", "");
|
m_toggle_off_color = m_conf.get(name(), "toggle-off-foreground", ""s);
|
||||||
}
|
}
|
||||||
if (m_formatter->has(TAG_LABEL_OFFLINE, FORMAT_OFFLINE)) {
|
if (m_formatter->has(TAG_LABEL_OFFLINE, FORMAT_OFFLINE)) {
|
||||||
m_label_offline = load_label(m_conf, name(), TAG_LABEL_OFFLINE);
|
m_label_offline = load_label(m_conf, name(), TAG_LABEL_OFFLINE);
|
||||||
|
@ -15,15 +15,14 @@ namespace modules {
|
|||||||
network_module::network_module(const bar_settings& bar, string name_)
|
network_module::network_module(const bar_settings& bar, string name_)
|
||||||
: timer_module<network_module>(bar, move(name_)) {
|
: timer_module<network_module>(bar, move(name_)) {
|
||||||
// Load configuration values
|
// Load configuration values
|
||||||
REQ_CONFIG_VALUE(name(), m_interface, "interface");
|
m_interface = m_conf.get(name(), "interface", m_interface);
|
||||||
GET_CONFIG_VALUE(name(), m_ping_nth_update, "ping-interval");
|
m_ping_nth_update = m_conf.get(name(), "ping-interval", m_ping_nth_update);
|
||||||
GET_CONFIG_VALUE(name(), m_udspeed_minwidth, "udspeed-minwidth");
|
m_udspeed_minwidth = m_conf.get(name(), "udspeed-minwidth", m_udspeed_minwidth);
|
||||||
GET_CONFIG_VALUE(name(), m_accumulate, "accumulate-stats");
|
m_accumulate = m_conf.get(name(), "accumulate-stats", m_accumulate);
|
||||||
|
m_interval = m_conf.get(name(), "interval", 1s);
|
||||||
|
|
||||||
m_conf.warn_deprecated(name(), "udspeed-minwidth", "%downspeed:min:max% and %upspeed:min:max%");
|
m_conf.warn_deprecated(name(), "udspeed-minwidth", "%downspeed:min:max% and %upspeed:min:max%");
|
||||||
|
|
||||||
m_interval = chrono::duration<double>(m_conf.get<float>(name(), "interval", 1));
|
|
||||||
|
|
||||||
// Add formats
|
// Add formats
|
||||||
m_formatter->add(FORMAT_CONNECTED, TAG_LABEL_CONNECTED, {TAG_RAMP_SIGNAL, TAG_RAMP_QUALITY, TAG_LABEL_CONNECTED});
|
m_formatter->add(FORMAT_CONNECTED, TAG_LABEL_CONNECTED, {TAG_RAMP_SIGNAL, TAG_RAMP_QUALITY, TAG_LABEL_CONNECTED});
|
||||||
m_formatter->add(FORMAT_DISCONNECTED, TAG_LABEL_DISCONNECTED, {TAG_LABEL_DISCONNECTED});
|
m_formatter->add(FORMAT_DISCONNECTED, TAG_LABEL_DISCONNECTED, {TAG_LABEL_DISCONNECTED});
|
||||||
|
@ -9,21 +9,20 @@ namespace modules {
|
|||||||
template class module<script_module>;
|
template class module<script_module>;
|
||||||
|
|
||||||
script_module::script_module(const bar_settings& bar, string name_) : event_module<script_module>(bar, move(name_)) {
|
script_module::script_module(const bar_settings& bar, string name_) : event_module<script_module>(bar, move(name_)) {
|
||||||
REQ_CONFIG_VALUE(name(), m_exec, "exec");
|
m_exec = m_conf.get(name(), "exec", m_exec);
|
||||||
GET_CONFIG_VALUE(name(), m_tail, "tail");
|
m_tail = m_conf.get(name(), "tail", m_tail);
|
||||||
GET_CONFIG_VALUE(name(), m_maxlen, "maxlen");
|
m_maxlen = m_conf.get(name(), "maxlen", m_maxlen);
|
||||||
GET_CONFIG_VALUE(name(), m_ellipsis, "ellipsis");
|
m_ellipsis = m_conf.get(name(), "ellipsis", m_ellipsis);
|
||||||
|
m_interval = m_conf.get(name(), "interval", m_tail ? 0s : 5s);
|
||||||
|
|
||||||
m_conf.warn_deprecated(
|
m_conf.warn_deprecated(
|
||||||
name(), "maxlen", "\"format = <label>\" and \"label = %output:0:" + to_string(m_maxlen) + "%\"");
|
name(), "maxlen", "\"format = <label>\" and \"label = %output:0:" + to_string(m_maxlen) + "%\"");
|
||||||
|
|
||||||
m_actions[mousebtn::LEFT] = m_conf.get<string>(name(), "click-left", "");
|
m_actions[mousebtn::LEFT] = m_conf.get(name(), "click-left", ""s);
|
||||||
m_actions[mousebtn::MIDDLE] = m_conf.get<string>(name(), "click-middle", "");
|
m_actions[mousebtn::MIDDLE] = m_conf.get(name(), "click-middle", ""s);
|
||||||
m_actions[mousebtn::RIGHT] = m_conf.get<string>(name(), "click-right", "");
|
m_actions[mousebtn::RIGHT] = m_conf.get(name(), "click-right", ""s);
|
||||||
m_actions[mousebtn::SCROLL_UP] = m_conf.get<string>(name(), "scroll-up", "");
|
m_actions[mousebtn::SCROLL_UP] = m_conf.get(name(), "scroll-up", ""s);
|
||||||
m_actions[mousebtn::SCROLL_DOWN] = m_conf.get<string>(name(), "scroll-down", "");
|
m_actions[mousebtn::SCROLL_DOWN] = m_conf.get(name(), "scroll-down", ""s);
|
||||||
|
|
||||||
m_interval = chrono::duration<double>{m_conf.get<double>(name(), "interval", m_tail ? 0.0 : 5.0)};
|
|
||||||
|
|
||||||
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_OUTPUT, TAG_LABEL});
|
m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_OUTPUT, TAG_LABEL});
|
||||||
|
|
||||||
|
@ -14,9 +14,9 @@ namespace modules {
|
|||||||
|
|
||||||
temperature_module::temperature_module(const bar_settings& bar, string name_)
|
temperature_module::temperature_module(const bar_settings& bar, string name_)
|
||||||
: timer_module<temperature_module>(bar, move(name_)) {
|
: timer_module<temperature_module>(bar, move(name_)) {
|
||||||
m_zone = m_conf.get<int>(name(), "thermal-zone", 0);
|
m_zone = m_conf.get(name(), "thermal-zone", 0);
|
||||||
m_tempwarn = m_conf.get<int>(name(), "warn-temperature", 80);
|
m_tempwarn = m_conf.get(name(), "warn-temperature", 80);
|
||||||
m_interval = chrono::duration<double>(m_conf.get<float>(name(), "interval", 1));
|
m_interval = m_conf.get(name(), "interval", 1s);
|
||||||
|
|
||||||
m_path = string_util::replace(PATH_TEMPERATURE_INFO, "%zone%", to_string(m_zone));
|
m_path = string_util::replace(PATH_TEMPERATURE_INFO, "%zone%", to_string(m_zone));
|
||||||
|
|
||||||
|
@ -28,11 +28,11 @@ namespace modules {
|
|||||||
// with the cmd handlers
|
// with the cmd handlers
|
||||||
string output{module::get_output()};
|
string output{module::get_output()};
|
||||||
|
|
||||||
auto click_left = m_conf.get<string>(name(), "click-left", "");
|
auto click_left = m_conf.get(name(), "click-left", ""s);
|
||||||
auto click_middle = m_conf.get<string>(name(), "click-middle", "");
|
auto click_middle = m_conf.get(name(), "click-middle", ""s);
|
||||||
auto click_right = m_conf.get<string>(name(), "click-right", "");
|
auto click_right = m_conf.get(name(), "click-right", ""s);
|
||||||
auto scroll_up = m_conf.get<string>(name(), "scroll-up", "");
|
auto scroll_up = m_conf.get(name(), "scroll-up", ""s);
|
||||||
auto scroll_down = m_conf.get<string>(name(), "scroll-down", "");
|
auto scroll_down = m_conf.get(name(), "scroll-down", ""s);
|
||||||
|
|
||||||
if (!click_left.empty()) {
|
if (!click_left.empty()) {
|
||||||
m_builder->cmd(mousebtn::LEFT, click_left);
|
m_builder->cmd(mousebtn::LEFT, click_left);
|
||||||
|
@ -18,17 +18,14 @@ namespace modules {
|
|||||||
|
|
||||||
volume_module::volume_module(const bar_settings& bar, string name_) : event_module<volume_module>(bar, move(name_)) {
|
volume_module::volume_module(const bar_settings& bar, string name_) : event_module<volume_module>(bar, move(name_)) {
|
||||||
// Load configuration values
|
// Load configuration values
|
||||||
string master_mixer_name{"Master"};
|
m_mapped = m_conf.get(name(), "mapped", m_mapped);
|
||||||
string speaker_mixer_name;
|
|
||||||
string headphone_mixer_name;
|
|
||||||
|
|
||||||
GET_CONFIG_VALUE(name(), master_mixer_name, "master-mixer");
|
auto master_mixer_name = m_conf.get(name(), "master-mixer", "Master"s);
|
||||||
GET_CONFIG_VALUE(name(), speaker_mixer_name, "speaker-mixer");
|
auto speaker_mixer_name = m_conf.get(name(), "speaker-mixer", ""s);
|
||||||
GET_CONFIG_VALUE(name(), headphone_mixer_name, "headphone-mixer");
|
auto headphone_mixer_name = m_conf.get(name(), "headphone-mixer", ""s);
|
||||||
GET_CONFIG_VALUE(name(), m_mapped, "mapped");
|
|
||||||
|
|
||||||
if (!headphone_mixer_name.empty()) {
|
if (!headphone_mixer_name.empty()) {
|
||||||
REQ_CONFIG_VALUE(name(), m_headphoneid, "headphone-id");
|
m_headphoneid = m_conf.get<decltype(m_headphoneid)>(name(), "headphone-id");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string_util::compare(speaker_mixer_name, "master")) {
|
if (string_util::compare(speaker_mixer_name, "master")) {
|
||||||
|
@ -19,8 +19,8 @@ namespace modules {
|
|||||||
*/
|
*/
|
||||||
xbacklight_module::xbacklight_module(const bar_settings& bar, string name_)
|
xbacklight_module::xbacklight_module(const bar_settings& bar, string name_)
|
||||||
: static_module<xbacklight_module>(bar, move(name_)), m_connection(connection::make()) {
|
: static_module<xbacklight_module>(bar, move(name_)), m_connection(connection::make()) {
|
||||||
auto output = m_conf.get<string>(name(), "output", m_bar.monitor->name);
|
auto output = m_conf.get(name(), "output", m_bar.monitor->name);
|
||||||
auto strict = m_conf.get<bool>(name(), "monitor-strict", false);
|
auto strict = m_conf.get(name(), "monitor-strict", false);
|
||||||
|
|
||||||
// Grab a list of all outputs and try to find the one defined in the config
|
// Grab a list of all outputs and try to find the one defined in the config
|
||||||
for (auto&& mon : randr_util::get_monitors(m_connection, m_connection.root(), strict)) {
|
for (auto&& mon : randr_util::get_monitors(m_connection, m_connection.root(), strict)) {
|
||||||
@ -36,7 +36,7 @@ namespace modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get flag to check if we should add scroll handlers for changing value
|
// Get flag to check if we should add scroll handlers for changing value
|
||||||
GET_CONFIG_VALUE(name(), m_scroll, "enable-scroll");
|
m_scroll = m_conf.get(name(), "enable-scroll", m_scroll);
|
||||||
|
|
||||||
// Query randr for the backlight max and min value
|
// Query randr for the backlight max and min value
|
||||||
try {
|
try {
|
||||||
|
@ -18,7 +18,7 @@ namespace modules {
|
|||||||
xkeyboard_module::xkeyboard_module(const bar_settings& bar, string name_)
|
xkeyboard_module::xkeyboard_module(const bar_settings& bar, string name_)
|
||||||
: static_module<xkeyboard_module>(bar, move(name_)), m_connection(connection::make()) {
|
: static_module<xkeyboard_module>(bar, move(name_)), m_connection(connection::make()) {
|
||||||
// Load config values
|
// Load config values
|
||||||
m_blacklist = m_conf.get_list<string>(name(), "blacklist", {});
|
m_blacklist = m_conf.get_list(name(), "blacklist", {});
|
||||||
|
|
||||||
// Add formats and elements
|
// Add formats and elements
|
||||||
m_formatter->add(DEFAULT_FORMAT, FORMAT_DEFAULT, {TAG_LABEL_LAYOUT, TAG_LABEL_INDICATOR});
|
m_formatter->add(DEFAULT_FORMAT, FORMAT_DEFAULT, {TAG_LABEL_LAYOUT, TAG_LABEL_INDICATOR});
|
||||||
|
@ -21,9 +21,9 @@ namespace modules {
|
|||||||
xworkspaces_module::xworkspaces_module(const bar_settings& bar, string name_)
|
xworkspaces_module::xworkspaces_module(const bar_settings& bar, string name_)
|
||||||
: static_module<xworkspaces_module>(bar, move(name_)), m_connection(connection::make()) {
|
: static_module<xworkspaces_module>(bar, move(name_)), m_connection(connection::make()) {
|
||||||
// Load config values
|
// Load config values
|
||||||
m_pinworkspaces = m_conf.get<bool>(name(), "pin-workspaces", m_pinworkspaces);
|
m_pinworkspaces = m_conf.get(name(), "pin-workspaces", m_pinworkspaces);
|
||||||
m_click = m_conf.get<bool>(name(), "enable-click", m_click);
|
m_click = m_conf.get(name(), "enable-click", m_click);
|
||||||
m_scroll = m_conf.get<bool>(name(), "enable-scroll", m_scroll);
|
m_scroll = m_conf.get(name(), "enable-scroll", m_scroll);
|
||||||
|
|
||||||
// Initialize ewmh atoms
|
// Initialize ewmh atoms
|
||||||
if ((m_ewmh = ewmh_util::initialize()) == nullptr) {
|
if ((m_ewmh = ewmh_util::initialize()) == nullptr) {
|
||||||
@ -66,7 +66,7 @@ namespace modules {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_icons = factory_util::shared<iconset>();
|
m_icons = factory_util::shared<iconset>();
|
||||||
m_icons->add(DEFAULT_ICON, factory_util::shared<label>(m_conf.get<string>(name(), DEFAULT_ICON, "")));
|
m_icons->add(DEFAULT_ICON, factory_util::shared<label>(m_conf.get(name(), DEFAULT_ICON, ""s)));
|
||||||
|
|
||||||
for (const auto& workspace : m_conf.get_list<string>(name(), "icon", {})) {
|
for (const auto& workspace : m_conf.get_list<string>(name(), "icon", {})) {
|
||||||
auto vec = string_util::split(workspace, ';');
|
auto vec = string_util::split(workspace, ';');
|
||||||
|
@ -65,13 +65,14 @@ tray_manager::~tray_manager() {
|
|||||||
void tray_manager::setup(const bar_settings& bar_opts) {
|
void tray_manager::setup(const bar_settings& bar_opts) {
|
||||||
auto conf = config::make();
|
auto conf = config::make();
|
||||||
auto bs = conf.section();
|
auto bs = conf.section();
|
||||||
|
string position;
|
||||||
|
|
||||||
if (!conf.has(bs, "tray-position")) {
|
try {
|
||||||
|
position = conf.get(bs, "tray-position");
|
||||||
|
} catch (const key_error& err) {
|
||||||
return m_log.info("Disabling tray manager (reason: missing `tray-position`)");
|
return m_log.info("Disabling tray manager (reason: missing `tray-position`)");
|
||||||
}
|
}
|
||||||
|
|
||||||
auto position = conf.get<string>(bs, "tray-position");
|
|
||||||
|
|
||||||
if (position == "left") {
|
if (position == "left") {
|
||||||
m_opts.align = alignment::LEFT;
|
m_opts.align = alignment::LEFT;
|
||||||
} else if (position == "right") {
|
} else if (position == "right") {
|
||||||
@ -82,7 +83,7 @@ void tray_manager::setup(const bar_settings& bar_opts) {
|
|||||||
return m_log.err("Disabling tray manager (reason: Invalid position \"" + position + "\")");
|
return m_log.err("Disabling tray manager (reason: Invalid position \"" + position + "\")");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_opts.detached = conf.get<bool>(bs, "tray-detached", false);
|
m_opts.detached = conf.get(bs, "tray-detached", false);
|
||||||
m_opts.height = bar_opts.size.h;
|
m_opts.height = bar_opts.size.h;
|
||||||
m_opts.height -= bar_opts.borders.at(edge::BOTTOM).size;
|
m_opts.height -= bar_opts.borders.at(edge::BOTTOM).size;
|
||||||
m_opts.height -= bar_opts.borders.at(edge::TOP).size;
|
m_opts.height -= bar_opts.borders.at(edge::TOP).size;
|
||||||
@ -92,7 +93,7 @@ void tray_manager::setup(const bar_settings& bar_opts) {
|
|||||||
m_opts.height--;
|
m_opts.height--;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto maxsize = conf.get<int>(bs, "tray-maxsize", 16);
|
auto maxsize = conf.get(bs, "tray-maxsize", 16);
|
||||||
if (m_opts.height > maxsize) {
|
if (m_opts.height > maxsize) {
|
||||||
m_opts.spacing += (m_opts.height - maxsize) / 2;
|
m_opts.spacing += (m_opts.height - maxsize) / 2;
|
||||||
m_opts.height = maxsize;
|
m_opts.height = maxsize;
|
||||||
@ -103,7 +104,7 @@ void tray_manager::setup(const bar_settings& bar_opts) {
|
|||||||
m_opts.orig_y = bar_opts.pos.y + bar_opts.borders.at(edge::TOP).size;
|
m_opts.orig_y = bar_opts.pos.y + bar_opts.borders.at(edge::TOP).size;
|
||||||
|
|
||||||
// Apply user-defined scaling
|
// Apply user-defined scaling
|
||||||
auto scale = conf.get<float>(bs, "tray-scale", 1.0);
|
auto scale = conf.get(bs, "tray-scale", 1.0f);
|
||||||
m_opts.width *= scale;
|
m_opts.width *= scale;
|
||||||
m_opts.height_fill *= scale;
|
m_opts.height_fill *= scale;
|
||||||
|
|
||||||
@ -124,8 +125,8 @@ void tray_manager::setup(const bar_settings& bar_opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set user-defined background color
|
// Set user-defined background color
|
||||||
if (!(m_opts.transparent = conf.get<bool>(bs, "tray-transparent", m_opts.transparent))) {
|
if (!(m_opts.transparent = conf.get(bs, "tray-transparent", m_opts.transparent))) {
|
||||||
auto bg = conf.get<string>(bs, "tray-background", "");
|
auto bg = conf.get(bs, "tray-background", ""s);
|
||||||
|
|
||||||
if (bg.length() > 7) {
|
if (bg.length() > 7) {
|
||||||
m_log.warn("Alpha support for the systray is limited. See the wiki for more details.");
|
m_log.warn("Alpha support for the systray is limited. See the wiki for more details.");
|
||||||
@ -144,11 +145,11 @@ void tray_manager::setup(const bar_settings& bar_opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add user-defined padding
|
// Add user-defined padding
|
||||||
m_opts.spacing += conf.get<int>(bs, "tray-padding", 0);
|
m_opts.spacing += conf.get(bs, "tray-padding", 0);
|
||||||
|
|
||||||
// Add user-defiend offset
|
// Add user-defiend offset
|
||||||
auto offset_x_def = conf.get<string>(bs, "tray-offset-x", "");
|
auto offset_x_def = conf.get(bs, "tray-offset-x", ""s);
|
||||||
auto offset_y_def = conf.get<string>(bs, "tray-offset-y", "");
|
auto offset_y_def = conf.get(bs, "tray-offset-y", ""s);
|
||||||
|
|
||||||
auto offset_x = atoi(offset_x_def.c_str());
|
auto offset_x = atoi(offset_x_def.c_str());
|
||||||
auto offset_y = atoi(offset_y_def.c_str());
|
auto offset_y = atoi(offset_y_def.c_str());
|
||||||
|
Loading…
Reference in New Issue
Block a user