diff --git a/include/components/bar.hpp b/include/components/bar.hpp index 43e9b2f5..3d800a1e 100644 --- a/include/components/bar.hpp +++ b/include/components/bar.hpp @@ -37,7 +37,7 @@ class bar : public xpp::event::sink { public: using make_type = unique_ptr; - static make_type make(eventloop::loop&, bool only_initialize_values = false); + static make_type make(eventloop::loop&, const config&, bool only_initialize_values = false); explicit bar(connection&, signal_emitter&, const config&, const logger&, eventloop::loop&, unique_ptr&&, unique_ptr&&, unique_ptr&&, bool only_initialize_values); diff --git a/include/components/config.hpp b/include/components/config.hpp index d0be66d4..971c2f3e 100644 --- a/include/components/config.hpp +++ b/include/components/config.hpp @@ -24,10 +24,7 @@ using file_list = vector; class config { public: - using make_type = const config&; - static make_type make(string path = "", string bar = ""); - - explicit config(const logger& logger, string&& path = "", string&& bar = "") + explicit config(const logger& logger, string&& path, string&& bar) : m_log(logger), m_file(move(path)), m_barname(move(bar)){}; const string& filepath() const; @@ -46,7 +43,7 @@ class config { file_list get_included_files() const; - void warn_deprecated(const string& section, const string& key, string replacement) const; + void warn_deprecated(const string& section, const string& key, string replacement = "") const; /** * Returns true if a given parameter exists @@ -212,8 +209,6 @@ class config { return default_value; } - void ignore_key(const string& section, const string& key) const; - /** * Attempt to load value using the deprecated key name. If successful show a * warning message. If it fails load the value using the new key and given @@ -234,20 +229,6 @@ class config { } } - /** - * @see deprecated - */ - template - T deprecated_list(const string& section, const string& old, const string& newkey, const vector& fallback) const { - try { - vector value{get_list(section, old)}; - warn_deprecated(section, old, newkey); - return value; - } catch (const key_error& err) { - return get_list(section, newkey, fallback); - } - } - protected: void copy_inherited(); diff --git a/include/components/config_parser.hpp b/include/components/config_parser.hpp index f580f0eb..3cd6eab9 100644 --- a/include/components/config_parser.hpp +++ b/include/components/config_parser.hpp @@ -105,7 +105,7 @@ class config_parser { * @throws syntax_error If there was any kind of syntax error * @throws parser_error If aynthing else went wrong */ - config::make_type parse(string barname); + config parse(string barname); protected: /** @@ -229,7 +229,7 @@ class config_parser { /** * @brief Absolute path to the main config file */ - string m_config; + string m_config_file; /** * @brief List of all the lines in the config (with included files) diff --git a/include/components/controller.hpp b/include/components/controller.hpp index 1fc5ebc4..449cd838 100644 --- a/include/components/controller.hpp +++ b/include/components/controller.hpp @@ -39,7 +39,7 @@ class controller : public signal_receiver { public: using make_type = unique_ptr; - static make_type make(bool has_ipc, eventloop::loop&); + static make_type make(bool has_ipc, eventloop::loop&, const config&); explicit controller(connection&, signal_emitter&, const logger&, const config&, bool has_ipc, eventloop::loop&); ~controller(); diff --git a/include/components/renderer.hpp b/include/components/renderer.hpp index 87b9f86d..21eca95c 100644 --- a/include/components/renderer.hpp +++ b/include/components/renderer.hpp @@ -46,7 +46,7 @@ class renderer : public renderer_interface, public signal_receiver { public: using make_type = unique_ptr; - static make_type make(const bar_settings& bar, tags::action_context& action_ctxt); + static make_type make(const bar_settings& bar, tags::action_context& action_ctxt, const config&); explicit renderer(connection& conn, signal_emitter& sig, const config&, const logger& logger, const bar_settings& bar, background_manager& background_manager, tags::action_context& action_ctxt); diff --git a/include/components/screen.hpp b/include/components/screen.hpp index aa4ad55c..95e41e08 100644 --- a/include/components/screen.hpp +++ b/include/components/screen.hpp @@ -19,7 +19,7 @@ class signal_emitter; class screen : public xpp::event::sink { public: using make_type = unique_ptr; - static make_type make(); + static make_type make(const config&); explicit screen(connection& conn, signal_emitter& emitter, const logger& logger, const config& conf); ~screen(); diff --git a/include/modules/alsa.hpp b/include/modules/alsa.hpp index dd28b03a..3a86da85 100644 --- a/include/modules/alsa.hpp +++ b/include/modules/alsa.hpp @@ -20,7 +20,7 @@ namespace modules { class alsa_module : public event_module { public: - explicit alsa_module(const bar_settings&, string); + explicit alsa_module(const bar_settings&, string, const config&); void teardown(); bool has_event(); diff --git a/include/modules/backlight.hpp b/include/modules/backlight.hpp index 0c86215e..f1db0fe7 100644 --- a/include/modules/backlight.hpp +++ b/include/modules/backlight.hpp @@ -20,7 +20,7 @@ namespace modules { string get_output(); public: - explicit backlight_module(const bar_settings&, string); + explicit backlight_module(const bar_settings&, string, const config&); void idle(); bool on_event(const inotify_event& event); diff --git a/include/modules/battery.hpp b/include/modules/battery.hpp index e1d54d8f..bd6ef788 100644 --- a/include/modules/battery.hpp +++ b/include/modules/battery.hpp @@ -46,7 +46,7 @@ namespace modules { using consumption_reader = mutex_wrapper>; public: - explicit battery_module(const bar_settings&, string); + explicit battery_module(const bar_settings&, string, const config&); void start() override; void teardown(); diff --git a/include/modules/bspwm.hpp b/include/modules/bspwm.hpp index 002505cd..9fb20ba6 100644 --- a/include/modules/bspwm.hpp +++ b/include/modules/bspwm.hpp @@ -39,7 +39,7 @@ namespace modules { }; public: - explicit bspwm_module(const bar_settings&, string); + explicit bspwm_module(const bar_settings&, string, const config&); void stop() override; bool has_event(); diff --git a/include/modules/counter.hpp b/include/modules/counter.hpp index a386185d..a92d98f6 100644 --- a/include/modules/counter.hpp +++ b/include/modules/counter.hpp @@ -7,7 +7,7 @@ POLYBAR_NS namespace modules { class counter_module : public timer_module { public: - explicit counter_module(const bar_settings&, string); + explicit counter_module(const bar_settings&, string, const config&); bool update(); bool build(builder* builder, const string& tag) const; diff --git a/include/modules/cpu.hpp b/include/modules/cpu.hpp index c8cbc75e..fff25da0 100644 --- a/include/modules/cpu.hpp +++ b/include/modules/cpu.hpp @@ -20,7 +20,7 @@ namespace modules { class cpu_module : public timer_module { public: - explicit cpu_module(const bar_settings&, string); + explicit cpu_module(const bar_settings&, string, const config&); bool update(); string get_format() const; diff --git a/include/modules/date.hpp b/include/modules/date.hpp index 296ec276..cd49d643 100644 --- a/include/modules/date.hpp +++ b/include/modules/date.hpp @@ -12,7 +12,7 @@ POLYBAR_NS namespace modules { class date_module : public timer_module { public: - explicit date_module(const bar_settings&, string); + explicit date_module(const bar_settings&, string, const config&); bool update(); bool build(builder* builder, const string& tag) const; diff --git a/include/modules/fs.hpp b/include/modules/fs.hpp index c67663ce..5fb880d2 100644 --- a/include/modules/fs.hpp +++ b/include/modules/fs.hpp @@ -35,7 +35,7 @@ namespace modules { */ class fs_module : public timer_module { public: - explicit fs_module(const bar_settings&, string); + explicit fs_module(const bar_settings&, string, const config&); bool update(); string get_format() const; diff --git a/include/modules/github.hpp b/include/modules/github.hpp index 57a17083..e9a8d4c0 100644 --- a/include/modules/github.hpp +++ b/include/modules/github.hpp @@ -14,7 +14,7 @@ namespace modules { */ class github_module : public timer_module { public: - explicit github_module(const bar_settings&, string); + explicit github_module(const bar_settings&, string, const config&); bool update(); bool build(builder* builder, const string& tag) const; diff --git a/include/modules/i3.hpp b/include/modules/i3.hpp index 951c1865..8cfb7170 100644 --- a/include/modules/i3.hpp +++ b/include/modules/i3.hpp @@ -44,7 +44,7 @@ namespace modules { }; public: - explicit i3_module(const bar_settings&, string); + explicit i3_module(const bar_settings&, string, const config&); void stop() override; bool has_event(); diff --git a/include/modules/ipc.hpp b/include/modules/ipc.hpp index 9acc3b3e..ce2f63a4 100644 --- a/include/modules/ipc.hpp +++ b/include/modules/ipc.hpp @@ -24,7 +24,7 @@ namespace modules { }; public: - explicit ipc_module(const bar_settings&, string); + explicit ipc_module(const bar_settings&, string, const config&); void start() override; void update(); diff --git a/include/modules/memory.hpp b/include/modules/memory.hpp index a42ca40b..90160b8e 100644 --- a/include/modules/memory.hpp +++ b/include/modules/memory.hpp @@ -10,7 +10,7 @@ namespace modules { enum class memory_state { NORMAL = 0, WARN }; class memory_module : public timer_module { public: - explicit memory_module(const bar_settings&, string); + explicit memory_module(const bar_settings&, string, const config&); bool update(); string get_format() const; diff --git a/include/modules/menu.hpp b/include/modules/menu.hpp index 9d414ed7..8255e2b5 100644 --- a/include/modules/menu.hpp +++ b/include/modules/menu.hpp @@ -17,7 +17,7 @@ namespace modules { }; public: - explicit menu_module(const bar_settings&, string); + explicit menu_module(const bar_settings&, string, const config&); bool build(builder* builder, const string& tag) const; void update() {} diff --git a/include/modules/meta/base.hpp b/include/modules/meta/base.hpp index 78b4fc17..91dacc97 100644 --- a/include/modules/meta/base.hpp +++ b/include/modules/meta/base.hpp @@ -8,6 +8,7 @@ #include #include "common.hpp" +#include "components/config.hpp" #include "components/types.hpp" #include "errors.hpp" #include "utils/concurrency.hpp" @@ -142,7 +143,7 @@ namespace modules { template class module : public module_interface { public: - module(const bar_settings& bar, string name); + module(const bar_settings& bar, string name, const config&); ~module() noexcept; static constexpr auto EVENT_MODULE_TOGGLE = "module_toggle"; diff --git a/include/modules/meta/base.inl b/include/modules/meta/base.inl index ffbe9250..f80c7782 100644 --- a/include/modules/meta/base.inl +++ b/include/modules/meta/base.inl @@ -2,7 +2,6 @@ #include #include "components/builder.hpp" -#include "components/config.hpp" #include "components/logger.hpp" #include "events/signal.hpp" #include "events/signal_emitter.hpp" @@ -16,11 +15,11 @@ namespace modules { // module public {{{ template - module::module(const bar_settings& bar, string name) + module::module(const bar_settings& bar, string name, const config& conf) : m_sig(signal_emitter::make()) , m_bar(bar) , m_log(logger::make()) - , m_conf(config::make()) + , m_conf(conf) , m_router(make_unique()) , m_name("module/" + name) , m_name_raw(name) diff --git a/include/modules/meta/factory.hpp b/include/modules/meta/factory.hpp index 0c3c96ba..b1c0cf95 100644 --- a/include/modules/meta/factory.hpp +++ b/include/modules/meta/factory.hpp @@ -17,8 +17,9 @@ namespace modules { * @param bar An instance of the @ref bar_settings * @param module_name The user-specified module name * @param log A @ref logger instance + * @param config A @ref config instance */ - module_t make_module(string&& type, const bar_settings& bar, string module_name, const logger& log); + module_t make_module(string&& type, const bar_settings& bar, string module_name, const logger& log, const config& config); } // namespace modules POLYBAR_NS_END diff --git a/include/modules/mpd.hpp b/include/modules/mpd.hpp index 5c44ae1d..c11e0857 100644 --- a/include/modules/mpd.hpp +++ b/include/modules/mpd.hpp @@ -13,7 +13,7 @@ using namespace mpd; namespace modules { class mpd_module : public event_module { public: - explicit mpd_module(const bar_settings&, string); + explicit mpd_module(const bar_settings&, string, const config&); void teardown(); inline bool connected() const; diff --git a/include/modules/network.hpp b/include/modules/network.hpp index fc7ce594..c69e1559 100644 --- a/include/modules/network.hpp +++ b/include/modules/network.hpp @@ -11,7 +11,7 @@ namespace modules { class network_module : public timer_module { public: - explicit network_module(const bar_settings&, string); + explicit network_module(const bar_settings&, string, const config&); void teardown(); bool update(); diff --git a/include/modules/pulseaudio.hpp b/include/modules/pulseaudio.hpp index 37868f39..897f4d73 100644 --- a/include/modules/pulseaudio.hpp +++ b/include/modules/pulseaudio.hpp @@ -13,7 +13,7 @@ namespace modules { class pulseaudio_module : public event_module { public: - explicit pulseaudio_module(const bar_settings&, string); + explicit pulseaudio_module(const bar_settings&, string, const config&); void teardown(); bool has_event(); diff --git a/include/modules/script.hpp b/include/modules/script.hpp index 969af692..6f8e7859 100644 --- a/include/modules/script.hpp +++ b/include/modules/script.hpp @@ -10,7 +10,7 @@ POLYBAR_NS namespace modules { class script_module : public module { public: - explicit script_module(const bar_settings&, string); + explicit script_module(const bar_settings&, string, const config&); void start() override; void stop() override; diff --git a/include/modules/temperature.hpp b/include/modules/temperature.hpp index f59c1abe..c7fc3e4c 100644 --- a/include/modules/temperature.hpp +++ b/include/modules/temperature.hpp @@ -12,7 +12,7 @@ namespace modules { class temperature_module : public timer_module { public: - explicit temperature_module(const bar_settings&, string); + explicit temperature_module(const bar_settings&, string, const config&); bool update(); string get_format() const; diff --git a/include/modules/text.hpp b/include/modules/text.hpp index a9507721..fba16f63 100644 --- a/include/modules/text.hpp +++ b/include/modules/text.hpp @@ -7,7 +7,7 @@ POLYBAR_NS namespace modules { class text_module : public static_module { public: - explicit text_module(const bar_settings&, string); + explicit text_module(const bar_settings&, string, const config&); void update() {} string get_format() const; diff --git a/include/modules/tray.hpp b/include/modules/tray.hpp index 0d1c7467..7cf60401 100644 --- a/include/modules/tray.hpp +++ b/include/modules/tray.hpp @@ -9,7 +9,7 @@ POLYBAR_NS namespace modules { class tray_module : public static_module { public: - explicit tray_module(const bar_settings& bar_settings, string name_); + explicit tray_module(const bar_settings& bar_settings, string name_, const config&); string get_format() const; void start() override; diff --git a/include/modules/unsupported.hpp b/include/modules/unsupported.hpp index b03b3cb7..788b4f4f 100644 --- a/include/modules/unsupported.hpp +++ b/include/modules/unsupported.hpp @@ -11,7 +11,7 @@ namespace modules { #define DEFINE_UNSUPPORTED_MODULE(MODULE_NAME, MODULE_TYPE) \ class MODULE_NAME : public module_interface { \ public: \ - MODULE_NAME(const bar_settings, string) { \ + MODULE_NAME(const bar_settings, string, const config&) { \ throw application_error("No built-in support for '" + string{MODULE_TYPE} + "'"); \ } \ static constexpr auto TYPE = MODULE_TYPE; \ diff --git a/include/modules/xbacklight.hpp b/include/modules/xbacklight.hpp index 796a590e..e18295bf 100644 --- a/include/modules/xbacklight.hpp +++ b/include/modules/xbacklight.hpp @@ -24,7 +24,7 @@ namespace modules { */ class xbacklight_module : public static_module, public event_handler { public: - explicit xbacklight_module(const bar_settings& bar, string name_); + explicit xbacklight_module(const bar_settings& bar, string name_, const config&); void update(); string get_output(); diff --git a/include/modules/xkeyboard.hpp b/include/modules/xkeyboard.hpp index 2014b65c..75b83083 100644 --- a/include/modules/xkeyboard.hpp +++ b/include/modules/xkeyboard.hpp @@ -21,7 +21,7 @@ namespace modules { : public static_module, public event_handler { public: - explicit xkeyboard_module(const bar_settings& bar, string name_); + explicit xkeyboard_module(const bar_settings& bar, string name_, const config&); string get_output(); void update(); diff --git a/include/modules/xwindow.hpp b/include/modules/xwindow.hpp index 8b447031..185ac611 100644 --- a/include/modules/xwindow.hpp +++ b/include/modules/xwindow.hpp @@ -33,7 +33,7 @@ namespace modules { class xwindow_module : public static_module, public event_handler { public: enum class state { NONE, ACTIVE, EMPTY }; - explicit xwindow_module(const bar_settings&, string); + explicit xwindow_module(const bar_settings&, string, const config&); void update(); bool build(builder* builder, const string& tag) const; diff --git a/include/modules/xworkspaces.hpp b/include/modules/xworkspaces.hpp index 364eae39..605f9af6 100644 --- a/include/modules/xworkspaces.hpp +++ b/include/modules/xworkspaces.hpp @@ -44,7 +44,7 @@ namespace modules { */ class xworkspaces_module : public static_module, public event_handler { public: - explicit xworkspaces_module(const bar_settings& bar, string name_); + explicit xworkspaces_module(const bar_settings& bar, string name_, const config&); void update(); string get_output(); diff --git a/include/x11/legacy_tray_manager.hpp b/include/x11/legacy_tray_manager.hpp index 996dcece..9ac61f7e 100644 --- a/include/x11/legacy_tray_manager.hpp +++ b/include/x11/legacy_tray_manager.hpp @@ -9,6 +9,7 @@ #include "cairo/context.hpp" #include "cairo/surface.hpp" #include "common.hpp" +#include "components/config.hpp" #include "components/logger.hpp" #include "components/types.hpp" #include "events/signal_fwd.hpp" @@ -134,7 +135,7 @@ class tray_manager const tray_settings settings() const; - void setup(const string& tray_module_name); + void setup(const config&, const string& tray_module_name); void activate(); void activate_delayed(chrono::duration delay = 1s); void deactivate(bool clear_selection = true); diff --git a/src/components/bar.cpp b/src/components/bar.cpp index e419b803..d47c6dfc 100644 --- a/src/components/bar.cpp +++ b/src/components/bar.cpp @@ -38,17 +38,17 @@ using namespace eventloop; /** * Create instance */ -bar::make_type bar::make(loop& loop, bool only_initialize_values) { +bar::make_type bar::make(loop& loop, const config& config, bool only_initialize_values) { auto action_ctxt = make_unique(); // clang-format off return std::make_unique( connection::make(), signal_emitter::make(), - config::make(), + config, logger::make(), loop, - screen::make(), + screen::make(config), tags::dispatch::make(*action_ctxt), std::move(action_ctxt), only_initialize_values); @@ -889,7 +889,7 @@ void bar::handle(const evt::configure_notify& evt) { void bar::start(const string& tray_module_name) { m_log.trace("bar: Create renderer"); - m_renderer = renderer::make(m_opts, *m_action_ctxt); + m_renderer = renderer::make(m_opts, *m_action_ctxt, m_conf); m_opts.x_data.window = m_renderer->window(); m_opts.x_data.visual = m_renderer->visual(); @@ -918,7 +918,7 @@ void bar::start(const string& tray_module_name) { m_renderer->end(); m_log.trace("bar: Setup tray manager"); - m_tray->setup(tray_module_name); + m_tray->setup(m_conf, tray_module_name); if (m_tray->settings().tray_position == legacy_tray::tray_postition::MODULE || m_tray->settings().tray_position == legacy_tray::tray_postition::NONE) { diff --git a/src/components/config.cpp b/src/components/config.cpp index 9d5e37ec..be249c4c 100644 --- a/src/components/config.cpp +++ b/src/components/config.cpp @@ -16,13 +16,6 @@ POLYBAR_NS namespace chrono = std::chrono; -/** - * Create instance - */ -config::make_type config::make(string path, string bar) { - return *factory_util::singleton>(logger::make(), move(path), move(bar)); -} - /** * Get path of loaded file */ @@ -63,24 +56,20 @@ file_list config::get_included_files() const { return m_included; } -void config::ignore_key(const string& section, const string& key) const { - if (has(section, key)) { - m_log.warn( - "The config parameter '%s.%s' is deprecated, it will be removed in the future. Please remove it from your " - "config", - section, key); - } -} - /** * Print a deprecation warning if the given parameter is set */ void config::warn_deprecated(const string& section, const string& key, string replacement) const { - try { - auto value = get(section, key); - m_log.warn( - "The config parameter `%s.%s` is deprecated, use `%s.%s` instead.", section, key, section, move(replacement)); - } catch (const key_error& err) { + if (has(section, key)) { + if (replacement.empty()) { + m_log.warn( + "The config parameter '%s.%s' is deprecated, it will be removed in the future. Please remove it from your " + "config", + section, key); + } else { + m_log.warn( + "The config parameter `%s.%s` is deprecated, use `%s.%s` instead.", section, key, section, move(replacement)); + } } } diff --git a/src/components/config_parser.cpp b/src/components/config_parser.cpp index 6403bb1a..c34759af 100644 --- a/src/components/config_parser.cpp +++ b/src/components/config_parser.cpp @@ -11,12 +11,12 @@ POLYBAR_NS config_parser::config_parser(const logger& logger, string&& file) - : m_log(logger), m_config(file_util::expand(file)) {} + : m_log(logger), m_config_file(file_util::expand(file)) {} -config::make_type config_parser::parse(string barname) { - m_log.notice("Parsing config file: %s", m_config); +config config_parser::parse(string barname) { + m_log.notice("Parsing config file: %s", m_config_file); - parse_file(m_config, {}); + parse_file(m_config_file, {}); sectionmap_t sections = create_sectionmap(); @@ -45,18 +45,15 @@ config::make_type config_parser::parse(string barname) { * second element onwards for the included list */ file_list included(m_files.begin() + 1, m_files.end()); - config::make_type result = config::make(m_config, barname); + config conf(m_log, move(m_config_file), move(barname)); - // Cast to non-const to set sections, included and xrm - config& m_conf = const_cast(result); - - m_conf.set_sections(move(sections)); - m_conf.set_included(move(included)); + conf.set_sections(move(sections)); + conf.set_included(move(included)); if (use_xrm) { - m_conf.use_xrm(); + conf.use_xrm(); } - return result; + return conf; } sectionmap_t config_parser::create_sectionmap() { diff --git a/src/components/controller.cpp b/src/components/controller.cpp index 55f66ab3..5548d3de 100644 --- a/src/components/controller.cpp +++ b/src/components/controller.cpp @@ -31,9 +31,9 @@ using namespace modules; /** * Build controller instance */ -controller::make_type controller::make(bool has_ipc, loop& loop) { +controller::make_type controller::make(bool has_ipc, loop& loop, const config& config) { return std::make_unique( - connection::make(), signal_emitter::make(), logger::make(), config::make(), has_ipc, loop); + connection::make(), signal_emitter::make(), logger::make(), config, has_ipc, loop); } /** @@ -46,13 +46,13 @@ controller::controller( , m_log(logger) , m_conf(config) , m_loop(loop) - , m_bar(bar::make(m_loop)) + , m_bar(bar::make(m_loop, config)) , m_has_ipc(has_ipc) { - m_conf.ignore_key("settings", "throttle-input-for"); - m_conf.ignore_key("settings", "throttle-output"); - m_conf.ignore_key("settings", "throttle-output-for"); - m_conf.ignore_key("settings", "eventqueue-swallow"); - m_conf.ignore_key("settings", "eventqueue-swallow-time"); + m_conf.warn_deprecated("settings", "throttle-input-for"); + m_conf.warn_deprecated("settings", "throttle-output"); + m_conf.warn_deprecated("settings", "throttle-output-for"); + m_conf.warn_deprecated("settings", "eventqueue-swallow"); + m_conf.warn_deprecated("settings", "eventqueue-swallow-time"); m_log.trace("controller: Setup user-defined modules"); size_t created_modules{0}; @@ -630,7 +630,7 @@ size_t controller::setup_modules(alignment align) { } m_log.notice("Loading module '%s' of type '%s'", module_name, type); - module_t module = modules::make_module(move(type), m_bar->settings(), module_name, m_log); + module_t module = modules::make_module(move(type), m_bar->settings(), module_name, m_log, m_conf); m_modules.push_back(module); m_blocks[align].push_back(module); diff --git a/src/components/renderer.cpp b/src/components/renderer.cpp index fa0f8ffc..d2cf34f8 100644 --- a/src/components/renderer.cpp +++ b/src/components/renderer.cpp @@ -21,12 +21,12 @@ static constexpr double BLOCK_GAP{20.0}; /** * Create instance */ -renderer::make_type renderer::make(const bar_settings& bar, tags::action_context& action_ctxt) { +renderer::make_type renderer::make(const bar_settings& bar, tags::action_context& action_ctxt, const config& conf) { // clang-format off return std::make_unique( connection::make(), signal_emitter::make(), - config::make(), + conf, logger::make(), forward(bar), background_manager::make(), diff --git a/src/components/screen.cpp b/src/components/screen.cpp index 756afba9..ac39f6db 100644 --- a/src/components/screen.cpp +++ b/src/components/screen.cpp @@ -22,8 +22,8 @@ using namespace signals::eventqueue; /** * Create instance */ -screen::make_type screen::make() { - return std::make_unique(connection::make(), signal_emitter::make(), logger::make(), config::make()); +screen::make_type screen::make(const config& config) { + return std::make_unique(connection::make(), signal_emitter::make(), logger::make(), config); } /** diff --git a/src/main.cpp b/src/main.cpp index 0dad2191..55f28c21 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -128,7 +128,7 @@ int main(int argc, char** argv) { } config_parser parser{logger, move(confpath)}; - config::make_type conf = parser.parse(move(barname)); + config conf = parser.parse(move(barname)); //================================================== // Dump requested data @@ -138,7 +138,7 @@ int main(int argc, char** argv) { return EXIT_SUCCESS; } if (cli->has("print-wmname")) { - printf("%s\n", bar::make(loop, true)->settings().wmname.c_str()); + printf("%s\n", bar::make(loop, conf, true)->settings().wmname.c_str()); return EXIT_SUCCESS; } @@ -156,7 +156,7 @@ int main(int argc, char** argv) { } } - auto ctrl = controller::make((bool)ipc, loop); + auto ctrl = controller::make((bool)ipc, loop, conf); if (!ctrl->run(cli->has("stdout"), cli->get("png"), cli->has("reload"))) { reload = true; diff --git a/src/modules/alsa.cpp b/src/modules/alsa.cpp index 21cd4dc3..94ce7a16 100644 --- a/src/modules/alsa.cpp +++ b/src/modules/alsa.cpp @@ -17,7 +17,8 @@ using namespace alsa; namespace modules { template class module; - alsa_module::alsa_module(const bar_settings& bar, string name_) : event_module(bar, move(name_)) { + alsa_module::alsa_module(const bar_settings& bar, string name_, const config& config) + : event_module(bar, move(name_), config) { if (m_handle_events) { m_router->register_action(EVENT_DEC, [this]() { action_dec(); }); m_router->register_action(EVENT_INC, [this]() { action_inc(); }); diff --git a/src/modules/backlight.cpp b/src/modules/backlight.cpp index abdcd8e4..e65e061b 100644 --- a/src/modules/backlight.cpp +++ b/src/modules/backlight.cpp @@ -23,8 +23,8 @@ namespace modules { return std::strtof(file_util::contents(m_path).c_str(), nullptr); } - backlight_module::backlight_module(const bar_settings& bar, string name_) - : inotify_module(bar, move(name_)) { + backlight_module::backlight_module(const bar_settings& bar, string name_, const config& config) + : inotify_module(bar, move(name_), config) { m_router->register_action(EVENT_DEC, [this]() { action_dec(); }); m_router->register_action(EVENT_INC, [this]() { action_inc(); }); auto card = m_conf.get(name(), "card", ""s); diff --git a/src/modules/battery.cpp b/src/modules/battery.cpp index 2c262287..4d966adc 100644 --- a/src/modules/battery.cpp +++ b/src/modules/battery.cpp @@ -23,8 +23,8 @@ namespace modules { /** * Bootstrap module by setting up required components */ - battery_module::battery_module(const bar_settings& bar, string name_) - : inotify_module(bar, move(name_)) { + battery_module::battery_module(const bar_settings& bar, string name_, const config& config) + : inotify_module(bar, move(name_), config) { // Load configuration values m_fullat = std::min(m_conf.get(name(), "full-at", m_fullat), 100); m_lowat = std::max(m_conf.get(name(), "low-at", m_lowat), 0); diff --git a/src/modules/bspwm.cpp b/src/modules/bspwm.cpp index d3d6e889..65beec12 100644 --- a/src/modules/bspwm.cpp +++ b/src/modules/bspwm.cpp @@ -39,7 +39,8 @@ namespace { namespace modules { template class module; - bspwm_module::bspwm_module(const bar_settings& bar, string name_) : event_module(bar, move(name_)) { + bspwm_module::bspwm_module(const bar_settings& bar, string name_, const config& config) + : event_module(bar, move(name_), config) { m_router->register_action_with_data(EVENT_FOCUS, [this](const std::string& data) { action_focus(data); }); m_router->register_action(EVENT_NEXT, [this]() { action_next(); }); m_router->register_action(EVENT_PREV, [this]() { action_prev(); }); diff --git a/src/modules/counter.cpp b/src/modules/counter.cpp index 3abd5e40..92af5823 100644 --- a/src/modules/counter.cpp +++ b/src/modules/counter.cpp @@ -7,8 +7,8 @@ POLYBAR_NS namespace modules { template class module; - counter_module::counter_module(const bar_settings& bar, string name_) - : timer_module(bar, move(name_)) { + counter_module::counter_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { set_interval(1s); m_formatter->add(DEFAULT_FORMAT, TAG_COUNTER, {TAG_COUNTER}); } diff --git a/src/modules/cpu.cpp b/src/modules/cpu.cpp index 527f27fb..0e9502da 100644 --- a/src/modules/cpu.cpp +++ b/src/modules/cpu.cpp @@ -14,7 +14,8 @@ POLYBAR_NS namespace modules { template class module; - cpu_module::cpu_module(const bar_settings& bar, string name_) : timer_module(bar, move(name_)) { + cpu_module::cpu_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { set_interval(1s); m_totalwarn = m_conf.get(name(), "warn-percentage", m_totalwarn); m_ramp_padding = m_conf.get(name(), "ramp-coreload-spacing", m_ramp_padding); diff --git a/src/modules/date.cpp b/src/modules/date.cpp index 7d243195..6e86bdfb 100644 --- a/src/modules/date.cpp +++ b/src/modules/date.cpp @@ -8,7 +8,8 @@ POLYBAR_NS namespace modules { template class module; - date_module::date_module(const bar_settings& bar, string name_) : timer_module(bar, move(name_)) { + date_module::date_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { if (!m_bar.locale.empty()) { datetime_stream.imbue(std::locale(m_bar.locale.c_str())); } diff --git a/src/modules/fs.cpp b/src/modules/fs.cpp index ad1ac250..2a9ca8c2 100644 --- a/src/modules/fs.cpp +++ b/src/modules/fs.cpp @@ -26,7 +26,8 @@ namespace modules { * Bootstrap the module by reading config values and * setting up required components */ - fs_module::fs_module(const bar_settings& bar, string name_) : timer_module(bar, move(name_)) { + fs_module::fs_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { m_mountpoints = m_conf.get_list(name(), "mount", {}); if (m_mountpoints.empty()) { m_log.info("%s: No mountpoints specified, using fallback \"/\"", name()); diff --git a/src/modules/github.cpp b/src/modules/github.cpp index 32b5a08b..bf7a8239 100644 --- a/src/modules/github.cpp +++ b/src/modules/github.cpp @@ -14,7 +14,8 @@ namespace modules { /** * Construct module */ - github_module::github_module(const bar_settings& bar, string name_) : timer_module(bar, move(name_)) { + github_module::github_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { m_accesstoken = m_conf.get(name(), "token"); m_user = m_conf.get(name(), "user", ""s); m_api_url = m_conf.get(name(), "api-url", "https://api.github.com/"s); diff --git a/src/modules/i3.cpp b/src/modules/i3.cpp index d2bc0e86..15185477 100644 --- a/src/modules/i3.cpp +++ b/src/modules/i3.cpp @@ -12,7 +12,8 @@ POLYBAR_NS namespace modules { template class module; - i3_module::i3_module(const bar_settings& bar, string name_) : event_module(bar, move(name_)) { + i3_module::i3_module(const bar_settings& bar, string name_, const config& conf) + : event_module(bar, move(name_), conf) { m_router->register_action_with_data(EVENT_FOCUS, [this](const std::string& data) { action_focus(data); }); m_router->register_action(EVENT_NEXT, [this]() { action_next(); }); m_router->register_action(EVENT_PREV, [this]() { action_prev(); }); diff --git a/src/modules/ipc.cpp b/src/modules/ipc.cpp index aaaac0ff..9e337020 100644 --- a/src/modules/ipc.cpp +++ b/src/modules/ipc.cpp @@ -14,7 +14,8 @@ namespace modules { * Load user-defined ipc hooks and * create formatting tags */ - ipc_module::ipc_module(const bar_settings& bar, string name_) : module(bar, move(name_)) { + ipc_module::ipc_module(const bar_settings& bar, string name_, const config& config) + : module(bar, move(name_), config) { m_router->register_action_with_data(EVENT_SEND, [this](const std::string& data) { action_send(data); }); m_router->register_action_with_data(EVENT_HOOK, [this](const std::string& data) { action_hook(data); }); m_router->register_action(EVENT_NEXT, [this]() { action_next(); }); diff --git a/src/modules/memory.cpp b/src/modules/memory.cpp index eb36e5dc..5989f6f5 100644 --- a/src/modules/memory.cpp +++ b/src/modules/memory.cpp @@ -15,7 +15,8 @@ POLYBAR_NS namespace modules { template class module; - memory_module::memory_module(const bar_settings& bar, string name_) : timer_module(bar, move(name_)) { + memory_module::memory_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { set_interval(1s); m_perc_memused_warn = m_conf.get(name(), "warn-percentage", 90); diff --git a/src/modules/menu.cpp b/src/modules/menu.cpp index e8aa2c8d..afd36aed 100644 --- a/src/modules/menu.cpp +++ b/src/modules/menu.cpp @@ -11,7 +11,8 @@ POLYBAR_NS namespace modules { template class module; - menu_module::menu_module(const bar_settings& bar, string name_) : static_module(bar, move(name_)) { + menu_module::menu_module(const bar_settings& bar, string name_, const config& config) + : static_module(bar, move(name_), config) { m_expand_right = m_conf.get(name(), "expand-right", m_expand_right); m_router->register_action_with_data(EVENT_OPEN, [this](const std::string& data) { action_open(data); }); diff --git a/src/modules/meta/factory.cpp b/src/modules/meta/factory.cpp index 07a52710..203475fc 100644 --- a/src/modules/meta/factory.cpp +++ b/src/modules/meta/factory.cpp @@ -9,7 +9,7 @@ namespace modules { /** * Function pointer for creating a module. */ - using factory_fun = module_t (*)(const bar_settings&, string&&); + using factory_fun = module_t (*)(const bar_settings&, string&&, const config&); using factory_map = map; /** @@ -19,8 +19,8 @@ namespace modules { */ template static constexpr factory_fun get_factory() { - return [](const bar_settings& bar, string&& module_name) -> module_t { - return make_shared(bar, move(module_name)); + return [](const bar_settings& bar, string&& module_name, const config& config) -> module_t { + return make_shared(bar, move(module_name), config); }; } @@ -66,7 +66,7 @@ namespace modules { map_entry(), }; - module_t make_module(string&& type, const bar_settings& bar, string module_name, const logger& log) { + module_t make_module(string&& type, const bar_settings& bar, string module_name, const logger& log, const config& config) { string actual_type = type; if (type == "internal/volume") { @@ -76,7 +76,7 @@ namespace modules { auto it = factories.find(actual_type); if (it != factories.end()) { - return it->second(bar, std::move(module_name)); + return it->second(bar, std::move(module_name), config); } else { throw application_error("Unknown module: " + type); } diff --git a/src/modules/mpd.cpp b/src/modules/mpd.cpp index 56c9c361..2baa9942 100644 --- a/src/modules/mpd.cpp +++ b/src/modules/mpd.cpp @@ -12,7 +12,8 @@ POLYBAR_NS namespace modules { template class module; - mpd_module::mpd_module(const bar_settings& bar, string name_) : event_module(bar, move(name_)) { + mpd_module::mpd_module(const bar_settings& bar, string name_, const config& config) + : event_module(bar, move(name_), config) { m_router->register_action(EVENT_PLAY, [this]() { action_play(); }); m_router->register_action(EVENT_PAUSE, [this]() { action_pause(); }); m_router->register_action(EVENT_STOP, [this]() { action_stop(); }); diff --git a/src/modules/network.cpp b/src/modules/network.cpp index f8ecb490..ea7f03be 100644 --- a/src/modules/network.cpp +++ b/src/modules/network.cpp @@ -10,8 +10,8 @@ POLYBAR_NS namespace modules { template class module; - network_module::network_module(const bar_settings& bar, string name_) - : timer_module(bar, move(name_)) { + network_module::network_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { // Load configuration values m_interface = m_conf.get(name(), "interface", m_interface); diff --git a/src/modules/pulseaudio.cpp b/src/modules/pulseaudio.cpp index f240d2ed..a5d49bd3 100644 --- a/src/modules/pulseaudio.cpp +++ b/src/modules/pulseaudio.cpp @@ -13,8 +13,8 @@ POLYBAR_NS namespace modules { template class module; - pulseaudio_module::pulseaudio_module(const bar_settings& bar, string name_) - : event_module(bar, move(name_)) { + pulseaudio_module::pulseaudio_module(const bar_settings& bar, string name_, const config& config) + : event_module(bar, move(name_), config) { if (m_handle_events) { m_router->register_action(EVENT_DEC, [this]() { action_dec(); }); m_router->register_action(EVENT_INC, [this]() { action_inc(); }); diff --git a/src/modules/script.cpp b/src/modules/script.cpp index 4ff9bebf..abd4c0e4 100644 --- a/src/modules/script.cpp +++ b/src/modules/script.cpp @@ -6,8 +6,8 @@ POLYBAR_NS namespace modules { - script_module::script_module(const bar_settings& bar, string name_) - : module(bar, move(name_)) + script_module::script_module(const bar_settings& bar, string name_, const config& config) + : module(bar, move(name_), config) , m_tail(m_conf.get(name(), "tail", false)) , m_interval_success(m_conf.get(name(), "interval", m_tail ? 0s : 5s)) , m_interval_fail(m_conf.get(name(), "interval-fail", m_interval_success)) diff --git a/src/modules/temperature.cpp b/src/modules/temperature.cpp index 98e0f38e..b038e5c4 100644 --- a/src/modules/temperature.cpp +++ b/src/modules/temperature.cpp @@ -13,8 +13,8 @@ POLYBAR_NS namespace modules { template class module; - temperature_module::temperature_module(const bar_settings& bar, string name_) - : timer_module(bar, move(name_)) { + temperature_module::temperature_module(const bar_settings& bar, string name_, const config& config) + : timer_module(bar, move(name_), config) { m_zone = m_conf.get(name(), "thermal-zone", 0); m_zone_type = m_conf.get(name(), "zone-type", ""s); m_path = m_conf.get(name(), "hwmon-path", ""s); diff --git a/src/modules/text.cpp b/src/modules/text.cpp index 3f84c603..e04172a7 100644 --- a/src/modules/text.cpp +++ b/src/modules/text.cpp @@ -8,7 +8,8 @@ POLYBAR_NS namespace modules { template class module; - text_module::text_module(const bar_settings& bar, string name_) : static_module(bar, move(name_)) { + text_module::text_module(const bar_settings& bar, string name_, const config& config) + : static_module(bar, move(name_), config) { m_formatter->add(DEFAULT_FORMAT, TAG_LABEL, {TAG_LABEL}); m_formatter->add_optional("content", {}); diff --git a/src/modules/tray.cpp b/src/modules/tray.cpp index a09ef28d..23c73448 100644 --- a/src/modules/tray.cpp +++ b/src/modules/tray.cpp @@ -7,8 +7,8 @@ POLYBAR_NS namespace modules { template class module; - tray_module::tray_module(const bar_settings& bar_settings, string name_) - : static_module(bar_settings, move(name_)) + tray_module::tray_module(const bar_settings& bar_settings, string name_, const config& config) + : static_module(bar_settings, move(name_), config) , m_tray(connection::make(), signal_emitter::make(), m_log, bar_settings, [&] { this->broadcast(); }) { m_formatter->add(DEFAULT_FORMAT, TAG_TRAY, {TAG_TRAY}); } diff --git a/src/modules/xbacklight.cpp b/src/modules/xbacklight.cpp index 85d2a3d0..0b65d9b0 100644 --- a/src/modules/xbacklight.cpp +++ b/src/modules/xbacklight.cpp @@ -16,8 +16,8 @@ namespace modules { /** * Construct module */ - xbacklight_module::xbacklight_module(const bar_settings& bar, string name_) - : static_module(bar, move(name_)), m_connection(connection::make()) { + xbacklight_module::xbacklight_module(const bar_settings& bar, string name_, const config& config) + : static_module(bar, move(name_), config), m_connection(connection::make()) { m_router->register_action(EVENT_INC, [this]() { action_inc(); }); m_router->register_action(EVENT_DEC, [this]() { action_dec(); }); diff --git a/src/modules/xkeyboard.cpp b/src/modules/xkeyboard.cpp index 53920640..28ac9c4a 100644 --- a/src/modules/xkeyboard.cpp +++ b/src/modules/xkeyboard.cpp @@ -22,8 +22,8 @@ namespace modules { /** * Construct module */ - xkeyboard_module::xkeyboard_module(const bar_settings& bar, string name_) - : static_module(bar, move(name_)), m_connection(connection::make()) { + xkeyboard_module::xkeyboard_module(const bar_settings& bar, string name_, const config& config) + : static_module(bar, move(name_), config), m_connection(connection::make()) { m_router->register_action(EVENT_SWITCH, [this]() { action_switch(); }); // Setup extension diff --git a/src/modules/xwindow.cpp b/src/modules/xwindow.cpp index 32867a82..e8cef201 100644 --- a/src/modules/xwindow.cpp +++ b/src/modules/xwindow.cpp @@ -69,8 +69,8 @@ namespace modules { /** * Construct module */ - xwindow_module::xwindow_module(const bar_settings& bar, string name_) - : static_module(bar, move(name_)), m_connection(connection::make()) { + xwindow_module::xwindow_module(const bar_settings& bar, string name_, const config& config) + : static_module(bar, move(name_), config), m_connection(connection::make()) { // Initialize ewmh atoms ewmh_util::initialize(); diff --git a/src/modules/xworkspaces.cpp b/src/modules/xworkspaces.cpp index f14ce1d3..85037835 100644 --- a/src/modules/xworkspaces.cpp +++ b/src/modules/xworkspaces.cpp @@ -27,8 +27,8 @@ namespace modules { /** * Construct module */ - xworkspaces_module::xworkspaces_module(const bar_settings& bar, string name_) - : static_module(bar, move(name_)) + xworkspaces_module::xworkspaces_module(const bar_settings& bar, string name_, const config& config) + : static_module(bar, move(name_), config) , m_connection(connection::make()) , m_ewmh(ewmh_util::initialize()) { m_router->register_action_with_data(EVENT_FOCUS, [this](const std::string& data) { action_focus(data); }); diff --git a/src/x11/legacy_tray_manager.cpp b/src/x11/legacy_tray_manager.cpp index 14888270..db7e6ebe 100644 --- a/src/x11/legacy_tray_manager.cpp +++ b/src/x11/legacy_tray_manager.cpp @@ -8,7 +8,6 @@ #include "cairo/context.hpp" #include "cairo/surface.hpp" -#include "components/config.hpp" #include "errors.hpp" #include "events/signal.hpp" #include "utils/color.hpp" @@ -55,8 +54,7 @@ tray_manager::~tray_manager() { deactivate(); } -void tray_manager::setup(const string& tray_module_name) { - const config& conf = config::make(); +void tray_manager::setup(const config& conf, const string& tray_module_name) { auto bs = conf.section(); string position = conf.get(bs, "tray-position", "none"s);