MCPcopy Create free account
hub / github.com/Alexays/Waybar / makeModule

Method makeModule

src/factory.cpp:126–372  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124waybar::Factory::Factory(const Bar& bar, const Json::Value& config) : bar_(bar), config_(config) {}
125
126waybar::AModule* waybar::Factory::makeModule(const std::string& name,
127 const std::string& pos) const {
128 try {
129 auto hash_pos = name.find('#');
130 auto ref = name.substr(0, hash_pos);
131 auto id = hash_pos != std::string::npos ? name.substr(hash_pos + 1) : "";
132#if defined(__FreeBSD__) || defined(__linux__)
133 if (ref == "battery") {
134 return new waybar::modules::Battery(id, bar_, config_[name]);
135 }
136#endif
137#ifdef HAVE_GAMEMODE
138 if (ref == "gamemode") {
139 return new waybar::modules::Gamemode(id, config_[name]);
140 }
141#endif
142#ifdef HAVE_UPOWER
143 if (ref == "upower") {
144 return new waybar::modules::UPower(id, config_[name]);
145 }
146#endif
147#ifdef HAVE_PIPEWIRE
148 if (ref == "privacy") {
149 return new waybar::modules::privacy::Privacy(id, config_[name], bar_.orientation, pos);
150 }
151#endif
152#ifdef HAVE_MPRIS
153 if (ref == "mpris") {
154 return new waybar::modules::mpris::Mpris(id, config_[name]);
155 }
156#endif
157#ifdef HAVE_SWAY
158 if (ref == "sway/mode") {
159 return new waybar::modules::sway::Mode(id, config_[name]);
160 }
161 if (ref == "sway/workspaces") {
162 return new waybar::modules::sway::Workspaces(id, bar_, config_[name]);
163 }
164 if (ref == "sway/window") {
165 return new waybar::modules::sway::Window(id, bar_, config_[name]);
166 }
167 if (ref == "sway/language") {
168 return new waybar::modules::sway::Language(id, config_[name]);
169 }
170 if (ref == "sway/scratchpad") {
171 return new waybar::modules::sway::Scratchpad(id, config_[name]);
172 }
173#endif
174#ifdef HAVE_WLR_TASKBAR
175 if (ref == "wlr/taskbar") {
176 return new waybar::modules::wlr::Taskbar(id, bar_, config_[name]);
177 }
178#endif
179#ifdef HAVE_EXT_WORKSPACES
180 if (ref == "ext/workspaces") {
181 return new waybar::modules::ext::WorkspaceManager(id, bar_, config_[name]);
182 }
183#endif

Callers 1

getModulesMethod · 0.80

Calls 2

getModuleFunction · 0.85
formatFunction · 0.85

Tested by

no test coverage detected